You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.0 KiB
41 lines
1.0 KiB
#!/bin/bash
|
|
|
|
chroot_root="$1"
|
|
shift
|
|
new_snaps=("$@")
|
|
seed_dir="$chroot_root/var/lib/snapd/seed"
|
|
snaps_dir="$seed_dir/snaps"
|
|
assertions_dir="$seed_dir/assertions"
|
|
seed_yaml="$seed_dir/seed.yaml"
|
|
|
|
# Loop through each snap and download it, then update seed.yaml
|
|
for snap_info in "${new_snaps[@]}"; do
|
|
snap_name=${snap_info%=*}
|
|
channel=${snap_info#*=}
|
|
|
|
# Download
|
|
snap download --channel="$channel" "$snap_name" --target-directory="$snaps_dir"
|
|
|
|
sleep 5
|
|
|
|
# Get revision number
|
|
snap_file=$(ls "$snaps_dir" | grep ".snap" | grep "^${snap_name}_")
|
|
rev_num=$(echo "$snap_file" | grep -oP '(?<=_)\d+')
|
|
|
|
# Move assertions
|
|
mv "$snaps_dir/${snap_name}_${rev_num}.assert" "$assertions_dir"
|
|
|
|
# Append to seed.yaml
|
|
{
|
|
echo " - name: $snap_name"
|
|
echo " file: $snap_file"
|
|
echo " channel: $channel"
|
|
} >> "$seed_yaml"
|
|
done
|
|
|
|
# Remove state.json if exists
|
|
[ -f "$chroot_root/var/lib/snapd/state.json" ] && rm "$chroot_root/var/lib/snapd/state.json"
|
|
|
|
# Validate
|
|
snap debug validate-seed "$seed_yaml"
|