PortValhalla/scripts/Common/Software/git/main.fish

91 lines
2.5 KiB
Fish

#!/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 user
set -l configArgs
function setConfig -S
sudo -u "$user" git config $configArgs $argv
end
if [ -z "$scope" ] || [ "$scope" = "system" ]
set root "valhalla"
set user "root"
set configArgs "--system"
else
set root "valhalla.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 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 "$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
runInstaller $argv
end