From d69106adeb1f7e35f85f69545fc56def2dacdba0 Mon Sep 17 00:00:00 2001
From: Hugo Pointcheval <git@pcl.ovh>
Date: Fri, 29 Mar 2024 21:08:59 +0100
Subject: [PATCH] fix(cd): make cd use new usecases

---
 .../wyatt_continuous_deployment_example.dart  | 23 +++++++++++++++++++
 .../example/lib/main.dart                     |  2 +-
 .../init_project/init_project_task.dart       |  2 +-
 .../lib/src/core/task/task_cubit.dart         |  2 +-
 .../lib/src/domain/entities/flutter.dart      |  6 ++---
 .../src/domain/usecases/process_usecase.dart  |  7 +++---
 .../requirements/check_tools_usecase.dart     |  2 +-
 .../lib/src/domain/usecases/usecase.dart      |  5 ----
 8 files changed, 33 insertions(+), 16 deletions(-)
 create mode 100644 packages/wyatt_continuous_deployment/example/bin/wyatt_continuous_deployment_example.dart

diff --git a/packages/wyatt_continuous_deployment/example/bin/wyatt_continuous_deployment_example.dart b/packages/wyatt_continuous_deployment/example/bin/wyatt_continuous_deployment_example.dart
new file mode 100644
index 00000000..6b90a629
--- /dev/null
+++ b/packages/wyatt_continuous_deployment/example/bin/wyatt_continuous_deployment_example.dart
@@ -0,0 +1,23 @@
+// Copyright (C) 2024 WYATT GROUP
+// Please see the AUTHORS file for details.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+import 'dart:io';
+
+import 'package:wyatt_continuous_deployment_example/main.dart';
+
+void main(List<String> args) {
+  WyattContinuousDeploymentExample.run(args).then((_) => exit(0));
+}
diff --git a/packages/wyatt_continuous_deployment/example/lib/main.dart b/packages/wyatt_continuous_deployment/example/lib/main.dart
index 6eb17eda..d3342cf8 100644
--- a/packages/wyatt_continuous_deployment/example/lib/main.dart
+++ b/packages/wyatt_continuous_deployment/example/lib/main.dart
@@ -20,7 +20,7 @@ class WyattContinuousDeploymentExample {
   static Future<void> run(List<String> args) async {
     const useCase = CheckToolsUsecase();
 
-    final result = await useCase(null);
+    final result = await useCase();
 
     result.fold((value) => print('Success'), (error) => print('Error: $error'));
   }
diff --git a/packages/wyatt_continuous_deployment/lib/src/core/commands/init_project/init_project_task.dart b/packages/wyatt_continuous_deployment/lib/src/core/commands/init_project/init_project_task.dart
index eb37bbc8..0c917b4a 100644
--- a/packages/wyatt_continuous_deployment/lib/src/core/commands/init_project/init_project_task.dart
+++ b/packages/wyatt_continuous_deployment/lib/src/core/commands/init_project/init_project_task.dart
@@ -66,7 +66,7 @@ class InitProjectTask extends TaskCubit {
     // 2. Check tools
     emit(TaskStateCheckTools());
 
-    final checkToolsResult = await checkToolsUsecase(null);
+    final checkToolsResult = await checkToolsUsecase();
     if (checkToolsResult.isErr) {
       return emit(TaskStateError.fromRes(checkToolsResult));
     }
diff --git a/packages/wyatt_continuous_deployment/lib/src/core/task/task_cubit.dart b/packages/wyatt_continuous_deployment/lib/src/core/task/task_cubit.dart
index 51a36466..c974052b 100644
--- a/packages/wyatt_continuous_deployment/lib/src/core/task/task_cubit.dart
+++ b/packages/wyatt_continuous_deployment/lib/src/core/task/task_cubit.dart
@@ -62,7 +62,7 @@ abstract class TaskCubit extends Cubit<TaskState> {
     if (checks) {
       emit(TaskStateCheckTools());
 
-      final checkToolsResult = await _checkToolsUsecase(null);
+      final checkToolsResult = await _checkToolsUsecase();
       if (checkToolsResult.isErr) {
         return emit(TaskStateError.fromRes(checkToolsResult));
       }
diff --git a/packages/wyatt_continuous_deployment/lib/src/domain/entities/flutter.dart b/packages/wyatt_continuous_deployment/lib/src/domain/entities/flutter.dart
index d2c59a18..9d912310 100644
--- a/packages/wyatt_continuous_deployment/lib/src/domain/entities/flutter.dart
+++ b/packages/wyatt_continuous_deployment/lib/src/domain/entities/flutter.dart
@@ -49,9 +49,9 @@ class Flutter {
   final FlutterBuildIpaUsecase _flutterBuildIpaUsecase;
   final FlutterBuildAppBundleUsecase _flutterBuildAppBundleUsecase;
 
-  FutureOrResult<void> clean() => _flutterCleanUsecase(null);
-  FutureOrResult<void> getDependencies() => _flutterPubGetUsecase(null);
-  FutureOrResult<void> createXcArchive() => _flutterBuildXcarchiveUsecase(null);
+  FutureOrResult<void> clean() => _flutterCleanUsecase();
+  FutureOrResult<void> getDependencies() => _flutterPubGetUsecase();
+  FutureOrResult<void> createXcArchive() => _flutterBuildXcarchiveUsecase();
   FutureOrResult<void> buildIpa(List<String> args) =>
       _flutterBuildIpaUsecase(args);
   FutureOrResult<void> buildAppBundle(List<String> args) =>
diff --git a/packages/wyatt_continuous_deployment/lib/src/domain/usecases/process_usecase.dart b/packages/wyatt_continuous_deployment/lib/src/domain/usecases/process_usecase.dart
index 99c8fc89..4770374e 100644
--- a/packages/wyatt_continuous_deployment/lib/src/domain/usecases/process_usecase.dart
+++ b/packages/wyatt_continuous_deployment/lib/src/domain/usecases/process_usecase.dart
@@ -19,7 +19,6 @@ import 'dart:io';
 
 import 'package:wyatt_architecture/wyatt_architecture.dart';
 import 'package:wyatt_continuous_deployment/src/core/utils/logging.dart';
-import 'package:wyatt_continuous_deployment/src/domain/usecases/usecase.dart';
 import 'package:wyatt_type_utils/wyatt_type_utils.dart';
 
 abstract class ProcessUsecase<T> extends AsyncUseCase<T, void> {
@@ -58,7 +57,7 @@ abstract class ProcessUsecase<T> extends AsyncUseCase<T, void> {
     }
     progress.complete(onCompletedMessage);
     logger.detail(processResult?.stdout.toString().trim());
-    return const Ok(null);
+    return Ok(null);
   }
 
   /// Run the process with the given parameters.
@@ -81,7 +80,7 @@ abstract class ProcessNoParamsUsecase extends NoParamsAsyncUseCase<void> {
   String get onErrorMessage;
 
   @override
-  FutureOrResult<void> execute(void params) async {
+  FutureOrResult<void> execute() async {
     final progress = logger.progress(onStartedMessage);
     final processResult = await run();
     if (processResult != null) {
@@ -94,7 +93,7 @@ abstract class ProcessNoParamsUsecase extends NoParamsAsyncUseCase<void> {
     }
     progress.complete(onCompletedMessage);
     logger.detail(processResult?.stdout.toString().trim());
-    return const Ok(null);
+    return Ok(null);
   }
 
   /// Run the process with no parameters.
diff --git a/packages/wyatt_continuous_deployment/lib/src/domain/usecases/requirements/check_tools_usecase.dart b/packages/wyatt_continuous_deployment/lib/src/domain/usecases/requirements/check_tools_usecase.dart
index d4ba6dca..21023bdb 100644
--- a/packages/wyatt_continuous_deployment/lib/src/domain/usecases/requirements/check_tools_usecase.dart
+++ b/packages/wyatt_continuous_deployment/lib/src/domain/usecases/requirements/check_tools_usecase.dart
@@ -27,7 +27,7 @@ class CheckToolsUsecase extends NoParamsAsyncUseCase<void> {
   const CheckToolsUsecase() : super();
 
   @override
-  FutureOrResult<void> execute(void params) async => unsafeAsync(() async {
+  FutureOrResult<void> execute() async => unsafeAsync(() async {
         final missingTools = <String>[];
         for (final tool in AppConstants.requiredTools) {
           final isInstalled = await checkToolInstalled(tool);
diff --git a/packages/wyatt_continuous_deployment/lib/src/domain/usecases/usecase.dart b/packages/wyatt_continuous_deployment/lib/src/domain/usecases/usecase.dart
index a458817f..5015df15 100644
--- a/packages/wyatt_continuous_deployment/lib/src/domain/usecases/usecase.dart
+++ b/packages/wyatt_continuous_deployment/lib/src/domain/usecases/usecase.dart
@@ -17,7 +17,6 @@
 import 'dart:async';
 
 import 'package:wyatt_architecture/wyatt_architecture.dart';
-import 'package:wyatt_continuous_deployment/src/core/extensions/object_extension.dart';
 import 'package:wyatt_type_utils/wyatt_type_utils.dart';
 
 typedef Res<T> = Result<T, AppException>;
@@ -28,7 +27,3 @@ FutureOrResult<T> unsafeAsync<T>(FutureOr<T> Function() fn) =>
       () async => fn.call(),
       (error) => error.toException(),
     );
-
-abstract class NoParamsAsyncUseCase<T> extends AsyncUseCase<void, T> {
-  const NoParamsAsyncUseCase();
-}