Radish alpha
r
rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5
Radicle web interface
Radicle
Git
Add script for app.radicle.xyz deployments
Rūdolfs Ošiņš committed 3 months ago
commit 4c20d626e8f44b8c3bf34c65603ad005571681c0
parent eec96f5
3 files changed +138 -1
modified package-lock.json
@@ -55,6 +55,7 @@
        "happy-dom": "^17.4.7",
        "prettier": "^3.5.3",
        "prettier-plugin-svelte": "^3.4.0",
+
        "rimraf": "^6.1.2",
        "svelte-check": "^4.2.1",
        "svelte-eslint-parser": "^1.2.0",
        "typescript": "^5.8.3",
@@ -743,6 +744,29 @@
        "url": "https://github.com/sponsors/nzakas"
      }
    },
+
    "node_modules/@isaacs/balanced-match": {
+
      "version": "4.0.1",
+
      "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
+
      "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
+
      "dev": true,
+
      "license": "MIT",
+
      "engines": {
+
        "node": "20 || >=22"
+
      }
+
    },
+
    "node_modules/@isaacs/brace-expansion": {
+
      "version": "5.0.0",
+
      "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
+
      "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
+
      "dev": true,
+
      "license": "MIT",
+
      "dependencies": {
+
        "@isaacs/balanced-match": "^4.0.1"
+
      },
+
      "engines": {
+
        "node": "20 || >=22"
+
      }
+
    },
    "node_modules/@jridgewell/gen-mapping": {
      "version": "0.3.8",
      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
@@ -2791,6 +2815,24 @@
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
+
    "node_modules/glob": {
+
      "version": "13.0.0",
+
      "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz",
+
      "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==",
+
      "dev": true,
+
      "license": "BlueOak-1.0.0",
+
      "dependencies": {
+
        "minimatch": "^10.1.1",
+
        "minipass": "^7.1.2",
+
        "path-scurry": "^2.0.0"
+
      },
+
      "engines": {
+
        "node": "20 || >=22"
+
      },
+
      "funding": {
+
        "url": "https://github.com/sponsors/isaacs"
+
      }
+
    },
    "node_modules/glob-parent": {
      "version": "6.0.2",
      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -2803,6 +2845,22 @@
        "node": ">=10.13.0"
      }
    },
+
    "node_modules/glob/node_modules/minimatch": {
+
      "version": "10.1.1",
+
      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
+
      "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
+
      "dev": true,
+
      "license": "BlueOak-1.0.0",
+
      "dependencies": {
+
        "@isaacs/brace-expansion": "^5.0.0"
+
      },
+
      "engines": {
+
        "node": "20 || >=22"
+
      },
+
      "funding": {
+
        "url": "https://github.com/sponsors/isaacs"
+
      }
+
    },
    "node_modules/globals": {
      "version": "16.1.0",
      "resolved": "https://registry.npmjs.org/globals/-/globals-16.1.0.tgz",
@@ -3554,6 +3612,16 @@
        "url": "https://github.com/sponsors/ljharb"
      }
    },
+
    "node_modules/minipass": {
+
      "version": "7.1.2",
+
      "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+
      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+
      "dev": true,
+
      "license": "ISC",
+
      "engines": {
+
        "node": ">=16 || 14 >=14.17"
+
      }
+
    },
    "node_modules/mri": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
@@ -3668,6 +3736,13 @@
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
+
    "node_modules/package-json-from-dist": {
+
      "version": "1.0.1",
+
      "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+
      "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+
      "dev": true,
+
      "license": "BlueOak-1.0.0"
+
    },
    "node_modules/parent-module": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -3710,6 +3785,23 @@
        "node": ">=8"
      }
    },
+
    "node_modules/path-scurry": {
+
      "version": "2.0.1",
+
      "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz",
+
      "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==",
+
      "dev": true,
+
      "license": "BlueOak-1.0.0",
+
      "dependencies": {
+
        "lru-cache": "^11.0.0",
+
        "minipass": "^7.1.2"
+
      },
+
      "engines": {
+
        "node": "20 || >=22"
+
      },
+
      "funding": {
+
        "url": "https://github.com/sponsors/isaacs"
+
      }
+
    },
    "node_modules/pathe": {
      "version": "2.0.3",
      "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
@@ -4029,6 +4121,26 @@
        "node": ">=0.10.0"
      }
    },
+
    "node_modules/rimraf": {
+
      "version": "6.1.2",
+
      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.2.tgz",
+
      "integrity": "sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==",
+
      "dev": true,
+
      "license": "BlueOak-1.0.0",
+
      "dependencies": {
+
        "glob": "^13.0.0",
+
        "package-json-from-dist": "^1.0.1"
+
      },
+
      "bin": {
+
        "rimraf": "dist/esm/bin.mjs"
+
      },
+
      "engines": {
+
        "node": "20 || >=22"
+
      },
+
      "funding": {
+
        "url": "https://github.com/sponsors/isaacs"
+
      }
+
    },
    "node_modules/rollup": {
      "version": "4.41.0",
      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.0.tgz",
modified package.json
@@ -13,7 +13,8 @@
    "test:unit": "TZ='UTC' vitest run",
    "test:e2e": "NODE_CONFIG_ENV='test' TZ='UTC' playwright test",
    "test:http-client:unit": "NODE_CONFIG_ENV='test' TZ='UTC' vitest run --config http-client/vite.config.ts --reporter verbose",
-
    "test:radicle-httpd": "cd radicle-httpd && cargo test --all-features"
+
    "test:radicle-httpd": "cd radicle-httpd && cargo test --all-features",
+
    "deploy": "rimraf build && npm clean-install && npm run build && scripts/inject-plausible && npx wrangler deploy"
  },
  "type": "module",
  "engines": {
@@ -42,6 +43,7 @@
    "happy-dom": "^17.4.7",
    "prettier": "^3.5.3",
    "prettier-plugin-svelte": "^3.4.0",
+
    "rimraf": "^6.1.2",
    "svelte-check": "^4.2.1",
    "svelte-eslint-parser": "^1.2.0",
    "typescript": "^5.8.3",
added scripts/inject-plausible
@@ -0,0 +1,23 @@
+
#!/usr/bin/env node
+

+
import fs from "fs";
+

+
const file = "build/index.html";
+
const snippet = `<script defer="" data-domain="app.radicle.xyz" src="https://plausible.io/js/script.js"></script>`;
+

+
const html = fs.readFileSync(file, "utf8");
+

+
if (html.includes(snippet)) {
+
  console.log("ℹ️ Script already present, skipping");
+
  process.exit(0);
+
}
+

+
if (!html.includes("</head>")) {
+
  console.error("❌ </head> not found in index.html");
+
  process.exit(1);
+
}
+

+
const updated = html.replace("</head>", `  ${snippet}\n  </head>`);
+

+
fs.writeFileSync(file, updated);
+
console.log("✅ Plausible script injected");