gitpick 5.3.0-canary.13 → 5.3.0-canary.14

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.
Files changed (2) hide show
  1. package/dist/index.mjs +2 -2
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -8,14 +8,14 @@ import e from"node:fs";import t from"node:os";import n from"node:path";import{pa
8
8
  `;g+=`
9
9
  `;let x=a.length>n?E(` • ${l+1}-${Math.min(l+n,a.length)}/${a.length}`):``,S;if(_)S=` all selected ${E(`•`)} ${E(J(h))}${x}`;else if(f+p+m>0){let e=[];p>0&&e.push(A(`${p} folder${p===1?``:`s`}`)),f>0&&e.push(`${f} file${f===1?``:`s`}`),m>0&&e.push(k(`${m} symlink${m===1?``:`s`}`)),S=` ${[e.join(` `),E(J(h))].join(E(` • `))}${x}`}else S=E(` press . to select all`)+x;g+=S+`
10
10
  `,g+=`
11
- `;let C=E(i?`↑↓:navigate enter:expand/preview space:select c:confirm q:quit`:`↑↓:navigate enter:expand space:select c:confirm q:quit`);g+=` ${C}\n`,u.write(g)}async function b(t){d.removeListener(`data`,x);let r=t.type===`symlink`?K(t.path,t.linkTarget):t.path,o=n.join(i,r),s;try{let n=e.statSync(o);if(n.isDirectory())s=E(`(directory)`);else if(n.size>512*1024)s=E(`(file too large: ${J(n.size)})`);else{let r=e.readFileSync(o);if(r.includes(0))s=E(`(binary file: ${J(n.size)})`);else{let e=r.toString(`utf-8`),n=Tn(t.name);if(n!==`plain`)try{s=(await Cn(e,n)).replace(/&#(\d+);/g,(e,t)=>String.fromCharCode(Number(t))).replace(/&lt;/g,`<`).replace(/&gt;/g,`>`).replace(/&amp;/g,`&`).replace(/&quot;/g,`"`).replace(/&#x27;/g,`'`)}catch{s=e}else s=e}}}catch{s=E(`(unable to read file)`)}let c=0,l=0,f=s.split(`
11
+ `;let C=E(i?`↑↓:navigate enter:expand/preview space:select c:confirm q:quit`:`↑↓:navigate enter:expand space:select c:confirm q:quit`);g+=` ${C}\n`,u.write(g)}async function b(t){d.removeListener(`data`,x);let r=t.type===`symlink`?K(t.path,t.linkTarget):t.path,o=n.join(i,r),s;try{let n=e.statSync(o);if(n.isDirectory())s=E(`(directory)`);else if(n.size>512*1024)s=E(`(file too large: ${J(n.size)})`);else{let r=e.readFileSync(o);if(r.includes(0))s=E(`(binary file: ${J(n.size)})`);else{let e=r.toString(`utf-8`),n=Tn(t.name);if(n!==`plain`)try{s=await Cn(e,n)}catch{s=e}else s=e}}}catch{s=E(`(unable to read file)`)}let c=0,l=0,f=s.split(`
12
12
  `),v=String(f.length).length;function b(){let e=u.rows||24,n=u.columns||80,r=Math.max(1,e-3-3);c<l&&(l=c),c>=l+r&&(l=c-r+1),l<0&&(l=0);let i=`\x1B[H\x1B[2J`,a=t.type===`symlink`?k(t.path)+E(` -> `)+t.linkTarget:t.path;i+=`\n ${T(a)} ${E(`•`)} ${E(J(t.size))}\n\n`;let o=Math.min(r,f.length-l);for(let e=0;e<o;e++){let t=l+e,r=t===c,a=`${E(` ${String(t+1).padStart(v)} `)}${En(f[t],n-v-5)}`;if(r){let e=a.replace(/\x1B\[0m/g,``),t=Math.max(0,n-W(e).length);a=`\x1B[48;5;236m${e}${` `.repeat(t)}\x1B[0m`}i+=a+`
13
13
  `}for(let e=o;e<r;e++)i+=`
14
14
  `;i+=`
15
15
  `;let s=f.length>r?E(`${l+1}-${Math.min(l+r,f.length)}/${f.length}`)+E(` • `):``,d=E(`↑↓:navigate esc/q:back`);i+=` ${s}${d}\n`,u.write(i)}function S(e){let t=e.toString();if(t===``){g=!1,_=null,d.removeListener(`data`,S),p(),process.removeListener(`exit`,m),process.removeListener(`SIGINT`,h),a([]);return}if(t===`\x1B`||t===`q`||t===`Q`||t===`\r`){g=!1,_=null,d.removeListener(`data`,S),d.on(`data`,x),y();return}(t===`\x1B[A`||t===`k`)&&c>0&&c--,(t===`\x1B[B`||t===`j`)&&c<f.length-1&&c++,b()}g=!0,_=b,d.on(`data`,S),b()}function x(e){let t=On(o),n=t.length+1,r=e.toString();if(r===``||r===`q`||r===`Q`){p(),process.removeListener(`exit`,m),process.removeListener(`SIGINT`,h),a([]);return}if(r===`c`||r===`C`){p(),process.removeListener(`exit`,m),process.removeListener(`SIGINT`,h),a(An(o));return}if((r===`\x1B[A`||r===`k`)&&c>0&&c--,(r===`\x1B[B`||r===`j`)&&c<n-1&&c++,c===0&&(r===` `||r===`\r`)||r===`.`){let e=o.every(e=>e.selected);for(let t of o)G(t,!e)}if(r===` `&&c>0){let e=t[c-1];if(e){let t=!e.node.selected;if(G(e.node,t),t&&e.node.type===`symlink`&&e.node.linkTarget){let t=q(o,K(e.node.path,e.node.linkTarget));t&&G(t,!0)}kn(o)}}if(r===`\r`&&c>0){let e=t[c-1];if(e&&e.node.type===`tree`)e.node.expanded=!e.node.expanded;else if(e&&e.node.type===`symlink`&&e.node.linkTarget.endsWith(`/`)){let t=K(e.node.path,e.node.linkTarget),n=t.split(`/`);for(let e=1;e<=n.length;e++){let t=q(o,n.slice(0,e).join(`/`));t&&t.type===`tree`&&(t.expanded=!0)}let r=q(o,t);if(r){r.type===`tree`&&(r.expanded=!0);let e=On(o).findIndex(e=>e.node===r);e>=0&&(c=e+1)}}else if(e&&i&&(e.node.type===`blob`||e.node.type===`symlink`)){b(e.node);return}}if((r===`\x1B[C`||r===`l`)&&c>0){let e=t[c-1];e&&e.node.type===`tree`&&(e.node.expanded=!0)}if((r===`\x1B[D`||r===`h`)&&c>0){let e=t[c-1];e&&e.node.type===`tree`&&(e.node.expanded=!1)}y()}d.on(`data`,x),y()})}function Nn(e){if(typeof e==`number`||/^\d+$/.test(e))return typeof e==`number`?e:parseInt(e,10);let t=/(\d+)([hms])/g,n=0,r;for(;(r=t.exec(e))!==null;){let e=parseInt(r[1],10);switch(r[2]){case`h`:n+=e*36e5;break;case`m`:n+=e*6e4;break;case`s`:n+=e*1e3;break}}return n}const Pn=async e=>{let t=(await S(`git`,[`ls-remote`,e])).stdout,n=t.match(/(.+)\s+HEAD/)?.[1],r=t.match(RegExp(`${n}\\s+refs/heads/(.+)`))?.[1];if(!r)throw Error(`Could not determine default branch!`);return r},Fn=[{prefix:`git@github.com:`,host:`github.com`},{prefix:`https://github.com/`,host:`github.com`},{prefix:`https://raw.githubusercontent.com/`,host:`github.com`},{prefix:`git@gitlab.com:`,host:`gitlab.com`},{prefix:`https://gitlab.com/`,host:`gitlab.com`},{prefix:`git@bitbucket.org:`,host:`bitbucket.org`},{prefix:`https://bitbucket.org/`,host:`bitbucket.org`}];async function In(e,{branch:t,target:n}){let r=e.match(/^https:\/\/([^@]+)@(github\.com|gitlab\.com|bitbucket\.org)/),i=``;if(r)i=r[1],e=e.replace(`${r[1]}@`,``);else{let t={"github.com":process.env.GITHUB_TOKEN||process.env.GH_TOKEN||``,"gitlab.com":process.env.GITLAB_TOKEN||``,"bitbucket.org":process.env.BITBUCKET_TOKEN||``};for(let{prefix:n,host:r}of Fn)if(e.startsWith(n)){i=t[r];break}!i&&!e.startsWith(`https://`)&&!e.startsWith(`git@`)&&(i=t[`github.com`])}let a=`github.com`;for(let{prefix:t,host:n}of Fn)if(e.startsWith(t)){a=n,e=e.replace(t,``);break}let o=e.split(`/`),s=o[0],c=o[1]?.endsWith(`.git`)?o[1].slice(0,-4):o[1],l=`https://${i&&i+`@`}${a}/${s}/${c}`,u,d,f;a===`github.com`?o[2]===`refs`&&[`heads`,`tags`].includes(o[3])?(u=`raw`,d=t||o[4],f=o.slice(5).join(`/`)):o[2]===`refs`&&o[3]===`remotes`?(u=`raw`,d=t||`${o[4]}/${o[5]}`,f=o.slice(6).join(`/`)):o[2]===`blob`?(u=`blob`,d=t||o[3],f=o.slice(4).join(`/`)):o[2]===`tree`?(u=`tree`,d=t||o[3],f=o.slice(4).join(`/`)):o[2]===`commit`?(u=`repository`,d=t||o[3],f=``):(u=`repository`,d=t||await Pn(l),f=``):a===`gitlab.com`?o[2]===`-`&&o[3]===`blob`?(u=`blob`,d=t||o[4],f=o.slice(5).join(`/`)):o[2]===`-`&&o[3]===`tree`?(u=`tree`,d=t||o[4],f=o.slice(5).join(`/`)):(u=`repository`,d=t||await Pn(l),f=``):o[2]===`src`?(u=`tree`,d=t||o[3],f=o.slice(4).join(`/`)):(u=`repository`,d=t||await Pn(l),f=``);let p=n||(u===`blob`?`.`:f.split(`/`).pop()||c);return{token:i,host:a,owner:s,repository:c,type:u,branch:d,path:f,target:p}}const Ln=n.join(t.homedir(),`.cache`,`gitpick`),Rn=n.join(Ln,`update-check.json`);function zn(){try{return JSON.parse(e.readFileSync(Rn,`utf-8`))}catch{return null}}function Bn(t){try{e.mkdirSync(Ln,{recursive:!0}),e.writeFileSync(Rn,JSON.stringify(t))}catch{}}function Vn(){return new Promise(e=>{let t=d.get(`https://registry.npmjs.org/gitpick/latest`,{headers:{Accept:`application/json`},timeout:3e3},t=>{if(t.statusCode!==200)return t.resume(),e(null);let n=``;t.on(`data`,e=>n+=e),t.on(`end`,()=>{try{e(JSON.parse(n).version||null)}catch{e(null)}})});t.on(`error`,()=>e(null)),t.on(`timeout`,()=>{t.destroy(),e(null)})})}function Hn(e,t){let n=e.split(`.`).map(Number),r=t.split(`.`).map(Number);for(let e=0;e<3;e++){if((n[e]||0)>(r[e]||0))return!0;if((n[e]||0)<(r[e]||0))return!1}return!1}function Y(e,t){if(t)return;let n=zn();n&&Hn(n.latestVersion,e)&&console.log(E(`\n Update available: ${k(e)} → ${A(T(n.latestVersion))}\n Run ${A(`npm i -g gitpick`)} to update\n`))}function Un(){let e=zn();e&&Date.now()-e.lastCheck<864e5||setTimeout(async()=>{let e=await Vn();e&&Bn({lastCheck:Date.now(),latestVersion:e})},0)}const X=Symbol(`singleComment`),Wn=Symbol(`multiComment`),Z=(e,t,n)=>e.slice(t,n).replace(/[^ \t\r\n]/g,` `),Gn=(e,t)=>{let n=t-1,r=0;for(;e[n]===`\\`;)--n,r+=1;return!!(r%2)};function Kn(e){if(typeof e!=`string`)throw TypeError(`Expected argument \`jsonString\` to be a \`string\`, got \`${typeof e}\``);let t=!1,n=!1,r=0,i=``,a=``,o=-1;for(let s=0;s<e.length;s++){let c=e[s],l=e[s+1];if(!n&&c===`"`&&(Gn(e,s)||(t=!t)),!t)if(!n&&c+l===`//`)i+=e.slice(r,s),r=s,n=X,s++;else if(n===X&&c+l===`\r
16
16
  `){s++,n=!1,i+=Z(e,r,s),r=s;continue}else if(n===X&&c===`
17
17
  `)n=!1,i+=Z(e,r,s),r=s;else if(!n&&c+l===`/*`){i+=e.slice(r,s),r=s,n=Wn,s++;continue}else if(n===Wn&&c+l===`*/`){s++,n=!1,i+=Z(e,r,s+1),r=s+1;continue}else n||(o===-1?c===`,`&&(a+=i+e.slice(r,s),i=``,r=s,o=s):c===`}`||c===`]`?(i+=e.slice(r,s),a+=Z(i,0,1)+i.slice(1),i=``,r=s,o=-1):c!==` `&&c!==` `&&c!==`\r`&&c!==`
18
- `&&(i+=e.slice(r,s),r=s,o=-1))}let s=n===X?Z(e,r):e.slice(r);return a+i+s}const qn=[`.gitpick.json`,`.gitpick.jsonc`],Jn=async()=>{let t;for(let r of qn){let i=n.resolve(r);if(e.existsSync(i)){t=i;break}}if(!t)return!1;let r=await e.promises.readFile(t,`utf-8`),i=JSON.parse(Kn(r));if(!Array.isArray(i)||!i.every(e=>typeof e==`string`))throw Error(`${n.basename(t)} must be an array of strings`);for(let e of i)await S(process.argv[0],[...process.argv.slice(1),...e.split(/\s+/),`-o`],{stdio:`inherit`});return!0};var Yn=`gitpick`,Q=`5.3.0-canary.13`;const Xn=(e,t)=>`\x1b]8;;${t}\x07${e}\x1b]8;;\x07`,Zn=`
18
+ `&&(i+=e.slice(r,s),r=s,o=-1))}let s=n===X?Z(e,r):e.slice(r);return a+i+s}const qn=[`.gitpick.json`,`.gitpick.jsonc`],Jn=async()=>{let t;for(let r of qn){let i=n.resolve(r);if(e.existsSync(i)){t=i;break}}if(!t)return!1;let r=await e.promises.readFile(t,`utf-8`),i=JSON.parse(Kn(r));if(!Array.isArray(i)||!i.every(e=>typeof e==`string`))throw Error(`${n.basename(t)} must be an array of strings`);for(let e of i)await S(process.argv[0],[...process.argv.slice(1),...e.split(/\s+/),`-o`],{stdio:`inherit`});return!0};var Yn=`gitpick`,Q=`5.3.0-canary.14`;const Xn=(e,t)=>`\x1b]8;;${t}\x07${e}\x1b]8;;\x07`,Zn=`
19
19
  With ${T(`${Xn(`GitPick`,`https://github.com/nrjdalal/gitpick`)}`)} clone specific directories or files from GitHub, GitLab and Bitbucket!
20
20
 
21
21
  $ gitpick ${k(`<url>`)} ${O(`[target]`)} ${A(`[options]`)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gitpick",
3
- "version": "5.3.0-canary.13",
3
+ "version": "5.3.0-canary.14",
4
4
  "description": "Clone exactly what you need aka straightforward project scaffolding!",
5
5
  "keywords": [
6
6
  "clone",