fromMap static method

PlatformConfig? fromMap(
  1. YamlMap data,
  2. TargetPlatform platform
)

Parses a map to PlatformConfig

Implementation

static PlatformConfig? fromMap(yaml.YamlMap data, TargetPlatform platform) {
  // If there is no build command, the instance won't be created
  if (!data.containsKey("build_command") || data["build_command"].toString().isEmpty) {
    return null;
  }

  // The base PlatformConfig instance
  PlatformConfig pc = PlatformConfig(
    platform: platform,
    buildCommand: data["build_command"],
  );

  // -=-=-=-=-=
  // Web
  // -=-=-=-=-=
  if (platform == TargetPlatform.web) {
    pc.webConfig = WebConfig(
      addVersionQueryParam: (data['add_version_query_param'] ?? true),
      webVersioningType: WebVersioningType.getByName(data['query_param_versioning_type']),
    );
  }

  // -=-=-=-=-=
  // iOS
  // -=-=-=-=-=
  if (platform == TargetPlatform.ios) {
    if (data.containsKey("publish")) {
      var iosPublishValidation = ApplePublishConfig.isValid(data["publish"], TargetPlatform.ios);
      if (!iosPublishValidation.$1) {
        Console.logError("Invalid publish config for iOS -> ${iosPublishValidation.$2 ?? "-"}");
        exit(1);
      }
      pc.iosConfig = IOSConfig(
        publishConfig: ApplePublishConfig.fromMap(data["publish"]),
      );
    }
  }

  // -=-=-=-=-=
  // macOS
  // -=-=-=-=-=
  if (platform == TargetPlatform.macos) {
    if (data.containsKey("publish")) {
      var macosPublishValidation = ApplePublishConfig.isValid(data["publish"], TargetPlatform.macos);
      if (!macosPublishValidation.$1) {
        Console.logError("Invalid publish config for macOS -> ${macosPublishValidation.$2 ?? "-"}");
        exit(1);
      }
      pc.macOSConfig = MacOSConfig(
        publishConfig: ApplePublishConfig.fromMap(data["publish"]),
      );
    }
  }

  // -=-=-=-=-=
  // Android
  // -=-=-=-=-=
  if (platform == TargetPlatform.android) {
    if (data.containsKey("publish")) {
      var androidPublishValidation = AndroidPublishConfig.isValid(data["publish"], TargetPlatform.android);
      if (!androidPublishValidation.$1) {
        Console.logError("Invalid publish config for Android -> ${androidPublishValidation.$2 ?? "-"}");
        exit(1);
      }
      pc.androidConfig = AndroidConfig(
        publishConfig: AndroidPublishConfig.fromMap(data["publish"]),
      );
    }
  }

  // -=-=-=-=-=
  // Linux
  // -=-=-=-=-=
  if (platform == TargetPlatform.linux) {
    pc.linuxConfig = LinuxConfig();
  }

  // -=-=-=-=-=
  // Windows
  // -=-=-=-=-=
  if (platform == TargetPlatform.windows) {
    pc.windowsConfig = WindowsConfig();
  }

  return pc;
}