#!/usr/bin/env bash set -euo pipefail chart_name=$(basename "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/nextcloud-clamav" && pwd)") chart_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/nextcloud-clamav" && pwd) helm lint "$chart_dir" --strict python3 - "$chart_dir" "$chart_name" <<'PY' import subprocess,sys,yaml chart,name=sys.argv[1:] with open(chart+'/Chart.yaml') as f: metadata=yaml.safe_load(f) def render(*args): output=subprocess.check_output(['helm','template',name,chart,'--namespace','nextcloud',*args],text=True) return {(x['kind'],x['metadata']['name']):x for x in yaml.safe_load_all(output) if x} default=render() enabled=render('--set','ingress.enabled=true','--set','monitoring.enabled=true') assert ('Service',name) in default assert ('Ingress',name) not in default if name!='nextcloud-clamav': assert ('Ingress',name) in enabled if name=='nextcloud-notify-push': assert ('ServiceMonitor',name) in enabled else: assert ('Deployment',name) in default images=[c['image'] for c in default['Deployment',name]['spec']['template']['spec'].get('initContainers',[])+default['Deployment',name]['spec']['template']['spec']['containers']] assert all(image.endswith(':'+metadata['appVersion']) for image in images) if name=='nextcloud-clamav': assert ('PersistentVolumeClaim',name) in default assert not any(kind=='Secret' for kind,_ in enabled) PY