Add scripts for configuring git
This commit is contained in:
parent
1f20af3bc5
commit
6b1aee97a6
3 changed files with 120 additions and 39 deletions
|
@ -4,8 +4,108 @@ param (
|
||||||
)
|
)
|
||||||
|
|
||||||
. "$PSScriptRoot/../../Scripts/Software.ps1";
|
. "$PSScriptRoot/../../Scripts/Software.ps1";
|
||||||
|
. "$PSScriptRoot/../../Scripts/System.ps1";
|
||||||
. "$PSScriptRoot/../../Types/InstallerAction.ps1";
|
. "$PSScriptRoot/../../Types/InstallerAction.ps1";
|
||||||
|
|
||||||
Start-SoftwareInstaller @PSBoundParameters `
|
$null = New-Module {
|
||||||
-Configurator {
|
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;
|
||||||
|
|
|
@ -137,14 +137,14 @@ $null = New-Module {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-not (Test-Command "git")) {
|
if (-not (Test-Winget)) {
|
||||||
Install-ChocoPackage git;
|
. "$PSScriptRoot/../Software/winget/Manage.ps1";
|
||||||
refreshenv;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-not (Test-Winget)) {
|
if (-not (Test-Command "git")) {
|
||||||
. "$PSScriptRoot/../Software/winget/Manage.ps1";
|
Install-WingetPackage Git.Git;
|
||||||
|
refreshenv;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -320,6 +320,7 @@ $null = New-Module {
|
||||||
|
|
||||||
if (Test-Collection "essential") {
|
if (Test-Collection "essential") {
|
||||||
# Essentials
|
# Essentials
|
||||||
|
& "$softwarePath/git/Manage.ps1" @arguments;
|
||||||
& "$softwarePath/OpenSSH/Manage.ps1" @arguments;
|
& "$softwarePath/OpenSSH/Manage.ps1" @arguments;
|
||||||
& "$softwarePath/PowerShell/Manage.ps1" @arguments;
|
& "$softwarePath/PowerShell/Manage.ps1" @arguments;
|
||||||
& "$softwarePath/chocolatey/Manage.ps1" @arguments;
|
& "$softwarePath/chocolatey/Manage.ps1" @arguments;
|
||||||
|
|
|
@ -7,43 +7,18 @@ param (
|
||||||
. "$PSScriptRoot/../../../Common/Scripts/Software.ps1";
|
. "$PSScriptRoot/../../../Common/Scripts/Software.ps1";
|
||||||
. "$PSScriptRoot/../../../Common/Types/InstallerAction.ps1";
|
. "$PSScriptRoot/../../../Common/Types/InstallerAction.ps1";
|
||||||
|
|
||||||
$null = New-Module {
|
& {
|
||||||
param(
|
param(
|
||||||
[hashtable] $Parameters
|
[hashtable] $Parameters
|
||||||
)
|
)
|
||||||
|
|
||||||
. "$PSScriptRoot/../../../Common/Types/InstallerAction.ps1";
|
. "$PSScriptRoot/../../../Common/Types/InstallerAction.ps1";
|
||||||
|
$base = "$PSScriptRoot/../../../Common/Software/git/Manage.ps1";
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Gets a configuration value related to git.
|
|
||||||
|
|
||||||
.PARAMETER Name
|
|
||||||
The name of the configuration to get.
|
|
||||||
|
|
||||||
.PARAMETER User
|
|
||||||
The name of the user to get the configuration for.
|
|
||||||
#>
|
|
||||||
function Get-GitOption {
|
|
||||||
param(
|
|
||||||
[Parameter(Mandatory)]
|
|
||||||
[string] $Name,
|
|
||||||
[string] $User
|
|
||||||
)
|
|
||||||
|
|
||||||
$config = "git.$Name";
|
|
||||||
|
|
||||||
if ($User) {
|
|
||||||
Get-UserConfig -UserName $User -Name $config;
|
|
||||||
} else {
|
|
||||||
Get-Config $config;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Start-SoftwareInstaller @Parameters `
|
Start-SoftwareInstaller @Parameters `
|
||||||
-Installer {
|
-Installer {
|
||||||
$params = "/WindowsTerminalProfile";
|
$params = "/WindowsTerminalProfile";
|
||||||
$defaultBranch = Get-GitOption "defaultBranch";
|
$defaultBranch = Get-Config "valhalla.git.defaultBranch";
|
||||||
|
|
||||||
if ($defaultBranch) {
|
if ($defaultBranch) {
|
||||||
$params += " /DefaultBranchName:`"$defaultBranch`"";
|
$params += " /DefaultBranchName:`"$defaultBranch`"";
|
||||||
|
@ -52,8 +27,13 @@ $null = New-Module {
|
||||||
Install-ChocoPackage git -ArgumentList "--params",$params;
|
Install-ChocoPackage git -ArgumentList "--params",$params;
|
||||||
} `
|
} `
|
||||||
-Configurator {
|
-Configurator {
|
||||||
& "$PSScriptRoot/../../../Common/Software/git/Manage.ps1" @Parameters;
|
& $base ([InstallerAction]::Configure);
|
||||||
};
|
} `
|
||||||
|
-UserConfigurator {
|
||||||
|
param(
|
||||||
|
$Arguments
|
||||||
|
)
|
||||||
|
|
||||||
Export-ModuleMember -Function @();
|
& $base ([InstallerAction]::ConfigureUser) @PSBoundParameterrs;
|
||||||
} -ArgumentList $PSBoundParameters
|
};
|
||||||
|
} $PSBoundParameters;
|
||||||
|
|
Loading…
Reference in a new issue