[Tooling] Update code to DRY the Windows build PS1 - #1408
Conversation
22ed9f5 to
1786427
Compare
| # Validate build type | ||
| if ($BuildType -notin $VALID_BUILD_TYPES) { | ||
| Write-Host "Error: BuildType must be one of: $($VALID_BUILD_TYPES -join ', ')" -ForegroundColor Red | ||
| exit 1 |
There was a problem hiding this comment.
I wonder if there's a difference between exit 1 and Exit 1
There was a problem hiding this comment.
This PS linter rule says:
PowerShell is case insensitive wherever possible, so the casing of cmdlet names, parameters, keywords and operators does not matter. This rule nonetheless ensures consistent casing for clarity and readability.
I'll update it for consistency, thanks for bringing it up!
| param ( | ||
| [Parameter(Mandatory=$true)] | ||
| [string]$BuildType | ||
| ) |
There was a problem hiding this comment.
One of our other apps that is not open source uses an env var to drive the behavior:
if (-not $env:NODE_ENV) {
Write-Error "NODE_ENV must be set to either 'production' or 'development'"
Exit 1
}
if ($env:NODE_ENV -notin @('production', 'development')) {
Write-Error "NODE_ENV must be either 'production' or 'development', got: $env:NODE_ENV"
Exit 1
}Have you considered that option. If so, why did you chose this?
The call parameter is cool in that it would allow us to run release vs dev builds regardless of what's in the environment. But then... is there a use case where we would want to ignore whichever setting is in the environment?
I don't have a favorite implementation, just curious and thinking out loud.
There was a problem hiding this comment.
Have you considered that option. If so, why did you chose this?
I did consider, but the case of running the script as a function with regular, clearly defined parameters seemed to make the code more obvious specially on the caller side.
It's not a big difference after all, but when reading the other code the first time it took me some time to realize that NODE_ENV was being set in the environment and used as input by the script.
is there a use case where we would want to ignore whichever setting is in the environment?
Is NODE_ENV some sort of standard env var also used by anything other than our own script or something we came up with? If it's used by anything else, then perhaps it's best to just use the env var in the entire call stack 🤔
There was a problem hiding this comment.
the case of running the script as a function with regular, clearly defined parameters seemed to make the code more obvious specially on the caller side
Agreed. Env vars are not as obvious as call parameters.
There was a problem hiding this comment.
Is
NODE_ENVsome sort of standard env var also used by anything other than our own script or something we came up with?
My understanding, validated by ChatGPT for what is worth, is that it's not a standard but it is a very common convention. ChatGPT tells me it is used in React and Webpack, which are widely popular frameworks.
Git-grepping for it brings up a few results, but I think it's telling the team decided to use a different env var, IS_DEV_BUILD, to drive whether to make a dev or release build.
I think we're good to stick to the implementation you propose here 👍
| "make:win-release": "powershell -File .buildkite/commands/build-for-windows.ps1 -BuildType release", | ||
| "make:win-dev": "powershell -File .buildkite/commands/build-for-windows.ps1 -BuildType dev", |
There was a problem hiding this comment.
TIL.
I wonder if there's a way to wrap this in some code that fails with a helpful message on non-Windows environments. Then again, I don't see devs making builds, on Windows or non-Windows machines, as a use case we ought to optimize for. All builds should run through CI.
There was a problem hiding this comment.
I wonder if there's a way to wrap this in some code that fails with a helpful message on non-Windows environments
On a Mac it will complain that powershell isn't available (though when you install it with brew, the command is actually named pwsh). I think it is possible but tricky to write something that would work in all environments, and probably not worth it.
There was a problem hiding this comment.
I think it is possible but tricky to write something that would work in all environments, and probably not worth it.
👍
| param ( | ||
| [Parameter(Mandatory=$true)] | ||
| [string]$BuildType | ||
| ) |
There was a problem hiding this comment.
the case of running the script as a function with regular, clearly defined parameters seemed to make the code more obvious specially on the caller side
Agreed. Env vars are not as obvious as call parameters.
| "make:win-release": "powershell -File .buildkite/commands/build-for-windows.ps1 -BuildType release", | ||
| "make:win-dev": "powershell -File .buildkite/commands/build-for-windows.ps1 -BuildType dev", |
There was a problem hiding this comment.
I think it is possible but tricky to write something that would work in all environments, and probably not worth it.
👍
| param ( | ||
| [Parameter(Mandatory=$true)] | ||
| [string]$BuildType | ||
| ) |
There was a problem hiding this comment.
Is
NODE_ENVsome sort of standard env var also used by anything other than our own script or something we came up with?
My understanding, validated by ChatGPT for what is worth, is that it's not a standard but it is a very common convention. ChatGPT tells me it is used in React and Webpack, which are widely popular frameworks.
Git-grepping for it brings up a few results, but I think it's telling the team decided to use a different env var, IS_DEV_BUILD, to drive whether to make a dev or release build.
I think we're good to stick to the implementation you propose here 👍
* Update code to DRY the Windows build PS1 * Update case of `Exit` command * Use `windows` instead of just `win` to prefix windows-related scripts * Add $LastExitCode check after `npm run make`
commit d31733b Author: katinthehatsite <katerynakodonenko@gmail.com> Date: Tue May 27 09:12:55 2025 +0200 Studio: Delete old proof-of-concept WP-CLI implementation (#1426) * Remove old scripts * Remove old cli.ts * Cleanup tests * Clean up terminal opening and feature flag * Cleanup assistant code * Clean shortcuts code * Cleanup feature flags * Cleanup feature flags * Cleanup shortcuts sessions * Removed unused feature flag for assistant * Assistant code block test fix * Adjust preload * Cleanup index file and tests * Refactor terminal usage * Add back the lock * Remove unintended change * Remove unnecesary type for warp * Use bundled Ids * Cleanup event parameter --------- Co-authored-by: Kateryna Kodonenko <kateryna@automattic.com> commit 4fac446 Author: Volodymyr Makukha <nei.css@gmail.com> Date: Mon May 26 20:19:35 2025 +0100 Update Ukrainian translations - May 26 (#1439) commit c7536ef Author: Antonio Sejas <antonio.sejas@automattic.com> Date: Mon May 26 18:34:28 2025 +0100 Load LTR and RTL stylesheets conditionally (#1429) * Add a new component * Load @wordpress/components css conditionally based on RTL and LTR. * Load index.css a.k.a main_window.css after loading the WordPress stylesheet commit c80b70e Author: Bero <berislav.grgicak@gmail.com> Date: Mon May 26 19:20:42 2025 +0200 Update Playground packages to 1.0.38 and remove the Symlink manager (#1425) * Update Playground packages to 1.0.38 * Remove SymlinkManager * Activate Playground's followSymlinks feature * Remove @php-wasm/universal patch commit 5bfe676 Author: Wojtek Naruniec <wojtek.naruniec@automattic.com> Date: Mon May 26 15:40:18 2025 +0200 Sanitize regex in Win editor path (#1411) * Sanitize regex * Import only escapeRegExp function commit 2cd3e44 Author: Ivan Ottinger <ivan.ottinger@automattic.com> Date: Mon May 26 13:18:02 2025 +0200 Bump version from 1.5.2-beta4 to 1.5.2 (#1436) commit f16865e Author: Ivan Ottinger <ivan.ottinger@automattic.com> Date: Mon May 26 12:38:24 2025 +0200 Add release notes for 1.5.2 (#1434) * Add release notes for 1.5.2 * Reorder release notes * Update release notes order and formatting * Added latest UI fix to the release notes * Consolidate Studio CLI fixes into a single bullet point commit f6e48d5 Author: Ivan Ottinger <ivan.ottinger@automattic.com> Date: Mon May 26 12:21:30 2025 +0200 Add translations for 1.5.2 (#1433) * Add translations for 1.5.2 * Add latest Polish and Spanish translations * Update spanish translations --------- Co-authored-by: Antonio Sejas <antonio@sejas.es> commit ae1d163 Author: Antonio Sejas <antonio.sejas@automattic.com> Date: Mon May 26 10:58:22 2025 +0100 Share same styles between preview and sync tabs (#1435) commit d6a7905 Author: Roberto Aranda <roberto.aranda@automattic.com> Date: Fri May 23 15:23:14 2025 +0200 Return original URL param when it cannot be parsed (#1420) * Return the passed URL parameter when it cannot be parsed instead of an empty string commit 91d04be Author: Antonio Sejas <antonio.sejas@automattic.com> Date: Fri May 23 14:22:34 2025 +0100 Update localized docs links for Studio Sync and Studio CLI (#1431) * Add translation link to new Spanish studio docs CLI * Add hash to Studio sync supported sites commit 6213094 Author: katinthehatsite <katerynakodonenko@gmail.com> Date: Fri May 23 14:27:53 2025 +0200 Add patch to fix the accessibility with modals (#1423) Co-authored-by: Kateryna Kodonenko <kateryna@automattic.com> commit b2724c0 Author: Rahul Gavande <rahul.gavande@automattic.com> Date: Fri May 23 14:45:11 2025 +0530 Use uri scheme to open Warp terminal app (#1428) commit 43c831b Author: Fredrik Rombach Ekelund <fredrik@f26d.dev> Date: Wed May 21 16:10:40 2025 +0200 CLI: Set UTF8 encoding for output on Windows (#1424) commit b1c0eeb Author: Volodymyr Makukha <nei.css@gmail.com> Date: Wed May 21 10:34:47 2025 +0100 Fix hiding plugins spinner (#1419) commit 48988ed Author: Fredrik Rombach Ekelund <fredrik@f26d.dev> Date: Wed May 21 10:31:33 2025 +0200 Add migration to rename launch uniques stat (#1415) * Add migration to rename launch uniques stat * Fix CLI zod schema commit f363144 Author: Ivan Ottinger <ivan.ottinger@automattic.com> Date: Tue May 20 18:24:00 2025 +0200 Bump version to 1.5.2-beta4 (#1421) commit 9768e67 Author: Ivan Ottinger <ivan.ottinger@automattic.com> Date: Tue May 20 15:29:33 2025 +0200 Pressable Sync: Fix remaining Sync modal issues (#1416) * Use absolute path for `WordPressLogoCircle` import * Use separate `isDisabled` to makde WP logo gray * Remove trailing space in site selector helper text * Decrease font size of sync sites modal learn more link commit 9fab398 Author: Ian G. Maia <iangmaia@users.noreply.github.com> Date: Tue May 20 13:15:23 2025 +0200 [Tooling] Update code to DRY the Windows build PS1 (#1408) * Update code to DRY the Windows build PS1 * Update case of `Exit` command * Use `windows` instead of just `win` to prefix windows-related scripts * Add $LastExitCode check after `npm run make` commit e5d4006 Author: Ivan Ottinger <ivan.ottinger@automattic.com> Date: Tue May 20 12:01:21 2025 +0200 Improve version comparison logic to handle prerelease transitions correctly (#1403) commit f0a282b Author: Rahul Gavande <rahul.gavande@automattic.com> Date: Tue May 20 15:15:25 2025 +0530 HTTPS: Convert domain name Unicode characters to ASCII characters (#1400) * Convert domain name unicode chars to ASCII * Do not use punnycode domain name for paths * Remove unncessary punnycode domain name commit 6cdc351 Author: Roberto Aranda <roberto.aranda@automattic.com> Date: Tue May 20 11:35:52 2025 +0200 Sync: Update notification to include Hostname (#1412) * Push: Update notification to include Hostname * Pull: Update notification to include hostname * Add hints for translators commit 69419a6 Author: Gergely Csécsey <gergely.csecsey@automattic.com> Date: Tue May 20 10:30:57 2025 +0100 Increase HTTP request timeout to 60 seconds (#1407) * Increase HTTP request timeout to 60 seconds * Increase curl timeout to 60 seconds * update comments commit 6bcbbff Author: Antonio Sejas <antonio.sejas@automattic.com> Date: Tue May 20 09:36:18 2025 +0100 Update connect site text button when connecting another site (#1413) * Adapt the "Connect Site" button when connecting multiple sites on Sync. commit 60a9cab Author: Antonio Sejas <antonio.sejas@automattic.com> Date: Tue May 20 09:10:37 2025 +0100 Avoid orphan in sync title (#1414) commit 3b103cc Author: Antonio Sejas <antonio.sejas@automattic.com> Date: Mon May 19 10:39:12 2025 +0100 Release 1.5.2-beta3 (#1410) commit a109671 Author: Ivan Ottinger <ivan.ottinger@automattic.com> Date: Mon May 19 09:45:17 2025 +0200 Sync: Update sync tab text and remove WordPress logo from title (#1405) * Update sync tab text and remove WordPress logo from title * Fix related test * Use comma * Update copy of the bullet points * Replace `WP.com` with `WordPress.com`. Co-authored-by: Antonio Sejas <antonio.sejas@automattic.com> * Replace WP.com with WordPress.com Co-authored-by: Antonio Sejas <antonio.sejas@automattic.com> * Delete unused WordPress short logo component --------- Co-authored-by: Antonio Sejas <antonio.sejas@automattic.com> commit 716bc7a Author: Ivan Ottinger <ivan.ottinger@automattic.com> Date: Fri May 16 16:15:16 2025 +0200 Sync: Update Sync modal content (#1406) * Update WordPress logo component `viewBox` * Update Sync modal heading * Update text below Sync search field * Update Sync modal site logos * Replace hardcoded arrows with `ArrowIcon` component in sync sites modal links * Localize sync modal Read more link using `getLocalizedLink` utility commit 11b4302 Author: Roberto Aranda <roberto.aranda@automattic.com> Date: Fri May 16 15:14:40 2025 +0200 Push: Read and update the progress from the sync endpoint (#1389) * Calls the GET /sync/import using the importId to obtain the progress * Use the progress from the /sync/import endpoint to update the progress in the importing state * Splits the progress of the importing state between backup and import commit 7423bdf Author: katinthehatsite <katerynakodonenko@gmail.com> Date: Fri May 16 11:40:18 2025 +0200 Studio: Fix no directory or file error on Windows (#1391) * Fix no directory or file error on Windows * Cleanup directories --------- Co-authored-by: Kateryna Kodonenko <kateryna@automattic.com> commit 1661ac4 Author: Antonio Sejas <antonio.sejas@automattic.com> Date: Fri May 16 10:04:32 2025 +0100 Force display of what's new for minor version (#1404) * Force what's new display for minor version * Skip test that compares the patch version
Internal reference: AINFRA-532
Consolidates
build-for-windows-dev.ps1andbuild-for-windows-release.ps1into a single script.The new
build-for-windows.ps1script can be called withnpm run make:windows-releaseornpm run make:windows-dev.