Skip to content

Commit

Permalink
Move code-insiders to end of preference list
Browse files Browse the repository at this point in the history
  • Loading branch information
Jarred-Sumner committed Feb 12, 2021
1 parent 0bd7cfc commit 8fa612e
Show file tree
Hide file tree
Showing 4 changed files with 4 additions and 3 deletions.
1 change: 1 addition & 0 deletions README.md
Expand Up @@ -103,6 +103,7 @@ This was inspired by github1s.com.

### Changelog

- `1.1.15`: Move `code-insiders` to end of preference list
- `1.1.14`: Fix code-insiders and fix passing in editor manually when its `subl` or `code`.
- `1.1.13`: Use `Authorization` header instead of `access_token` query string.
- `1.1.12`: When available, also use github access token for fetching tarballs (instead of just search)
Expand Down
2 changes: 1 addition & 1 deletion bin/git-peek
Expand Up @@ -493,7 +493,7 @@ See: https://github.com/isaacs/node-glob/issues/167`);if(!(this instanceof pl))r
`+r.slice(l,t),l=t+1),p=_;return y+=`
`,r.length-l>n&&p>l?y+=r.slice(l,p)+`
`+r.slice(p+1):y+=r.slice(l),y.slice(1)}function iwe(r){for(var n="",o=0,u,l=0;l<r.length;o>=65536?l+=2:l++)o=BS(r,l),u=u0[o],!u&&PS(o)?(n+=r[l],o>=65536&&(n+=r[l+1])):n+=u||X4e(o);return n}function uwe(r,n,o){var u="",l=r.tag,t,p,_;for(t=0,p=o.length;t<p;t+=1)_=o[t],r.replacer&&(_=r.replacer.call(o,String(t),_)),(q1(r,n,_,!1,!1)||typeof _=="undefined"&&q1(r,n,null,!1,!1))&&(u!==""&&(u+=","+(r.condenseFlow?"":" ")),u+=r.dump);r.tag=l,r.dump="["+u+"]"}function sV(r,n,o,u){var l="",t=r.tag,p,_,y;for(p=0,_=o.length;p<_;p+=1)y=o[p],r.replacer&&(y=r.replacer.call(o,String(p),y)),(q1(r,n+1,y,!0,!0,!1,!0)||typeof y=="undefined"&&q1(r,n+1,null,!0,!0,!1,!0))&&((!u||l!=="")&&(l+=Q6(r,n)),r.dump&&IS===r.dump.charCodeAt(0)?l+="-":l+="- ",l+=r.dump);r.tag=t,r.dump=l||"[]"}function swe(r,n,o){var u="",l=r.tag,t=Object.keys(o),p,_,y,w,R;for(p=0,_=t.length;p<_;p+=1)R="",u!==""&&(R+=", "),r.condenseFlow&&(R+='"'),y=t[p],w=o[y],r.replacer&&(w=r.replacer.call(o,y,w)),!!q1(r,n,y,!1,!1)&&(r.dump.length>1024&&(R+="? "),R+=r.dump+(r.condenseFlow?'"':"")+":"+(r.condenseFlow?"":" "),!!q1(r,n,w,!1,!1)&&(R+=r.dump,u+=R));r.tag=l,r.dump="{"+u+"}"}function lwe(r,n,o,u){var l="",t=r.tag,p=Object.keys(o),_,y,w,R,k,M;if(r.sortKeys===!0)p.sort();else if(typeof r.sortKeys=="function")p.sort(r.sortKeys);else if(r.sortKeys)throw new M0("sortKeys must be a boolean or a function");for(_=0,y=p.length;_<y;_+=1)M="",(!u||l!=="")&&(M+=Q6(r,n)),w=p[_],R=o[w],r.replacer&&(R=r.replacer.call(o,w,R)),!!q1(r,n+1,w,!0,!0,!0)&&(k=r.tag!==null&&r.tag!=="?"||r.dump&&r.dump.length>1024,k&&(r.dump&&IS===r.dump.charCodeAt(0)?M+="?":M+="? "),M+=r.dump,k&&(M+=Q6(r,n)),!!q1(r,n+1,R,!0,k)&&(r.dump&&IS===r.dump.charCodeAt(0)?M+=":":M+=": ",M+=r.dump,l+=M));r.tag=t,r.dump=l||"{}"}function lV(r,n,o){var u,l,t,p,_,y;for(l=o?r.explicitTypes:r.implicitTypes,t=0,p=l.length;t<p;t+=1)if(_=l[t],(_.instanceOf||_.predicate)&&(!_.instanceOf||typeof n=="object"&&n instanceof _.instanceOf)&&(!_.predicate||_.predicate(n))){if(o?_.multi&&_.representName?r.tag=_.representName(n):r.tag=_.tag:r.tag="?",_.represent){if(y=r.styleMap[_.tag]||_.defaultStyle,GW.call(_.represent)==="[object Function]")u=_.represent(n,y);else if(WW.call(_.represent,y))u=_.represent[y](n,y);else throw new M0("!<"+_.tag+'> tag resolver accepts not "'+y+'" style');r.dump=u}return!0}return!1}function q1(r,n,o,u,l,t,p){r.tag=null,r.dump=o,lV(r,o,!1)||lV(r,o,!0);var _=GW.call(r.dump),y=u,w;u&&(u=r.flowLevel<0||r.flowLevel>n);var R=_==="[object Object]"||_==="[object Array]",k,M;if(R&&(k=r.duplicates.indexOf(o),M=k!==-1),(r.tag!==null&&r.tag!=="?"||M||r.indent!==2&&n>0)&&(l=!1),M&&r.usedDuplicates[k])r.dump="*ref_"+k;else{if(R&&M&&!r.usedDuplicates[k]&&(r.usedDuplicates[k]=!0),_==="[object Object]")u&&Object.keys(r.dump).length!==0?(lwe(r,n,r.dump,l),M&&(r.dump="&ref_"+k+r.dump)):(swe(r,n,r.dump),M&&(r.dump="&ref_"+k+" "+r.dump));else if(_==="[object Array]")u&&r.dump.length!==0?(r.noArrayIndent&&!p&&n>0?sV(r,n-1,r.dump,l):sV(r,n,r.dump,l),M&&(r.dump="&ref_"+k+r.dump)):(uwe(r,n,r.dump),M&&(r.dump="&ref_"+k+" "+r.dump));else if(_==="[object String]")r.tag!=="?"&&owe(r,r.dump,n,t,y);else{if(_==="[object Undefined]")return!1;if(r.skipInvalid)return!1;throw new M0("unacceptable kind of an object to dump "+_)}r.tag!==null&&r.tag!=="?"&&(w=encodeURI(r.tag[0]==="!"?r.tag.slice(1):r.tag).replace(/!/g,"%21"),r.tag[0]==="!"?w="!"+w:w.slice(0,18)==="tag:yaml.org,2002:"?w="!!"+w.slice(18):w="!<"+w+">",r.dump=w+" "+r.dump)}return!0}function awe(r,n){var o=[],u=[],l,t;for(J6(r,o,u),l=0,t=u.length;l<t;l+=1)n.duplicates.push(o[u[l]]);n.usedDuplicates=new Array(t)}function J6(r,n,o){var u,l,t;if(r!==null&&typeof r=="object")if(l=n.indexOf(r),l!==-1)o.indexOf(l)===-1&&o.push(l);else if(n.push(r),Array.isArray(r))for(l=0,t=r.length;l<t;l+=1)J6(r[l],n,o);else for(u=Object.keys(r),l=0,t=u.length;l<t;l+=1)J6(r[u[l]],n,o)}function cwe(r,n){n=n||{};var o=new Z4e(n);o.noRefs||awe(r,o);var u=r;return o.replacer&&(u=o.replacer.call({"":u},"",u)),q1(o,0,u,!0,!0)?o.dump+`
`:""}var fwe=cwe,hwe={dump:fwe};function eO(r,n){return function(){throw new Error("Function yaml."+r+" is removed in js-yaml 4. Use yaml."+n+" instead, which is now safe by default.")}}var dwe=Ra,pwe=CW,mwe=DW,vwe=TW,gwe=xW,ywe=W6,_we=HW.load,Ewe=HW.loadAll,wwe=hwe.dump,Swe=M0,Cwe=eO("safeLoad","load"),Dwe=eO("safeLoadAll","loadAll"),Twe=eO("safeDump","dump"),xwe={Type:dwe,Schema:pwe,FAILSAFE_SCHEMA:mwe,JSON_SCHEMA:vwe,CORE_SCHEMA:gwe,DEFAULT_SCHEMA:ywe,load:_we,loadAll:Ewe,dump:wwe,YAMLException:Swe,safeLoad:Cwe,safeLoadAll:Dwe,safeDump:Twe},aV=xwe;var bwe=({isSelected:r=!1,label:n,description:o,maxLabelWidth:u})=>Vl.default.createElement(kh.Box,{flexDirection:"row"},Vl.default.createElement(kh.Box,{width:u,marginRight:1},Vl.default.createElement(kh.Text,{color:r?"blue":"whiteBright"},n)),Vl.default.createElement(kh.Box,{justifyContent:"flex-end"},Vl.default.createElement(kh.Text,{wrap:"truncate-end",color:"white",dimColor:!r},"| ",o==null?void 0:o.slice(0,48)))),KD={q:"",limit:20,per_page:8},mV={headers:{Accept:"application/vnd.github.v3+json"}};function Rwe(){var n,o,u;let r=pV.default.join(process.env.HOME,".config/hub");if((u=(o=(n=process.env.GITHUB_TOKEN)==null?void 0:n.trim())==null?void 0:o.length)!=null?u:0)return process.env.GITHUB_TOKEN.trim();if(tO.default.existsSync(r)){let l=aV.load(tO.default.readFileSync(r,"utf8"));if(typeof l!="object")return null;let t=Object.keys(l).find(p=>p.toLowerCase().includes("github.com"));if(t){let p=l[t].find(_=>_==null?void 0:_.oauth_token);if(p)return p==null?void 0:p.oauth_token}return null}else return null}var rO;function nO(){return typeof rO=="undefined"&&(rO=Rwe()),rO}function Awe(){if(iO)return;let r=nO();if(!r)return iO=!0,!1;mV.headers.Authorization=`Bearer ${r}`,iO=!0}var iO=!1;async function Owe(){var o,u;let r=await T_("https://trends.now.sh/api/repos"),n=await r.json();return n.total_count=(u=(o=n.items)==null?void 0:o.length)!=null?u:0,n.items||(n.items=[]),n.items.length>KD.per_page&&(n.items=n.items.slice(0,KD.per_page)),[r,n]}async function Lwe(r,n){let o=r.slice(1);KD.q=o;let u,l;if(o.trim().length)u=await T_(`https://api.github.com/search/repositories?${hV.default.stringify(KD)}`,mV),u.ok&&(l=await u.json());else{let t=await Owe();u=t[0],l=t[1]}if(u.ok){Number.isFinite(l.total_count)||(console.log("GitHub search API request failed."),process.exit(1));let t=new Array(Math.min(l.total_count,20,l.items.length)),p=0;for(let _=0;_<t.length;_++){let y=l.items[_];t[_]={value:`https://github.com/${y.full_name}/tree/${y.default_branch}`,label:y.full_name.slice(0,24),description:y.description},p=p<t[_].label.length?t[_].label.length:p}for(let _ of t)_.maxLabelWidth=p;return t}else return n("GitHub search API request failed with status:"+u.status),[]}var Nwe=({onSelect:r,initialQuery:n=""})=>{let[o,u]=Vl.useState(n||""),{data:l,error:t}=dV.default(["/"+o.trim()],Lwe,{isDocumentVisible:()=>!0,isOnline:()=>!0,isPaused:()=>!1}),p=Vl.default.useRef();Vl.default.useEffect(()=>{(l==null?void 0:l.length)&&(p.current=l)},[l,p]);let _=Vl.default.useCallback(y=>(y==null?void 0:y.value)&&r(y.value),[r]);return Vl.default.createElement(Vl.default.Fragment,null,Vl.default.createElement(kh.Text,{color:"black"},"Search Github repositories:"),Vl.default.createElement(kh.Text,null,"> ",Vl.default.createElement(fV.default,{value:o,onChange:u})),Vl.default.createElement(cV.default,{items:l||p.current,onSelect:_,itemComponent:bwe}))};function vV(r){return new Promise((n,o)=>{let u,l=!1;async function t(p){l=!0,u.unmount(),u.cleanup(),n(p),u=null}Awe();try{u=kh.render(Vl.default.createElement(Nwe,{onSelect:t,initialQuery:r}),{})}catch(p){u&&(u.unmount(),u.cleanup()),console.error(p),o(p)}u.waitUntilExit().then(()=>{l||process.exit()})})}var YX=is(i$()),KX=is(DX());var $X=is(HX()),XX=["code","subl","code-insiders","vim","vi"];typeof Promise.any!="function"&&GX();var JT=!1,Qc;var Vu,eL={redirect:"follow"},fg;(function(r){r[r.unknown=0]="unknown",r[r.vscode=1]="vscode",r[r.sublime=2]="sublime",r[r.vim=3]="vim"})(fg||(fg={}));function uE(){var r,n;JT||(Qc==null||Qc.removeCallback(),Qc=null,JT=!0,console.log("\u{1F5D1} Deleted temp repo")),((r=Vu==null?void 0:Vu.archive)==null?void 0:r.destroy)&&(Vu==null||Vu.archive.destroy()),(Vu==null?void 0:Vu._tar)&&(Vu==null||Vu._tar.removeAllListeners()),(Vu==null?void 0:Vu.slowTask)&&(Vu.slowTask.removeAllListeners(),Vu.slowTask=null),((n=Vu==null?void 0:Vu.destination)==null?void 0:n.length)&&u3.default.existsSync(Vu.destination)&&u3.default.rmSync(Vu.destination,{recursive:!0,force:!0})}process.once("SIGINT",uE);var s3=class{constructor(){this.didFinish=!1;this.slowTask=null;this.didUseFallback=!1}log(n){console.log(n)}async _prefetchGithub(n,o,u,l,t){let p=`https://cdn.jsdelivr.net/gh/${o}/${n}@${l}/${u||"README.md"}`,_=await T_(p,{redirect:"follow"});if(!_.ok||_.status===404)return!1;let y=await _.text();return y.trim().length?(await u3.default.promises.mkdir(oE.default.dirname(t),{recursive:!0}),await u3.default.promises.writeFile(t,y,"utf8"),!0):!1}prefetchGithub(n,o,u,l,t,p){return Promise.any([this._prefetchGithub(n,o,u,l,p),this._prefetchGithub(n,o,u,t,p)])}search(n){return vV(n)}async _unzip(n){let o=nO();o&&!eL.headers&&(eL.headers={authorization:`Bearer ${o}`});let u=await T_(n,eL);if(u.ok)return u.body;throw u.text()}async unzip(n,o,u,l,t){let p=await this.getArchive(`https://api.github.com/repos/${n}/${o}/tarball/${u}`,`https://api.github.com/repos/${n}/${o}/tarball/${l}`);return this.log("\u23F3 Extracting repository to temp folder..."),p.pipe(this._tar=YX.default.x({cwd:t,strip:1,onentry(_){},onwarn(_,y){console.warn(_)}})),await new Promise((_,y)=>{p.on("end",()=>{this._tar=null,this.log("\u{1F4BF} Finished downloading repository!"),_()}),p.on("error",w=>{JT||(this.log("\u{1F4BF} Failed to download repository!"),y(w))})})}clone(n,o){let u=`git clone --filter=tree:0 --single-branch --depth=1 ${n} ${o}`;return this.log(`Cloning ${n} to temp folder...`),new Promise((l,t)=>{let p=ZT.default.exec(u,{});p.stderr.pipe(process.stderr),p.once("close",()=>{l()}),p.once("exit",()=>{l()}),p.once("error",_=>{t(_)})})}parse(){return VX.default(`
`:""}var fwe=cwe,hwe={dump:fwe};function eO(r,n){return function(){throw new Error("Function yaml."+r+" is removed in js-yaml 4. Use yaml."+n+" instead, which is now safe by default.")}}var dwe=Ra,pwe=CW,mwe=DW,vwe=TW,gwe=xW,ywe=W6,_we=HW.load,Ewe=HW.loadAll,wwe=hwe.dump,Swe=M0,Cwe=eO("safeLoad","load"),Dwe=eO("safeLoadAll","loadAll"),Twe=eO("safeDump","dump"),xwe={Type:dwe,Schema:pwe,FAILSAFE_SCHEMA:mwe,JSON_SCHEMA:vwe,CORE_SCHEMA:gwe,DEFAULT_SCHEMA:ywe,load:_we,loadAll:Ewe,dump:wwe,YAMLException:Swe,safeLoad:Cwe,safeLoadAll:Dwe,safeDump:Twe},aV=xwe;var bwe=({isSelected:r=!1,label:n,description:o,maxLabelWidth:u})=>Vl.default.createElement(kh.Box,{flexDirection:"row"},Vl.default.createElement(kh.Box,{width:u,marginRight:1},Vl.default.createElement(kh.Text,{color:r?"blue":"whiteBright"},n)),Vl.default.createElement(kh.Box,{justifyContent:"flex-end"},Vl.default.createElement(kh.Text,{wrap:"truncate-end",color:"white",dimColor:!r},"| ",o==null?void 0:o.slice(0,48)))),KD={q:"",limit:20,per_page:8},mV={headers:{Accept:"application/vnd.github.v3+json"}};function Rwe(){var n,o,u;let r=pV.default.join(process.env.HOME,".config/hub");if((u=(o=(n=process.env.GITHUB_TOKEN)==null?void 0:n.trim())==null?void 0:o.length)!=null?u:0)return process.env.GITHUB_TOKEN.trim();if(tO.default.existsSync(r)){let l=aV.load(tO.default.readFileSync(r,"utf8"));if(typeof l!="object")return null;let t=Object.keys(l).find(p=>p.toLowerCase().includes("github.com"));if(t){let p=l[t].find(_=>_==null?void 0:_.oauth_token);if(p)return p==null?void 0:p.oauth_token}return null}else return null}var rO;function nO(){return typeof rO=="undefined"&&(rO=Rwe()),rO}function Awe(){if(iO)return;let r=nO();if(!r)return iO=!0,!1;mV.headers.Authorization=`Bearer ${r}`,iO=!0}var iO=!1;async function Owe(){var o,u;let r=await T_("https://trends.now.sh/api/repos"),n=await r.json();return n.total_count=(u=(o=n.items)==null?void 0:o.length)!=null?u:0,n.items||(n.items=[]),n.items.length>KD.per_page&&(n.items=n.items.slice(0,KD.per_page)),[r,n]}async function Lwe(r,n){let o=r.slice(1);KD.q=o;let u,l;if(o.trim().length)u=await T_(`https://api.github.com/search/repositories?${hV.default.stringify(KD)}`,mV),u.ok&&(l=await u.json());else{let t=await Owe();u=t[0],l=t[1]}if(u.ok){Number.isFinite(l.total_count)||(console.log("GitHub search API request failed."),process.exit(1));let t=new Array(Math.min(l.total_count,20,l.items.length)),p=0;for(let _=0;_<t.length;_++){let y=l.items[_];t[_]={value:`https://github.com/${y.full_name}/tree/${y.default_branch}`,label:y.full_name.slice(0,24),description:y.description},p=p<t[_].label.length?t[_].label.length:p}for(let _ of t)_.maxLabelWidth=p;return t}else return n("GitHub search API request failed with status:"+u.status),[]}var Nwe=({onSelect:r,initialQuery:n=""})=>{let[o,u]=Vl.useState(n||""),{data:l,error:t}=dV.default(["/"+o.trim()],Lwe,{isDocumentVisible:()=>!0,isOnline:()=>!0,isPaused:()=>!1}),p=Vl.default.useRef();Vl.default.useEffect(()=>{(l==null?void 0:l.length)&&(p.current=l)},[l,p]);let _=Vl.default.useCallback(y=>(y==null?void 0:y.value)&&r(y.value),[r]);return Vl.default.createElement(Vl.default.Fragment,null,Vl.default.createElement(kh.Text,{color:"black"},"Search Github repositories:"),Vl.default.createElement(kh.Text,null,"> ",Vl.default.createElement(fV.default,{value:o,onChange:u})),Vl.default.createElement(cV.default,{items:l||p.current,onSelect:_,itemComponent:bwe}))};function vV(r){return new Promise((n,o)=>{let u,l=!1;async function t(p){l=!0,u.unmount(),u.cleanup(),n(p),u=null}Awe();try{u=kh.render(Vl.default.createElement(Nwe,{onSelect:t,initialQuery:r}),{})}catch(p){u&&(u.unmount(),u.cleanup()),console.error(p),o(p)}u.waitUntilExit().then(()=>{l||process.exit()})})}var YX=is(i$()),KX=is(DX());var $X=is(HX()),XX=["code","subl","vim","vi","code-insiders"];typeof Promise.any!="function"&&GX();var JT=!1,Qc;var Vu,eL={redirect:"follow"},fg;(function(r){r[r.unknown=0]="unknown",r[r.vscode=1]="vscode",r[r.sublime=2]="sublime",r[r.vim=3]="vim"})(fg||(fg={}));function uE(){var r,n;JT||(Qc==null||Qc.removeCallback(),Qc=null,JT=!0,console.log("\u{1F5D1} Deleted temp repo")),((r=Vu==null?void 0:Vu.archive)==null?void 0:r.destroy)&&(Vu==null||Vu.archive.destroy()),(Vu==null?void 0:Vu._tar)&&(Vu==null||Vu._tar.removeAllListeners()),(Vu==null?void 0:Vu.slowTask)&&(Vu.slowTask.removeAllListeners(),Vu.slowTask=null),((n=Vu==null?void 0:Vu.destination)==null?void 0:n.length)&&u3.default.existsSync(Vu.destination)&&u3.default.rmSync(Vu.destination,{recursive:!0,force:!0})}process.once("SIGINT",uE);var s3=class{constructor(){this.didFinish=!1;this.slowTask=null;this.didUseFallback=!1}log(n){console.log(n)}async _prefetchGithub(n,o,u,l,t){let p=`https://cdn.jsdelivr.net/gh/${o}/${n}@${l}/${u||"README.md"}`,_=await T_(p,{redirect:"follow"});if(!_.ok||_.status===404)return!1;let y=await _.text();return y.trim().length?(await u3.default.promises.mkdir(oE.default.dirname(t),{recursive:!0}),await u3.default.promises.writeFile(t,y,"utf8"),!0):!1}prefetchGithub(n,o,u,l,t,p){return Promise.any([this._prefetchGithub(n,o,u,l,p),this._prefetchGithub(n,o,u,t,p)])}search(n){return vV(n)}async _unzip(n){let o=nO();o&&!eL.headers&&(eL.headers={authorization:`Bearer ${o}`});let u=await T_(n,eL);if(u.ok)return u.body;throw u.text()}async unzip(n,o,u,l,t){let p=await this.getArchive(`https://api.github.com/repos/${n}/${o}/tarball/${u}`,`https://api.github.com/repos/${n}/${o}/tarball/${l}`);return this.log("\u23F3 Extracting repository to temp folder..."),p.pipe(this._tar=YX.default.x({cwd:t,strip:1,onentry(_){},onwarn(_,y){console.warn(_)}})),await new Promise((_,y)=>{p.on("end",()=>{this._tar=null,this.log("\u{1F4BF} Finished downloading repository!"),_()}),p.on("error",w=>{JT||(this.log("\u{1F4BF} Failed to download repository!"),y(w))})})}clone(n,o){let u=`git clone --filter=tree:0 --single-branch --depth=1 ${n} ${o}`;return this.log(`Cloning ${n} to temp folder...`),new Promise((l,t)=>{let p=ZT.default.exec(u,{});p.stderr.pipe(process.stderr),p.once("close",()=>{l()}),p.once("exit",()=>{l()}),p.once("error",_=>{t(_)})})}parse(){return VX.default(`
USAGE
$ git-peek [git link or github link or search query or repository file path]

Expand Down
2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "@jarred/git-peek",
"version": "1.1.14",
"version": "1.1.15",
"author": "Jarred Sumner @Jarred-Sumner",
"description": "Quickly preview remote Git repositories in your local editor",
"bin": {
Expand Down
2 changes: 1 addition & 1 deletion src/index.ts
Expand Up @@ -12,7 +12,7 @@ import { fetch } from "./fetch";
import which from "which";

// let editorsToTry = ["code", "subl", "code-insiders", "vim", "vi"];
let editorsToTry = ["code", "subl", "code-insiders", "vim", "vi"];
let editorsToTry = ["code", "subl", "vim", "vi", "code-insiders"];

if (typeof Promise.any !== "function") {
require("promise-any-polyfill");
Expand Down

0 comments on commit 8fa612e

Please sign in to comment.