publish static method

List<PipeStage> publish(
  1. BPConfig config
)

The stages of build_pipe:publish

Implementation

static List<PipeStage> publish(BPConfig config) {
  _HookEnvironment environment = _HookEnvironment(config, "publish");

  List<PipeStep> platformSteps = [];
  for (TargetPlatform platform in config.publishPlatforms) {
    PlatformConfig platformConfig = config.platformConfig(platform)!;
    (String, PipeStep Function(String label))? upload = switch (platform) {
      TargetPlatform.android => (
        "Android - Play Store",
        (String label) => platformConfig.androidConfig!.publishConfig!.uploadToPlayStoreStep(config, label: label),
      ),
      TargetPlatform.ios => (
        "iOS - App Store",
        (String label) => platformConfig.iosConfig!.publishConfig!.uploadToIOSStep(config, label: label),
      ),
      // Only the stores of iOS and Android are supported at the moment
      TargetPlatform.macos || TargetPlatform.windows || TargetPlatform.linux || TargetPlatform.web => null,
    };
    if (upload == null) continue;

    PipeStep step = _platformStep(
      label: upload.$1,
      mainLabel: "Upload",
      main: upload.$2,
      extraSteps: [],
      hooks: platformConfig.publishHooks,
      platform: platform,
      environment: environment,
    );
    environment.platformSteps[step] = platform;
    platformSteps.add(step);
  }

  return [
    PipeStage(
      "Pre-publish",
      steps: [
        if (config.publishHooks.pre != null) _hookStep("Pre-platform run", config.publishHooks.pre!, environment.forPrePlatformRun),
      ],
    ),
    PipeStage("Publish", steps: platformSteps, onFailure: FailurePolicy.continueRun),
    PipeStage("Post-publish", steps: _postPlatformRunSteps(config.publishHooks, environment)),
  ];
}