#!/bin/env fish begin set -l dir (status dirname) source "$(status dirname)/../../Scripts/software.fish" function getSWName echo "git" end function configureSW -S -V dir -a scope name source "$dir/../../Scripts/config.fish" set -l root set -l configArgs function setConfig sudo git config $configArgs $argv end if [ -z "$scope" ] || [ "$scope" = "system" ] set -l root "valhalla" set -l configArgs "--system" else set -l root "valhalla.users.$name" set -l 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 valhalla.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 git.aliases set -l aliases (getConfig "$root.$key" --json) for name in (echo "$aliases" | jq 'keys[]' --raw-output0 | string split0) setConfig "alias.$name" (getConfig "$key.$name") end end end end