#!/bin/bash # Function to create HelmChart YAML createHelmYaml() { # Load values from Chart.yaml chart_version=$(yq e '.dependencies[0].version' Chart.yaml) chart_name=$(yq e '.name' Chart.yaml) chart_repo=$(yq e '.dependencies[0].repository' Chart.yaml) chart_namespace=$(yq e '.annotations.namespace' Chart.yaml) # Check if chart_namespace is empty and default to chart_name if it is if [[ -z "$chart_namespace" ]]; then chart_namespace="$chart_name" fi # Determine the correct chart and repo values based on chart_repo if [[ $chart_repo == oci://* ]]; then chart="${chart_repo}/${chart_name}" else repo="$chart_repo" chart="$chart_name" fi # Load the raw content of values.yaml values_content=$(cat values.yaml) # Create HelmChart content in a variable helm_chart_yaml=$(yq eval -n ".apiVersion = \"helm.cattle.io/v1\" | .kind = \"HelmChart\" | .metadata.name = \"$chart_name\" | .metadata.namespace = \"$chart_namespace\" | .spec.chart = \"$chart\" | .spec.version = \"$chart_version\" | .spec.targetNamespace = \"$chart_namespace\" | .spec.valuesContent = \"$values_content\"") # If repo is set, add it to the spec if [[ -n "$repo" ]]; then helm_chart_yaml=$(echo "$helm_chart_yaml" | yq eval ".spec.repo = \"$repo\"") fi # Print the final YAML to stdout echo "$helm_chart_yaml" } # if actions is not set if [[ -z "$action" ]]; then action="print" fi echo "# action: $action" # if KUBECONFIG_DATA is set if [[ -n "$KUBECONFIG_DATA" ]]; then mkdir -p /home/notroot/.kube echo "$KUBECONFIG_DATA" > /home/notroot/.kube/config echo "# .kube/config is set" fi # Check if the action environment variable is set to 'print' if [[ "$action" == "print" ]]; then createHelmYaml elif [[ "$action" == "deploy" ]] && [[ -n "$KUBECONFIG_DATA" ]]; then kubectl version --kubeconfig=/home/notroot/.kube/config createHelmYaml | tee | kubectl apply -v --dry-run -f - elif [[ "$action" == "deploy" ]]; then echo "# no .kube/config set" kubectl version --client=true elif [[ "$action" == "debug" ]]; then echo "# dumping files" find . -type f -print -exec cat {} \; echo "# Computed file" createHelmYaml else echo "# invalid action" fi