generateThemeClass function

Future<void> generateThemeClass()

Implementation

Future<void> generateThemeClass() async {

  DartgenxConfig config = DartgenxConfig.load();

  String customPath;

  if (config.outputPath?.theme == null) {
    customPath = Input(
      prompt: 'Enter the full path where you want to create the theme folder:',
      defaultValue: Directory.current.path,
      validator: (v) {
        final trimmed = v.trim();

        final dir = Directory(trimmed);
        if (trimmed.isNotEmpty && !dir.existsSync()) {
          throw ValidationError('Directory does not exist. Please enter a valid path');
        }

        return true;
      },
    ).interact();
  } else {
    customPath = config.outputPath?.theme ?? "";
  }

  final basePath = customPath.trim().isEmpty ? path.join(Directory.current.path, "theme") : customPath.trim();

  // final String folderName = "theme";
  // final fullPath = path.join(basePath, folderName);
  final directory = Directory(basePath);

  if (directory.existsSync()) {
    ConsoleLog.error("The theme folder already exist!");
    exit(1);
  }

  directory.createSync(recursive: true);

  final appColorDir = Directory(path.join(directory.path, "app_colors"));
  appColorDir.createSync(recursive: true);

  final String appThemeFileName = "app_theme.dart";
  final String appTextStyleFileName = "app_text_styles.dart";
  final String appColorsFileName = "app_colors.dart";
  final String appLightColorsFileName = "app_light_colors.dart";
  final String appDarkColorsFileName = "app_dark_colors.dart";

  final appThemeFile = File(path.join(directory.path, appThemeFileName));
  final appTextStyleFile = File(path.join(directory.path, appTextStyleFileName));
  final appColorsFile = File(path.join(appColorDir.path, appColorsFileName));
  final appLightColorsFile = File(path.join(appColorDir.path, appLightColorsFileName));
  final appDarkColorsFile = File(path.join(appColorDir.path, appDarkColorsFileName));

  appThemeFile.writeAsStringSync(appThemeTemplate());
  appTextStyleFile.writeAsStringSync(appTextStyleTemplate());
  appColorsFile.writeAsStringSync(appColorTemplate());
  appLightColorsFile.writeAsStringSync(appLightColorTemplate());
  appDarkColorsFile.writeAsStringSync(appDarkColorTemplate());

  ConsoleLog.success("Theme class created successfully in \"$basePath\"!");
}