diff --git a/docs/commands.md b/docs/commands.md index 31d9e17..7267825 100644 --- a/docs/commands.md +++ b/docs/commands.md @@ -395,8 +395,8 @@ Available subcommands: Create a versioned snapshot of your app Usage: discloud snapshot create [arguments] --h, --help Print this usage information. - --app (mandatory) +-h, --help Print this usage information. + --app ``` #### snapshot download @@ -405,10 +405,10 @@ Usage: discloud snapshot create [arguments] Download a versioned snapshot of your app Usage: discloud snapshot download [arguments] --h, --help Print this usage information. - --app (mandatory) - --version Snapshot version in YYYYMMDD-HHMMSS format --d, --dir Specifies the destination path for downloading backups. The destination path will be considered a directory. +-h, --help Print this usage information. + --app + --version Snapshot version in YYYYMMDD-HHMMSS format +-d, --dir Specifies the destination path for downloading backups. The destination path will be considered a directory. ``` #### snapshot info diff --git a/lib/commands/app/apt/install.dart b/lib/commands/app/apt/install.dart index 57b18d5..8032662 100644 --- a/lib/commands/app/apt/install.dart +++ b/lib/commands/app/apt/install.dart @@ -24,7 +24,7 @@ final class AppAptInstallCommand extends Command { @override Future run() async { final appId = argResults!.requiredOptionOrRest("app"); - final apts = argResults!.requiredMultiOptionOrRest("apt", ["app"]); + final apts = argResults!.requiredMultiOptionOrRest("apt", const ["app"]); if (apts.isEmpty) usageException("Apt option cannot be empty"); diff --git a/lib/commands/app/apt/uninstall.dart b/lib/commands/app/apt/uninstall.dart index 8084089..fcd8581 100644 --- a/lib/commands/app/apt/uninstall.dart +++ b/lib/commands/app/apt/uninstall.dart @@ -24,7 +24,7 @@ final class AppAptUninstallCommand extends Command { @override Future run() async { final appId = argResults!.requiredOptionOrRest("app"); - final apts = argResults!.requiredMultiOptionOrRest("apt", ["app"]); + final apts = argResults!.requiredMultiOptionOrRest("apt", const ["app"]); if (apts.isEmpty) usageException("Apt option cannot be empty"); diff --git a/lib/commands/app/backup.dart b/lib/commands/app/backup.dart index 29f2e87..bd3e364 100644 --- a/lib/commands/app/backup.dart +++ b/lib/commands/app/backup.dart @@ -60,7 +60,7 @@ final class AppBackupCommand extends Command with Disposable { Future _handleSingle(Map data, ISpin spinner) async { if (data["url"] case final String url) { - if (argResults!.optionOrRest("dir", ["app"]) case final dir?) { + if (argResults!.optionOrRest("dir", const ["app"]) case final dir?) { final Uri uri = .parse(url); return _download(dir: dir, spinner: spinner, uri: uri); diff --git a/lib/commands/app/logs.dart b/lib/commands/app/logs.dart index 24b6c62..9e51386 100644 --- a/lib/commands/app/logs.dart +++ b/lib/commands/app/logs.dart @@ -34,7 +34,7 @@ final class AppLogsCommand extends Command { @override Future run() async { final appId = argResults!.optionOrRest("app") ?? "all"; - final out = argResults!.optionOrRest("out", ["app"]); + final out = argResults!.optionOrRest("out", const ["app"]); final spinner = context.printer.spin(); diff --git a/lib/commands/app/mod/add.dart b/lib/commands/app/mod/add.dart index cf8b4ee..44e837d 100644 --- a/lib/commands/app/mod/add.dart +++ b/lib/commands/app/mod/add.dart @@ -22,7 +22,7 @@ final class AppModAddCommand extends Command { @override Future run() async { final appId = argResults!.requiredOptionOrRest("app"); - final modId = argResults!.requiredOptionOrRest("mod", ["app"]); + final modId = argResults!.requiredOptionOrRest("mod", const ["app"]); final perms = argResults!.multiOption("perms"); final spinner = context.printer.spin(text: "Adding app MOD..."); diff --git a/lib/commands/app/mod/delete.dart b/lib/commands/app/mod/delete.dart index fcf9b84..9b2ce8f 100644 --- a/lib/commands/app/mod/delete.dart +++ b/lib/commands/app/mod/delete.dart @@ -20,7 +20,7 @@ final class AppModDeleteCommand extends Command { @override Future run() async { final appId = argResults!.requiredOptionOrRest("app"); - final modId = argResults!.requiredOptionOrRest("mod", ["app"]); + final modId = argResults!.requiredOptionOrRest("mod", const ["app"]); final spinner = context.printer.spin(text: "Deleting app MOD..."); diff --git a/lib/commands/app/mod/edit.dart b/lib/commands/app/mod/edit.dart index a80ecef..3665fbb 100644 --- a/lib/commands/app/mod/edit.dart +++ b/lib/commands/app/mod/edit.dart @@ -22,7 +22,7 @@ final class AppModEditCommand extends Command { @override Future run() async { final appId = argResults!.requiredOptionOrRest("app"); - final modId = argResults!.requiredOptionOrRest("mod", ["app"]); + final modId = argResults!.requiredOptionOrRest("mod", const ["app"]); final perms = argResults!.multiOption("perms"); final spinner = context.printer.spin(text: "Editing app MOD..."); diff --git a/lib/commands/app/ram.dart b/lib/commands/app/ram.dart index bedc086..030c697 100644 --- a/lib/commands/app/ram.dart +++ b/lib/commands/app/ram.dart @@ -27,7 +27,7 @@ final class AppRamCommand extends Command { Future run() async { final appId = argResults!.requiredOptionOrRest("app"); final ramMB = max( - argResults!.requiredIntOptionOrRest("amount", ["app"]), + argResults!.requiredIntOptionOrRest("amount", const ["app"]), DiscloudRamMinByType.lowest.value, ); diff --git a/lib/commands/domain/create.dart b/lib/commands/domain/create.dart index 8fe867f..798d186 100644 --- a/lib/commands/domain/create.dart +++ b/lib/commands/domain/create.dart @@ -22,7 +22,7 @@ final class CustomdomainCreateCommand extends Command { @override Future run() async { final domain = argResults!.requiredOptionOrRest("id"); - final subdomain = argResults!.requiredOptionOrRest("app", ["id"]); + final subdomain = argResults!.requiredOptionOrRest("app", const ["id"]); final spinner = context.printer.spin(text: "Creating $domain..."); diff --git a/lib/commands/domain/edit.dart b/lib/commands/domain/edit.dart index bf1532b..8ae36dd 100644 --- a/lib/commands/domain/edit.dart +++ b/lib/commands/domain/edit.dart @@ -21,7 +21,7 @@ final class CustomdomainEditCommand extends Command with Disposable { @override Future run() async { final domain = argResults!.requiredOptionOrRest("id"); - final subdomain = argResults!.requiredOptionOrRest("app", ["id"]); + final subdomain = argResults!.requiredOptionOrRest("app", const ["id"]); final spinner = context.printer.spin(text: "Editting $domain..."); diff --git a/lib/commands/init.dart b/lib/commands/init.dart index d2d9766..d40ed2a 100644 --- a/lib/commands/init.dart +++ b/lib/commands/init.dart @@ -81,7 +81,8 @@ class _InitArgs { final ArgResults? _argResults; bool _flag(String name) => _argResults?.flag(name) ?? false; - List _multiOption(String n) => _argResults?.multiOption(n) ?? []; + List _multiOption(String n) => + _argResults?.multiOption(n) ?? const []; String? _option(String name) => _argResults?.option(name); bool get force => _flag("force"); diff --git a/lib/commands/snapshot/create.dart b/lib/commands/snapshot/create.dart index e1e7944..fbccf02 100644 --- a/lib/commands/snapshot/create.dart +++ b/lib/commands/snapshot/create.dart @@ -8,7 +8,7 @@ import "package:discloud/utils/messages.dart"; final class SnapshotCreateCommand extends Command { SnapshotCreateCommand() { - argParser.addOption("app", mandatory: true); + argParser.addOption("app"); } @override @@ -19,7 +19,7 @@ final class SnapshotCreateCommand extends Command { @override Future run() async { - final String appId = argResults!.option("app")!; + final String appId = argResults!.requiredOptionOrRest("app"); final spinner = context.printer.spin(text: "Creating snapshot..."); diff --git a/lib/commands/snapshot/download.dart b/lib/commands/snapshot/download.dart index 0e7b6f6..5218a8e 100644 --- a/lib/commands/snapshot/download.dart +++ b/lib/commands/snapshot/download.dart @@ -15,7 +15,7 @@ import "package:path/path.dart" hide context; final class SnapshotDownloadCommand extends Command with Disposable { SnapshotDownloadCommand() { argParser - ..addOption("app", mandatory: true) + ..addOption("app") ..addOption("version", help: "Snapshot version in YYYYMMDD-HHMMSS format") ..addOption( "dir", @@ -41,7 +41,7 @@ final class SnapshotDownloadCommand extends Command with Disposable { @override Future run() async { - final String appId = argResults!.option("app")!; + final String appId = argResults!.requiredOptionOrRest("app"); final spinner = context.printer.spin(); @@ -64,7 +64,10 @@ final class SnapshotDownloadCommand extends Command with Disposable { String appId, { required ISpin spinner, }) async { - if (argResults?.option("version") case final String v) return v; + if (argResults?.optionOrRest("version", const ["app"]) + case final String version) { + return version; + } spinner.text = "Retrieving snapshot..."; diff --git a/lib/commands/snapshot/info.dart b/lib/commands/snapshot/info.dart index 1b54ef2..5a63c66 100644 --- a/lib/commands/snapshot/info.dart +++ b/lib/commands/snapshot/info.dart @@ -41,7 +41,7 @@ final class SnapshotInfoCommand extends Command { @override Future run() { - return switch (argResults?.option("app")) { + return switch (argResults?.optionOrRest("app")) { final String appId => _runSingle(appId), _ => _runMulti(), }; diff --git a/lib/commands/team/backup.dart b/lib/commands/team/backup.dart index 8c2ad19..7656124 100644 --- a/lib/commands/team/backup.dart +++ b/lib/commands/team/backup.dart @@ -60,7 +60,7 @@ final class TeamBackupCommand extends Command with Disposable { Future _handleSingle(Map data, ISpin spinner) async { if (data["url"] case final String url) { - if (argResults!.optionOrRest("dir", ["app"]) case final dir?) { + if (argResults!.optionOrRest("dir", const ["app"]) case final dir?) { final Uri uri = .parse(url); return _download(dir: dir, spinner: spinner, uri: uri); diff --git a/lib/commands/team/logs.dart b/lib/commands/team/logs.dart index 65ffad2..d895010 100644 --- a/lib/commands/team/logs.dart +++ b/lib/commands/team/logs.dart @@ -34,7 +34,7 @@ final class TeamLogsCommand extends Command { @override Future run() async { final appId = argResults!.optionOrRest("app") ?? "all"; - final out = argResults!.optionOrRest("out", ["app"]); + final out = argResults!.optionOrRest("out", const ["app"]); final spinner = context.printer.spin(); diff --git a/lib/commands/team/ram.dart b/lib/commands/team/ram.dart index b8d6843..ce1be9f 100644 --- a/lib/commands/team/ram.dart +++ b/lib/commands/team/ram.dart @@ -27,7 +27,7 @@ final class TeamRamCommand extends Command { Future run() async { final appId = argResults!.requiredOptionOrRest("app"); final ramMB = max( - argResults!.requiredIntOptionOrRest("amount", ["app"]), + argResults!.requiredIntOptionOrRest("amount", const ["app"]), DiscloudRamMinByType.lowest.value, ); diff --git a/lib/utils/ascii_table.dart b/lib/utils/ascii_table.dart index 96c89f9..dbd3070 100644 --- a/lib/utils/ascii_table.dart +++ b/lib/utils/ascii_table.dart @@ -31,7 +31,7 @@ String listToAsciiTable( final first = list.first; if (first is! Map) { return tabular([ - ["#", "value"], + const ["#", "value"], for (int i = 0; i < list.length; i++) [i + 1, list[i]], ]); }