未验证 提交 b0331654 编写于 作者: LinuxSuRen's avatar LinuxSuRen 提交者: GitHub

Enable custom war package config file as a template (#364)

* Enable custom war package config file as a template

* Update cwp.go
上级 f182fd5b
......@@ -4,6 +4,7 @@ import (
"encoding/xml"
"fmt"
"github.com/mitchellh/go-homedir"
"html/template"
"io/ioutil"
"os"
"path"
......@@ -40,6 +41,8 @@ func init() {
cwpCmd.Flags().StringVarP(&cwpOptions.MetadataURL, "metadata-url", "",
"https://repo.jenkins-ci.org/list/releases/io/jenkins/tools/custom-war-packager/custom-war-packager-cli/maven-metadata.xml",
i18n.T("The metadata URL"))
cwpCmd.Flags().StringToStringVarP(&cwpOptions.ValueSet, "value-set", "", nil,
`The value set of config template`)
localCache := path.Join(os.TempDir(), "/", ".jenkins-cli")
if userHome, err := homedir.Dir(); err == nil {
......@@ -68,6 +71,8 @@ type CWPOptions struct {
ShowProgress bool
MetadataURL string
LocalCache string
ValueSet map[string]string
}
var cwpOptions CWPOptions
......@@ -116,7 +121,15 @@ func (o *CWPOptions) Run(cmd *cobra.Command, args []string) (err error) {
}
if o.ConfigPath != "" {
cwpArgs = append(cwpArgs, "-configPath", o.ConfigPath)
configPath := o.ConfigPath
if o.ValueSet != nil {
if configPath, err = RenderTemplate(o.ConfigPath, o.ValueSet); err != nil {
return
}
defer os.RemoveAll(configPath)
}
cwpArgs = append(cwpArgs, "-configPath", configPath)
}
if o.TmpDir != "" {
......@@ -131,6 +144,18 @@ func (o *CWPOptions) Run(cmd *cobra.Command, args []string) (err error) {
return
}
// RenderTemplate render a go template to a temporary file
func RenderTemplate(path string, values map[string]string) (result string, err error) {
var t *template.Template
if t, err = template.ParseFiles(path); err == nil {
f, _ := ioutil.TempFile("/tmp", ".yaml")
err = t.Execute(f, values)
result = f.Name()
}
return
}
// Download get the latest cwp from server into local
func (o *CWPOptions) Download() (err error) {
var latest string
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册