From aeff0194ccb415904b1e37039e86a19f038dc708 Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Mon, 25 Apr 2022 13:23:44 +0200 Subject: Rename bootstrap to init --- lib/subcommands/init.bash | 81 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 lib/subcommands/init.bash (limited to 'lib/subcommands/init.bash') diff --git a/lib/subcommands/init.bash b/lib/subcommands/init.bash new file mode 100644 index 0000000..9194076 --- /dev/null +++ b/lib/subcommands/init.bash @@ -0,0 +1,81 @@ +#!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2022 Patrick Spek +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +subcommand() +{ + remote="$1" ; shift + + if [[ -z "$remote" ]] + then + info "init" "No remote given, initping from scratch" + init_local + return + fi + + init_remote "$remote" +} + +init_local() +{ + local dirs=( + "$BASHTARD_ETCDIR" + "$BASHTARD_ETCDIR/conf.d" + "$BASHTARD_ETCDIR/hosts.d" + "$BASHTARD_ETCDIR/os.d" + "$BASHTARD_ETCDIR/playbooks.d" + "$BASHTARD_ETCDIR/registry.d" + "$BASHTARD_ETCDIR/registry.d/${BASHTARD_PLATFORM[fqdn]}" + ) + + local files=( + "$BASHTARD_ETCDIR/defaults" + "$BASHTARD_ETCDIR/hosts.d/${BASHTARD_PLATFORM[fqdn]}" + "$BASHTARD_ETCDIR/os.d/${BASHTARD_PLATFORM[key]}" + "$BASHTARD_ETCDIR/playbooks.d/remotes" + ) + + for dir in "${dirs[@]}" + do + notice "bashtard/init" "Creating $dir" + mkdir -p -- "$dir" + done + + for file in "${files[@]}" + do + notice "bashtard/init" "Creating $file" + touch -- "$file" + done +} + +init_remote() +{ + local remote="$1" ; shift + + notice "init" "Cloning $remote to $BASHTARD_ETCDIR" + git clone "$remote" "$BASHTARD_ETCDIR" + + local files=( + "$BASHTARD_ETCDIR/hosts.d/${BASHTARD_PLATFORM[fqdn]}" + "$BASHTARD_ETCDIR/os.d/${BASHTARD_PLATFORM[key]}" + "$BASHTARD_ETCDIR/registry.d/${BASHTARD_PLATFORM[fqdn]}" + ) + + for file in "${files[@]}" + do + [[ -f "$file" ]] && continue + + notice "bashtard/init" "Creating $file" + touch -- "$file" + done + + while read -r playbook url _ + do + notice "bashtard/init" "Cloning $playbook from $url" + git clone "$url" "$BASHTARD_ETCDIR/playbooks.d/$playbook" + + # TODO: Clone appropriate branch + done < "$BASHTARD_ETCDIR/playbooks.d/remotes" +} -- cgit v1.1