From 5e0390b3ec0e6d2a307fed321c747b6ba357b113 Mon Sep 17 00:00:00 2001 From: Abdul Al-Hasany Date: Thu, 3 Aug 2023 02:27:04 +1000 Subject: [PATCH] fix(build): support running Blocky locally on Windows machines (#7281) * fix: update build path for windows When using single quote on windows, e.g. 'build/src', the folder are created with a single quote at the beginning `'build` and end `src'`. This commit fixes this issue. * fix: update python command and folder separator Ensure that when running on windows, python command is python and not python3. Also, separators are normalized to posix style `/` even on windows system * fix: add global PYTHON constant to run python command * fix: simplify `path.sep` to forwadslash since it is cross-platform * fix(syntax): replace double quote with single quote --- package.json | 2 +- scripts/gulpfiles/build_tasks.js | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 4c0b7df5e35..2f07c228e14 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "publish:beta": "npm ci && gulp publishBeta", "recompile": "gulp recompile", "release": "gulp gitCreateRC", - "start": "npm run build && concurrently -n tsc,server \"tsc --watch --preserveWatchOutput --outDir 'build/src' --declarationDir 'build/declarations'\" \"http-server ./ -s -o /tests/playground.html -c-1\"", + "start": "npm run build && concurrently -n tsc,server \"tsc --watch --preserveWatchOutput --outDir \"build/src\" --declarationDir \"build/declarations\"\" \"http-server ./ -s -o /tests/playground.html -c-1\"", "tsc": "gulp tsc", "test": "gulp test", "test:browser": "cd tests/browser && npx mocha", diff --git a/scripts/gulpfiles/build_tasks.js b/scripts/gulpfiles/build_tasks.js index 4b84bbf5900..4479c0be74d 100644 --- a/scripts/gulpfiles/build_tasks.js +++ b/scripts/gulpfiles/build_tasks.js @@ -30,6 +30,13 @@ const {posixPath} = require('../helpers'); // Build // //////////////////////////////////////////////////////////// +/** + * Path to the python runtime. + * This will normalize the command across platforms (e.g. python3 on Linux and + * Mac, python on Windows). + */ +const PYTHON = process.platform === 'win32' ? 'python' : 'python3'; + /** * Suffix to add to compiled output files. */ @@ -380,7 +387,7 @@ error message above, try running: */ function generateMessages(done) { // Run js_to_json.py - const jsToJsonCmd = `python3 scripts/i18n/js_to_json.py \ + const jsToJsonCmd = `${PYTHON} scripts/i18n/js_to_json.py \ --input_file ${path.join('msg', 'messages.js')} \ --output_dir ${path.join('msg', 'json')} \ --quiet`; @@ -418,7 +425,8 @@ function buildLangfiles(done) { json_files = json_files.filter(file => file.endsWith('json') && !(new RegExp(/(keys|synonyms|qqq|constants)\.json$/).test(file))); json_files = json_files.map(file => path.join('msg', 'json', file)); - const createMessagesCmd = `python3 ./scripts/i18n/create_messages.py \ + + const createMessagesCmd = `${PYTHON} ./scripts/i18n/create_messages.py \ --source_lang_file ${path.join('msg', 'json', 'en.json')} \ --source_synonym_file ${path.join('msg', 'json', 'synonyms.json')} \ --source_constants_file ${path.join('msg', 'json', 'constants.json')} \ @@ -559,7 +567,10 @@ function getChunkOptions() { // Figure out which chunk this is by looking for one of the // known chunk entrypoints in chunkFiles. N.B.: O(n*m). :-( const chunk = chunks.find( - chunk => chunkFiles.find(f => f.endsWith(path.sep + chunk.entry))); + chunk => chunkFiles.find(f => { + return f.endsWith('/' + chunk.entry.replaceAll('\\', '/')); + } + )); if (!chunk) throw new Error('Unable to identify chunk'); // Replace nicknames with the names we chose.