compiledExe method
Simple exe compiler
Implementation
Future<DartPackageIoCompiledExe> compiledExe({
String? script,
bool force = false,
Version? minVersion,
bool verbose = false,
}) async {
script = normalize(
absolute(
joinAll([
path,
if (script != null) script else ...['bin', 'main.dart'],
]),
),
);
var scriptBasename = basenameWithoutExtension(script);
var folder =
Platform.isWindows ? 'windows' : (Platform.isMacOS ? 'macos' : 'linux');
var exeExtension = Platform.isWindows ? '.exe' : '';
var exe = join(path, 'build', folder, '$scriptBasename$exeExtension');
var exeDir = dirname(exe);
var shell = Shell(verbose: verbose);
var file = File(exe);
var needCompile = force || !file.existsSync();
if (!needCompile && minVersion == null) {
return DartPackageIoCompiledExe(exe, null);
}
if (!needCompile && file.existsSync()) {
if (minVersion != null) {
var version = await _getVersion(exe);
if (version != null && version >= minVersion) {
if (verbose) {
stdout.writeln('found version $version exe $exe');
}
return DartPackageIoCompiledExe(exe, version);
} else {
needCompile = true;
}
}
}
if (needCompile) {
Directory(exeDir).createSync(recursive: true);
await shell.run(
'dart compile exe ${shellArgument(script)} -o ${shellArgument(exe)}',
);
}
var version = await _getVersion(exe);
if (verbose) {
stdout.writeln('version $version exe $exe');
}
return DartPackageIoCompiledExe(exe, version);
}