run method

  1. @override
Future<int> run()
override

Runs this command.

The return value is wrapped in a Future if necessary and returned by CommandRunner.runCommand.

Implementation

@override
Future<int> run() async {
  final configFile = File(_configPath);

  if (!configFile.existsSync()) {
    logger.info('No configuration file found');
    logger.info('');
    logger.info(
        'Run ${lightCyan.wrap('pubmind config set --api-key sk-...')} to create one');
    return ExitCode.success.code;
  }

  try {
    final content = configFile.readAsStringSync();
    final config = jsonDecode(content) as Map<String, dynamic>;

    logger.info('📄 ${lightCyan.wrap('Configuration:')}');
    logger.info('');
    logger.info('Config file: ${darkGray.wrap(_configPath)}');
    logger.info('');

    if (config.containsKey('openai_api_key')) {
      final key = config['openai_api_key'] as String;
      final maskedKey =
          '${key.substring(0, 7)}...${key.substring(key.length - 4)}';
      logger.info('OpenAI API Key: ${lightGreen.wrap(maskedKey)}');
    } else {
      logger.info('OpenAI API Key: ${darkGray.wrap('Not set')}');
    }

    return ExitCode.success.code;
  } catch (e) {
    logger.err('Failed to read configuration: $e');
    return ExitCode.software.code;
  }
}