diff --git a/README.md b/README.md new file mode 100644 index 0000000..0505ba0 --- /dev/null +++ b/README.md @@ -0,0 +1,119 @@ +# helm-dagger + +helm-dagger is a lightweight library that helps users to compile Helm charts +using custom values files. It simplifies the process of customizing Kubernetes +deployments for different environments or configurations. This library uses a +custom delimiter in the values files to avoid conflicts with Helm's default +delimiter. + +## Features + +- Customizable delimiters for the values files +- Lightweight and easy to integrate into your projects +- Allows using Helm charts with custom values files programmatically + +## Dependencies + +This library requires Docker to be installed. + +## Usage + +### 1. Import Helm-Dagger + +Import the helm-dagger library into your project: + +```bash +go get git.front.kjuulh.io/kjuulh/helm-dagger +``` + +```go +import ( + "context" + helmdagger "git.front.kjuulh.io/kjuulh/helm-dagger" +) +``` + +### 2. Prepare your chart and values files + +Store your chart and values files in a known directory. In this example, the +chart files are stored in the "test_data/nginx" directory, and the custom values +file is stored in the "test_data/nginx.values.yaml" file. + +### 3. Call the Compile function + +The Compile function is the main function to generate an output directory with +the customized chart. It accepts the following parameters: + +- `ctx`: a context.Context instance +- `client`: a dagger.Client instance +- `chartPath`: the path to the chart directory +- `valuesFilePath`: the path to the custom values file + +```go +helmOutput, err := helmdagger.Compile(ctx, client, "test_data/nginx", "test_data/nginx.values.yaml") +if err != nil { + log.Fatal(err) +} +``` + +### 4. Export the customized chart + +To export the customized chart, call the `Export` method on the returned +helmOutput: + +```go +exported, err := helmOutput.Export(ctx, "test_data/dist") +if err != nil { + log.Fatal(err) +} + +if exported { + log.Println("Helm chart successfully exported to test_data/dist") +} else { + log.Fatal("Failed to export Helm chart") +} +``` + +### 5. Verify the chart + +Check the output directory to see the compiled Helm chart: + +```go +dir, err := os.ReadDir("test_data/dist/nginx/templates") +if err != nil { + log.Fatal(err) +} + +log.Printf("Found %d templates in the output directory", len(dir)) +``` + +## Example + +An example of using helm-dagger to compile a Helm chart with a custom values +file can be found in the test file: + +```go +package helmdagger_test + +import ( +(...) // Import statements + +func TestHelmDagger(t *testing.T) { + (...) // Test setup + + helmoutput, err := daggerhelm.Compile(ctx, client, "test/test_data/nginx", "test/test_data/nginx.values.yaml") + assert.NoError(t, err) + + exported, err := helmoutput.Export(ctx, "test/test_data/dist") + assert.NoError(t, err) + assert.True(t, exported) + + dir, err := os.ReadDir("test/test_data/dist/nginx/templates") + assert.NoError(t, err) + assert.Equal(t, 2, len(dir)) +} +``` + +Now you can use Helm-Dagger to compile Helm charts with custom values files +programmatically, making it easier to manage different configurations for your +Kubernetes deployments. diff --git a/dagger.go b/dagger.go index 1b105af..b9d9b22 100644 --- a/dagger.go +++ b/dagger.go @@ -33,14 +33,6 @@ func Compile( if err != nil { return nil, fmt.Errorf("could not create a tempdir. err: %v", err) } - //defer func() { - // if _, err := os.Stat(tmpdir); !errors.Is(err, os.ErrNotExist) { - // err := os.RemoveAll(tmpdir) - // if err != nil { - // panic(err) - // } - // } - //}() if _, err := os.Stat(valuesFilePath); errors.Is(err, os.ErrNotExist) { return nil, fmt.Errorf("the values file does not exist: %v", err)