#!/bin/env fish begin set -l dir (status dirname) source "$(status dirname)/../../Scripts/software.fish" function configureGit -S -V dir -a name source "$dir/../../Scripts/config.fish" set -l root "valhalla" set -l user set -l configArgs function setConfig -S sudo -u "$user" git config $configArgs $argv end if [ -z "$user" ] set user "root" set configArgs "--system" else set root "$root.users.$name" set user "$name" set configArgs "--global" set -l displayName "$root.displayName" set -l mailAddress "$root.mailAddress" if isSet "$displayName" setConfig user.name (getConfig "$displayName") end if isSet "$mailAddress" setConfig user.email (getConfig "$mailAddress") end end set -l branch "$root.git.defaultBranch" if isSet "$branch" setConfig init.defaultBranch (getConfig "$branch") end begin # Git Flow set -l dir (mktemp -d) pushd "$dir" > /dev/null begin set -l key "$root.git.flow" set -l mainKey "$key.mainBranch" set -l devKey "$key.devBranch" git init git commit --allow-empty -m "Initial commit" > /dev/null git branch master || true &> /dev/null git branch main || true &> /dev/null git branch dev || true &> /dev/null yes "" | git flow init &> /dev/null if isSet "$mainKey" sudo git flow config set $configArgs master (getConfig "$mainKey") > /dev/null else true end if isSet "$devKey" sudo git flow config set $configArgs develop (getConfig "$devKey") > /dev/null else true end end popd > /dev/null rm -rf "$dir" end begin # Aliases set -l key "$root.git.aliases" set -l aliases (getConfig "$key" --json) for name in (echo "$aliases" | jq 'keys[]' --raw-output0 | string split0) setConfig "alias.$name" (getConfig "$key.$name") end end end function configureSW -S -V dir configureGit end function userConfig -S -V dir -a name configureGit "$name" end runInstaller $argv end