aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-01-09 20:33:53 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-01-09 20:33:53 +0100
commitd85f09cbed5f3d2501f791e689011ae127df1cbb (patch)
tree0ed5be55dd5d3dec1d51eb60e7ff229274030a57 /scripts
parentbuild: Disable single-run eslint-typescript (diff)
downloadsophie-d85f09cbed5f3d2501f791e689011ae127df1cbb.tar.gz
sophie-d85f09cbed5f3d2501f791e689011ae127df1cbb.tar.zst
sophie-d85f09cbed5f3d2501f791e689011ae127df1cbb.zip
build: Add prettier
eslint will also enforce prettier rules, so there is no need to call prettier separately in CI. Signed-off-by: Kristóf Marussy <kristof@marussy.com>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/build.js31
-rw-r--r--scripts/update-electron-vendors.js26
-rw-r--r--scripts/watch.js101
3 files changed, 92 insertions, 66 deletions
diff --git a/scripts/build.js b/scripts/build.js
index 1236a6c..88267e5 100644
--- a/scripts/build.js
+++ b/scripts/build.js
@@ -14,7 +14,9 @@ const thisDir = fileURLToDirname(import.meta.url);
14async function buildPackageEsbuild(packageName) { 14async function buildPackageEsbuild(packageName) {
15 /** @type {{ default: import('esbuild').BuildOptions }} */ 15 /** @type {{ default: import('esbuild').BuildOptions }} */
16 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Read untyped config file. 16 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Read untyped config file.
17 const { default: config } = await import(`../packages/${packageName}/esbuild.config.js`); 17 const { default: config } = await import(
18 `../packages/${packageName}/esbuild.config.js`
19 );
18 return esbuildBuild(config); 20 return esbuildBuild(config);
19} 21}
20 22
@@ -32,18 +34,21 @@ function buildAll() {
32 const buildServiceShared = buildPackageEsbuild('service-shared'); 34 const buildServiceShared = buildPackageEsbuild('service-shared');
33 const buildShared = buildPackageEsbuild('shared'); 35 const buildShared = buildPackageEsbuild('shared');
34 return Promise.all([ 36 return Promise.all([
35 Promise.all([ 37 Promise.all([buildServiceShared, buildShared]).then(() =>
36 buildServiceShared, 38 buildPackageEsbuild('main'),
37 buildShared, 39 ),
38 ]).then(() => buildPackageEsbuild('main')), 40 buildServiceShared.then(() =>
39 buildServiceShared.then(() => Promise.all([ 41 Promise.all([
40 buildPackageEsbuild('service-inject'), 42 buildPackageEsbuild('service-inject'),
41 buildPackageEsbuild('service-preload'), 43 buildPackageEsbuild('service-preload'),
42 ])), 44 ]),
43 buildShared.then(() => Promise.all([ 45 ),
44 buildPackageEsbuild('preload'), 46 buildShared.then(() =>
45 buildPackageVite('renderer'), 47 Promise.all([
46 ])), 48 buildPackageEsbuild('preload'),
49 buildPackageVite('renderer'),
50 ]),
51 ),
47 ]); 52 ]);
48} 53}
49 54
diff --git a/scripts/update-electron-vendors.js b/scripts/update-electron-vendors.js
index 91cdb61..6ff5c06 100644
--- a/scripts/update-electron-vendors.js
+++ b/scripts/update-electron-vendors.js
@@ -16,10 +16,13 @@ const thisDir = fileURLToDirname(import.meta.url);
16 * @returns {NodeJS.ProcessVersions} 16 * @returns {NodeJS.ProcessVersions}
17 */ 17 */
18function getVendors() { 18function getVendors() {
19 const output = execSync(`${electronPath.toString()} -p "JSON.stringify(process.versions)"`, { 19 const output = execSync(
20 env: { ELECTRON_RUN_AS_NODE: '1' }, 20 `${electronPath.toString()} -p "JSON.stringify(process.versions)"`,
21 encoding: 'utf-8', 21 {
22 }); 22 env: { ELECTRON_RUN_AS_NODE: '1' },
23 encoding: 'utf-8',
24 },
25 );
23 26
24 // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- Read untyped output. 27 // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- Read untyped output.
25 return JSON.parse(output); 28 return JSON.parse(output);
@@ -34,17 +37,22 @@ function updateVendors() {
34 const electronRelease = getVendors(); 37 const electronRelease = getVendors();
35 38
36 const nodeMajorVersion = electronRelease.node.split('.')[0]; 39 const nodeMajorVersion = electronRelease.node.split('.')[0];
37 const chromeMajorVersion = electronRelease.v8.split('.')[0] + electronRelease.v8.split('.')[1]; 40 const chromeMajorVersion =
41 electronRelease.v8.split('.')[0] + electronRelease.v8.split('.')[1];
38 42
39 const browserslistrcPath = join(thisDir, '../.browserslistrc'); 43 const browserslistrcPath = join(thisDir, '../.browserslistrc');
40 44
41 return Promise.all([ 45 return Promise.all([
42 writeFile( 46 writeFile(
43 join(thisDir, '../.electron-vendors.cache.json'), 47 join(thisDir, '../.electron-vendors.cache.json'),
44 `${JSON.stringify({ 48 `${JSON.stringify(
45 chrome: chromeMajorVersion, 49 {
46 node: nodeMajorVersion, 50 chrome: chromeMajorVersion,
47 }, null, 2)}\n`, 51 node: nodeMajorVersion,
52 },
53 null,
54 2,
55 )}\n`,
48 ), 56 ),
49 57
50 writeFile(browserslistrcPath, `Chrome ${chromeMajorVersion}\n`, 'utf8'), 58 writeFile(browserslistrcPath, `Chrome ${chromeMajorVersion}\n`, 'utf8'),
diff --git a/scripts/watch.js b/scripts/watch.js
index 1345a0f..cf5dbfd 100644
--- a/scripts/watch.js
+++ b/scripts/watch.js
@@ -15,7 +15,10 @@ const thisDir = fileURLToDirname(import.meta.url);
15const sharedModule = join(thisDir, '../packages/shared/dist/index.mjs'); 15const sharedModule = join(thisDir, '../packages/shared/dist/index.mjs');
16 16
17/** @type {string} */ 17/** @type {string} */
18const serviceSharedModule = join(thisDir, '../packages/service-shared/dist/index.mjs'); 18const serviceSharedModule = join(
19 thisDir,
20 '../packages/service-shared/dist/index.mjs',
21);
19 22
20/** @type {RegExp[]} */ 23/** @type {RegExp[]} */
21const stderrIgnorePatterns = [ 24const stderrIgnorePatterns = [
@@ -37,7 +40,9 @@ const stderrIgnorePatterns = [
37async function setupEsbuildWatcher(packageName, extraPaths, callback) { 40async function setupEsbuildWatcher(packageName, extraPaths, callback) {
38 /** @type {{ default: import('esbuild').BuildOptions }} */ 41 /** @type {{ default: import('esbuild').BuildOptions }} */
39 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Read untyped config file. 42 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Read untyped config file.
40 const { default: config } = await import(`../packages/${packageName}/esbuild.config.js`); 43 const { default: config } = await import(
44 `../packages/${packageName}/esbuild.config.js`
45 );
41 config.logLevel = 'info'; 46 config.logLevel = 'info';
42 config.incremental = true; 47 config.incremental = true;
43 48
@@ -55,34 +60,37 @@ async function setupEsbuildWatcher(packageName, extraPaths, callback) {
55 callback(); 60 callback();
56 } 61 }
57 watcher.on('change', () => { 62 watcher.on('change', () => {
58 incrementalBuild.rebuild?.().then(() => { 63 incrementalBuild
59 if (callback) { 64 .rebuild?.()
60 console.log(`\u26a1 Reloading package ${packageName}`); 65 .then(() => {
61 callback(); 66 if (callback) {
62 } 67 console.log(`\u26a1 Reloading package ${packageName}`);
63 }).catch((err) => { 68 callback();
64 if (typeof err === 'object' && 'errors' in err) {
65 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- We just checked.
66 const { errors } = err;
67 if (Array.isArray(errors)) {
68 const errCount = errors.length;
69 console.error(
70 '\ud83d\udd25',
71 errCount,
72 errCount > 1 ? 'errors' : 'error',
73 'while rebuilding package',
74 packageName,
75 );
76 return;
77 } 69 }
78 } 70 })
79 console.error( 71 .catch((err) => {
80 '\ud83d\udd25', 72 if (typeof err === 'object' && 'errors' in err) {
81 'error while rebuilding package', 73 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- We just checked.
82 packageName, 74 const { errors } = err;
83 err, 75 if (Array.isArray(errors)) {
84 ); 76 const errCount = errors.length;
85 }); 77 console.error(
78 '\ud83d\udd25',
79 errCount,
80 errCount > 1 ? 'errors' : 'error',
81 'while rebuilding package',
82 packageName,
83 );
84 return;
85 }
86 }
87 console.error(
88 '\ud83d\udd25',
89 'error while rebuilding package',
90 packageName,
91 err,
92 );
93 });
86 }); 94 });
87} 95}
88 96
@@ -136,7 +144,11 @@ function setupServicePackageWatcher(packageName, sendEvent) {
136 */ 144 */
137function setupMainPackageWatcher(viteDevServer) { 145function setupMainPackageWatcher(viteDevServer) {
138 // Write a value to an environment variable to pass it to the main process. 146 // Write a value to an environment variable to pass it to the main process.
139 const { config: { server: { port, https, host } } } = viteDevServer; 147 const {
148 config: {
149 server: { port, https, host },
150 },
151 } = viteDevServer;
140 const protocol = `http${https ? 's' : ''}:`; 152 const protocol = `http${https ? 's' : ''}:`;
141 const hostOrDefault = typeof host === 'string' ? host : 'localhost'; 153 const hostOrDefault = typeof host === 'string' ? host : 'localhost';
142 const portOrDefault = port || 3000; 154 const portOrDefault = port || 3000;
@@ -148,10 +160,7 @@ function setupMainPackageWatcher(viteDevServer) {
148 160
149 return setupEsbuildWatcher( 161 return setupEsbuildWatcher(
150 'main', 162 'main',
151 [ 163 [serviceSharedModule, sharedModule],
152 serviceSharedModule,
153 sharedModule,
154 ],
155 () => { 164 () => {
156 if (spawnProcess !== null) { 165 if (spawnProcess !== null) {
157 spawnProcess.kill('SIGINT'); 166 spawnProcess.kill('SIGINT');
@@ -191,16 +200,20 @@ async function setupDevEnvironment() {
191 const sharedWatcher = setupEsbuildWatcher('shared'); 200 const sharedWatcher = setupEsbuildWatcher('shared');
192 const serviceSharedWatcher = setupEsbuildWatcher('service-shared'); 201 const serviceSharedWatcher = setupEsbuildWatcher('service-shared');
193 await Promise.all([ 202 await Promise.all([
194 sharedWatcher.then(() => Promise.all([ 203 sharedWatcher.then(() =>
195 setupPreloadPackageWatcher(sendEvent), 204 Promise.all([
196 setupDevServer('renderer').then((devServer) => { 205 setupPreloadPackageWatcher(sendEvent),
197 viteDevServer = devServer; 206 setupDevServer('renderer').then((devServer) => {
198 }), 207 viteDevServer = devServer;
199 ])), 208 }),
200 serviceSharedWatcher.then(() => Promise.all([ 209 ]),
201 setupServicePackageWatcher('service-inject', sendEvent), 210 ),
202 setupServicePackageWatcher('service-preload', sendEvent), 211 serviceSharedWatcher.then(() =>
203 ])), 212 Promise.all([
213 setupServicePackageWatcher('service-inject', sendEvent),
214 setupServicePackageWatcher('service-preload', sendEvent),
215 ]),
216 ),
204 ]); 217 ]);
205 218
206 if (viteDevServer === null) { 219 if (viteDevServer === null) {