github.com/vchain-us/vcn@v0.9.11-0.20210921212052-a2484d23c0b3/pkg/cicontext/ci_context_saver.go (about)

     1  /*
     2   * Copyright (c) 2018-2020 vChain, Inc. All Rights Reserved.
     3   * This software is released under GPL3.
     4   * The full license information can be found under:
     5   * https://www.gnu.org/licenses/gpl-3.0.en.html
     6   *
     7   */
     8  
     9  package cicontext
    10  
    11  import (
    12  	"os"
    13  )
    14  
    15  type contextSaver struct {
    16  	probes []Probe
    17  }
    18  
    19  func NewContextSaver() *contextSaver {
    20  	return &contextSaver{
    21  		probes: []Probe{NewGithubProbe(), NewGitlabProbe(), NewJenkinsProbe()},
    22  	}
    23  }
    24  
    25  // GetCIContextMetadata returns the CI context metadata
    26  func (cs *contextSaver) GetCIContextMetadata() map[string]interface{} {
    27  	r := map[string]interface{}{}
    28  	for _, k := range CIEnvWhiteList {
    29  		if val, exist := os.LookupEnv(k); exist {
    30  			r[k] = val
    31  		}
    32  	}
    33  	for _, probe := range cs.probes {
    34  		if probe.Detect() {
    35  			r[CI_TYPE_KEY_NAME] = probe.GetName()
    36  			break
    37  		}
    38  	}
    39  	return r
    40  }
    41  
    42  // ExtendMetadata extends parent metadata with new data
    43  func ExtendMetadata(parent map[string]interface{}, data map[string]interface{}) map[string]interface{} {
    44  	for k, v := range data {
    45  		parent[k] = v
    46  	}
    47  	return parent
    48  }