From e6c39acdd6832418c627504d438fb1f83757908b Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Tue, 1 Jul 2025 19:10:02 +0200 Subject: [PATCH 1/2] feat: add --debug flag to installer to install debug builds --- assets/install | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/assets/install b/assets/install index 7ff9e9b..68137ee 100644 --- a/assets/install +++ b/assets/install @@ -5,6 +5,7 @@ install_dir="${PREFIX:-/usr/local}/bin" tmp_path="${TMPDIR:-/tmp}" add_alias=${ALIAS:-0} nightly=${NIGHTLY:-0} +debug=${DEBUG:-0} verify=${VERIFY:-0} local=${LOCAL:-0} use_sudo=${USE_SUDO:-0} @@ -15,6 +16,7 @@ usage() { echo echo " -a, --alias Create/update 'f' alias" echo " -n, --nightly Latest nightly build" + echo " -D, --debug Debug build" echo " -d , --dest Set install destination (default /usr/local/bin)" echo " -V, --verify Verify gpg signature" echo " -l, --local Verify gpg signature with local keychain" @@ -32,6 +34,10 @@ while true; do nightly=1 shift 1 ;; + -D | --debug) + debug=1 + shift 1 + ;; -d | --dest) install_dir=$2 shift 2 @@ -97,6 +103,14 @@ if [ "$nightly" -eq 0 ] && [ "$have_term" -eq 1 ]; then fi fi +if [ "$debug" -eq 0 ] && [ "$have_term" -eq 1 ]; then + printf "do you want to install a debug build? [y/N]: " + read -r answer_debug + if [ "$answer_debug" = "y" ] || [ "$answer_debug" = "Y" ]; then + debug=1 + fi +fi + if [ "$verify" -eq 0 ] && [ "$have_term" -eq 1 ]; then printf "do you want to download and verify the gpg signature? [y/N]: " read -r answer_verify @@ -145,6 +159,10 @@ version=$(curl -s "https://api.github.com/repos/$repo/releases/latest" | grep '" } title="$title $version" +if [ "$debug" -eq 1 ]; then + title="$title (debug)" +fi + if [ "$force_update" -eq 0 ] && [ -e "$install_dir/flow" ]; then current_version=$(flow --version 2>/dev/null | grep version: | cut -f2 -d ' ') if [ "$current_version" = "$version" ]; then @@ -179,6 +197,9 @@ ext="tar.gz" if [ "$os" = "windows" ]; then ext="zip" fi +if [ "$debug" -eq 1 ]; then + filename="$filename-debug" +fi url="https://github.com/$repo/releases/download/$version/$filename.$ext" echo "downloading $title..." From dec393595baae1472d003b4bc82c37b2ee182e31 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Tue, 1 Jul 2025 19:42:10 +0200 Subject: [PATCH 2/2] feat: add windows debug installers and update installer docs --- assets/install-debug.ps1 | 65 ++++++++++++++++++++++++++++++++++++++++ content/index.smd | 42 +++++++++++++++++++++----- zine.ziggy | 1 + 3 files changed, 100 insertions(+), 8 deletions(-) create mode 100644 assets/install-debug.ps1 diff --git a/assets/install-debug.ps1 b/assets/install-debug.ps1 new file mode 100644 index 0000000..afccd78 --- /dev/null +++ b/assets/install-debug.ps1 @@ -0,0 +1,65 @@ +$ErrorActionPreference = "Stop" + +$repo = "neurocyte/flow-nightly" +$title = "flow nightly build (debug)" +$updater = "install-debug" + +$release = Invoke-RestMethod -Uri "https://api.github.com/repos/$repo/releases/latest" +$version = $release.tag_name +$title_updater = "$title updater" +$install_dir = "$env:APPDATA\flow\bin" + +$existing_flow = Join-Path -Path $install_dir -ChildPath "flow.exe" +if (Test-Path $existing_flow) { + $existing_version_output = & $existing_flow --version 2>&1 | Out-String + $existing_version_lines = $existing_version_output -split "[\r\n]+" | Where-Object { $_ -match '^\s*version:\s*(.+?)\s*$' } + if ($existing_version_lines -and $matches) { + $existing_version = $matches[1] + if ($version -eq $existing_version) { + Write-Host "$title is up-to-date (version $version @ $install_dir)" + return + } + } +} + +$title = "$title $version" + +switch ($env:PROCESSOR_ARCHITECTURE) { + "AMD64" { $arch = "x86_64" } + "ARM64" { $arch = "aarch64" } + default { + Write-Host "unknown architecture: $($env:PROCESSOR_ARCHITECTURE)" + $LASTEXITCODE = 1 + return + } +} + +$filename = "flow-$version-windows-$arch-debug.zip" + +if (-not (Test-Path $install_dir)) { + Write-Host "creating installation directory: $install_dir" + New-Item -ItemType Directory -Path $install_dir | Out-Null +} + +Write-Host "downloading $title..." +Invoke-WebRequest -Uri "https://github.com/$repo/releases/download/$version/$filename" -OutFile "$install_dir\$filename" + +echo "installing $title to $install_dir ..." +Expand-Archive -Path "$install_dir\$filename" -DestinationPath $install_dir -Force +Remove-Item "$install_dir\$filename" + +echo "installing $title_updater to $install_dir\update-flow.ps1 ..." +Invoke-WebRequest -Uri "https://flow-control.dev/$updater.ps1" -OutFile "$install_dir\update-flow.ps1" + +echo "$title installed successfully to $install_dir" + +$current_path = [System.Environment]::GetEnvironmentVariable("Path", "User") +if ($current_path -notlike "*$install_dir*") { + $response = Read-Host "do you want to add $install_dir to your PATH? (y/n)" + if ($response -eq "y") { + $newPath = "$current_path;$install_dir" + [System.Environment]::SetEnvironmentVariable("Path", $newPath, "User") + Write-Host "added $install_dir to PATH" + Write-Host "close your terminal for changes to take effect" + } +} diff --git a/content/index.smd b/content/index.smd index 00b1721..a508c90 100644 --- a/content/index.smd +++ b/content/index.smd @@ -36,28 +36,24 @@ Flow Control is under active development, but usually very stable. ## 📦 Installation +### Linux, MacOS and *BSD + Fetch and install the latest release to `/usr/local/bin` with the installation helper script: ``` curl -fsSL https://flow-control.dev/install | sh ``` -or on Windows - -``` -Invoke-RestMethod "https://flow-control.dev/install.ps1" | Invoke-Expression -``` - Install the latest nightly build: ``` curl -fsSL https://flow-control.dev/install | sh -s -- --nightly ``` -or on Windows +with debug symbols: ``` -Invoke-RestMethod "https://flow-control.dev/install-nightly.ps1" | Invoke-Expression +curl -fsSL https://flow-control.dev/install | sh -s -- --nightly --debug ``` See all avalable options for the installer script: @@ -74,6 +70,36 @@ sudo chmod +x /usr/local/bin/update-flow update-flow ``` +At the top of the installer are variables to pre-answer the installation questions. +Configure them to your liking. + + +### Windows + +For Windows the installer scripts are a little different. + +Fetch and install the latest release to `%AppData%/Roaming/flow/bin`: + +``` +Invoke-RestMethod "https://flow-control.dev/install.ps1" | Invoke-Expression +``` + +Install the latest nightly build: + +``` +Invoke-RestMethod "https://flow-control.dev/install-nightly.ps1" | Invoke-Expression +``` + +Install the latest nightly build with pdb debug symbol files: + +``` +Invoke-RestMethod "https://flow-control.dev/install-debug.ps1" | Invoke-Expression +``` + +The Windows installer will also install itself as `update-flow.ps1` so you can just +run `update-flow` in a terminal to update to the latest release or nightly. + + ### Prebuilt Binaries - Stable: [Releases](https://github.com/neurocyte/flow/releases/latest) - Nightly: [Nightly Builds](https://github.com/neurocyte/flow-nightly/releases/latest) diff --git a/zine.ziggy b/zine.ziggy index 566ea4e..4736356 100644 --- a/zine.ziggy +++ b/zine.ziggy @@ -8,6 +8,7 @@ Site { "install", "install.ps1", "install-nightly.ps1", + "install-debug.ps1", "public.gpg", "fonts/AcPlus_IBM_VGA_9x16.ttf", "fonts/Iosevka-Regular.woff2",