diff --git a/.hgignore b/.hgignore index 8ff5f76c62697593eb7185dba78ebfa821213956_LmhnaWdub3Jl..1895c0e0876a7fa8f05a64ffaf205dba4e35ca98_LmhnaWdub3Jl 100644 --- a/.hgignore +++ b/.hgignore @@ -1,6 +1,7 @@ syntax: glob build +tools/bin .idea *.swp diff --git a/Taskfile.yml b/Taskfile.yml index 8ff5f76c62697593eb7185dba78ebfa821213956_VGFza2ZpbGUueW1s..1895c0e0876a7fa8f05a64ffaf205dba4e35ca98_VGFza2ZpbGUueW1s 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -12,8 +12,12 @@ vars: VERSION: 1.0.0 OUTPUT: "build/beaver" + GOLANGCI_LINT_VERSION: v1.44.0 + GOLANGCI_LINT_BASE: tools/bin/golangci-lint + GOLANGCI_LINT_BIN: "{{.GOLANGCI_LINT_BASE}}-{{.GOLANGCI_LINT_VERSION}}" + GOLANGCI_LINT_ARGS: tasks: default: cmds: - task: build @@ -15,8 +19,9 @@ tasks: default: cmds: - task: build + build: desc: build golang project cmds: @@ -28,3 +33,20 @@ main.go generates: - "{{.OUTPUT}}" + + fetch-golangci-lint: + desc: fetch golangci-lint tool + cmds: + - mkdir -p tools/bin + - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b tools/bin {{.GOLANGCI_LINT_VERSION}} + - mv {{.GOLANGCI_LINT_BASE}} {{.GOLANGCI_LINT_BIN}} + status: + - test -x {{.GOLANGCI_LINT_BIN}} + generates: + - "{{.GOLANGCI_LINT_BIN}}" + + lint: + desc: lint our golang code to make sure we catch as much errors as possible + deps: [fetch-golangci-lint] + cmds: + - "{{.GOLANGCI_LINT_BIN}} run {{.GOLANGCI_LINT_ARGS}}" diff --git a/cmd/build.go b/cmd/build.go index 8ff5f76c62697593eb7185dba78ebfa821213956_Y21kL2J1aWxkLmdv..1895c0e0876a7fa8f05a64ffaf205dba4e35ca98_Y21kL2J1aWxkLmdv 100644 --- a/cmd/build.go +++ b/cmd/build.go @@ -1,4 +1,5 @@ package cmd import ( + "fmt" "os" @@ -4,5 +5,4 @@ "os" - "fmt" "orus.io/cloudcrane/beaver/runner" ) @@ -35,7 +35,11 @@ return fmt.Errorf("failed to create temp dir: %w", err) } if !cmd.Args.DryRun { - defer os.RemoveAll(tmpDir) + defer func() { + if err := os.RemoveAll(tmpDir); err != nil { + Logger.Err(err).Str("tempdir", tmpDir).Msg("failed to remove temp dir") + } + }() } if err := config.Initialize(tmpDir); err != nil { diff --git a/runner/cmd_test.go b/runner/cmd_test.go index 8ff5f76c62697593eb7185dba78ebfa821213956_cnVubmVyL2NtZF90ZXN0Lmdv..1895c0e0876a7fa8f05a64ffaf205dba4e35ca98_cnVubmVyL2NtZF90ZXN0Lmdv 100644 --- a/runner/cmd_test.go +++ b/runner/cmd_test.go @@ -3,6 +3,7 @@ import ( "fmt" "io/ioutil" + "os" "path/filepath" "testing" @@ -31,7 +32,10 @@ absConfigDir, err := filepath.Abs("fixtures/") require.NoError(t, err) c := NewCmdConfig(tl.Logger(), absConfigDir, testNS, false) - require.NoError(t, c.Initialize()) + tmpDir, err := os.MkdirTemp(os.TempDir(), "beaver-") + require.NoError(t, err) + defer assert.NoError(t, os.RemoveAll(tmpDir)) + require.NoError(t, c.Initialize(tmpDir)) t.Run("helmCharts", func(t *testing.T) { pgHelmChart, ok := c.Spec.Charts["postgres"] diff --git a/runner/config_test.go b/runner/config_test.go index 8ff5f76c62697593eb7185dba78ebfa821213956_cnVubmVyL2NvbmZpZ190ZXN0Lmdv..1895c0e0876a7fa8f05a64ffaf205dba4e35ca98_cnVubmVyL2NvbmZpZ190ZXN0Lmdv 100644 --- a/runner/config_test.go +++ b/runner/config_test.go @@ -1,6 +1,7 @@ package runner import ( + "os" "path/filepath" "testing" @@ -26,5 +27,8 @@ absConfigDir, err := filepath.Abs("fixtures/") require.NoError(t, err) c := NewCmdConfig(tl.Logger(), absConfigDir, testNS, false) - require.NoError(t, c.Initialize()) + tmpDir, err := os.MkdirTemp(os.TempDir(), "beaver-") + require.NoError(t, err) + defer assert.NoError(t, os.RemoveAll(tmpDir)) + require.NoError(t, c.Initialize(tmpDir)) @@ -30,6 +34,5 @@ - args, err := c.Spec.Ytt.BuildArgs(testNS, []string{"/tmp/postgres.1234.yaml", "/tmp/odoo.5678.yaml"}) - require.NoError(t, err) + args := c.Spec.Ytt.BuildArgs(testNS, []string{"/tmp/postgres.1234.yaml", "/tmp/odoo.5678.yaml"}) assert.Equal( t, args, diff --git a/runner/main.go b/runner/main.go index 8ff5f76c62697593eb7185dba78ebfa821213956_cnVubmVyL21haW4uZ28=..1895c0e0876a7fa8f05a64ffaf205dba4e35ca98_cnVubmVyL21haW4uZ28= 100644 --- a/runner/main.go +++ b/runner/main.go @@ -23,7 +23,7 @@ func (r *Runner) Build(tmpDir string) error { // create helm commands // create ytt chart commands - var cmds map[string]*cmd.Cmd + cmds := make(map[string]*cmd.Cmd) for name, chart := range r.config.Spec.Charts { args, err := chart.BuildArgs(name, r.config.Namespace) if err != nil {