Add scripts for configuring git
This commit is contained in:
parent
1f20af3bc5
commit
6b1aee97a6
3 changed files with 120 additions and 39 deletions
scripts/Common/Software/git
|
@ -4,8 +4,108 @@ param (
|
|||
)
|
||||
|
||||
. "$PSScriptRoot/../../Scripts/Software.ps1";
|
||||
. "$PSScriptRoot/../../Scripts/System.ps1";
|
||||
. "$PSScriptRoot/../../Types/InstallerAction.ps1";
|
||||
|
||||
Start-SoftwareInstaller @PSBoundParameters `
|
||||
-Configurator {
|
||||
$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);
|
||||
}
|
||||
};
|
||||
|
||||
Start-SoftwareInstaller @Parameters `
|
||||
-Configurator {
|
||||
& $configure;
|
||||
} `
|
||||
-UserConfigurator {
|
||||
param(
|
||||
[hashtable] $Arguments
|
||||
)
|
||||
|
||||
& $configure -User $Arguments.Name;
|
||||
};
|
||||
} $PSBoundParameters;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue