Skip to content

Commit

Permalink
feat: update default value
Browse files Browse the repository at this point in the history
  • Loading branch information
ouduidui committed Apr 22, 2022
1 parent 9449bc8 commit 1e82583
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 4 deletions.
2 changes: 1 addition & 1 deletion index.cjs
Expand Up @@ -137,5 +137,5 @@ See: https://github.com/isaacs/node-glob/issues/167`);if(!(this instanceof W))re
`;r.auth&&(o["Proxy-Authorization"]=`Basic ${Buffer.from(r.auth).toString("base64")}`);let{host:h,port:u,secureEndpoint:c}=t;_1(u,c)||(h+=`:${u}`),o.Host=h,o.Connection="close";for(let y of Object.keys(o))l+=`${y}: ${o[y]}\r
`;let d=v1.default(n);n.write(`${l}\r
`);let{statusCode:f,buffered:p}=yield d;if(f===200){if(e.once("socket",w1),t.secureEndpoint){let y=t.servername||t.host;if(!y)throw new Error('Could not determine "servername"');return Li("Upgrading socket connection to TLS"),dd.default.connect(Object.assign(Object.assign({},E1(t,"host","hostname","path","port")),{socket:n,servername:y}))}return n}n.destroy();let g=new cd.default.Socket;return g.readable=!0,e.once("socket",y=>{Li("replaying proxy buffer for failed request"),g1.default(y.listenerCount("data")>0),y.push(p),y.push(null)}),g})}},b1=jf;function w1(i){i.resume()}function _1(i,e){return Boolean(!e&&i===80||e&&i===443)}function S1(i){return typeof i=="string"?/^https:?$/i.test(i):!1}function E1(i,...e){let t={},r;for(r in i)e.includes(r)||(t[r]=i[r]);return t}var O1=Object.defineProperty({default:b1},"__esModule",{value:!0}),C1=ge&&ge.__importDefault||function(i){return i&&i.__esModule?i:{default:i}},po=C1(O1);function go(i){return new po.default(i)}(function(i){i.HttpsProxyAgent=po.default,i.prototype=po.default.prototype})(go||(go={}));var x1=go,Hf="tmp",R1="degit.json",pt=class extends Error{constructor(e,t){super(e);Object.assign(this,t)}};function ss(i,e){try{return e&&e.clearCache===!0&&delete require.cache[require.resolve(i)],require(i)}catch{return null}}function yo(i){return new Promise((e,t)=>{Wy.default.exec(i,(r,s,n)=>{if(r){t(r);return}e({stdout:s,stderr:n})})})}function ns(i){let e=b.default.dirname(i);if(e!==i){ns(e);try{m.default.mkdirSync(i)}catch(t){if(t.code!=="EEXIST")throw t}}}function Uf(i,e,t){return new Promise((r,s)=>{let n=i;if(t){let o=gd.default.parse(i);n={hostname:o.host,path:o.path,agent:new x1(t)}}Gy.default.get(n,o=>{let a=o.statusCode;a>=400?s({code:a,message:o.statusMessage}):a>=300?Uf(o.headers.location,e,t).then(r,s):o.pipe(m.default.createWriteStream(e)).on("finish",()=>r()).on("error",s)}).on("error",s)})}function A1(i,e){let t=b.default.join(i,Hf);Ki(t),ns(t),m.default.readdirSync(e).forEach(r=>{let s=b.default.join(e,r),n=b.default.join(t,r);m.default.lstatSync(s).isDirectory()?(Lf(s).to(n),Ki(s)):(m.default.copyFileSync(s,n),m.default.unlinkSync(s))})}function T1(i,e){let t=b.default.join(i,Hf);m.default.readdirSync(t).forEach(r=>{let s=b.default.join(t,r),n=b.default.join(e,r);m.default.lstatSync(s).isDirectory()?(Lf(s).to(n),Ki(s)):(r!=="degit.json"&&m.default.copyFileSync(s,n),m.default.unlinkSync(s))}),Ki(t)}var Vf=b.default.join(Gw,".degit"),fd=new Set(["tar","git"]);function zf(i,e){return new Gf(i,e)}var Gf=class extends oi.default{constructor(e,t={}){super();if(this.src=e,this.cache=t.cache,this.force=t.force,this.verbose=t.verbose,this.proxy=process.env.https_proxy,this.repo=I1(e),this.mode=t.mode||this.repo.mode,!fd.has(this.mode))throw new Error(`Valid modes are ${Array.from(fd).join(", ")}`);this._hasStashed=!1,this.directiveActions={clone:async(r,s,n)=>{this._hasStashed===!1&&(A1(r,s),this._hasStashed=!0);let o=Object.assign({force:!0},{cache:n.cache,verbose:n.verbose}),a=zf(n.src,o);a.on("info",l=>{console.error(Ze.cyan(`> ${l.message.replace("options.","--")}`))}),a.on("warn",l=>{console.error(Ze.magenta(`! ${l.message.replace("options.","--")}`))}),await a.clone(s).catch(l=>{console.error(Ze.red(`! ${l.message}`)),process.exit(1)})},remove:this.remove.bind(this)}}_getDirectives(e){let t=b.default.resolve(e,R1),r=ss(t,{clearCache:!0})||!1;return r&&m.default.unlinkSync(t),r}async clone(e){this._checkDirIsEmpty(e);let{repo:t}=this,r=b.default.join(Vf,t.site,t.user,t.name);this.mode==="tar"?await this._cloneWithTar(r,e):await this._cloneWithGit(r,e),this._info({code:"SUCCESS",message:`cloned ${Ze.bold(t.user+"/"+t.name)}#${Ze.bold(t.ref)}${e!=="."?` to ${e}`:""}`,repo:t,dest:e});let s=this._getDirectives(e);if(s){for(let n of s)await this.directiveActions[n.action](r,e,n);this._hasStashed===!0&&T1(r,e)}}remove(e,t,r){let s=r.files;Array.isArray(s)||(s=[s]);let n=s.map(o=>{let a=b.default.resolve(t,o);return m.default.existsSync(a)?m.default.lstatSync(a).isDirectory()?(Ki(a),o+"/"):(m.default.unlinkSync(a),o):(this._warn({code:"FILE_DOES_NOT_EXIST",message:`action wants to remove ${Ze.bold(o)} but it does not exist`}),null)}).filter(o=>o);n.length>0&&this._info({code:"REMOVED",message:`removed: ${Ze.bold(n.map(o=>Ze.bold(o)).join(", "))}`})}_checkDirIsEmpty(e){try{if(m.default.readdirSync(e).length>0)if(this.force)this._info({code:"DEST_NOT_EMPTY",message:"destination directory is not empty. Using options.force, continuing"});else throw new pt("destination directory is not empty, aborting. Use options.force to override",{code:"DEST_NOT_EMPTY"});else this._verbose({code:"DEST_IS_EMPTY",message:"destination directory is empty"})}catch(t){if(t.code!=="ENOENT")throw t}}_info(e){this.emit("info",e)}_warn(e){this.emit("warn",e)}_verbose(e){this.verbose&&this._info(e)}async _getHash(e,t){try{let r=await M1(e);return e.ref==="HEAD"?r.find(s=>s.type==="HEAD").hash:this._selectRef(r,e.ref)}catch(r){return this._warn(r),this._verbose(r.original),this._getHashFromCache(e,t)}}_getHashFromCache(e,t){if(e.ref in t){let r=t[e.ref];return this._info({code:"USING_CACHE",message:`using cached commit hash ${r}`}),r}}_selectRef(e,t){for(let r of e)if(r.name===t)return this._verbose({code:"FOUND_MATCH",message:`found matching commit hash: ${r.hash}`}),r.hash;if(t.length<8)return null;for(let r of e)if(r.hash.startsWith(t))return r.hash}async _cloneWithTar(e,t){let{repo:r}=this,s=ss(b.default.join(e,"map.json"))||{},n=this.cache?this._getHashFromCache(r,s):await this._getHash(r,s),o=r.subdir?`${r.name}-${n}${r.subdir}`:null;if(!n)throw new pt(`could not find commit hash for ${r.ref}`,{code:"MISSING_REF",ref:r.ref});let a=`${e}/${n}.tar.gz`,l=r.site==="gitlab"?`${r.url}/repository/archive.tar.gz?ref=${n}`:r.site==="bitbucket"?`${r.url}/get/${n}.tar.gz`:`${r.url}/archive/${n}.tar.gz`;try{if(!this.cache)try{m.default.statSync(a),this._verbose({code:"FILE_EXISTS",message:`${a} already exists locally`})}catch{ns(b.default.dirname(a)),this.proxy&&this._verbose({code:"PROXY",message:`using proxy ${this.proxy}`}),this._verbose({code:"DOWNLOADING",message:`downloading ${l} to ${a}`}),await Uf(l,a,this.proxy)}}catch(h){throw new pt(`could not download ${l}`,{code:"COULD_NOT_DOWNLOAD",url:l,original:h})}k1(e,r,n,s),this._verbose({code:"EXTRACTING",message:`extracting ${o?r.subdir+" from ":""}${a} to ${t}`}),ns(t),await D1(a,t,o)}async _cloneWithGit(e,t){await yo(`git clone ${this.repo.ssh} ${t}`),await yo(`rm -rf ${b.default.resolve(t,".git")}`)}},md=new Set(["github","gitlab","bitbucket","git.sr.ht"]);function I1(i){let e=/^(?:(?:https:\/\/)?([^:/]+\.[^:/]+)\/|git@([^:/]+)[:/]|([^/]+):)?([^/\s]+)\/([^/\s#]+)(?:((?:\/[^/\s#]+)+))?(?:\/)?(?:#(.+))?/.exec(i);if(!e)throw new pt(`could not parse ${i}`,{code:"BAD_SRC"});let t=(e[1]||e[2]||e[3]||"github").replace(/\.(com|org)$/,"");if(!md.has(t))throw new pt("degit supports GitHub, GitLab, Sourcehut and BitBucket",{code:"UNSUPPORTED_HOST"});let r=e[4],s=e[5].replace(/\.git$/,""),n=e[6],o=e[7]||"HEAD",a=`${t}.${t==="bitbucket"?"org":t==="git.sr.ht"?"":"com"}`,l=`https://${a}/${r}/${s}`,h=`git@${a}:${r}/${s}`,u=md.has(t)?"tar":"git";return{site:t,user:r,name:s,ref:o,url:l,ssh:h,subdir:n,mode:u}}async function D1(i,e,t=null){return zv.extract({file:i,strip:t?t.split("/").length:1,C:e},t?[t]:[])}async function M1(i){try{let{stdout:e}=await yo(`git ls-remote ${i.url}`);return e.split(`
`).filter(Boolean).map(t=>{let[r,s]=t.split(" ");if(s==="HEAD")return{type:"HEAD",hash:r};let n=/refs\/(\w+)\/(.+)/.exec(s);if(!n)throw new pt(`could not parse ${s}`,{code:"BAD_REF"});return{type:n[1]==="heads"?"branch":n[1]==="refs"?"ref":n[1],name:n[2],hash:r}})}catch(e){throw new pt(`could not fetch remote ${i.url}`,{code:"COULD_NOT_FETCH",url:i.url,original:e})}}function k1(i,e,t,r){let s=ss(b.default.join(i,"access.json"))||{};if(s[e.ref]=new Date().toISOString(),m.default.writeFileSync(b.default.join(i,"access.json"),JSON.stringify(s,null," ")),r[e.ref]===t)return;let n=r[e.ref];if(n){let o=!1;for(let a in r)if(r[a]===t){o=!0;break}if(!o)try{m.default.unlinkSync(b.default.join(i,`${n}.tar.gz`))}catch{}}r[e.ref]=t,m.default.writeFileSync(b.default.join(i,"map.json"),JSON.stringify(r,null," "))}fi.base=Vf;fi.createCommonjsModule=Ee;fi.degit=zf;fi.source=Ze;fi.tryRequire=ss});var Zf=w((OS,Yf)=>{"use strict";require("fs");require("path");var N1=Wf();require("events");require("stream");require("string_decoder");require("assert");require("buffer");require("zlib");require("util");require("crypto");require("os");require("tty");require("constants");require("https");require("child_process");require("url");require("net");require("tls");Yf.exports=N1.degit});var qo=mi(require("path"),1),Oe=mi(require("fs"),1),Lo=mi(tc(),1);var wc=mi(bc(),1),{program:oS,createCommand:aS,createArgument:lS,createOption:hS,CommanderError:uS,InvalidArgumentError:cS,Command:_c,Argument:dS,Option:fS,Help:mS}=wc.default;var Kf=mi(Zf(),1),F1="ou-app",gs=[{id:"vue",name:"vue3 template",url:"ouduidui/vue3-template"},{id:"ts",name:"typescript template",url:"ouduidui/typescript-template"},{id:"nuxt",name:"nuxt3 template",url:"ouduidui/nuxt3-template"},{id:"uniapp",name:"uniapp v3 template",url:"ouduidui/uniapp-template"}],P1=i=>!Oe.default.existsSync(i)||Oe.default.readdirSync(i).length===0,$1=()=>new Promise((i,e)=>{try{new _c().argument("[project-name]","project name",F1).option("-t, --template <template>",`Choose a template (${gs.map(t=>t.id).join("|")})`,"vue").option("-r, --root","Create in the current directory",!1).option("-f, --force","For force overwriting",!1).action((t,r)=>{i({name:t,opts:r})}).parse()}catch(t){e(t),console.log(t.message)}}),L1=i=>{!Oe.default.existsSync(i)||Xf(i,e=>Oe.default.rmdirSync(e),e=>Oe.default.unlinkSync(e))};function Xf(i,e,t){for(let r of Oe.default.readdirSync(i)){let s=qo.default.resolve(i,r);if(Oe.default.lstatSync(s).isDirectory()){Xf(s,e,t),e(s);continue}t(s)}}var q1=async()=>{let i=process.cwd(),{name:e,opts:t}=await $1();(!e||!t)&&process.exit(1);let r=t.template&&gs.find(h=>h.id===t.template)?t.template:"",s=t.root,n=t.force;if(r==="")try{r=(await(0,Lo.default)({name:"template",type:"select",choices:gs.map(u=>({title:u.name,value:u.id})),message:"Choose a template:"})).template}catch(h){console.log(h.message),process.exit(1)}if(!n&&!P1(s?".":e))try{let{shouldOverwrite:h}=await(0,Lo.default)({name:"shouldOverwrite",type:"toggle",initial:!0,active:"Yes",inactive:"No",message:()=>`${s?"Current directory":`Target directory "${e}"`} is not empty. Remove existing files and continue?`});h?n=!0:process.exit(1)}catch(h){console.log(h.message),process.exit(1)}let o=s?i:qo.default.join(i,e);s||(Oe.default.existsSync(o)&&n?L1(o):Oe.default.existsSync(o)&&!n?(console.log(`Directory "${o}" already exists.`),process.exit(1)):Oe.default.mkdirSync(o)),console.log(`
`).filter(Boolean).map(t=>{let[r,s]=t.split(" ");if(s==="HEAD")return{type:"HEAD",hash:r};let n=/refs\/(\w+)\/(.+)/.exec(s);if(!n)throw new pt(`could not parse ${s}`,{code:"BAD_REF"});return{type:n[1]==="heads"?"branch":n[1]==="refs"?"ref":n[1],name:n[2],hash:r}})}catch(e){throw new pt(`could not fetch remote ${i.url}`,{code:"COULD_NOT_FETCH",url:i.url,original:e})}}function k1(i,e,t,r){let s=ss(b.default.join(i,"access.json"))||{};if(s[e.ref]=new Date().toISOString(),m.default.writeFileSync(b.default.join(i,"access.json"),JSON.stringify(s,null," ")),r[e.ref]===t)return;let n=r[e.ref];if(n){let o=!1;for(let a in r)if(r[a]===t){o=!0;break}if(!o)try{m.default.unlinkSync(b.default.join(i,`${n}.tar.gz`))}catch{}}r[e.ref]=t,m.default.writeFileSync(b.default.join(i,"map.json"),JSON.stringify(r,null," "))}fi.base=Vf;fi.createCommonjsModule=Ee;fi.degit=zf;fi.source=Ze;fi.tryRequire=ss});var Zf=w((OS,Yf)=>{"use strict";require("fs");require("path");var N1=Wf();require("events");require("stream");require("string_decoder");require("assert");require("buffer");require("zlib");require("util");require("crypto");require("os");require("tty");require("constants");require("https");require("child_process");require("url");require("net");require("tls");Yf.exports=N1.degit});var qo=mi(require("path"),1),Oe=mi(require("fs"),1),Lo=mi(tc(),1);var wc=mi(bc(),1),{program:oS,createCommand:aS,createArgument:lS,createOption:hS,CommanderError:uS,InvalidArgumentError:cS,Command:_c,Argument:dS,Option:fS,Help:mS}=wc.default;var Kf=mi(Zf(),1),F1="ou-app",gs=[{id:"vue",name:"vue3 template",url:"ouduidui/vue3-template"},{id:"ts",name:"typescript template",url:"ouduidui/typescript-template"},{id:"nuxt",name:"nuxt3 template",url:"ouduidui/nuxt3-template"},{id:"uniapp",name:"uniapp v3 template",url:"ouduidui/uniapp-template"}],P1=i=>!Oe.default.existsSync(i)||Oe.default.readdirSync(i).length===0,$1=()=>new Promise((i,e)=>{try{new _c().argument("[project-name]","project name",F1).option("-t, --template <template>",`choose a template (${gs.map(t=>t.id).join("|")})`).option("-r, --root","create in the current directory",!1).option("-f, --force","for force overwriting",!1).action((t,r)=>{i({name:t,opts:r})}).parse()}catch(t){e(t),console.log(t.message)}}),L1=i=>{!Oe.default.existsSync(i)||Xf(i,e=>Oe.default.rmdirSync(e),e=>Oe.default.unlinkSync(e))};function Xf(i,e,t){for(let r of Oe.default.readdirSync(i)){let s=qo.default.resolve(i,r);if(Oe.default.lstatSync(s).isDirectory()){Xf(s,e,t),e(s);continue}t(s)}}var q1=async()=>{let i=process.cwd(),{name:e,opts:t}=await $1();(!e||!t)&&process.exit(1);let r=t.template&&gs.find(h=>h.id===t.template)?t.template:"",s=t.root,n=t.force;if(r==="")try{r=(await(0,Lo.default)({name:"template",type:"select",choices:gs.map(u=>({title:u.name,value:u.id})),message:"Choose a template:"})).template}catch(h){console.log(h.message),process.exit(1)}finally{r||process.exit(1)}if(!n&&!P1(s?".":e))try{let{shouldOverwrite:h}=await(0,Lo.default)({name:"shouldOverwrite",type:"toggle",initial:!0,active:"Yes",inactive:"No",message:()=>`${s?"Current directory":`Target directory "${e}"`} is not empty. Remove existing files and continue?`});h?n=!0:process.exit(1)}catch(h){console.log(h.message),process.exit(1)}let o=s?i:qo.default.join(i,e);s||(Oe.default.existsSync(o)&&n?L1(o):Oe.default.existsSync(o)&&!n?(console.log(`Directory "${o}" already exists.`),process.exit(1)):Oe.default.mkdirSync(o)),console.log(`
Scaffolding project in ${o}...`);let a=gs.find(h=>h.id===r),l=(0,Kf.default)(a.url,{force:!0});l.on("warn",h=>console.log(h)),l.clone(o).then(()=>console.log("done"))};q1().catch(i=>{console.error(i)});
10 changes: 7 additions & 3 deletions index.js
Expand Up @@ -39,9 +39,9 @@ const getCommandOptions = () => {
try {
new Command()
.argument('[project-name]', 'project name', defaultProjectName)
.option('-t, --template <template>', `Choose a template (${templates.map(t => t.id).join('|')})`, 'vue')
.option('-r, --root', 'Create in the current directory', false)
.option('-f, --force', 'For force overwriting', false)
.option('-t, --template <template>', `choose a template (${templates.map(t => t.id).join('|')})`)
.option('-r, --root', 'create in the current directory', false)
.option('-f, --force', 'for force overwriting', false)
.action((name, opts) => {
resolve({ name, opts })
}).parse()
Expand Down Expand Up @@ -101,6 +101,10 @@ const init = async() => {
console.log(err.message)
process.exit(1)
}
finally {
if (!template)
process.exit(1)
}
}

// cannot safe overwrite
Expand Down

0 comments on commit 1e82583

Please sign in to comment.