-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathinstall.ps1
50 lines (38 loc) · 1.66 KB
/
install.ps1
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
#Requires -RunAsAdministrator
function Confirm($title, $question) {
$choices = "&Yes", "&No"
$choice = $Host.UI.PromptForChoice($title, $question, $choices, 1)
return $choice -eq 0
}
function Make-Symlink($target, $link) {
if (-not(Test-Path $target)) {
New-Item $target -ItemType SymbolicLink -Value $link
Write-Host "Created symlink at: $target."
return
}
if ((Get-FileHash $target).Hash -eq (Get-FileHash $link).Hash) {
Write-Host "Symlink exists at: $target. Skipping."
return
}
$question = "Do you want to create a symlink at: $($target)? THIS WILL OVERWRITE THE EXISTING FILE!"
if (-not(Confirm "[Symlink] -", $question)) {
Write-Host "Skipping."
return
}
New-Item $target -ItemType SymbolicLink -Value $link -Force
Write-Host "Created symlink at: $target."
}
if (Get-Command code -ErrorAction SilentlyContinue) {
$extensions = Get-Content "$PSScriptRoot.\vscode\extensions.windows"
$question = "Do you want to install the Visual Studio Code extensions listed below?`n$([System.String]::Join("`n", $extensions))"
if (Confirm "[Visual Studio Code] -", $question) {
$extensions | ForEach-Object { code --install-extension $_ --force }
} else {
Write-Host "Skipping."
}
} else {
Write-Host "Visual Studio Code is not installed or command 'code' is not in PATH. Skipping."
}
Make-Symlink "$($env:APPDATA)\Code\User\settings.json" "$($PSScriptRoot).\vscode\settings.json"
Make-Symlink "$($env:LOCALAPPDATA)\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" "$($PSScriptRoot).\windows\wt\settings.json"
Make-Symlink "$($env:USERPROFILE)\.wslconfig" "$($PSScriptRoot).\windows\.wslconfig"