diff options
Diffstat (limited to 'scripts/dev')
| -rw-r--r-- | scripts/dev/.gitignore | 1 | ||||
| -rw-r--r-- | scripts/dev/deploy.ps1 | 78 | ||||
| -rw-r--r-- | scripts/dev/deploy.sh | 57 | ||||
| -rw-r--r-- | scripts/dev/dev_deploy.ps1 | 28 | ||||
| -rw-r--r-- | scripts/dev/dev_deploy.sh | 15 | ||||
| -rw-r--r-- | scripts/dev/hide_ignored_file.ps1 | 43 |
6 files changed, 222 insertions, 0 deletions
diff --git a/scripts/dev/.gitignore b/scripts/dev/.gitignore new file mode 100644 index 0000000..50b595b --- /dev/null +++ b/scripts/dev/.gitignore @@ -0,0 +1 @@ +/last_check diff --git a/scripts/dev/deploy.ps1 b/scripts/dev/deploy.ps1 new file mode 100644 index 0000000..bc00cad --- /dev/null +++ b/scripts/dev/deploy.ps1 @@ -0,0 +1,78 @@ +# Require : Cargo (Rust), ISCC (Inno Setup) + +# Set location to script directory +$scriptPath = $MyInvocation.MyCommand.Path +$scriptDir = Split-Path $scriptPath -Parent + +# Run script to hide ignored files +$hideScriptPath = Join-Path $scriptDir "hide_ignored_file.ps1" +if (Test-Path $hideScriptPath) { + & $hideScriptPath +} else { + Write-Warning "hide_ignored_file.ps1 not found at $hideScriptPath" +} + +Set-Location (Join-Path $scriptDir "..\..") + +# Check for ISCC +$isccPath = Get-Command ISCC -ErrorAction SilentlyContinue +if (-not $isccPath) { + Write-Warning '"Inno Setup" not installed. (https://jrsoftware.org/isinfo.php)' + exit 1 +} + +# Check if core library exists +$coreLibPath = "..\VersionControl\" +if (-not (Test-Path $coreLibPath)) { + Write-Warning "Core library not found at $coreLibPath. Aborting build." + exit 1 +} + +# Test core library +Write-Host "Testing Core Library `".\..\VersionControl\Cargo.toml`"" +cargo test --manifest-path ..\VersionControl\Cargo.toml --workspace --quiet +if ($LASTEXITCODE -ne 0) { + Write-Warning "Core library tests failed. Aborting build." + exit 1 +} + +# Test workspace +Write-Host "Testing Command Line `".\Cargo.toml`"" +cargo test --workspace --quiet +if ($LASTEXITCODE -ne 0) { + Write-Warning "Workspace tests failed. Aborting build." + exit 1 +} + +# Check if main git worktree is clean +$gitStatus = git status --porcelain +if ($gitStatus) { + Write-Warning "Git worktree is not clean. Commit or stash changes before building." + exit 1 +} + +# Check if core library git worktree is clean +Push-Location $coreLibPath +$coreGitStatus = git status --porcelain +Pop-Location +if ($coreGitStatus) { + Write-Warning "Core library git worktree is not clean. Commit or stash changes before building." + exit 1 +} + +# Build +$env:FORCE_BUILD=$(Get-Date -Format 'mmss') +Write-Host "Building `".\Cargo.toml`"" +cargo build --workspace --release --quiet +if ($LASTEXITCODE -ne 0) { + # Build failed +} else { + # Build succeeded + # Export + Write-Host "Deploying `".\.cargo\config.toml`"" + if (cargo run --manifest-path tools/build_helper/Cargo.toml --quiet --bin exporter release) { + Copy-Item -Path templates\compile_info.rs.template -Destination src\data\compile_info.rs -Force + Write-Host "Packing Installer `".\setup\windows\setup_jv_cli.iss`"" + ISCC /Q .\setup\windows\setup_jv_cli.iss + } +} diff --git a/scripts/dev/deploy.sh b/scripts/dev/deploy.sh new file mode 100644 index 0000000..429ea0a --- /dev/null +++ b/scripts/dev/deploy.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# Require : Cargo (Rust) + +# Change to the directory where the script is located +cd "$(dirname "$0")/../../" || exit 1 + +# Check if core library exists +coreLibPath="../VersionControl/" +if [ ! -d "$coreLibPath" ]; then + echo "Core library not found at $coreLibPath. Aborting build." + exit 1 +fi + +# Test core library +echo "Testing Core Library \"../VersionControl/Cargo.toml\"" +cargo test --manifest-path ../VersionControl/Cargo.toml --workspace --quiet +if [ $? -ne 0 ]; then + echo "Core library tests failed. Aborting build." + exit 1 +fi + +# Test workspace +echo "Testing Command Line \"./Cargo.toml\"" +cargo test --workspace --quiet +if [ $? -ne 0 ]; then + echo "Workspace tests failed. Aborting build." + exit 1 +fi + +# Check if main git worktree is clean +git_status=$(git status --porcelain) +if [ -n "$git_status" ]; then + echo "Git worktree is not clean. Commit or stash changes before building." + exit 1 +fi + +# Check if core library git worktree is clean +pushd "$coreLibPath" > /dev/null +core_git_status=$(git status --porcelain) +popd > /dev/null +if [ -n "$core_git_status" ]; then + echo "Core library git worktree is not clean. Commit or stash changes before building." + exit 1 +fi + +# Build +echo "Building \"./Cargo.toml\"" +if FORCE_BUILD=$(date +%s) cargo build --workspace --release --quiet; then + # Build succeeded + # Export + echo "Deploying \"./.cargo/config.toml\"" + if cargo run --manifest-path tools/build_helper/Cargo.toml --quiet --bin exporter release; then + # Copy compile_info.rs.template to compile_info.rs after successful export + cp -f templates/compile_info.rs.template src/data/compile_info.rs + fi +fi diff --git a/scripts/dev/dev_deploy.ps1 b/scripts/dev/dev_deploy.ps1 new file mode 100644 index 0000000..8e3a8e9 --- /dev/null +++ b/scripts/dev/dev_deploy.ps1 @@ -0,0 +1,28 @@ +# Require : Cargo (Rust) + +# Set location to script directory +$scriptPath = $MyInvocation.MyCommand.Path +$scriptDir = Split-Path $scriptPath -Parent + +# Run script to hide ignored files +$hideScriptPath = Join-Path $scriptDir "hide_ignored_file.ps1" +if (Test-Path $hideScriptPath) { + & $hideScriptPath +} else { + Write-Warning "hide_ignored_file.ps1 not found at $hideScriptPath" +} + +Set-Location (Join-Path $scriptDir "..\..") + +# Build +$env:FORCE_BUILD=$(Get-Date -Format 'mm') +cargo build --workspace +if ($LASTEXITCODE -ne 0) { + # Build failed +} else { + # Build succeeded + # Export + if (cargo run --manifest-path tools/build_helper/Cargo.toml --quiet --bin exporter debug) { + Copy-Item -Path templates\compile_info.rs.template -Destination src\data\compile_info.rs -Force + } +} diff --git a/scripts/dev/dev_deploy.sh b/scripts/dev/dev_deploy.sh new file mode 100644 index 0000000..6127645 --- /dev/null +++ b/scripts/dev/dev_deploy.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Require : Cargo (Rust) + +# Change to the directory where the script is located +cd "$(dirname "$0")/../../" || exit 1 + +# Build +if FORCE_BUILD=$(date +%M) cargo build --workspace; then + # Export + if cargo run --manifest-path tools/build_helper/Cargo.toml --quiet --bin exporter debug; then + # Copy compile_info.rs.template to compile_info.rs after successful export + cp -f templates/compile_info.rs src/data/compile_info.rs + fi +fi diff --git a/scripts/dev/hide_ignored_file.ps1 b/scripts/dev/hide_ignored_file.ps1 new file mode 100644 index 0000000..0ab2632 --- /dev/null +++ b/scripts/dev/hide_ignored_file.ps1 @@ -0,0 +1,43 @@ +# Check `last_check` + +$lastCheckFile = Join-Path $PSScriptRoot "last_check" +$currentTime = Get-Date +$timeThreshold = 10 + +if (Test-Path $lastCheckFile) { + $lastCheckTime = Get-Content $lastCheckFile | Get-Date + $timeDiff = ($currentTime - $lastCheckTime).TotalMinutes + + if ($timeDiff -lt $timeThreshold) { + exit + } +} + +$currentTime.ToString() | Out-File -FilePath $lastCheckFile -Force + +# Hide Files + +Set-Location -Path (Join-Path $PSScriptRoot "..\..") + +Get-ChildItem -Path . -Force -Recurse -ErrorAction SilentlyContinue | Where-Object { + $_.FullName -notmatch '\\.temp\\' -and $_.FullName -notmatch '\\.git\\' +} | ForEach-Object { + attrib -h $_.FullName 2>&1 | Out-Null +} + +Get-ChildItem -Path . -Force -Recurse -ErrorAction SilentlyContinue | Where-Object { + $_.Name -match '^\..*' -and $_.FullName -notmatch '\\\.\.$' -and $_.FullName -notmatch '\\\.$' +} | ForEach-Object { + attrib +h $_.FullName 2>&1 | Out-Null +} + +if (Get-Command git -ErrorAction SilentlyContinue) { + git status --ignored --short | ForEach-Object { + if ($_ -match '^!!\s+(.+)$') { + $ignoredPath = $matches[1] + if ($ignoredPath -notmatch '\.lnk$' -and (Test-Path $ignoredPath)) { + attrib +h $ignoredPath 2>&1 | Out-Null + } + } + } +} |
