-
Notifications
You must be signed in to change notification settings - Fork 52
/
DotFiles.psm1
85 lines (74 loc) · 2.42 KB
/
DotFiles.psm1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
function Symlink-File {
$DestPath = $args[0]
$SourcePath = $args[1]
if (Test-Path $DestPath) {
Write-Warning "$DestPath is already symlinked"
} else {
if ((Get-Item $SourcePath) -is [System.IO.DirectoryInfo]) {
cmd /c mklink /D "$DestPath" "$SourcePath"
} else {
cmd /c mklink "$DestPath" "$SourcePath"
}
echo "$DestPath has been symlinked"
}
}
function Unsymlink-File {
$DestPath = $args[0]
$SourcePath = $args[1]
if (Test-Path $DestPath) {
if ((Get-Item $SourcePath) -is [System.IO.DirectoryInfo]) {
cmd /c rmdir "$DestPath"
} else {
cmd /c del "$DestPath"
}
echo "$DestPath has been unsymlinked"
} else {
Write-Warning "$DestPath doesn't exist"
}
}
function Deploy-Manifest {
$ManifestFile = $args[0]
echo "Deploying $ManifestFile..."
$Manifest = Import-Csv -Header ("file", "operation") -Delimiter ("|") -Path ".\$ManifestFile"
$EmacsHome = $env:HOME
foreach ($ManifestRow in $Manifest) {
$DeployFile = $ManifestRow.file
$DeployOp = $ManifestRow.operation
$SourcePath = "$PSScriptRoot\$DeployFile"
$DestPath = "$EmacsHome\$DeployFile"
switch($DeployOp) {
"symlink" {
Symlink-File $DestPath $SourcePath
}
"copy" {
Write-Warning "The 'copy' operation is not implemented yet. Skipping..."
}
default {
Write-Warning "Unknown operation $operation. Skipping..."
}
}
}
}
function Undeploy-Manifest {
$ManifestFile = $args[0]
echo "Undeploying $ManifestFile..."
$Manifest = Import-Csv -Header ("file", "operation") -Delimiter ("|") -Path ".\$ManifestFile"
$EmacsHome = $env:HOME
foreach ($ManifestRow in $Manifest) {
$DeployFile = $ManifestRow.file
$DeployOp = $ManifestRow.operation
$SourcePath = "$PSScriptRoot\$DeployFile"
$DestPath = "$EmacsHome\$DeployFile"
switch($DeployOp) {
"symlink" {
Unsymlink-File $DestPath $SourcePath
}
"copy" {
Write-Warning "The 'copy' operation is not implemented yet. Skipping..."
}
default {
Write-Warning "Unknown operation $operation. Skipping..."
}
}
}
}