DartleDart constructor
DartleDart([
- DartConfig config = const DartConfig()
Implementation
DartleDart([this.config = const DartConfig()])
: rootDir = config.rootDir ?? '.',
_enableBuildRunner = config.buildRunnerRunCondition != null {
final productionDartFiles =
config.sources ?? dirs(['lib', 'bin'], fileExtensions: const {'dart'});
final testDartFiles = config.testSources ??
dirs(['test', 'example'], fileExtensions: const {'dart'});
final buildDartFiles = config.buildSources ??
(dir('dartle-src', fileExtensions: const {'dart'}) +
file('dartle.dart'));
final allDartFiles = productionDartFiles + testDartFiles + buildDartFiles;
formatCode = Task(_formatCode,
name: 'format',
dependsOn: {if (_enableBuildRunner) 'runBuildRunner'},
description: 'Formats all Dart source code.',
runCondition: RunOnChanges(inputs: allDartFiles));
runBuildRunner = Task(_runBuildRunner,
name: 'runBuildRunner',
description: 'Runs the Dart build_runner tool.',
dependsOn: {'runPubGet'},
runCondition: config.buildRunnerRunCondition ?? const AlwaysRun());
analyzeCode = Task(_analyzeCode,
name: 'analyzeCode',
dependsOn: {
'runPubGet',
if (config.formatCode) 'format',
if (_enableBuildRunner) 'runBuildRunner',
},
description: 'Analyzes Dart source code',
runCondition: RunOnChanges(inputs: allDartFiles));
compileExe = Task(_compileExe,
name: 'compileExe',
description: 'Compiles Dart executables declared in pubspec. '
'Argument may specify the name(s) of the executable(s) to compile.',
dependsOn: {'analyzeCode'},
argsValidator: const AcceptAnyArgs(),
runCondition: RunOnChanges(
inputs: productionDartFiles,
outputs: dir(join(rootDir, 'build', 'bin'))));
runPubGet = Task(utils.runPubGet,
name: 'runPubGet',
description: 'Runs "pub get" in order to update dependencies.',
runCondition: OrCondition([
RunAtMostEvery(config.runPubGetAtMostEvery),
RunOnChanges(
inputs: files([
join(rootDir, 'pubspec.yaml'),
join(rootDir, 'pubspec.lock')
]))
]));
test = Task(_test,
name: 'test',
description: 'Runs Dart tests.',
dependsOn: {if (config.runAnalyzer) 'analyzeCode'},
argsValidator: const TestTaskArgsValidator(),
runCondition: RunOnChanges(inputs: testDartFiles));
final buildTasks = {
if (config.formatCode) formatCode,
if (config.runAnalyzer) analyzeCode,
if (config.compileExe) compileExe,
if (_enableBuildRunner) runBuildRunner,
if (config.runTests) test,
runPubGet,
};
clean = createCleanTask(
tasks: buildTasks,
name: 'clean',
description: 'Deletes the outputs of all other tasks in this build.');
build = Task((_) => null, // no action, just grouping other tasks
name: 'build',
description: 'Runs all enabled tasks.');
build.dependsOn(buildTasks
// exclude tasks already added into buildTasks but that
// should not run by default
.where((t) => t != compileExe)
.map((t) => t.name)
.toSet());
buildTasks.add(clean);
buildTasks.add(build);
tasks = Set.unmodifiable(buildTasks);
}