#!/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 "bootstrap" "No remote given, bootstrapping from scratch" bootstrap_local return fi bootstrap_remote "$@" } bootstrap_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/bootstrap" "Creating $dir" mkdir -p -- "$dir" done for file in "${files[@]}" do notice "bashtard/bootstrap" "Creating $file" touch -- "$file" done } bootstrap_remote() { notice "bootstrap" "Cloning $1 to $BASHTARD_ETCDIR" git clone "$1" "$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/bootstrap" "Creating $file" touch -- "$file" done while read -r playbook url _ do notice "bashtard/bootstrap" "Cloning $playbook from $url" git clone "$url" "$BASHTARD_ETCDIR/playbooks.d/$playbook" # TODO: Clone appropriate branch done < "$BASHTARD_ETCDIR/playbooks.d/remotes" }