import 'dart:io' hide Platform;
import 'package:meta/meta.dart';
import 'package:path/path.dart' as path;
enum SnippetType {
application,
sample,
}
String getEnumName(dynamic enumItem) {
final String name = '$enumItem';
final int index = name.indexOf('.');
return index == -1 ? name : name.substring(index + 1);
}
class Configuration {
Configuration({@required this.flutterRoot}) : assert(flutterRoot != null);
final Directory flutterRoot;
@visibleForTesting
Directory get configDirectory {
_configPath ??= Directory(
path.canonicalize(path.join(flutterRoot.absolute.path, 'dev', 'snippets', 'config')));
return _configPath;
}
Directory _configPath;
Directory get outputDirectory {
_docsDirectory ??= Directory(
path.canonicalize(path.join(flutterRoot.absolute.path, 'dev', 'docs', 'doc', 'snippets')));
return _docsDirectory;
}
Directory _docsDirectory;
void createOutputDirectory() {
if (!outputDirectory.existsSync()) {
outputDirectory.createSync(recursive: true);
}
}
Directory get skeletonsDirectory => Directory(path.join(configDirectory.path,'skeletons'));
Directory get templatesDirectory => Directory(path.join(configDirectory.path, 'templates'));
File getHtmlSkeletonFile(SnippetType type) {
return File(path.join(skeletonsDirectory.path, '${getEnumName(type)}.html'));
}
}