setup-easy-setup
Version:
setup-easy-setup
2 lines (1 loc) • 3 kB
JavaScript
;var A=Object.create;var m=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,j=Object.prototype.hasOwnProperty;var I=(r,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of E(t))!j.call(r,e)&&e!==n&&m(r,e,{get:()=>t[e],enumerable:!(s=k(t,e))||s.enumerable});return r};var c=(r,t,n)=>(n=r!=null?A(R(r)):{},I(t||!r||!r.__esModule?m(n,"default",{value:r,enumerable:!0}):n,r));var $=c(require("path"));var a=c(require("fs")),l=require("child_process"),w=require("os"),g=c(require("path"));function p(){let r={"User-Agent":"GitHub Actions"};return process.env.GITHUB_TOKEN&&(r.Authorization=`token ${process.env.GITHUB_TOKEN}`),{headers:r}}async function h(r,t){if(!t){let e=r.split("/").at(-1);t=g.join((0,w.tmpdir)(),e)}let s=await(await fetch(r,p())).arrayBuffer();return a.writeFileSync(t,Buffer.from(s)),t}function u(r,t){a.existsSync(t)||a.mkdirSync(t,{recursive:!0});let n=[{ext:[".zip"],cmd:`unzip -o "${r}" -d "${t}"`},{ext:[".tar"],cmd:`tar -xf "${r}" -C "${t}"`},{ext:[".tar.gz",".tgz"],cmd:`tar -xzf "${r}" -C "${t}"`},{ext:[".tar.bz2"],cmd:`tar -xjf "${r}" -C "${t}"`},{ext:[".7z"],cmd:`7z x "${r}" -o"${t}"`},{ext:[".rar"],cmd:`unrar x "${r}" "${t}"`},{ext:[".rar"],cmd:`unrar x "${r}" "${t}"`}];for(let{ext:s,cmd:e}of n)for(let o of s)if(r.endsWith(o))return(0,l.execSync)(e);console.error(`Error: Unsupported file type: ${r}`)}function x(r,t=process.platform,n=process.arch){let s;switch(n){case"arm64":s="aarch64";break;case"x64":s="x86_64";break;default:throw new Error(`Unsupported architechture ${process.arch}.`)}let e;switch(t){case"linux":e=["unknown-linux-gnu"];break;case"darwin":e=["apple-darwin"];break;case"win32":e=["pc-windows-msvc","pc-windows-gnu"];break;default:throw new Error(`Unsupported platform ${t}.`)}return e.map(o=>`${r}-${s}-${o}`)}var i=class{name;owner;constructor(t){let n=/https:\/\/github\.com\/([^\/]+)\/([^\/]+)/,s=t.match(n);if(!s)throw new Error("Invalid github repo url");this.owner=s[1],this.name=s[2]}getReleasesApiUrl(t="latest"){return t==="latest"?`https://api.github.com/repos/${this.owner}/${this.name}/releases/latest`:`https://api.github.com/repos/${this.owner}/${this.name}/releases/tags/${t}`}async getRelease(t="latest"){let n=this.getReleasesApiUrl(t);return await fetch(n,p()).then(e=>e.json())}async getAssetUrl(t=this.name,n="latest",s=process.platform,e=process.arch){let o=await this.getRelease(n),U=x(t,s,e),f=o.assets.find(v=>U.some(z=>v.name.startsWith(z)));if(!f)throw new Error(`No asset found for ${t} ${n} ${s} ${e}`);return f.browser_download_url}};var d=require("os");async function y(r){let{repo:t,version:n="latest"}=r,s=await new i(t).getAssetUrl(n),e=$.default.join((0,d.homedir)(),"easy-setup"),o=await h(s);return await u(o,e),{version:n,installDir:e,downloadUrl:s}}var b=process.argv[2],O=process.argv[2];b||(console.log("easy-setup <repo> [<version>]"),process.exit());y({repo:b,version:O}).then(r=>{console.log(r)});