#!/usr/bin/env bash # SPDX-FileCopyrightText: 2023 Patrick Spek # # SPDX-License-Identifier: AGPL-3.0-or-later subcommand() { remote="$1" ; shift if [[ -z "$remote" ]] then info "init" "No remote given, initializing from scratch" init_local return fi init_remote "$remote" } init_local() { local dirs=( "$BASHTARD_ETCDIR" "$BASHTARD_ETCDIR/conf.d" "$BASHTARD_ETCDIR/data.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/secrets" "$BASHTARD_ETCDIR/hosts.d/${BASHTARD_PLATFORM[fqdn]}" "$BASHTARD_ETCDIR/os.d/${BASHTARD_PLATFORM[key]}" ) 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 chmod 600 -- "$BASHTARD_ETCDIR/secrets" cat > "$BASHTARD_ETCDIR/.gitignore" <<-EOF secrets EOF } init_remote() { local remote="$1" ; shift notice "init" "Cloning $remote to $BASHTARD_ETCDIR" git clone --recurse-submodules "$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 }