import * as core from "@actions/core" ; import * as jsyaml from "js-yaml" ; import { K8sSecret , parseK8sSecret } from "../types/k8sSecret" ; import { Method , parseMethod } from "../types/method" ; returns export function getDefaultKubeconfig ( ) { const method = parseMethod ( core . getInput ( "method" , { required : true } ) ) ; switch ( method ) { case Method . SERVICE_ACCOUNT : { const clusterUrl = core . getInput ( "k8s-url" , { required : true } ) ; core . debug ( "Found clusterUrl. Creating kubeconfig using certificate and token" ) ; const k8sSecret = core . getInput ( "k8s-secret" , { required : true , } ) ; const parsedK8sSecret = parseK8sSecret ( jsyaml . load ( k8sSecret ) ) ; const certAuth = parsedK8sSecret . data [ "ca.crt" ] ; const token = Buffer . from ( parsedK8sSecret . data . token , "base64" ) . toString ( ) ; return createKubeconfig ( certAuth , token , clusterUrl ) ; } case Method . SERVICE_PRINCIPAL : { core . warning ( "Service Principal method not supported for default cluster type" ) ; } case undefined : { core . warning ( "Defaulting to kubeconfig method" ) ; } default : { core . debug ( "Setting context using kubeconfig" ) ; return core . getInput ( "kubeconfig" , { required : true } ) ; } } } param certAuth param token param clusterUrl returns export function createKubeconfig ( certAuth , token , clusterUrl ) { const kubeconfig = { apiVersion : "v1" , kind : "Config" , clusters : [ { cluster : { "certificate-authority-data" : certAuth , server : clusterUrl , } , } , ] , users : [ { user : { token : token , } , } , ] , } ; return JSON . stringify ( kubeconfig ) ; }