@kitschpatrol/repo-config 7.1.0 → 7.3.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/bin/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import"cosmiconfig";import"cosmiconfig-typescript-loader";import{execa as e}from"execa";import t from"fs-extra";import n from"node:fs";import r from"node:path";import{PassThrough as i,Transform as a}from"node:stream";import{fileURLToPath as o}from"node:url";import{packageUp as s,packageUpSync as c}from"package-up";import l from"picocolors";import u from"yargs";import{hideBin as d}from"yargs/helpers";import f from"@pinojs/json-colorizer";import p from"decircular";import m from"deepmerge";import h from"json-stringify-pretty-compact";import{findWorkspaces as g,findWorkspacesRoot as _}from"find-workspaces";import v from"node:fs/promises";import{stripVTControlCharacters as ee}from"node:util";import{globby as te}from"globby";import y,{gt as b,minVersion as x}from"semver";import{readWantedLockfile as S}from"@pnpm/lockfile.fs";var ne=`7.1.0`;function re(e){return e instanceof Error&&`exitCode`in e&&typeof e.exitCode==`number`}function C(e){return f(h(p(e),{indent:2,replacer(e,t){return typeof t==`function`?t.name:t}}),{colors:{BRACKET:`gray`}})}const ie=(e,t,n)=>{let r=[...e];for(let[i,a]of t.entries())r[i]===void 0?r[i]=n.cloneUnlessOtherwiseSpecified(a,n):n.isMergeableObject(a)?r[i]=w(e[i],a,n):e.includes(a)||r.push(a);return r};function w(e,t,n={arrayMerge:ie}){return m(e,t,n)}function ae(e,t){return e.startsWith(t+r.sep)}function T(){let e=E(),t=new Set([e]),n=g();if(n!==null)for(let i of n){let n=r.resolve(i.location);ae(n,e)&&t.add(n)}return[...t]}function E(){let e=c();if(e===void 0)throw Error(`No package.json found.`);return r.dirname(e)}function D(){let e=_();return e===null?E():r.resolve(e.location)}function O(e){if(e===`workspace-root`)return D();if(e===`package-dir`)return E();if(typeof e==`string`){if(!t.pathExistsSync(e))throw Error(`Custom cwd directory does not exist: ${e}`);return e}return process.cwd()}async function oe(e,t){try{let{default:n}=await import(`prettier`),r=await n.resolveConfig(e),i=await n.format(t,{filepath:e,...r});await v.writeFile(e,i,`utf8`)}catch{console.warn(`Skipped formatting ${e} since Prettier is not installed.`)}}async function k(e){try{await oe(e,await v.readFile(e,`utf8`))}catch{}}const A=/\r?\n/;function j(e){return new a({transform(t,n,r){let i=t.toString().split(A).filter(t=>t.trim()!==``&&!e(ee(t))).join(`
2
+ import"cosmiconfig";import"cosmiconfig-typescript-loader";import{execa as e}from"execa";import t from"fs-extra";import n from"node:fs";import r from"node:path";import{PassThrough as i,Transform as a}from"node:stream";import{fileURLToPath as o}from"node:url";import{packageUp as s,packageUpSync as c}from"package-up";import l from"picocolors";import u from"yargs";import{hideBin as d}from"yargs/helpers";import f from"@pinojs/json-colorizer";import p from"decircular";import m from"deepmerge";import h from"json-stringify-pretty-compact";import{findWorkspaces as g,findWorkspacesRoot as _}from"find-workspaces";import v from"node:fs/promises";import{stripVTControlCharacters as ee}from"node:util";import{globby as te}from"globby";import y,{gt as b,minVersion as x}from"semver";import{readWantedLockfile as S}from"@pnpm/lockfile.fs";var ne=`7.3.0`;function re(e){return e instanceof Error&&`exitCode`in e&&typeof e.exitCode==`number`}function C(e){return f(h(p(e),{indent:2,replacer(e,t){return typeof t==`function`?t.name:t}}),{colors:{BRACKET:`gray`}})}const ie=(e,t,n)=>{let r=[...e];for(let[i,a]of t.entries())r[i]===void 0?r[i]=n.cloneUnlessOtherwiseSpecified(a,n):n.isMergeableObject(a)?r[i]=w(e[i],a,n):e.includes(a)||r.push(a);return r};function w(e,t,n={arrayMerge:ie}){return m(e,t,n)}function ae(e,t){return e.startsWith(t+r.sep)}function T(){let e=E(),t=new Set([e]),n=g();if(n!==null)for(let i of n){let n=r.resolve(i.location);ae(n,e)&&t.add(n)}return[...t]}function E(){let e=c();if(e===void 0)throw Error(`No package.json found.`);return r.dirname(e)}function D(){let e=_();return e===null?E():r.resolve(e.location)}function O(e){if(e===`workspace-root`)return D();if(e===`package-dir`)return E();if(typeof e==`string`){if(!t.pathExistsSync(e))throw Error(`Custom cwd directory does not exist: ${e}`);return e}return process.cwd()}async function oe(e,t){try{let{default:n}=await import(`prettier`),r=await n.resolveConfig(e),i=await n.format(t,{filepath:e,...r});await v.writeFile(e,i,`utf8`)}catch{console.warn(`Skipped formatting ${e} since Prettier is not installed.`)}}async function k(e){try{await oe(e,await v.readFile(e,`utf8`))}catch{}}const A=/\r?\n/;function j(e){return new a({transform(t,n,r){let i=t.toString().split(A).filter(t=>t.trim()!==``&&!e(ee(t))).join(`
3
3
  `);this.push(i+`
4
4
  `),r()}})}function M(e,t){return new a({transform(n,r,i){let a=n.toString().split(A).filter(e=>e.trim().length>0).map(n=>`${e?t===void 0?e:l[t](e):``} ${n}\n`).join(``);this.push(a),i()}})}async function se(e){let t=[];return new Promise((n,r)=>{e.on(`data`,e=>t.push(e)),e.on(`error`,e=>{r(e)}),e.on(`end`,()=>{n(Buffer.concat(t).toString(`utf8`))})})}function N(e,t){return t===1?e:e+`s`}async function ce(e,t,n,r,i){let a=1,o;if(r.logPrefix===void 0)o=e;else{let t=M(r.logPrefix,r.logColor);t.pipe(e),o=t}i&&o.write(l.bold(`Running: "${r.name}() with Positional arguments: ${String(t)} and Option flags: ${String(n)}"`));try{a=await r.execute(o,t,n)}catch(e){console.error(String(e)),a=1}return a}async function le(t,n,r,a,o){let s=1,c;if(a.logPrefix===void 0)c=t;else{let e=M(a.logPrefix,a.logColor);e.pipe(t),c=e}let l=a.subcommands??[],u=[...a.receivePositionalArguments?n:[],...a.positionalArguments??[]],d=[...a.receiveOptionFlags?r:[],...a.optionFlags??[]],f=[...l,...d,...u],p=O(a.cwdOverride);o&&c.write(`Running: "${a.name} ${f.join(` `)}"`);let m=a.prettyJsonOutput?new i:c;try{let t=e(a.name,f,{cwd:p,env:{...process.env.NO_COLOR===void 0?{FORCE_COLOR:`true`}:{}},preferLocal:!0,reject:!1,stdin:`inherit`});if(a.outputFilter){let e=j(a.outputFilter),n=j(a.outputFilter);t.stdout.pipe(e).pipe(m,{end:!1}),t.stderr.pipe(n).pipe(m,{end:!1})}else t.stdout.pipe(m,{end:!1}),t.stderr.pipe(m,{end:!1});if(await t,a.prettyJsonOutput){m.end();let e=await se(m),t=C(JSON.parse(e)).split(`
5
5
  `);for(let e of t)c.write(`${e}\n`)}s=t.exitCode??1}catch(e){console.error(`${a.name} failed with error:`),console.error(e),re(e)&&(s=typeof e.exitCode==`number`?e.exitCode:1)}return s}function ue(e){return`execute`in e}const de=/^ksc-/;function P(e){return e.replace(de,``)}function F(e){return e===void 0||e.length===0?[]:e.flatMap(e=>e.split(`,`)).map(e=>P(e.trim()))}function I(e){return e.option(`skip`,{array:!0,describe:`Tool names to skip (with or without "ksc-" prefix).`,type:`string`})}async function L(e,t,n,r,i,a,o){let s=o??[],c=[],u=[];for(let e of r)s.length>0&&s.includes(P(e.name))?u.push(e):c.push(e);if(s.length>0){let t=new Set(u.map(e=>P(e.name))),n=s.filter(e=>!t.has(e));if(n.length>0){let t=r.map(e=>P(e.name)).join(`, `);e.write(`⚠️ ${l.yellow(`Unrecognized --skip ${N(`value`,n.length)}: ${n.join(`, `)}. Available: ${t}`)}\n`)}}let d=[];for(let r of c){let a=await(ue(r)?ce(e,t,n,r,i):le(e,t,n,r,i));d.push({exitCode:a,name:r.name})}let f=r.length;if(u.length>0){let t=u.map(({name:e})=>e);e.write(`⏭️ ${l.dim(l.bold(`${t.length} / ${f} ${N(`Command`,t.length)} Skipped:`))} ${l.dim(t.join(`, `))}\n`)}if(a){let t=d.filter(({exitCode:e})=>e===0).map(({name:e})=>e),n=d.filter(({exitCode:e})=>e!==0).map(({name:e})=>e);t.length>0&&e.write(`✅ ${l.green(l.bold(`${t.length} / ${f} ${N(`Command`,t.length)} Succeeded:`))} ${l.green(t.join(`, `))}\n`),n.length>0&&e.write(`❌ ${l.red(l.bold(`${n.length} / ${f} ${N(`Command`,n.length)} Failed:`))} ${l.red(n.join(`, `))}\n`)}return d.every(({exitCode:e})=>e===0)?0:1}async function R(e,i,a,c){let l=await s();if(l===void 0)throw Error("The `init` command must be used in a directory with a package.json file");let u=await s({cwd:o(import.meta.url)});if(u===void 0)return e.write(`Error: The script being called was not in a package, weird.
@@ -4,6 +4,7 @@ on:
4
4
  push:
5
5
  tags:
6
6
  - 'v[0-9]*'
7
+ - '[0-9]*'
7
8
 
8
9
  permissions:
9
10
  contents: write
@@ -38,7 +39,7 @@ jobs:
38
39
  - name: Validate Tag and Branch
39
40
  id: validation
40
41
  run: |
41
- TAG=$(git tag --contains HEAD | grep '^v[0-9]' | head -n 1)
42
+ TAG=$(git tag --contains HEAD | grep -E '^v?[0-9]' | head -n 1)
42
43
  echo "🏷️ Tag for commit is: $TAG"
43
44
  BRANCH=$(git branch -r --contains tags/${GITHUB_REF_NAME} | grep 'origin/main' | xargs)
44
45
  if [[ -z "$BRANCH" ]]; then
@@ -16,7 +16,6 @@ jobs:
16
16
  - name: Checkout
17
17
  uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
18
18
  with:
19
- fetch-depth: 0
20
19
  persist-credentials: false
21
20
 
22
21
  - name: Sync Package info to GitHub
package/init/.gitignore CHANGED
@@ -2,12 +2,13 @@
2
2
  # Also used by CSpell, Stylelint, and ESLint
3
3
 
4
4
  # @kitschpatrol/repo-config boilerplate
5
+ !.env.example
5
6
  .astro/
6
7
  .DS_Store
7
8
  .env
8
9
  .env.*
9
- !.env.example
10
10
  .eslint-config-inspector
11
+ .pnpm-store/
11
12
  .svelte-kit/
12
13
  {tmp,temp}/
13
14
  **/*.min.js
@@ -20,3 +21,4 @@ node_modules/
20
21
  vendor/
21
22
 
22
23
  # Customizations
24
+ .claude/
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kitschpatrol/repo-config",
3
- "version": "7.1.0",
3
+ "version": "7.3.0",
4
4
  "description": "Repository configuration and GitHub workflows for @kitschpatrol/shared-config.",
5
5
  "keywords": [
6
6
  "shared-config",
@@ -35,7 +35,7 @@
35
35
  "@pinojs/json-colorizer": "^4.0.0",
36
36
  "@pnpm/lockfile.fs": "^1001.1.32",
37
37
  "cosmiconfig": "^9.0.1",
38
- "cosmiconfig-typescript-loader": "^6.2.0",
38
+ "cosmiconfig-typescript-loader": "^6.3.0",
39
39
  "decircular": "^1.0.0",
40
40
  "deepmerge": "^4.3.1",
41
41
  "execa": "^9.6.1",