Skip to content

Commit 779d2f0

Browse files
feat: helm integration first draft
1 parent 1af354e commit 779d2f0

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

yamldifftool.py

+18-6
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,35 @@ def filter_defaults(base, user_provided, root_diff, path=[], strict=False):
2727
if base != user_provided:
2828
traverse_and_set(user_provided, root_diff, path)
2929

30-
3130
if __name__ == "__main__":
3231
root_diff = {}
3332
path = []
3433

3534
parser = argparse.ArgumentParser(description="Tool to identify diffs between values.yaml and default")
36-
parser.add_argument("default_values", metavar="default_values.yaml", type=str,
37-
help="Base values.yaml for the helm chart version you're using")
3835
parser.add_argument("user_customized_values", metavar="customized.yaml", type=str, help="Customized values.yaml")
3936
parser.add_argument("-o", "--output", default=None, type=str,
4037
help="Write to filename. If not specified, output is written to stdout.")
4138
parser.add_argument("-s", "--strict", default=False, action=argparse.BooleanOptionalAction, type=bool,
4239
help="strict mode will drop all options not in default values.yaml.")
40+
parser.add_argument("--default_values", metavar="default_values.yaml", type=str,
41+
help="Base values.yaml for the helm chart version you're using")
42+
parser.add_argument("--chart", type=str, help="Helm chart name")
43+
parser.add_argument("--version", type=str, help="Helm chart version")
4344
args = parser.parse_args()
4445

45-
with open(args.default_values, 'r') as default_values:
46-
default_v = yaml.safe_load(default_values)
46+
if args.default_values:
47+
with open(args.default_values, 'r') as default_values:
48+
default_v = yaml.safe_load(default_values)
49+
elif args.chart and args.version:
50+
import subprocess
51+
result = subprocess.run(
52+
["helm", "show", "values", args.chart, "--version", args.version],
53+
capture_output=True, text=True, check=True
54+
)
55+
default_v = yaml.safe_load(result.stdout)
56+
print(type(default_v))
57+
else:
58+
raise ValueError("Either --default_values or both --chart and --version must be specified")
4759

4860
with open(args.user_customized_values, 'r') as overwritten_values:
4961
overwritten_v = yaml.safe_load(overwritten_values)
@@ -54,4 +66,4 @@ def filter_defaults(base, user_provided, root_diff, path=[], strict=False):
5466
with open(args.output, 'w') as outfile:
5567
yaml.dump(root_diff, outfile, sort_keys=False)
5668
else:
57-
yaml.dump(root_diff, sys.stdout, sort_keys=False)
69+
yaml.dump(root_diff, sys.stdout, sort_keys=False)

0 commit comments

Comments
 (0)