summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/dev/.gitignore1
-rw-r--r--scripts/dev/deploy.ps178
-rw-r--r--scripts/dev/deploy.sh57
-rw-r--r--scripts/dev/dev_deploy.ps128
-rw-r--r--scripts/dev/dev_deploy.sh15
-rw-r--r--scripts/dev/hide_ignored_file.ps1 (renamed from scripts/hide_ignored_file.ps1)28
-rw-r--r--scripts/make_lnk.ps124
-rw-r--r--scripts/make_lnk.sh22
8 files changed, 246 insertions, 7 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/hide_ignored_file.ps1 b/scripts/dev/hide_ignored_file.ps1
index 27355c2..0ab2632 100644
--- a/scripts/hide_ignored_file.ps1
+++ b/scripts/dev/hide_ignored_file.ps1
@@ -1,27 +1,41 @@
-# Hide all dotfiles and git-ignored files before build
-# Set working directory to parent of script's directory
-Set-Location -Path (Join-Path $PSScriptRoot "..")
+# 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 "..\..")
-# First, unhide all files and directories in the current directory, but skip .temp and .git directories
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 all dotfiles and directories
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
}
-# Get git ignored files and hide them
if (Get-Command git -ErrorAction SilentlyContinue) {
git status --ignored --short | ForEach-Object {
if ($_ -match '^!!\s+(.+)$') {
$ignoredPath = $matches[1]
- if (Test-Path $ignoredPath) {
+ if ($ignoredPath -notmatch '\.lnk$' -and (Test-Path $ignoredPath)) {
attrib +h $ignoredPath 2>&1 | Out-Null
}
}
diff --git a/scripts/make_lnk.ps1 b/scripts/make_lnk.ps1
new file mode 100644
index 0000000..67d7ec2
--- /dev/null
+++ b/scripts/make_lnk.ps1
@@ -0,0 +1,24 @@
+$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
+Set-Location $scriptDir
+
+$deployPs1 = Join-Path $scriptDir "dev\deploy.ps1"
+$devDeployPs1 = Join-Path $scriptDir "dev\dev_deploy.ps1"
+$parentDir = Split-Path $scriptDir -Parent
+
+if (Test-Path $deployPs1) {
+ $linkPath = Join-Path $parentDir "deploy.lnk"
+ if (Test-Path $linkPath) { Remove-Item $linkPath -Force }
+ $WshShell = New-Object -ComObject WScript.Shell
+ $shortcut = $WshShell.CreateShortcut($linkPath)
+ $shortcut.TargetPath = $deployPs1
+ $shortcut.Save()
+}
+
+if (Test-Path $devDeployPs1) {
+ $linkPath = Join-Path $parentDir "dev.lnk"
+ if (Test-Path $linkPath) { Remove-Item $linkPath -Force }
+ $WshShell = New-Object -ComObject WScript.Shell
+ $shortcut = $WshShell.CreateShortcut($linkPath)
+ $shortcut.TargetPath = $devDeployPs1
+ $shortcut.Save()
+}
diff --git a/scripts/make_lnk.sh b/scripts/make_lnk.sh
new file mode 100644
index 0000000..3b52b97
--- /dev/null
+++ b/scripts/make_lnk.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+cd "$(dirname "$0")" || exit 1
+deploy_sh="$script_dir/dev/deploy.sh"
+dev_deploy_sh="$script_dir/dev/dev_deploy.sh"
+parent_dir="$(dirname "$script_dir")"
+
+if [ -f "$deploy_sh" ]; then
+ link_path="$parent_dir/deploy"
+ if [ -e "$link_path" ]; then
+ rm -f "$link_path"
+ fi
+ ln -s "$deploy_sh" "$link_path"
+fi
+
+if [ -f "$dev_deploy_sh" ]; then
+ link_path="$parent_dir/dev"
+ if [ -e "$link_path" ]; then
+ rm -f "$link_path"
+ fi
+ ln -s "$dev_deploy_sh" "$link_path"
+fi