From 05b623afeb206bdb892e3fd346402b53365ce80c Mon Sep 17 00:00:00 2001 From: Koen Van Looveren Date: Sun, 26 Nov 2023 10:59:42 +0100 Subject: [PATCH] feat(cli): extend cli with custom plugins --- CHANGELOG.md | 1 + README.md | 14 ++++++++++++-- lib/impaktfull_cli.dart | 2 ++ ...{cli_plugin.dart => impaktfull_cli_plugin.dart} | 0 lib/src/impaktfull_cli.dart | 6 ++++-- .../plugin/mac_os_keychain_plugin.dart | 2 +- .../flutter/build/plugin/flutter_build_plugin.dart | 2 +- .../one_password/plugin/one_password_plugin.dart | 2 +- .../playstore/plugin/playstore_plugin.dart | 2 +- .../testflight/plugin/testflight_plugin.dart | 2 +- 10 files changed, 24 insertions(+), 9 deletions(-) rename lib/src/core/plugin/{cli_plugin.dart => impaktfull_cli_plugin.dart} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c447df..8ddbf51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Feat: - (AppCenter): Export default distribution group. +- (cli): Added support to extend the cli with custom plugins. # 0.2.0 diff --git a/README.md b/README.md index 1218e26..5123132 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ **impaktfull_cli is still in unstable & untested. everything under <1.0.0 should not be used unless you want to test the cli** -### ENV Variables: +## ENV Variables: -#### impaktfull_cli ENV variabhles +### impaktfull_cli ENV variabhles - CI_KEYCHAIN_PASSWORD - APPCENTER_OWNER_NAME @@ -16,3 +16,13 @@ ### 3rth party ENV Variables - OP_SERVICE_ACCOUNT_TOKEN + + +## Extend ImpaktfullCli + +```dart +class TestCli extends ImpaktfullCli { + @override + Future run(ImpaktfullCliRunner runner) => super.run(runner as ImpaktfullCliRunner); +} +``` \ No newline at end of file diff --git a/lib/impaktfull_cli.dart b/lib/impaktfull_cli.dart index 34a68d4..03679e8 100644 --- a/lib/impaktfull_cli.dart +++ b/lib/impaktfull_cli.dart @@ -2,6 +2,8 @@ export 'package:impaktfull_cli/src/core/model/error/impaktfull_cli_argument_erro export 'package:impaktfull_cli/src/core/model/error/impaktfull_cli_error.dart'; export 'package:impaktfull_cli/src/core/model/data/secret.dart'; export 'package:impaktfull_cli/src/core/model/data/environment/cli_tool.dart'; +export 'package:impaktfull_cli/src/core/plugin/impaktfull_cli_plugin.dart'; +export 'package:impaktfull_cli/src/core/plugin/impaktfull_plugin.dart'; export 'package:impaktfull_cli/src/core/util/args/env/impaktfull_cli_environment.dart'; export 'package:impaktfull_cli/src/core/util/args/env/impaktfull_cli_environment_variables.dart'; export 'package:impaktfull_cli/src/core/util/input_reader/impaktfull_cli_input_reader.dart'; diff --git a/lib/src/core/plugin/cli_plugin.dart b/lib/src/core/plugin/impaktfull_cli_plugin.dart similarity index 100% rename from lib/src/core/plugin/cli_plugin.dart rename to lib/src/core/plugin/impaktfull_cli_plugin.dart diff --git a/lib/src/impaktfull_cli.dart b/lib/src/impaktfull_cli.dart index 13bbb07..f020101 100644 --- a/lib/src/impaktfull_cli.dart +++ b/lib/src/impaktfull_cli.dart @@ -15,7 +15,8 @@ import 'package:impaktfull_cli/src/integrations/one_password/plugin/one_password import 'package:impaktfull_cli/src/integrations/playstore/plugin/playstore_plugin.dart'; import 'package:impaktfull_cli/src/integrations/testflight/plugin/testflight_plugin.dart'; -typedef ImpaktfullCliRunner = Future Function(ImpaktfullCli cli); +typedef ImpaktfullCliRunner = Future Function( + T cli); class ImpaktfullCli { final ProcessRunner processRunner; @@ -77,7 +78,8 @@ class ImpaktfullCli { return plugin; } - Future run(ImpaktfullCliRunner runner) => runImpaktfullCli( + Future run(ImpaktfullCliRunner runner) => + runImpaktfullCli( () => runner(this), ); diff --git a/lib/src/integrations/apple_certificate/plugin/mac_os_keychain_plugin.dart b/lib/src/integrations/apple_certificate/plugin/mac_os_keychain_plugin.dart index be436a5..b590eb1 100644 --- a/lib/src/integrations/apple_certificate/plugin/mac_os_keychain_plugin.dart +++ b/lib/src/integrations/apple_certificate/plugin/mac_os_keychain_plugin.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:impaktfull_cli/src/core/model/data/secret.dart'; -import 'package:impaktfull_cli/src/core/plugin/cli_plugin.dart'; +import 'package:impaktfull_cli/src/core/plugin/impaktfull_cli_plugin.dart'; import 'package:impaktfull_cli/src/core/util/logger/logger.dart'; import 'package:impaktfull_cli/src/core/util/process/process_runner.dart'; diff --git a/lib/src/integrations/flutter/build/plugin/flutter_build_plugin.dart b/lib/src/integrations/flutter/build/plugin/flutter_build_plugin.dart index 1518144..54677c6 100644 --- a/lib/src/integrations/flutter/build/plugin/flutter_build_plugin.dart +++ b/lib/src/integrations/flutter/build/plugin/flutter_build_plugin.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:impaktfull_cli/src/core/model/error/impaktfull_cli_error.dart'; -import 'package:impaktfull_cli/src/core/plugin/cli_plugin.dart'; +import 'package:impaktfull_cli/src/core/plugin/impaktfull_cli_plugin.dart'; import 'package:impaktfull_cli/src/core/util/args/env/impaktfull_cli_environment.dart'; import 'package:impaktfull_cli/src/core/util/process/process_runner.dart'; import 'package:impaktfull_cli/src/integrations/flutter/build/model/flutter_build_android_extension.dart'; diff --git a/lib/src/integrations/one_password/plugin/one_password_plugin.dart b/lib/src/integrations/one_password/plugin/one_password_plugin.dart index 3ed9ffd..c82a012 100644 --- a/lib/src/integrations/one_password/plugin/one_password_plugin.dart +++ b/lib/src/integrations/one_password/plugin/one_password_plugin.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:impaktfull_cli/src/core/model/data/secret.dart'; -import 'package:impaktfull_cli/src/core/plugin/cli_plugin.dart'; +import 'package:impaktfull_cli/src/core/plugin/impaktfull_cli_plugin.dart'; class OnePasswordPlugin extends ImpaktfullCliPlugin { const OnePasswordPlugin({ diff --git a/lib/src/integrations/playstore/plugin/playstore_plugin.dart b/lib/src/integrations/playstore/plugin/playstore_plugin.dart index 1a76226..58ca981 100644 --- a/lib/src/integrations/playstore/plugin/playstore_plugin.dart +++ b/lib/src/integrations/playstore/plugin/playstore_plugin.dart @@ -5,7 +5,7 @@ import 'package:googleapis/androidpublisher/v3.dart'; import "package:googleapis_auth/auth_io.dart"; import 'package:impaktfull_cli/src/core/model/data/secret.dart'; import 'package:impaktfull_cli/src/core/model/error/impaktfull_cli_error.dart'; -import 'package:impaktfull_cli/src/core/plugin/cli_plugin.dart'; +import 'package:impaktfull_cli/src/core/plugin/impaktfull_cli_plugin.dart'; import 'package:impaktfull_cli/src/core/util/args/env/impaktfull_cli_environment_variables.dart'; import 'package:impaktfull_cli/src/core/util/logger/logger.dart'; import 'package:path/path.dart'; diff --git a/lib/src/integrations/testflight/plugin/testflight_plugin.dart b/lib/src/integrations/testflight/plugin/testflight_plugin.dart index 993195a..5a29179 100644 --- a/lib/src/integrations/testflight/plugin/testflight_plugin.dart +++ b/lib/src/integrations/testflight/plugin/testflight_plugin.dart @@ -3,7 +3,7 @@ import 'dart:io'; import 'package:impaktfull_cli/src/core/model/data/environment/cli_tool.dart'; import 'package:impaktfull_cli/src/core/model/data/secret.dart'; import 'package:impaktfull_cli/src/core/model/error/impaktfull_cli_error.dart'; -import 'package:impaktfull_cli/src/core/plugin/cli_plugin.dart'; +import 'package:impaktfull_cli/src/core/plugin/impaktfull_cli_plugin.dart'; import 'package:impaktfull_cli/src/core/util/args/env/impaktfull_cli_environment.dart'; import 'package:impaktfull_cli/src/core/util/args/env/impaktfull_cli_environment_variables.dart'; import 'package:path/path.dart';