2024-08-10 13:28:10 +00:00
|
|
|
param (
|
|
|
|
$Action,
|
|
|
|
[hashtable] $Arguments
|
|
|
|
)
|
|
|
|
|
|
|
|
. "$PSScriptRoot/../../Scripts/Software.ps1";
|
2024-08-22 23:43:26 +00:00
|
|
|
. "$PSScriptRoot/../../Scripts/System.ps1";
|
2024-08-10 13:28:10 +00:00
|
|
|
. "$PSScriptRoot/../../Types/InstallerAction.ps1";
|
|
|
|
|
2024-08-22 23:43:26 +00:00
|
|
|
$null = New-Module {
|
|
|
|
param(
|
|
|
|
[hashtable] $Parameters
|
|
|
|
)
|
|
|
|
|
|
|
|
$configure = {
|
|
|
|
param(
|
|
|
|
[string] $User
|
|
|
|
)
|
|
|
|
|
|
|
|
$root = "valhalla";
|
|
|
|
|
|
|
|
if ($User) {
|
|
|
|
$root = "$root$($IsWindows ? ".windows" : '').users.$User";
|
|
|
|
$sudoArgs = @("-u", $User);
|
|
|
|
$configArgs = @("--global");
|
|
|
|
} else {
|
|
|
|
$sudoArgs = @();
|
|
|
|
$configArgs = @("--system");
|
|
|
|
}
|
|
|
|
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
|
|
Gets the specified git configuration.
|
|
|
|
|
|
|
|
.PARAMETER Name
|
|
|
|
THe name of the configuration to get.
|
|
|
|
#>
|
|
|
|
function Get-GitConfig {
|
|
|
|
param(
|
|
|
|
[string] $Name
|
|
|
|
)
|
|
|
|
|
|
|
|
Get-Config "$root.git.$Name";
|
|
|
|
}
|
|
|
|
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
|
|
Sets a configuration option in git.
|
|
|
|
#>
|
|
|
|
function Set-GitConfig {
|
|
|
|
sudo @sudoArgs git config @configArgs @args;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ((-not $IsWindows) -or $User) {
|
|
|
|
$branch = Get-GitConfig "defaultBranch";
|
|
|
|
|
|
|
|
if ($branch) {
|
|
|
|
Set-GitConfig "init.defaultBranch" $branch;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# Git Flow
|
|
|
|
. {
|
|
|
|
$dir = New-TemporaryDirectory;
|
|
|
|
$key = "flow";
|
|
|
|
$mainBranch = Get-GitConfig "$key.mainBranch";
|
|
|
|
$devBranch = Get-GitConfig "$key.devBranch";
|
|
|
|
|
|
|
|
& {
|
|
|
|
git -C "$dir" init;
|
|
|
|
git -C "$dir" config user.name "PortValhalla";
|
|
|
|
git -C "$dir" config user.email "no-reply@valhal.la";
|
|
|
|
git -C "$dir" commit --allow-empty -m "Initial commit";
|
|
|
|
git -C "$dir" branch master;
|
|
|
|
git -C "$dir" branch dev;
|
|
|
|
git -C "$dir" flow init --defaults;
|
|
|
|
} | Out-Null;
|
|
|
|
|
|
|
|
if ($mainBranch) {
|
|
|
|
git -C "$dir" branch $mainBranch | Out-Null;;
|
|
|
|
sudo @sudoArgs git -C "$dir" flow config set @configArgs master $mainBranch;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($devBranch) {
|
|
|
|
git -C "$dir" branch $devBranch | Out-Null;
|
|
|
|
sudo @sudoArgs git -C "$dir" flow config set @configArgs develop $devBranch;
|
|
|
|
}
|
|
|
|
|
|
|
|
Remove-Item -Recurse -Force $dir;
|
|
|
|
};
|
|
|
|
|
|
|
|
# Aliases
|
|
|
|
[PSCustomObject] $aliases = Get-GitConfig "aliases";
|
|
|
|
|
|
|
|
foreach ($alias in ($aliases | Get-Member -MemberType Properties)) {
|
|
|
|
Set-GitConfig "alias.$($alias.Name)" $aliases.$($alias.Name);
|
|
|
|
}
|
2024-08-10 13:28:10 +00:00
|
|
|
};
|
2024-08-22 23:43:26 +00:00
|
|
|
|
|
|
|
Start-SoftwareInstaller @Parameters `
|
|
|
|
-Configurator {
|
|
|
|
& $configure;
|
|
|
|
} `
|
|
|
|
-UserConfigurator {
|
|
|
|
param(
|
|
|
|
[hashtable] $Arguments
|
|
|
|
)
|
|
|
|
|
|
|
|
& $configure -User $Arguments.Name;
|
|
|
|
};
|
|
|
|
} $PSBoundParameters;
|