diff --git a/analysis_options_release.yaml b/analysis_options_release.yaml deleted file mode 100644 index 24e0329..0000000 --- a/analysis_options_release.yaml +++ /dev/null @@ -1,9 +0,0 @@ -include: analysis_options.yaml - -linter: - rules: - - prefer_const_constructors - - prefer_const_constructors_in_immutables - - prefer_const_declarations - - prefer_const_literals_to_create_immutables - - type_annotate_public_apis diff --git a/lib/cli/context.dart b/lib/cli/context.dart index 90eecd6..13576fd 100644 --- a/lib/cli/context.dart +++ b/lib/cli/context.dart @@ -17,8 +17,12 @@ part "paths.dart"; class CliContext implements Disposable { static late final CliContext I; + static bool _instanced = false; factory(Iterable arguments) { + if (_instanced) return I; + _instanced = true; + final bool debug = arguments.contains("--debug"); return I = ._( diff --git a/lib/commands/wait.dart b/lib/commands/wait.dart index bb91de6..4b331c1 100644 --- a/lib/commands/wait.dart +++ b/lib/commands/wait.dart @@ -21,9 +21,9 @@ final class WaitCommand extends Command with Disposable { Future run() async { if (argResults!.rest.firstOrNull case final seconds?) { if (int.tryParse(seconds) case final seconds? when seconds.isPositive) { - context.printer("Waiting ${seconds}s..."); + final spin = context.printer.spin(text: "Waiting ${seconds}s..."); await Future.delayed(.new(seconds: seconds)); - context.printer("Completed."); + spin.success("Completed."); } } } diff --git a/lib/extensions/io_http_client.dart b/lib/extensions/io_http_client.dart index 9bffbdc..7ec5be8 100644 --- a/lib/extensions/io_http_client.dart +++ b/lib/extensions/io_http_client.dart @@ -33,3 +33,11 @@ extension HttpClientResponseExtension on HttpClientResponse { return Isolate.run(() => jsonDecode(body)); } } + +extension HttpHeadersExtension on HttpHeaders { + static const _apiTokenHeader = "api-token"; + + String? get apiToken => value(_apiTokenHeader); + + set apiToken(String value) => set(_apiTokenHeader, value); +} diff --git a/lib/services/discloud/api_client.dart b/lib/services/discloud/api_client.dart index 6638b6c..be1f80a 100644 --- a/lib/services/discloud/api_client.dart +++ b/lib/services/discloud/api_client.dart @@ -60,8 +60,7 @@ class DiscloudApiClient implements Disposable { return null; } - factory({HttpClient? client}) => - DiscloudApiClient._(client: client ?? .new()); + factory({HttpClient? client}) => ._(client: client ?? .new()); const new _({required this._client}); @@ -347,12 +346,12 @@ class DiscloudApiClient implements Disposable { if (!hasApiToken) { if (await _maybeToken case final value?) { - request.headers.set(_apiTokenHeader, value); + request.headers.apiToken = value; sb.writeln("[Request] Header: $_apiTokenHeader:${value.length}"); } } - if (!isDiscloudJwt(request.headers.value(_apiTokenHeader).orEmpty)) { + if (!isDiscloudJwt(request.headers.apiToken.orEmpty)) { _context.printer.debug(sb); throw const DiscloudApiException( code: 401,