generateApiClientService function

Future<void> generateApiClientService()

Generates a dart file and installs the required package.

Implementation

Future<void> generateApiClientService() async {
  final start = DateTime.now();

  ConsoleLog.title('Generating ApiClient ...');

  DartgenxConfig config = DartgenxConfig.load();

  final fileClient = File(config.outputPath?.apiClient ?? 'lib/api_client.dart');

  fileClient.createSync(recursive: true);

  fileClient.writeAsStringSync(apiClientTemplate(
      loggerInterceptorPath: config.outputPath?.loggerInterceptor?.replaceAll('lib', '') ??
          '/logger_interceptor.dart'));

  ConsoleLog.success('ApiClient generated at ${fileClient.path}');

  final fileLogger = File(config.outputPath?.loggerInterceptor ?? 'lib/logger_interceptor.dart');

  fileLogger.createSync(recursive: true);

  fileLogger.writeAsStringSync(loggerInterceptorTemplate);

  ConsoleLog.success('LoggerInterceptor generated at ${fileLogger.path}');

  ConsoleLog.info('Installing required dependencies...');

  final packages = ['dio', "path_provider"];

  ConsoleLog.step('flutter pub add ${packages.join(" ")}');

  final result = await Process.run(
    'flutter',
    ['pub', 'add', ...packages],
    runInShell: true,
  );
  stdout.write(result.stdout);
  stderr.write(result.stderr);

  final duration = DateTime.now().difference(start).inMilliseconds;
  ConsoleLog.info('⌚ Completed in ${duration}ms');
  ConsoleLog.line();
}