Merge bootstraper #3
|
@ -11,6 +11,7 @@ func main() {
|
|||
Config string `arg:"-c,--config,env:CONFIG" help:"Configuration values file or directory path" default:"./data/config"`
|
||||
TemplateDirectory string `arg:"-t,--template-dir,env:TEMPLATE_DIR" help:"Template directory path" default:"./data/templates"`
|
||||
RootDirectory string `arg:"-r,--root-dir,env:ROOT_DIR" help:"Generate files with this root instead of /" default:"/"`
|
||||
DryRun bool `arg:"-d,--dry-run,env:DRY_RUN" help:"Dry run do not really complete actions" default:"false"`
|
||||
}
|
||||
|
||||
arg.MustParse(&args)
|
||||
|
@ -21,7 +22,7 @@ func main() {
|
|||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
if err = hostConfig.ManageServices(); err != nil {
|
||||
if err = hostConfig.ManageServices(args.DryRun); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import (
|
|||
"log"
|
||||
"os"
|
||||
|
||||
"forge.cadoles.com/pcaseiro/templatefile/pkg/utils"
|
||||
"github.com/imdario/mergo"
|
||||
)
|
||||
|
||||
|
@ -80,10 +81,14 @@ func (tc *TemplaterConfig) New(confpath string, templateDir string, rootDir stri
|
|||
}
|
||||
|
||||
// Process the services contained in the configuration "object"
|
||||
func (tc *TemplaterConfig) ManageServices() error {
|
||||
func (tc *TemplaterConfig) ManageServices(dryRun bool) error {
|
||||
// Get global vars to add on each service
|
||||
gbls := tc.GlobalService.Vars
|
||||
|
||||
if dryRun {
|
||||
utils.DryRun = dryRun
|
||||
}
|
||||
|
||||
for name, svr := range tc.Services {
|
||||
err := mergo.Merge(&svr.Vars, gbls)
|
||||
if err != nil {
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
package templater
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestManageService(t *testing.T) {
|
||||
var hostConfig TemplaterConfig
|
||||
|
||||
err := hostConfig.New("../../data/config/loki-stack.json", "../../data/templates/", "/tmp/testing")
|
||||
if err != nil {
|
||||
t.Errorf(err.Error())
|
||||
}
|
||||
|
||||
err = hostConfig.ManageServices(true)
|
||||
if err != nil {
|
||||
t.Errorf(err.Error())
|
||||
}
|
||||
}
|
|
@ -78,7 +78,7 @@ func (hr *APKRepository) Update() error {
|
|||
|
||||
// FIXME
|
||||
func (hr *APKRepository) Delete() error {
|
||||
fileBytes, err := ioutil.ReadFile("/etc/apk/repositories")
|
||||
fileBytes, err := ioutil.ReadFile(APKConfigFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -90,6 +90,9 @@ func (hr *APKRepository) Delete() error {
|
|||
}
|
||||
|
||||
func (hr *APKRepository) Manage() error {
|
||||
if utils.DryRun {
|
||||
return nil
|
||||
} else {
|
||||
if hr.Enabled {
|
||||
if err := hr.Add(); err != nil {
|
||||
return err
|
||||
|
@ -100,3 +103,4 @@ func (hr *APKRepository) Manage() error {
|
|||
return hr.Delete()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,11 +2,14 @@ package utils
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"os/exec"
|
||||
|
||||
"github.com/hashicorp/hcl/v2"
|
||||
)
|
||||
|
||||
var DryRun = false
|
||||
|
||||
func CheckErr(e error) {
|
||||
if e != nil {
|
||||
panic(e)
|
||||
|
@ -21,6 +24,12 @@ func CheckDiags(diag hcl.Diagnostics) {
|
|||
|
||||
// Execute a system command ...
|
||||
func RunSystemCommand(name string, arg ...string) ([]byte, []byte, error) {
|
||||
if DryRun {
|
||||
stdOut := []byte(fmt.Sprintf("CMD %s\n", name))
|
||||
stdErr := []byte("STDERR\n")
|
||||
|
||||
return stdOut, stdErr, nil
|
||||
} else {
|
||||
var stdOut bytes.Buffer
|
||||
var stdErr bytes.Buffer
|
||||
|
||||
|
@ -30,3 +39,4 @@ func RunSystemCommand(name string, arg ...string) ([]byte, []byte, error) {
|
|||
err := cmd.Run()
|
||||
return stdOut.Bytes(), stdErr.Bytes(), err
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue