Explorar el Código

Update pre-publish script

Loris Leiva hace 1 año
padre
commit
e1698208cc
Se han modificado 5 ficheros con 48 adiciones y 41 borrados
  1. 3 2
      package.json
  2. 1 0
      scripts/build.mjs
  3. 26 21
      scripts/prepublish.mjs
  4. 2 18
      scripts/snapshot.mjs
  5. 16 0
      scripts/utils.mjs

+ 3 - 2
package.json

@@ -15,9 +15,10 @@
     "node": ">=v18.0.0"
   },
   "scripts": {
+    "build": "./scripts/build.mjs",
     "format": "prettier --write .",
-    "build": "zx ./scripts/build.mjs",
-    "snapshot": "pnpm build && zx ./scripts/snapshot.mjs",
+    "prepublishOnly": "./scripts/prepublish.mjs",
+    "snapshot": "pnpm build && ./scripts/snapshot.mjs",
     "test": "pnpm snapshot --test"
   },
   "repository": {

+ 1 - 0
scripts/build.mjs

@@ -1,3 +1,4 @@
+#!/usr/bin/env zx
 import * as esbuild from "esbuild";
 
 await esbuild.build({

+ 26 - 21
scripts/prepublish.mjs

@@ -1,29 +1,34 @@
 #!/usr/bin/env zx
-import 'zx/globals'
+import "zx/globals";
+import { PROJECTS } from "./utils.mjs";
 
-await $`pnpm build`
-await $`pnpm snapshot`
+await $`pnpm snapshot`;
 
-let { version } = JSON.parse(await fs.readFile('./package.json'))
+const { version } = await fs.readJSON("./package.json");
+const projects = Object.keys(PROJECTS);
 
-const playgroundDir = path.resolve(__dirname, '../playground/')
-cd(playgroundDir)
+const rootDirectory = path.resolve(__dirname, "..");
+const projectsDirectory = path.resolve(rootDirectory, "projects");
 
-await $`pnpm install`
-await $`git add -A .`
-try {
-  await $`git commit -m "version ${version} snapshot"`
-} catch (e) {
-  if (!e.stdout.includes('nothing to commit')) {
-    throw e
+for (const projectName of projects) {
+  const projectDirectory = path.resolve(projectsDirectory, projectName);
+  cd(projectDirectory);
+
+  await $`git add -A .`;
+
+  try {
+    await $`git commit -m "version ${version} snapshot"`;
+  } catch (e) {
+    if (!e.stdout.includes("nothing to commit")) {
+      throw e;
+    }
   }
-}
 
-await $`git tag -m "v${version}" v${version}`
-await $`git push --follow-tags`
+  await $`git tag -m "v${version}" v${version}`;
+  await $`git push --follow-tags`;
+}
 
-const projectRoot = path.resolve(__dirname, '../')
-cd(projectRoot)
-await $`git add playground`
-await $`git commit -m 'chore: update snapshot' --allow-empty`
-await $`git push --follow-tags`
+cd(rootDirectory);
+await $`git add projects`;
+await $`git commit -m 'Update snapshot' --allow-empty`;
+await $`git push --follow-tags`;

+ 2 - 18
scripts/snapshot.mjs

@@ -1,13 +1,9 @@
 #!/usr/bin/env zx
 import "zx/globals";
+import { CLIENTS, PROJECTS, executeStep } from "./utils.mjs";
 
 $.verbose = false;
 
-const CLIENTS = ["js", "rust"];
-const PROJECTS = {
-  "counter-shank": ["counter", "--shank"],
-};
-
 // Parse CLI arguments.
 const selectedProjects = argv._;
 const projects =
@@ -43,7 +39,7 @@ for (const projectName of projects) {
   // Go inside the created project.
   const projectDirectory = path.resolve(projectsDirectory, projectName);
   cd(projectDirectory);
-  const pkg = require(path.resolve(projectDirectory, "package.json"));
+  const pkg = await fs.readJSON(path.resolve(projectDirectory, "package.json"));
 
   // Install project's dependencies.
   await executeStep("install NPM dependencies", async () => {
@@ -87,15 +83,3 @@ for (const projectName of projects) {
 }
 
 echo(chalk.green("All projects were created successfully!"));
-
-async function executeStep(title, fn) {
-  try {
-    const capitalizedTitle = title.charAt(0).toUpperCase() + title.slice(1);
-    await spinner(`${capitalizedTitle}...`, fn);
-    echo(chalk.green("✔︎") + ` ${capitalizedTitle}.`);
-  } catch (e) {
-    echo(chalk.red("✘") + ` Failed to ${title}.\n`);
-    echo(e);
-    process.exit(1);
-  }
-}

+ 16 - 0
scripts/utils.mjs

@@ -0,0 +1,16 @@
+export const CLIENTS = ["js", "rust"];
+export const PROJECTS = {
+  "counter-shank": ["counter", "--shank"],
+};
+
+export async function executeStep(title, fn) {
+  try {
+    const capitalizedTitle = title.charAt(0).toUpperCase() + title.slice(1);
+    await spinner(`${capitalizedTitle}...`, fn);
+    echo(chalk.green("✔︎") + ` ${capitalizedTitle}.`);
+  } catch (e) {
+    echo(chalk.red("✘") + ` Failed to ${title}.\n`);
+    echo(e);
+    process.exit(1);
+  }
+}