collect method

  1. @override
FlavorSetup collect()
override

Collects and returns the value produced by this wizard step.

Implementation

@override
FlavorSetup collect() {
  LoggerService.blank();
  LoggerService.info('Flavors');

  final enabled = PromptService.confirm(
    'Does project use flavors?',
    defaultValue: current?.flavoringEnabled ?? false,
  );

  if (!enabled) {
    LoggerService.info('Using default target: main');

    return const FlavorSetup(
      enabled: false,
      defaultFlavor: 'main',
      flavors: ['main'],
    );
  }

  final flavorsInput = PromptService.ask(
    'Flavors (comma separated)',
    defaultValue: _currentFlavors(),
  );

  final flavors = flavorsInput
      .split(',')
      .map((value) => value.trim())
      .where((value) => value.isNotEmpty)
      .toSet()
      .toList();

  if (flavors.isEmpty) {
    LoggerService.warning(
      'No valid flavors provided. Using default target: main',
    );

    return const FlavorSetup(
      enabled: false,
      defaultFlavor: 'main',
      flavors: ['main'],
    );
  }

  final requestedDefaultFlavor = PromptService.ask(
    'Default flavor',
    defaultValue: _currentDefaultFlavor(flavors),
  );

  final defaultFlavor = flavors.contains(requestedDefaultFlavor)
      ? requestedDefaultFlavor
      : flavors.first;

  if (defaultFlavor != requestedDefaultFlavor) {
    LoggerService.warning(
      'Unknown default flavor "$requestedDefaultFlavor". '
      'Using "$defaultFlavor" instead.',
    );
  }

  return FlavorSetup(
    enabled: true,
    defaultFlavor: defaultFlavor,
    flavors: flavors,
  );
}