-
Notifications
You must be signed in to change notification settings - Fork 0
/
scapecore-installer.ps1
58 lines (47 loc) · 1.83 KB
/
scapecore-installer.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
51
52
53
54
55
56
57
58
# Function to print a progress bar
function Show-Progress {
param(
[int]$progress
)
Write-Progress -Activity "Installing ScapeCore" -Status "$progress% Complete:" -PercentComplete $progress
}
# Clone the main repository
if (-not (Test-Path "ScapeCore")) {
git clone "https://github.com/Papishushi/ScapeCore"
}
# Check if the clone was successful
if ($LASTEXITCODE -ne 0) {
Write-Error "Error: Unable to clone the repository."
exit 1
}
# Move into the cloned directory
Set-Location "ScapeCore\Core"
# Update and initialize submodules with progress indicator
$totalSubmodules = $args.Count
$currentSubmodule = 0
# Update and initialize submodules
foreach ($submodulePath in $args) {
$currentSubmodule++
$progress = [math]::Round($currentSubmodule * 100 / $totalSubmodules)
# Print progress bar
Show-Progress $progress
# Check if module path does not exist or is empty
if (-not (Test-Path $submodulePath -PathType Container) -or -not (Get-ChildItem $submodulePath)) {
$env:submodule_path = $submodulePath
git submodule update --init $env:submodule_path
$env:proj_items_path = "./Core.projitems"
dotnet restore $env:proj_items_path
# Add xmlns to the Project tag
(Get-Content $env:proj_items_path) | ForEach-Object {
$_ -replace '<Project>', '<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">'
} | Set-Content $env:proj_items_path
}
else {
Write-Information "Warning: The submodule directory '$submodulePath' already exists."
Write-Information "Skipping submodule initialization for '$submodulePath'."
}
}
Get-ChildItem -Recurse | Where-Object { $_.PSIsContainer -and @(Get-ChildItem $_.FullName) -eq $null } | Remove-Item
dotnet restore "./Core.csproj"
./BuildinTypesUpdater.ps1
Set-Location ../..