|
@@ -8,19 +8,14 @@ param (
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
|
|
if ($env:DEBUG) {
|
|
|
- $stow = "./park.ps1"
|
|
|
$stowArgs = @{
|
|
|
Simulate = $true
|
|
|
Verbose = $true
|
|
|
}
|
|
|
} else {
|
|
|
- $stow = "./park.ps1"
|
|
|
$stowArgs = @{}
|
|
|
}
|
|
|
|
|
|
-$stow = "Write-Output" # For debugging
|
|
|
-#$stow = "./park.ps1"
|
|
|
-
|
|
|
# Default to current directory if not set
|
|
|
$DOTFILES_DIR = $env:DOTFILES_DIR
|
|
|
if (-not $DOTFILES_DIR) {
|
|
@@ -30,34 +25,25 @@ if (-not $DOTFILES_DIR) {
|
|
|
function ActionToArg {
|
|
|
param ([string]$action)
|
|
|
switch ($action) {
|
|
|
- "remove" { return "--delete" }
|
|
|
- "update" { return "--restow" }
|
|
|
- "apply" { return "--stow" }
|
|
|
- default { return $null }
|
|
|
+ "remove" { return @{ delete = $true }}
|
|
|
+ "update" { return @{ restow = $true }}
|
|
|
+ "apply" { return @{ stow = $true }}
|
|
|
+ default { return @{} }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function TargetToDest {
|
|
|
param ([string]$target)
|
|
|
switch ($target) {
|
|
|
- "user" { return $env:HOME }
|
|
|
- "system" { return "/" }
|
|
|
- default { return $null }
|
|
|
+ "user" { return @{ target = $env:HOME }}
|
|
|
+ "system" { return @{ target = "/" }} # TODO: should be C:/ or something
|
|
|
+ default { return @{ }}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-function Invoke-Stow {
|
|
|
- param (
|
|
|
- [string]$StowDir,
|
|
|
- [string]$TargetDir,
|
|
|
- [string]$StowAction,
|
|
|
- [string]$StowPackage
|
|
|
- )
|
|
|
- & $stow -d $StowDir -t $TargetDir $StowAction $StowPackage
|
|
|
-}
|
|
|
-
|
|
|
$actionArg = ActionToArg $Action
|
|
|
-if (-not $actionArg) {
|
|
|
+$stowArgs += $actionArg
|
|
|
+if ($actionArg.Count -eq 0) {
|
|
|
Write-Host "No such action: $Action"
|
|
|
exit 1
|
|
|
}
|
|
@@ -65,16 +51,24 @@ if (-not $actionArg) {
|
|
|
if ($Target) {
|
|
|
$packageTargetPath = Join-Path -Path "$DOTFILES_DIR/$Package" -ChildPath $Target
|
|
|
if (Test-Path $packageTargetPath -PathType Container) {
|
|
|
- $dest = TargetToDest $Target
|
|
|
- Invoke-Stow -StowDir "$DOTFILES_DIR/$Package" -TargetDir $dest -StowAction $actionArg -StowPackage $Target
|
|
|
+ $stowArgs += @{
|
|
|
+ dir = "$DOTFILES_DIR/$Package"
|
|
|
+ package = "$Target"
|
|
|
+ }
|
|
|
+ $stowArgs += TargetToDest $Target
|
|
|
+ ./park.ps1 @stowArgs
|
|
|
}
|
|
|
elseif ($Target -ne "user") {
|
|
|
Write-Host "Target '$Target' does not exist for package '$Package'"
|
|
|
exit 1
|
|
|
}
|
|
|
else {
|
|
|
- $dest = TargetToDest "user"
|
|
|
- Invoke-Stow -StowDir $DOTFILES_DIR -TargetDir $dest -StowAction $actionArg -StowPackage $Package
|
|
|
+ $stowArgs += @{
|
|
|
+ dir = "$DOTFILES_DIR"
|
|
|
+ package = "$Package"
|
|
|
+ }
|
|
|
+ $stowArgs += TargetToDest "user"
|
|
|
+ ./park.ps1 @stowArgs
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
@@ -83,14 +77,22 @@ else {
|
|
|
$path = "$DOTFILES_DIR/$Package/$t"
|
|
|
if (Test-Path $path -PathType Container) {
|
|
|
$any = $true
|
|
|
- $dest = TargetToDest $t
|
|
|
- Invoke-Stow -StowDir "$DOTFILES_DIR/$Package" -TargetDir $dest -StowAction $actionArg -StowPackage $t
|
|
|
+ $stowArgs += @{
|
|
|
+ dir = "$DOTFILES_DIR/$Package"
|
|
|
+ package = "$t"
|
|
|
+ }
|
|
|
+ $stowArgs += TargetToDest $t
|
|
|
+ ./park.ps1 @stowArgs
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (-not $any) {
|
|
|
- $dest = TargetToDest "user"
|
|
|
- Invoke-Stow -StowDir $DOTFILES_DIR -TargetDir $dest -StowAction $actionArg -StowPackage $Package
|
|
|
+ $stowArgs += @{
|
|
|
+ dir = "$DOTFILES_DIR"
|
|
|
+ package = "$Package"
|
|
|
+ }
|
|
|
+ $stowArgs += TargetToDest "user"
|
|
|
+ ./park.ps1 @stowArgs
|
|
|
}
|
|
|
}
|
|
|
|