export async function run()

in src/run.ts [17:85]


export async function run() {
   // verify kubeconfig is set
   if (!process.env['KUBECONFIG'])
      core.warning(
         'KUBECONFIG env is not explicitly set. Ensure cluster context is set by using k8s-set-context action.'
      )

   // get inputs
   const action: Action | undefined = parseAction(
      core.getInput('action', {required: true})
   )
   const strategy = parseDeploymentStrategy(core.getInput('strategy'))
   const manifestsInput = core.getInput('manifests', {required: true})
   const manifestFilePaths = manifestsInput
      .split(/[\n,;]+/) // split into each individual manifest
      .map((manifest) => manifest.trim()) // remove surrounding whitespace
      .filter((manifest) => manifest.length > 0) // remove any blanks

   const fullManifestFilePaths =
      await getFilesFromDirectoriesAndURLs(manifestFilePaths)
   const kubectlPath = await getKubectlPath()
   const namespace = core.getInput('namespace') || 'default'
   const isPrivateCluster =
      core.getInput('private-cluster').toLowerCase() === 'true'
   const resourceGroup = core.getInput('resource-group') || ''
   const resourceName = core.getInput('name') || ''
   const skipTlsVerify = core.getBooleanInput('skip-tls-verify')

   let resourceType: ClusterType
   try {
      // included in the trycatch to allow raw input to go out of scope after parsing
      const resourceTypeInput = core.getInput('resource-type')
      resourceType = parseResourceTypeInput(resourceTypeInput)
   } catch (e) {
      core.setFailed(e)
      return
   }

   const kubectl = isPrivateCluster
      ? new PrivateKubectl(
           kubectlPath,
           namespace,
           skipTlsVerify,
           resourceGroup,
           resourceName
        )
      : new Kubectl(kubectlPath, namespace, skipTlsVerify)

   // run action
   switch (action) {
      case Action.DEPLOY: {
         await deploy(kubectl, fullManifestFilePaths, strategy, resourceType)
         break
      }
      case Action.PROMOTE: {
         await promote(kubectl, fullManifestFilePaths, strategy, resourceType)
         break
      }
      case Action.REJECT: {
         await reject(kubectl, fullManifestFilePaths, strategy)
         break
      }
      default: {
         throw Error(
            'Not a valid action. The allowed actions are "deploy", "promote", and "reject".'
         )
      }
   }
}