#!/bin/bash set -x export PATH=/snap/bin:$PATH : "${CHARM_BUILD_DIR:=/tmp/charms}" charm whoami RET=$? if ((RET > 0)); then echo "Not logged into charmstore" exit 1 fi function generate::attachments { ./build-cni-resources.sh for resource in *.tgz; do charm attach cs:~"$NAMESPACE"/"$CHARM" --channel unpublished "${resource%.*}"="$resource" done snap_placeholders=(core kubectl kubelet kube-proxy) mkdir -p placeholders for snap in ${snap_placeholders[@]}; do touch placeholders/"$snap.snap" charm attach cs:~"$NAMESPACE"/"$CHARM" --channel unpublished "$snap"=placeholders/"$snap".snap done } function generate::resource::argument { py_script=" import sys import json resources_json = json.load(sys.stdin) resource_map = [] for item in resources_json: resource_map.append(f\"--resource {item['Name']}-{item['Revision']}\") print(' '.join(resource_map)) " charm list-resources cs:~"$NAMESPACE"/"$CHARM" --channel unpublished --format json | env python3 -c "$py_script" } URL=$(charm push "$CHARM_BUILD_DIR"/builds/"$CHARM"/. cs:~"$NAMESPACE"/"$CHARM" | yq r - url) generate::attachments if [ "$CHANNEL" != unpublished ]; then charm release "$URL" --channel "$CHANNEL" $(generate::resource::argument) fi