def getPrefix()

in magenta-lib/src/main/scala/magenta/deployment_type/S3ObjectPrefixParameters.scala [59:106]


  def getPrefix(
      pkg: DeploymentPackage,
      target: DeployTarget,
      reporter: DeployReporter
  ): String = {
    val maybePackageOrAppName: Option[String] = (
      prefixPackage(pkg, target, reporter),
      prefixApp(pkg, target, reporter)
    ) match {
      case (_, true)      => Some(pkg.app.name)
      case (true, false)  => Some(pkg.name)
      case (false, false) => None
    }

    val prefixFromStagePaths: Map[String, String] =
      prefixStagePaths(pkg, target, reporter)

    if (prefixFromStagePaths.isEmpty) {
      S3Upload.prefixGenerator(
        stack =
          if (prefixStack(pkg, target, reporter)) Some(target.stack)
          else None,
        stage =
          if (prefixStage(pkg, target, reporter))
            Some(target.parameters.stage)
          else None,
        packageOrAppName = maybePackageOrAppName
      )
    } else {
      prefixFromStagePaths.get(target.parameters.stage.name) match {
        case Some(prefix) => prefix
        case _ =>
          reporter.fail(
            s"""
               |Unable to locate prefix for stage ${target.parameters.stage.name}.
               |
               |prefixStagePaths is set to:
               |
               |$prefixFromStagePaths
               |
               |To resolve, either:
               |  - Deploy to a known stage
               |  - Update prefixStagePaths, adding a value for ${target.parameters.stage.name}
               |""".stripMargin
          )
      }
    }
  }