infra-kit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import l from"@inquirer/select";import{$ as n}from"zx";try{await n`gh --version`}catch{console.error("Error: GitHub CLI (gh) is not installed."),console.error("Please install it from: https://cli.github.com/"),process.exit(1)}var t=["dev","arthur","renana","roman","eliran"];console.log("\u{1F50D} Fetching release PRs...");var s=[];try{let e=await n`gh pr list --search "Release in:title" --base dev --json number,title,headRefName,state,baseRefName`,a=JSON.parse(e.stdout);a.length===0&&(console.error("\u274C No release PRs found. Check the project folder for the script. Exiting..."),process.exit(1)),s=a.map(c=>c.headRefName),console.log(s.join(`
3
+ `)),console.log(`
4
+ `)}catch(e){console.error("\u274C Error fetching release PRs:",e.message),process.exit(1)}var r=await l({message:"Select release branch",choices:s.map(e=>({name:e,value:e}))});s.some(e=>e.replace("release/v","")===r)||(console.error(`\u274C Release branch ${r} not found in open PRs. Exiting...`),process.exit(1));console.log(`Selected release branch: ${r}`);var o=await l({message:"Select environment",choices:t.map(e=>({name:e,value:e}))});t.includes(o)||(console.error(`\u274C Invalid environment: ${o}. Exiting...`),process.exit(1));console.log(`Launching workflow_dispatch with name !deploy-all for ${o} and ${r}...`);try{await n`gh workflow run "!deploy-all" --ref release/v${r} -f environment=${o}`,console.log(`\u2705 Successfully launched workflow for release branch: ${r} and environment: ${o}`)}catch(e){console.error("\u274C Error launching workflow:",e.message),process.exit(1)}
5
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/entry/main.ts"],
4
+ "sourcesContent": ["#!/usr/bin/env node\nimport select from '@inquirer/select'\nimport { $ } from 'zx'\n\ntry {\n await $`gh --version`\n} catch (error) {\n console.error('Error: GitHub CLI (gh) is not installed.')\n console.error('Please install it from: https://cli.github.com/')\n process.exit(1)\n}\n\nconst ENVs = ['dev', 'arthur', 'renana', 'roman', 'eliran']\n\nconsole.log('\uD83D\uDD0D Fetching release PRs...')\n\nlet releasePRsList: string[] = []\n\ntry {\n // Example of releasePRs.output: {\"headRefName\":\"release/v1.8.0\",\"number\":665,\"state\":\"OPEN\",\"title\":\"WIP Release/v1.8.0\"}\n const releasePRs =\n await $`gh pr list --search \"Release in:title\" --base dev --json number,title,headRefName,state,baseRefName`\n\n const releasePRsArray = JSON.parse(releasePRs.stdout)\n\n if (releasePRsArray.length === 0) {\n console.error('\u274C No release PRs found. Check the project folder for the script. Exiting...')\n process.exit(1)\n }\n\n releasePRsList = releasePRsArray.map((pr) => pr.headRefName)\n\n console.log(releasePRsList.join('\\n'))\n console.log('\\n')\n} catch (error) {\n console.error('\u274C Error fetching release PRs:', error.message)\n process.exit(1)\n}\n\nconst releaseBranch = await select({\n message: 'Select release branch',\n choices: releasePRsList.map((pr) => ({\n name: pr,\n value: pr,\n })),\n})\n\n// Check if release branch exists in the list\nif (!releasePRsList.some((pr) => pr.replace('release/v', '') === releaseBranch)) {\n console.error(`\u274C Release branch ${releaseBranch} not found in open PRs. Exiting...`)\n process.exit(1)\n}\n\nconsole.log(`Selected release branch: ${releaseBranch}`)\n\nconst env = await select({\n message: 'Select environment',\n choices: ENVs.map((env) => ({\n name: env,\n value: env,\n })),\n})\n\nif (!ENVs.includes(env)) {\n console.error(`\u274C Invalid environment: ${env}. Exiting...`)\n process.exit(1)\n}\n\nconsole.log(`Launching workflow_dispatch with name !deploy-all for ${env} and ${releaseBranch}...`)\n\ntry {\n await $`gh workflow run \"!deploy-all\" --ref release/v${releaseBranch} -f environment=${env}`\n console.log(`\u2705 Successfully launched workflow for release branch: ${releaseBranch} and environment: ${env}`)\n} catch (error) {\n console.error('\u274C Error launching workflow:', error.message)\n process.exit(1)\n}\n"],
5
+ "mappings": ";AACA,OAAOA,MAAY,mBACnB,OAAS,KAAAC,MAAS,KAElB,GAAI,CACF,MAAMA,eACR,MAAgB,CACd,QAAQ,MAAM,0CAA0C,EACxD,QAAQ,MAAM,iDAAiD,EAC/D,QAAQ,KAAK,CAAC,CAChB,CAEA,IAAMC,EAAO,CAAC,MAAO,SAAU,SAAU,QAAS,QAAQ,EAE1D,QAAQ,IAAI,mCAA4B,EAExC,IAAIC,EAA2B,CAAC,EAEhC,GAAI,CAEF,IAAMC,EACJ,MAAMH,uGAEFI,EAAkB,KAAK,MAAMD,EAAW,MAAM,EAEhDC,EAAgB,SAAW,IAC7B,QAAQ,MAAM,kFAA6E,EAC3F,QAAQ,KAAK,CAAC,GAGhBF,EAAiBE,EAAgB,IAAKC,GAAOA,EAAG,WAAW,EAE3D,QAAQ,IAAIH,EAAe,KAAK;AAAA,CAAI,CAAC,EACrC,QAAQ,IAAI;AAAA,CAAI,CAClB,OAASI,EAAO,CACd,QAAQ,MAAM,qCAAiCA,EAAM,OAAO,EAC5D,QAAQ,KAAK,CAAC,CAChB,CAEA,IAAMC,EAAgB,MAAMR,EAAO,CACjC,QAAS,wBACT,QAASG,EAAe,IAAKG,IAAQ,CACnC,KAAMA,EACN,MAAOA,CACT,EAAE,CACJ,CAAC,EAGIH,EAAe,KAAMG,GAAOA,EAAG,QAAQ,YAAa,EAAE,IAAME,CAAa,IAC5E,QAAQ,MAAM,yBAAoBA,CAAa,oCAAoC,EACnF,QAAQ,KAAK,CAAC,GAGhB,QAAQ,IAAI,4BAA4BA,CAAa,EAAE,EAEvD,IAAMC,EAAM,MAAMT,EAAO,CACvB,QAAS,qBACT,QAASE,EAAK,IAAKO,IAAS,CAC1B,KAAMA,EACN,MAAOA,CACT,EAAE,CACJ,CAAC,EAEIP,EAAK,SAASO,CAAG,IACpB,QAAQ,MAAM,+BAA0BA,CAAG,cAAc,EACzD,QAAQ,KAAK,CAAC,GAGhB,QAAQ,IAAI,yDAAyDA,CAAG,QAAQD,CAAa,KAAK,EAElG,GAAI,CACF,MAAMP,iDAAiDO,CAAa,mBAAmBC,CAAG,GAC1F,QAAQ,IAAI,6DAAwDD,CAAa,qBAAqBC,CAAG,EAAE,CAC7G,OAASF,EAAO,CACd,QAAQ,MAAM,mCAA+BA,EAAM,OAAO,EAC1D,QAAQ,KAAK,CAAC,CAChB",
6
+ "names": ["select", "$", "ENVs", "releasePRsList", "releasePRs", "releasePRsArray", "pr", "error", "releaseBranch", "env"]
7
+ }
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "infra-kit",
3
+ "type": "module",
4
+ "version": "0.1.0",
5
+ "description": "infra-kit",
6
+ "main": "dist/main.js",
7
+ "module": "dist/main.js",
8
+ "bin": {
9
+ "dev-toolkit": "dist/main.js"
10
+ },
11
+ "engines": {
12
+ "node": ">=20.x"
13
+ },
14
+ "scripts": {
15
+ "build": "pnpm run clean-artifacts && node ./scripts/build.js",
16
+ "clean-artifacts": "rimraf dist",
17
+ "clean-cache": "rimraf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo .swc",
18
+ "prettier-fix": "prettier **/* --write --no-error-on-unmatched-pattern --ignore-path ../../.prettierignore",
19
+ "prettier-check": "prettier **/* --check --no-error-on-unmatched-pattern --ignore-path ../../.prettierignore",
20
+ "eslint-check": "eslint --cache --report-unused-disable-directives ./src",
21
+ "eslint-fix": "eslint --cache --report-unused-disable-directives ./src --fix",
22
+ "ts-check": "tsc --noEmit",
23
+ "ts-report": "rimraf .coverage/typescript && mkdir -p .coverage/typescript && typescript-coverage-report -s -t 95 -o .coverage/typescript",
24
+ "test": "pnpm exec vitest run",
25
+ "test-watch": "pnpm exec vitest --watch",
26
+ "test-ui": "pnpm exec vitest --ui",
27
+ "test-report": "pnpm exec vitest run --coverage",
28
+ "qa": "pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success",
29
+ "fix": "pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa"
30
+ },
31
+ "dependencies": {
32
+ "@inquirer/select": "^4.0.4",
33
+ "zx": "^8.3.0"
34
+ },
35
+ "devDependencies": {
36
+ "@monorepo/eslint-config": "workspace:*",
37
+ "@monorepo/storybook-config": "workspace:*",
38
+ "@monorepo/vitest-config": "workspace:*",
39
+ "esbuild": "^0.24.2",
40
+ "typescript": "^5.7.2"
41
+ }
42
+ }
@@ -0,0 +1,35 @@
1
+ import * as esbuild from 'esbuild'
2
+ import fs from 'node:fs'
3
+ import { dirname, resolve } from 'node:path'
4
+ import { fileURLToPath } from 'node:url'
5
+
6
+ const __filename = fileURLToPath(import.meta.url)
7
+ const __dirname = dirname(__filename)
8
+
9
+ const OUT_DIR = resolve(__dirname, '../dist')
10
+
11
+ const ENTRY_DIR = resolve(__dirname, '../src/entry')
12
+
13
+ const entryPoints = fs.readdirSync(ENTRY_DIR).map((file) => resolve(ENTRY_DIR, file))
14
+
15
+ await esbuild.build({
16
+ entryPoints: entryPoints,
17
+ bundle: true,
18
+ platform: 'node',
19
+ // target: 'node20',
20
+ format: 'esm',
21
+ outdir: OUT_DIR,
22
+ sourcemap: true,
23
+ minify: true,
24
+ external: ['@inquirer/select', 'zx'],
25
+ })
26
+
27
+ for (const entryPoint of entryPoints) {
28
+ const bundlePath = `${OUT_DIR}${entryPoint.replace(ENTRY_DIR, '').replace('.ts', '.js')}`
29
+
30
+ const stat = fs.statSync(bundlePath)
31
+
32
+ const fileName = bundlePath.split('/').pop()
33
+
34
+ console.log('✅ Build', fileName, '-', +(stat.size / 1024 / 1024).toPrecision(3), 'MB')
35
+ }
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env node
2
+ import select from '@inquirer/select'
3
+ import { $ } from 'zx'
4
+
5
+ try {
6
+ await $`gh --version`
7
+ } catch (error) {
8
+ console.error('Error: GitHub CLI (gh) is not installed.')
9
+ console.error('Please install it from: https://cli.github.com/')
10
+ process.exit(1)
11
+ }
12
+
13
+ const ENVs = ['dev', 'arthur', 'renana', 'roman', 'eliran']
14
+
15
+ console.log('🔍 Fetching release PRs...')
16
+
17
+ let releasePRsList: string[] = []
18
+
19
+ try {
20
+ // Example of releasePRs.output: {"headRefName":"release/v1.8.0","number":665,"state":"OPEN","title":"WIP Release/v1.8.0"}
21
+ const releasePRs =
22
+ await $`gh pr list --search "Release in:title" --base dev --json number,title,headRefName,state,baseRefName`
23
+
24
+ const releasePRsArray = JSON.parse(releasePRs.stdout)
25
+
26
+ if (releasePRsArray.length === 0) {
27
+ console.error('❌ No release PRs found. Check the project folder for the script. Exiting...')
28
+ process.exit(1)
29
+ }
30
+
31
+ releasePRsList = releasePRsArray.map((pr) => pr.headRefName)
32
+
33
+ console.log(releasePRsList.join('\n'))
34
+ console.log('\n')
35
+ } catch (error) {
36
+ console.error('❌ Error fetching release PRs:', error.message)
37
+ process.exit(1)
38
+ }
39
+
40
+ const releaseBranch = await select({
41
+ message: 'Select release branch',
42
+ choices: releasePRsList.map((pr) => ({
43
+ name: pr,
44
+ value: pr,
45
+ })),
46
+ })
47
+
48
+ // Check if release branch exists in the list
49
+ if (!releasePRsList.some((pr) => pr.replace('release/v', '') === releaseBranch)) {
50
+ console.error(`❌ Release branch ${releaseBranch} not found in open PRs. Exiting...`)
51
+ process.exit(1)
52
+ }
53
+
54
+ console.log(`Selected release branch: ${releaseBranch}`)
55
+
56
+ const env = await select({
57
+ message: 'Select environment',
58
+ choices: ENVs.map((env) => ({
59
+ name: env,
60
+ value: env,
61
+ })),
62
+ })
63
+
64
+ if (!ENVs.includes(env)) {
65
+ console.error(`❌ Invalid environment: ${env}. Exiting...`)
66
+ process.exit(1)
67
+ }
68
+
69
+ console.log(`Launching workflow_dispatch with name !deploy-all for ${env} and ${releaseBranch}...`)
70
+
71
+ try {
72
+ await $`gh workflow run "!deploy-all" --ref release/v${releaseBranch} -f environment=${env}`
73
+ console.log(`✅ Successfully launched workflow for release branch: ${releaseBranch} and environment: ${env}`)
74
+ } catch (error) {
75
+ console.error('❌ Error launching workflow:', error.message)
76
+ process.exit(1)
77
+ }