boot method
Initializes the class by setting some properties and loading the package script.
Implementation
Future<void> boot() async {
if (booted) return;
preferredMethod = (args?['method'] as String?) ?? package.method ?? 'auto';
forceMethod = (args?['force-method'] as bool?) ?? false;
channelChosen = (args?['channel'] as String?) ?? package.channel ?? '';
repoSlug = repo.url.slugify();
packageName = package.name;
cacheRepoDir = XPM.cacheDir("repos/$repoSlug/$packageName");
packageDir = Repositories.dir(repoSlug, package: packageName);
final String packageDirPath = (await packageDir).path;
baseScript = File('$packageDirPath/../base.bash');
final script = package.script;
if (script == null) {
leave(message: 'Package "{@blue}$packageName{@end}" has no script.', exitCode: 1);
}
packageScript = BashScript(script);
if (await packageScript.contents() == null) {
leave(message: 'Script for "{@blue}$packageName{@end}" does not exist.', exitCode: 1);
}
Global.sudoPath = await Executable('sudo').find() ?? '';
Global.hasFlatpak = await Executable('flatpak').find() != null;
Global.hasSnap = await Executable('snap').find() != null;
booted = true;
}