From b6b98245a9a6996fdd361919e591175dd894fb2b Mon Sep 17 00:00:00 2001 From: Fabian-Lars Date: Mon, 17 Nov 2025 18:10:16 +0100 Subject: [PATCH] fix: add proper args parsing (#1195) --- dist/index.js | 4 ++-- pnpm-lock.yaml | 24 +++++++++++++----------- src/build.ts | 26 +++++--------------------- src/index.ts | 42 +++++++++++++++++++++++++++--------------- src/types.d.ts | 14 +++++++++++++- 5 files changed, 60 insertions(+), 50 deletions(-) diff --git a/dist/index.js b/dist/index.js index 3804df9..7d81038 100644 --- a/dist/index.js +++ b/dist/index.js @@ -112,7 +112,7 @@ const C=p(29068);const toRegexRange=(A,d,p)=>{if(C(A)===false){throw new TypeErr * @license [MIT]{@link https://github.com/archiverjs/node-zip-stream/blob/master/LICENSE} * @copyright (c) 2014 Chris Talkington, contributors. */ -var C=p(39023).inherits;var S=p(93920).ZipArchiveOutputStream;var v=p(93920).ZipArchiveEntry;var T=p(16090);var _=A.exports=function(A){if(!(this instanceof _)){return new _(A)}A=this.options=A||{};A.zlib=A.zlib||{};S.call(this,A);if(typeof A.level==="number"&&A.level>=0){A.zlib.level=A.level;delete A.level}if(!A.forceZip64&&typeof A.zlib.level==="number"&&A.zlib.level===0){A.store=true}A.namePrependSlash=A.namePrependSlash||false;if(A.comment&&A.comment.length>0){this.setComment(A.comment)}};C(_,S);_.prototype._normalizeFileData=function(A){A=T.defaults(A,{type:"file",name:null,namePrependSlash:this.options.namePrependSlash,linkname:null,date:null,mode:null,store:this.options.store,comment:""});var d=A.type==="directory";var p=A.type==="symlink";if(A.name){A.name=T.sanitizePath(A.name);if(!p&&A.name.slice(-1)==="/"){d=true;A.type="directory"}else if(d){A.name+="/"}}if(d||p){A.store=true}A.date=T.dateify(A.date);return A};_.prototype.entry=function(A,d,p){if(typeof p!=="function"){p=this._emitErrorCallback.bind(this)}d=this._normalizeFileData(d);if(d.type!=="file"&&d.type!=="directory"&&d.type!=="symlink"){p(new Error(d.type+" entries not currently supported"));return}if(typeof d.name!=="string"||d.name.length===0){p(new Error("entry name must be a non-empty string value"));return}if(d.type==="symlink"&&typeof d.linkname!=="string"){p(new Error("entry linkname must be a non-empty string value when type equals symlink"));return}var C=new v(d.name);C.setTime(d.date,this.options.forceLocalTime);if(d.namePrependSlash){C.setName(d.name,true)}if(d.store){C.setMethod(0)}if(d.comment.length>0){C.setComment(d.comment)}if(d.type==="symlink"&&typeof d.mode!=="number"){d.mode=40960}if(typeof d.mode==="number"){if(d.type==="symlink"){d.mode|=40960}C.setUnixMode(d.mode)}if(d.type==="symlink"&&typeof d.linkname==="string"){A=Buffer.from(d.linkname)}return S.prototype.entry.call(this,C,A,p)};_.prototype.finalize=function(){this.finish()}},90532:(A,d,p)=>{p.d(d,{a:()=>buildProject});var C=p(73024);var S=p(76760);var v=p(45292);class Runner{constructor(A,d){this.bin=A;this.tauriScript=d||[]}async execTauriCommand(A,d,p,C,S=0){const T=[...this.tauriScript,...A];if(this.bin==="npm"&&d.length){T.push("--")}T.push(...d);return(0,v.L5)((()=>(0,v.NK)(this.bin,T,{cwd:p},C)),S+1)}}async function getRunner(A,d){if(d){console.log("`tauriScript` set. Skipping cli verification.");const[A,...p]=d.split(" ");return new Runner(A,p)}if((0,v.ws)("@tauri-apps/cli",A)){if((0,v.z8)(A))return new Runner("yarn",["tauri"]);if((0,v.me)(A))return new Runner("pnpm",["tauri"]);if((0,v.Ui)(A))return new Runner("bun",["tauri"]);if((0,v._$)(A))return new Runner("npm",[(0,v.dk)(A)?"run":"exec","tauri"])}console.warn("Could not detect valid `@tauri-apps/cli` installation. Proceeding to install global npm package...");await(0,v.NK)("npm",["install","-g",`@tauri-apps/cli@v2`],{cwd:undefined});return new Runner("tauri")}async function buildProject(A,d,p,T){const _=await getRunner(A,d.tauriScript);const V=d.args??[];const Z=[...V].findIndex((A=>A==="-d"||A==="--debug"))>=0;const ee=[...V].findIndex((A=>A==="-t"||A==="--target"));const te=ee>=0?[...V][ee+1]:undefined;const re=[...V].findIndex((A=>A==="-c"||A==="--config"));const ne=re>=0?[...V][re+1]:undefined;const ie=[...V].findIndex((A=>A==="--profile"));const se=ie>=0?[...V][ie+1]:undefined;const oe=(0,v.sg)(te);const ae=(0,v.Vp)(A,oe,ne);if(!ae.tauriPath){throw Error("Couldn't detect path of tauri app")}const le={tauriPath:ae.tauriPath,runner:_,name:ae.name,mainBinaryName:ae.mainBinaryName,version:ae.version,wixLanguage:ae.wixLanguage,rpmRelease:ae.rpmRelease};await _.execTauriCommand(["build"],[...V],A,oe.platform==="macos"?{TAURI_BUNDLER_DMG_IGNORE_CI:process.env.TAURI_BUNDLER_DMG_IGNORE_CI??"true"}:undefined,p);const ce=(0,v.Lw)(le.tauriPath)??le.tauriPath;const ue=(0,S.join)((0,v.d)(ce,ae.tauriPath,!!te),te??"",se?se:Z?"debug":"release");let Ae=[];let de=oe.arch;if(oe.platform==="macos"){if(de==="x86_64"){de="x64"}else if(de==="arm64"){de="aarch64"}Ae=[(0,v.Dg)({path:(0,S.join)(ue,`bundle/dmg/${le.name}_${le.version}_${de}.dmg`),name:le.name,debug:Z,platform:oe.platform,arch:de,bundle:"dmg",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/macos/${le.name}.app`),name:le.name,debug:Z,platform:oe.platform,arch:de,bundle:"app",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/macos/${le.name}.app.tar.gz`),name:le.name,debug:Z,platform:oe.platform,arch:de,bundle:"app",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/macos/${le.name}.app.tar.gz.sig`),name:le.name,debug:Z,platform:oe.platform,arch:de,bundle:"app",version:le.version})]}else if(oe.platform==="windows"){if(de.startsWith("i")){de="x86"}else if(de==="aarch64"||de==="arm64"){de="arm64"}else{de="x64"}let A;if(typeof le.wixLanguage==="string"){A=[le.wixLanguage]}else if(Array.isArray(le.wixLanguage)){A=le.wixLanguage}else{A=Object.keys(le.wixLanguage)}const d=[];A.forEach((A=>{d.push((0,v.Dg)({path:(0,S.join)(ue,`bundle/msi/${le.name}_${le.version}_${de}_${A}.msi`),name:le.name,debug:Z,platform:oe.platform,arch:de,bundle:"msi",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/msi/${le.name}_${le.version}_${de}_${A}.msi.sig`),name:le.name,debug:Z,platform:oe.platform,arch:de,bundle:"msi",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/msi/${le.name}_${le.version}_${de}_${A}.msi.zip`),name:le.name,debug:Z,platform:oe.platform,arch:de,bundle:"msi",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/msi/${le.name}_${le.version}_${de}_${A}.msi.zip.sig`),name:le.name,debug:Z,platform:oe.platform,arch:de,bundle:"msi",version:le.version}))}));d.push((0,v.Dg)({path:(0,S.join)(ue,`bundle/nsis/${le.name}_${le.version}_${de}-setup.exe`),name:le.name,debug:Z,platform:oe.platform,arch:de,bundle:"nsis",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/nsis/${le.name}_${le.version}_${de}-setup.exe.sig`),name:le.name,debug:Z,platform:oe.platform,arch:de,bundle:"nsis",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/nsis/${le.name}_${le.version}_${de}-setup.nsis.zip`),name:le.name,debug:Z,platform:oe.platform,arch:de,bundle:"nsis",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/nsis/${le.name}_${le.version}_${de}-setup.nsis.zip.sig`),name:le.name,debug:Z,platform:oe.platform,arch:de,bundle:"nsis",version:le.version}));Ae=d}else{const A=de==="x64"||de==="x86_64"?"amd64":de==="x32"||de==="i686"?"i386":de==="arm"?"armhf":de==="aarch64"?"arm64":de;const d=de==="x64"||de==="x86_64"?"x86_64":de==="x32"||de==="x86"||de==="i686"?"i386":de==="arm"?"armhfp":de==="arm64"?"aarch64":de;const p=de==="x64"||de==="x86_64"?"amd64":de==="x32"||de==="i686"?"i386":de==="arm"?"arm":de==="arm64"?"aarch64":de;Ae=[(0,v.Dg)({path:(0,S.join)(ue,`bundle/deb/${le.name}_${le.version}_${A}.deb`),name:le.name,debug:Z,platform:oe.platform,arch:A,bundle:"deb",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/deb/${le.name}_${le.version}_${A}.deb.sig`),name:le.name,debug:Z,platform:oe.platform,arch:A,bundle:"deb",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/rpm/${le.name}-${le.version}-${le.rpmRelease}.${d}.rpm`),name:le.name,debug:Z,platform:oe.platform,arch:d,bundle:"rpm",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/rpm/${le.name}-${le.version}-${le.rpmRelease}.${d}.rpm.sig`),name:le.name,debug:Z,platform:oe.platform,arch:d,bundle:"rpm",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/appimage/${le.name}_${le.version}_${p}.AppImage`),name:le.name,debug:Z,platform:oe.platform,arch:p,bundle:"appimage",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/appimage/${le.name}_${le.version}_${p}.AppImage.sig`),name:le.name,debug:Z,platform:oe.platform,arch:p,bundle:"appimage",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/appimage/${le.name}_${le.version}_${p}.AppImage.tar.gz`),name:le.name,debug:Z,platform:oe.platform,arch:p,bundle:"appimage",version:le.version}),(0,v.Dg)({path:(0,S.join)(ue,`bundle/appimage/${le.name}_${le.version}_${p}.AppImage.tar.gz.sig`),name:le.name,debug:Z,platform:oe.platform,arch:p,bundle:"appimage",version:le.version})]}if(T){const A=oe.platform==="windows"?".exe":"";Ae.push((0,v.Dg)({path:(0,S.join)(ue,`${le.mainBinaryName}${A}`),name:"binary",bundle:"bin",debug:Z,platform:oe.platform,arch:de,version:le.version}))}console.log(`Looking for artifacts in:\n${Ae.map((A=>A.path)).join("\n")}`);return Ae.filter((A=>(0,C.existsSync)(A.path)))}},60644:(A,d,p)=>{p.d(d,{l:()=>getOrCreateRelease});var C=p(73024);var S=p.n(C);var v=p(16966);var T=p.n(v);var _=p(84903);var V=p.n(_);function allReleases(A,d,p){const C={per_page:100,owner:d,repo:p};return A.paginate.iterator(A.rest.repos.listReleases.endpoint.merge(C))}async function getOrCreateRelease(A,d,p,C,T,V,Z,ee=true,te=true,re=false){if(process.env.GITHUB_TOKEN===undefined){throw new Error("GITHUB_TOKEN is required")}const ne=(0,_.getOctokit)(process.env.GITHUB_TOKEN,{baseUrl:C});const ie=v.getInput("body_path",{required:false});let se=null;if(ie!==""&&!!ie){try{se=S().readFileSync(ie,{encoding:"utf8"})}catch(A){v.setFailed(A.message)}}let oe=null;try{if(ee){console.log(`Looking for a draft release with tag ${p}...`);for await(const C of allReleases(ne,A,d)){const A=C.data.find((A=>A.tag_name===p));if(A){if(!A.draft){console.warn(`Found release with tag ${p} but it's NOT a draft!`);break}oe=A;console.log(`Found draft release with tag ${p} on the release list.`);break}}if(!oe){throw new Error("release not found")}}else{const C=await ne.rest.repos.getReleaseByTag({owner:A,repo:d,tag:p});oe=C.data;console.log(`Found release with tag ${p}.`)}}catch(C){if(C.status===404||C.message==="release not found"){console.log(`Couldn't find release with tag ${p}. Creating one.`);if(!T){console.error('"releaseName" not set but required to create release.')}else{const C=await ne.rest.repos.createRelease({owner:A,repo:d,tag_name:p,name:T,body:se||V,draft:ee,prerelease:te,target_commitish:Z||_.context.sha,generate_release_notes:re});oe=C.data}}else{console.log(`⚠️ Unexpected error fetching GitHub release for tag ${p}: ${C}`);throw C}}if(!oe){throw new Error("Release not found or created.")}return{id:oe.id,uploadUrl:oe.upload_url,htmlUrl:oe.html_url}}},46866:(A,d,p)=>{p.a(A,(async(A,d)=>{try{var C=p(73024);var S=p.n(C);var v=p(76760);var T=p.n(v);var _=p(16966);var V=p.n(_);var Z=p(84903);var ee=p.n(Z);var te=p(28445);var re=p(60644);var ne=p(21103);var ie=p(46715);var se=p(90532);var oe=p(45292);var ae=p(34689);async function run(){try{const A=(0,v.resolve)(process.cwd(),_.getInput("projectPath")||process.argv[2]);const d=_.getBooleanInput("includeUpdaterJson");const p=parseInt(_.getInput("retryAttempts")||"0",10);const S=_.getInput("tauriScript");const T=(0,te.A)(_.getInput("args"));const V=_.getInput("releaseAssetNamePattern");const ee=_.getBooleanInput("uploadPlainBinary");let le=_.getInput("tagName").replace("refs/tags/","");let ce=Number(_.getInput("releaseId"));let ue=_.getInput("releaseName").replace("refs/tags/","");let Ae=_.getInput("releaseBody");const de=_.getInput("owner")||Z.context.repo.owner;const pe=_.getInput("repo")||Z.context.repo.repo;const fe=_.getBooleanInput("releaseDraft");const he=_.getBooleanInput("prerelease");const ge=_.getInput("releaseCommitish")||null;const me=_.getInput("githubBaseUrl")||process.env.GITHUB_API_URL||"https://api.github.com";const ye=_.getBooleanInput("isGitea");const Ee=_.getBooleanInput("generateReleaseNotes");const be=_.getBooleanInput("uploadWorkflowArtifacts");const Ce=_.getInput("workflowArtifactsNamePattern")||"[platform]-[arch]-[bundle]";const Be=_.getBooleanInput("uploadUpdaterSignatures");const Ie=_.getInput("updaterJsonPreferNsis")?.toLowerCase()==="true";const Se={tauriScript:S,args:T};const we=[...T].findIndex((A=>A==="-t"||A==="--target"));const Qe=we>=0?[...T][we+1]:undefined;const ve=[...T].findIndex((A=>A==="-c"||A==="--config"));const Re=ve>=0?[...T][ve+1]:undefined;const Ne=[];Ne.push(...await(0,se.a)(A,Se,p,ee));if(Ne.length===0){if(ce||le||be){throw new Error("No artifacts were found.")}else{console.log("No artifacts were found. The action was not configured to upload artifacts, therefore this is not handled as an error.");return}}console.log(`Found artifacts:\n${Ne.map((A=>A.path)).join("\n")}`);_.setOutput("artifactPaths",JSON.stringify(Ne.map((A=>A.path))));const De=(0,oe.sg)(Qe);const xe=(0,oe.Vp)(A,De,Re);_.setOutput("appVersion",xe.version);if(be){await(0,ae.I)(Ne,Ce,p)}if(De.platform==="macos"){let A=0;for(const d of Ne){if(d.path.endsWith(".app")&&!(0,C.existsSync)(`${d.path}.tar.gz`)){console.log(`Packaging ${d.path} directory into ${d.path}.tar.gz`);await(0,oe.NK)("tar",["czf",`${d.path}.tar.gz`,"-C",(0,v.dirname)(d.path),(0,v.basename)(d.path)]);d.path+=".tar.gz";d.ext+=".tar.gz"}else if(d.path.endsWith(".app")){Ne.splice(A,1)}A++}}if(le&&!ce){const A=[{key:"__VERSION__",value:xe.version}];A.forEach((A=>{const d=new RegExp(A.key,"g");le=le.replace(d,A.value);ue=ue.replace(d,A.value);Ae=Ae.replace(d,A.value)}));const d=await(0,re.l)(de,pe,le,me,ue||undefined,Ae,ge||undefined,fe,he,Ee);ce=d.id;_.setOutput("releaseUploadUrl",d.uploadUrl);_.setOutput("releaseId",d.id.toString());_.setOutput("releaseHtmlUrl",d.htmlUrl)}if(ce){await(0,ne.r)(de,pe,ce,Ne,p,me,ye,V,Be);if(d){await(0,ie.Y)(de,pe,xe.version,Ae,le,ce,Ne,De,xe.unzippedSigs,Ie,p,me,ye,V)}}else{console.log("No releaseId or tagName provided, skipping all uploads...")}}catch(A){_.setFailed(A.message)}}await run();d()}catch(le){d(le)}}),1)},21103:(A,d,p)=>{p.d(d,{r:()=>uploadAssets});var C=p(73024);var S=p.n(C);var v=p(84903);var T=p.n(v);var _=p(45292);async function uploadAssets(A,d,p,C,T,V,Z,ee,te){if(process.env.GITHUB_TOKEN===undefined){throw new Error("GITHUB_TOKEN is required")}const re=(0,v.getOctokit)(process.env.GITHUB_TOKEN,{baseUrl:V});const ne=(await re.rest.repos.listReleaseAssets({owner:A,repo:d,release_id:p,per_page:100})).data;const contentLength=A=>S().statSync(A).size;for(const v of C){if(!te&&v.ext.endsWith(".sig")){continue}const C={"content-type":"application/zip","content-length":contentLength(v.path)};const V=(0,_.wm)(v,ee);const ie=(0,_.br)(v,ee);const se=ne.find((A=>A.label===V||A.name===ie));if(se){console.log(`Deleting existing ${V}...`);if(Z){await(0,_.Rx)(re,A,d,p,se.id)}else{await re.rest.repos.deleteReleaseAsset({owner:A,repo:d,asset_id:se.id})}}console.log(`Uploading ${V}...`);await(0,_.L5)((()=>re.rest.repos.uploadReleaseAsset({headers:C,name:V,label:V,data:S().createReadStream(v.path),owner:A,repo:d,release_id:p})),T+1);console.log(`${V} successfully uploaded.`)}}},46715:(A,d,p)=>{p.d(d,{Y:()=>uploadVersionJSON});var C=p(73024);var S=p.n(C);var v=p(76760);var T=p.n(v);var _=p(84903);var V=p.n(_);var Z=p(21103);var ee=p(45292);async function uploadVersionJSON(A,d,p,S,T,V,te,re,ne,ie,se,oe,ae,le){if(process.env.GITHUB_TOKEN===undefined){throw new Error("GITHUB_TOKEN is required")}const ce=(0,_.getOctokit)(process.env.GITHUB_TOKEN,{baseUrl:oe});const ue="latest.json";const Ae=(0,v.resolve)(process.cwd(),ue);const de={version:p,notes:S,pub_date:(new Date).toISOString(),platforms:{}};const pe=await ce.rest.repos.listReleaseAssets({owner:A,repo:d,release_id:V,per_page:50});const fe=pe.data.find((A=>A.name===ue));if(fe){if(ae){const p=(await ce.request("GET /repos/{owner}/{repo}/releases/{release_id}/assets/{asset_id}",{owner:A,repo:d,release_id:V,asset_id:fe.id})).data;const C=(await ce.request(`GET ${p.browser_download_url}`)).data;de.platforms=JSON.parse(C).platforms}else{const p=(await ce.request(`GET /repos/{owner}/{repo}/releases/assets/{asset_id}`,{owner:A,repo:d,release_id:V,asset_id:fe.id,headers:{accept:"application/octet-stream"}})).data;de.platforms=JSON.parse(Buffer.from(p).toString()).platforms}}const he=[];for(const A of pe.data){he.push({name:A.name,label:A.label,url:A.browser_download_url})}const ge=[];let me;let ye;for(const A of te){if(A.ext===".app.tar.gz"&&A.arch==="universal"){const d={...A,arch:"aarch64"};const p={...A,arch:"x86_64"};const C=(0,ee.br)(d,le);const S=(0,ee.wm)(d,le);const v=(0,ee.br)(p,le);const T=(0,ee.wm)(p,le);me=!!he.find((A=>A.label===S||A.name===C));ye=!!he.find((A=>A.label===T||A.name===v))}const d=(0,ee.wm)(A,le);const p=(0,ee.br)(A,le);const C=he.find((A=>A.label===d||A.name===p))?.url;if(C){ge.push({downloadUrl:C,assetLabel:d,assetName:p,path:A.path,arch:A.arch,bundle:A.bundle})}}const Ee=ge.filter((A=>A.assetName.endsWith(".sig")));function signaturePriority(A){if(ne&&A.endsWith(".AppImage.sig")||!ne&&A.endsWith(".AppImage.tar.gz.sig")){return 100}const d=ie?ne?[".exe.sig",".msi.sig"]:[".nsis.zip.sig",".msi.zip.sig"]:ne?[".msi.sig",".exe.sig"]:[".msi.zip.sig",".nsis.zip.sig"];for(const[p,C]of d.entries()){if(A.endsWith(C)){return 100-p}}return 0}Ee.sort(((A,d)=>signaturePriority(d.path)-signaturePriority(A.path)));if(!Ee[0]){console.warn("Signature not found for the updater JSON. Skipping upload...");return}for(const[A,d]of Ee.entries()){const p=(0,v.basename)(d.assetLabel,(0,v.extname)(d.assetLabel));const S=(0,v.basename)(d.assetName,(0,v.extname)(d.assetName));let _=ge.find((A=>A.assetLabel===p||A.assetName===S))?.downloadUrl;if(!_){console.warn(`Updater asset belonging to signature file "${d.assetName}" not found.`);continue}_=_.replace(/\/download\/(untagged-[^/]+)\//,T?`/download/${encodeURIComponent(T)}/`:"/latest/download/");let V=re.platform;if(V==="macos"){V="darwin"}let Z=d.arch;Z=Z==="amd64"||Z==="x86_64"||Z==="x64"?"x86_64":Z==="x86"||Z==="i386"?"i686":Z==="arm"?"armv7":Z==="arm64"?"aarch64":Z;if(A===0){if(V==="darwin"&&Z==="universal"){if(!de.platforms["darwin-aarch64"]||!me){de.platforms["darwin-aarch64"]={signature:(0,C.readFileSync)(d.path).toString(),url:_}}if(!de.platforms["darwin-x86_64"]||!ye){de.platforms["darwin-x86_64"]={signature:(0,C.readFileSync)(d.path).toString(),url:_}}}de.platforms[`${V}-${Z}`]={signature:(0,C.readFileSync)(d.path).toString(),url:_}}if(V==="darwin"&&Z==="universal"){if(!de.platforms["darwin-aarch64-app"]||!me){de.platforms["darwin-aarch64-app"]={signature:(0,C.readFileSync)(d.path).toString(),url:_}}if(!de.platforms["darwin-x86_64-app"]||!ye){de.platforms["darwin-x86_64-app"]={signature:(0,C.readFileSync)(d.path).toString(),url:_}}}de.platforms[`${V}-${Z}-${d.bundle}`]={signature:(0,C.readFileSync)(d.path).toString(),url:_}}(0,C.writeFileSync)(Ae,JSON.stringify(de,null,2));if(fe){if(ae){await(0,ee.Rx)(ce,A,d,V,fe.id)}else{await ce.rest.repos.deleteReleaseAsset({owner:A,repo:d,release_id:V,asset_id:fe.id})}}const be=(0,ee.Dg)({path:Ae,name:ue,debug:false,platform:re.platform,arch:"",bundle:"",version:p});await(0,Z.r)(A,d,V,[be],se,oe,ae)}},34689:(A,d,p)=>{p.d(d,{I:()=>uploadWorkflowArtifacts});var C=p(76760);var S=p.n(C);var v=p(56037);var T=p.n(v);var _=p(71635);var V=p(45292);async function uploadWorkflowArtifacts(A,d,p){for(const S of A){if(S.workflowArtifactName){let A=S.workflowArtifactName;if(typeof d==="string"){A=(0,V.wm)(S,d)}let v=[S.path];if(S.ext===".app"){v=(0,_.Hz)("**/*",{cwd:S.path,absolute:true})}console.log("Handing it off to GitHub's uploadArtifact function. This will print a few unmanaged logs.");await(0,V.L5)((()=>T().uploadArtifact(A,v,(0,C.dirname)(S.path),{compressionLevel:S.ext===".app"?6:0})),p);console.log("Workflow artifacts uploads DONE!")}}}},45292:(d,p,C)=>{C.d(p,{Dg:()=>createArtifact,Rx:()=>deleteGiteaReleaseAsset,NK:()=>execCommand,wm:()=>getAssetName,Vp:()=>getInfo,d:()=>getTargetDir,sg:()=>getTargetInfo,Lw:()=>getWorkspaceDir,br:()=>ghAssetName,ws:()=>hasDependency,dk:()=>hasTauriScript,L5:()=>retry,Ui:()=>usesBun,_$:()=>usesNpm,me:()=>usesPnpm,z8:()=>usesYarn});var S=C(73024);var v=C(76760);var T=C.n(v); +var C=p(39023).inherits;var S=p(93920).ZipArchiveOutputStream;var v=p(93920).ZipArchiveEntry;var T=p(16090);var _=A.exports=function(A){if(!(this instanceof _)){return new _(A)}A=this.options=A||{};A.zlib=A.zlib||{};S.call(this,A);if(typeof A.level==="number"&&A.level>=0){A.zlib.level=A.level;delete A.level}if(!A.forceZip64&&typeof A.zlib.level==="number"&&A.zlib.level===0){A.store=true}A.namePrependSlash=A.namePrependSlash||false;if(A.comment&&A.comment.length>0){this.setComment(A.comment)}};C(_,S);_.prototype._normalizeFileData=function(A){A=T.defaults(A,{type:"file",name:null,namePrependSlash:this.options.namePrependSlash,linkname:null,date:null,mode:null,store:this.options.store,comment:""});var d=A.type==="directory";var p=A.type==="symlink";if(A.name){A.name=T.sanitizePath(A.name);if(!p&&A.name.slice(-1)==="/"){d=true;A.type="directory"}else if(d){A.name+="/"}}if(d||p){A.store=true}A.date=T.dateify(A.date);return A};_.prototype.entry=function(A,d,p){if(typeof p!=="function"){p=this._emitErrorCallback.bind(this)}d=this._normalizeFileData(d);if(d.type!=="file"&&d.type!=="directory"&&d.type!=="symlink"){p(new Error(d.type+" entries not currently supported"));return}if(typeof d.name!=="string"||d.name.length===0){p(new Error("entry name must be a non-empty string value"));return}if(d.type==="symlink"&&typeof d.linkname!=="string"){p(new Error("entry linkname must be a non-empty string value when type equals symlink"));return}var C=new v(d.name);C.setTime(d.date,this.options.forceLocalTime);if(d.namePrependSlash){C.setName(d.name,true)}if(d.store){C.setMethod(0)}if(d.comment.length>0){C.setComment(d.comment)}if(d.type==="symlink"&&typeof d.mode!=="number"){d.mode=40960}if(typeof d.mode==="number"){if(d.type==="symlink"){d.mode|=40960}C.setUnixMode(d.mode)}if(d.type==="symlink"&&typeof d.linkname==="string"){A=Buffer.from(d.linkname)}return S.prototype.entry.call(this,C,A,p)};_.prototype.finalize=function(){this.finish()}},90532:(A,d,p)=>{p.d(d,{a:()=>buildProject});var C=p(73024);var S=p(76760);var v=p(56958);class Runner{constructor(A,d){this.bin=A;this.tauriScript=d||[]}async execTauriCommand(A,d,p,C,S=0){const T=[...this.tauriScript,...A];if(this.bin==="npm"&&d.length){T.push("--")}T.push(...d);return(0,v.L5)((()=>(0,v.NK)(this.bin,T,{cwd:p},C)),S+1)}}async function getRunner(A,d){if(d){console.log("`tauriScript` set. Skipping cli verification.");const[A,...p]=d.split(" ");return new Runner(A,p)}if((0,v.ws)("@tauri-apps/cli",A)){if((0,v.z8)(A))return new Runner("yarn",["tauri"]);if((0,v.me)(A))return new Runner("pnpm",["tauri"]);if((0,v.Ui)(A))return new Runner("bun",["tauri"]);if((0,v._$)(A))return new Runner("npm",[(0,v.dk)(A)?"run":"exec","tauri"])}console.warn("Could not detect valid `@tauri-apps/cli` installation. Proceeding to install global npm package...");await(0,v.NK)("npm",["install","-g",`@tauri-apps/cli@v2`],{cwd:undefined});return new Runner("tauri")}async function buildProject(A,d,p,T){const _=await getRunner(A,d.tauriScript);const V=d.parsedArgs["debug"];const Z=d.parsedArgs["target"];const ee=d.parsedArgs["config"];const te=d.parsedRunnerArgs["profile"];const re=(0,v.sg)(Z);const ne=(0,v.Vp)(A,re,ee);if(!ne.tauriPath){throw Error("Couldn't detect path of tauri app")}const ie={tauriPath:ne.tauriPath,runner:_,name:ne.name,mainBinaryName:ne.mainBinaryName,version:ne.version,wixLanguage:ne.wixLanguage,rpmRelease:ne.rpmRelease};await _.execTauriCommand(["build"],d.rawArgs||[],A,re.platform==="macos"?{TAURI_BUNDLER_DMG_IGNORE_CI:process.env.TAURI_BUNDLER_DMG_IGNORE_CI??"true"}:undefined,p);const se=(0,v.Lw)(ie.tauriPath)??ie.tauriPath;const oe=(0,S.join)((0,v.d)(se,ne.tauriPath,!!Z),Z??"",te?te:V?"debug":"release");let ae=[];let le=re.arch;if(re.platform==="macos"){if(le==="x86_64"){le="x64"}else if(le==="arm64"){le="aarch64"}ae=[(0,v.Dg)({path:(0,S.join)(oe,`bundle/dmg/${ie.name}_${ie.version}_${le}.dmg`),name:ie.name,debug:V,platform:re.platform,arch:le,bundle:"dmg",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/macos/${ie.name}.app`),name:ie.name,debug:V,platform:re.platform,arch:le,bundle:"app",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/macos/${ie.name}.app.tar.gz`),name:ie.name,debug:V,platform:re.platform,arch:le,bundle:"app",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/macos/${ie.name}.app.tar.gz.sig`),name:ie.name,debug:V,platform:re.platform,arch:le,bundle:"app",version:ie.version})]}else if(re.platform==="windows"){if(le.startsWith("i")){le="x86"}else if(le==="aarch64"||le==="arm64"){le="arm64"}else{le="x64"}let A;if(typeof ie.wixLanguage==="string"){A=[ie.wixLanguage]}else if(Array.isArray(ie.wixLanguage)){A=ie.wixLanguage}else{A=Object.keys(ie.wixLanguage)}const d=[];A.forEach((A=>{d.push((0,v.Dg)({path:(0,S.join)(oe,`bundle/msi/${ie.name}_${ie.version}_${le}_${A}.msi`),name:ie.name,debug:V,platform:re.platform,arch:le,bundle:"msi",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/msi/${ie.name}_${ie.version}_${le}_${A}.msi.sig`),name:ie.name,debug:V,platform:re.platform,arch:le,bundle:"msi",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/msi/${ie.name}_${ie.version}_${le}_${A}.msi.zip`),name:ie.name,debug:V,platform:re.platform,arch:le,bundle:"msi",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/msi/${ie.name}_${ie.version}_${le}_${A}.msi.zip.sig`),name:ie.name,debug:V,platform:re.platform,arch:le,bundle:"msi",version:ie.version}))}));d.push((0,v.Dg)({path:(0,S.join)(oe,`bundle/nsis/${ie.name}_${ie.version}_${le}-setup.exe`),name:ie.name,debug:V,platform:re.platform,arch:le,bundle:"nsis",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/nsis/${ie.name}_${ie.version}_${le}-setup.exe.sig`),name:ie.name,debug:V,platform:re.platform,arch:le,bundle:"nsis",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/nsis/${ie.name}_${ie.version}_${le}-setup.nsis.zip`),name:ie.name,debug:V,platform:re.platform,arch:le,bundle:"nsis",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/nsis/${ie.name}_${ie.version}_${le}-setup.nsis.zip.sig`),name:ie.name,debug:V,platform:re.platform,arch:le,bundle:"nsis",version:ie.version}));ae=d}else{const A=le==="x64"||le==="x86_64"?"amd64":le==="x32"||le==="i686"?"i386":le==="arm"?"armhf":le==="aarch64"?"arm64":le;const d=le==="x64"||le==="x86_64"?"x86_64":le==="x32"||le==="x86"||le==="i686"?"i386":le==="arm"?"armhfp":le==="arm64"?"aarch64":le;const p=le==="x64"||le==="x86_64"?"amd64":le==="x32"||le==="i686"?"i386":le==="arm"?"arm":le==="arm64"?"aarch64":le;ae=[(0,v.Dg)({path:(0,S.join)(oe,`bundle/deb/${ie.name}_${ie.version}_${A}.deb`),name:ie.name,debug:V,platform:re.platform,arch:A,bundle:"deb",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/deb/${ie.name}_${ie.version}_${A}.deb.sig`),name:ie.name,debug:V,platform:re.platform,arch:A,bundle:"deb",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/rpm/${ie.name}-${ie.version}-${ie.rpmRelease}.${d}.rpm`),name:ie.name,debug:V,platform:re.platform,arch:d,bundle:"rpm",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/rpm/${ie.name}-${ie.version}-${ie.rpmRelease}.${d}.rpm.sig`),name:ie.name,debug:V,platform:re.platform,arch:d,bundle:"rpm",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/appimage/${ie.name}_${ie.version}_${p}.AppImage`),name:ie.name,debug:V,platform:re.platform,arch:p,bundle:"appimage",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/appimage/${ie.name}_${ie.version}_${p}.AppImage.sig`),name:ie.name,debug:V,platform:re.platform,arch:p,bundle:"appimage",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/appimage/${ie.name}_${ie.version}_${p}.AppImage.tar.gz`),name:ie.name,debug:V,platform:re.platform,arch:p,bundle:"appimage",version:ie.version}),(0,v.Dg)({path:(0,S.join)(oe,`bundle/appimage/${ie.name}_${ie.version}_${p}.AppImage.tar.gz.sig`),name:ie.name,debug:V,platform:re.platform,arch:p,bundle:"appimage",version:ie.version})]}if(T){const A=re.platform==="windows"?".exe":"";ae.push((0,v.Dg)({path:(0,S.join)(oe,`${ie.mainBinaryName}${A}`),name:"binary",bundle:"bin",debug:V,platform:re.platform,arch:le,version:ie.version}))}console.log(`Looking for artifacts in:\n${ae.map((A=>A.path)).join("\n")}`);return ae.filter((A=>(0,C.existsSync)(A.path)))}},60644:(A,d,p)=>{p.d(d,{l:()=>getOrCreateRelease});var C=p(73024);var S=p.n(C);var v=p(16966);var T=p.n(v);var _=p(84903);var V=p.n(_);function allReleases(A,d,p){const C={per_page:100,owner:d,repo:p};return A.paginate.iterator(A.rest.repos.listReleases.endpoint.merge(C))}async function getOrCreateRelease(A,d,p,C,T,V,Z,ee=true,te=true,re=false){if(process.env.GITHUB_TOKEN===undefined){throw new Error("GITHUB_TOKEN is required")}const ne=(0,_.getOctokit)(process.env.GITHUB_TOKEN,{baseUrl:C});const ie=v.getInput("body_path",{required:false});let se=null;if(ie!==""&&!!ie){try{se=S().readFileSync(ie,{encoding:"utf8"})}catch(A){v.setFailed(A.message)}}let oe=null;try{if(ee){console.log(`Looking for a draft release with tag ${p}...`);for await(const C of allReleases(ne,A,d)){const A=C.data.find((A=>A.tag_name===p));if(A){if(!A.draft){console.warn(`Found release with tag ${p} but it's NOT a draft!`);break}oe=A;console.log(`Found draft release with tag ${p} on the release list.`);break}}if(!oe){throw new Error("release not found")}}else{const C=await ne.rest.repos.getReleaseByTag({owner:A,repo:d,tag:p});oe=C.data;console.log(`Found release with tag ${p}.`)}}catch(C){if(C.status===404||C.message==="release not found"){console.log(`Couldn't find release with tag ${p}. Creating one.`);if(!T){console.error('"releaseName" not set but required to create release.')}else{const C=await ne.rest.repos.createRelease({owner:A,repo:d,tag_name:p,name:T,body:se||V,draft:ee,prerelease:te,target_commitish:Z||_.context.sha,generate_release_notes:re});oe=C.data}}else{console.log(`⚠️ Unexpected error fetching GitHub release for tag ${p}: ${C}`);throw C}}if(!oe){throw new Error("Release not found or created.")}return{id:oe.id,uploadUrl:oe.upload_url,htmlUrl:oe.html_url}}},46866:(A,d,p)=>{p.a(A,(async(A,d)=>{try{var C=p(73024);var S=p.n(C);var v=p(76760);var T=p.n(v);var _=p(16966);var V=p.n(_);var Z=p(84903);var ee=p.n(Z);var te=p(28445);var re=p(60644);var ne=p(21103);var ie=p(46715);var se=p(90532);var oe=p(56958);var ae=p(34689);var le=p(57975);var ce=p.n(le);async function run(){try{const A=(0,v.resolve)(process.cwd(),_.getInput("projectPath")||process.argv[2]);const d=_.getBooleanInput("includeUpdaterJson");const p=parseInt(_.getInput("retryAttempts")||"0",10);const S=_.getInput("tauriScript");const T=_.getInput("releaseAssetNamePattern");const V=(0,te.A)(_.getInput("args"));const ee=(0,le.parseArgs)({args:V,strict:false,options:{target:{type:"string",short:"t"},config:{type:"string",short:"c"},debug:{type:"boolean",short:"d"}}});const ce=(0,le.parseArgs)({args:ee.positionals,strict:false,options:{profile:{type:"string"}}});const ue=_.getBooleanInput("uploadPlainBinary");let Ae=_.getInput("tagName").replace("refs/tags/","");let de=Number(_.getInput("releaseId"));let pe=_.getInput("releaseName").replace("refs/tags/","");let fe=_.getInput("releaseBody");const he=_.getInput("owner")||Z.context.repo.owner;const ge=_.getInput("repo")||Z.context.repo.repo;const me=_.getBooleanInput("releaseDraft");const ye=_.getBooleanInput("prerelease");const Ee=_.getInput("releaseCommitish")||null;const be=_.getInput("githubBaseUrl")||process.env.GITHUB_API_URL||"https://api.github.com";const Ce=_.getBooleanInput("isGitea");const Be=_.getBooleanInput("generateReleaseNotes");const Ie=_.getBooleanInput("uploadWorkflowArtifacts");const Se=_.getInput("workflowArtifactsNamePattern")||"[platform]-[arch]-[bundle]";const we=_.getBooleanInput("uploadUpdaterSignatures");const Qe=_.getInput("updaterJsonPreferNsis")?.toLowerCase()==="true";const ve={tauriScript:S,rawArgs:V,parsedArgs:ee.values,parsedRunnerArgs:ce.values};const Re=ve.parsedArgs["target"];const Ne=ve.parsedArgs["config"];const De=[];De.push(...await(0,se.a)(A,ve,p,ue));if(De.length===0){if(de||Ae||Ie){throw new Error("No artifacts were found.")}else{console.log("No artifacts were found. The action was not configured to upload artifacts, therefore this is not handled as an error.");return}}console.log(`Found artifacts:\n${De.map((A=>A.path)).join("\n")}`);_.setOutput("artifactPaths",JSON.stringify(De.map((A=>A.path))));const xe=(0,oe.sg)(Re);const Te=(0,oe.Vp)(A,xe,Ne);_.setOutput("appVersion",Te.version);if(Ie){await(0,ae.I)(De,Se,p)}if(xe.platform==="macos"){let A=0;for(const d of De){if(d.path.endsWith(".app")&&!(0,C.existsSync)(`${d.path}.tar.gz`)){console.log(`Packaging ${d.path} directory into ${d.path}.tar.gz`);await(0,oe.NK)("tar",["czf",`${d.path}.tar.gz`,"-C",(0,v.dirname)(d.path),(0,v.basename)(d.path)]);d.path+=".tar.gz";d.ext+=".tar.gz"}else if(d.path.endsWith(".app")){De.splice(A,1)}A++}}if(Ae&&!de){const A=[{key:"__VERSION__",value:Te.version}];A.forEach((A=>{const d=new RegExp(A.key,"g");Ae=Ae.replace(d,A.value);pe=pe.replace(d,A.value);fe=fe.replace(d,A.value)}));const d=await(0,re.l)(he,ge,Ae,be,pe||undefined,fe,Ee||undefined,me,ye,Be);de=d.id;_.setOutput("releaseUploadUrl",d.uploadUrl);_.setOutput("releaseId",d.id.toString());_.setOutput("releaseHtmlUrl",d.htmlUrl)}if(de){await(0,ne.r)(he,ge,de,De,p,be,Ce,T,we);if(d){await(0,ie.Y)(he,ge,Te.version,fe,Ae,de,De,xe,Te.unzippedSigs,Qe,p,be,Ce,T)}}else{console.log("No releaseId or tagName provided, skipping all uploads...")}}catch(A){_.setFailed(A.message)}}await run();d()}catch(ue){d(ue)}}),1)},21103:(A,d,p)=>{p.d(d,{r:()=>uploadAssets});var C=p(73024);var S=p.n(C);var v=p(84903);var T=p.n(v);var _=p(56958);async function uploadAssets(A,d,p,C,T,V,Z,ee,te){if(process.env.GITHUB_TOKEN===undefined){throw new Error("GITHUB_TOKEN is required")}const re=(0,v.getOctokit)(process.env.GITHUB_TOKEN,{baseUrl:V});const ne=(await re.rest.repos.listReleaseAssets({owner:A,repo:d,release_id:p,per_page:100})).data;const contentLength=A=>S().statSync(A).size;for(const v of C){if(!te&&v.ext.endsWith(".sig")){continue}const C={"content-type":"application/zip","content-length":contentLength(v.path)};const V=(0,_.wm)(v,ee);const ie=(0,_.br)(v,ee);const se=ne.find((A=>A.label===V||A.name===ie));if(se){console.log(`Deleting existing ${V}...`);if(Z){await(0,_.Rx)(re,A,d,p,se.id)}else{await re.rest.repos.deleteReleaseAsset({owner:A,repo:d,asset_id:se.id})}}console.log(`Uploading ${V}...`);await(0,_.L5)((()=>re.rest.repos.uploadReleaseAsset({headers:C,name:V,label:V,data:S().createReadStream(v.path),owner:A,repo:d,release_id:p})),T+1);console.log(`${V} successfully uploaded.`)}}},46715:(A,d,p)=>{p.d(d,{Y:()=>uploadVersionJSON});var C=p(73024);var S=p.n(C);var v=p(76760);var T=p.n(v);var _=p(84903);var V=p.n(_);var Z=p(21103);var ee=p(56958);async function uploadVersionJSON(A,d,p,S,T,V,te,re,ne,ie,se,oe,ae,le){if(process.env.GITHUB_TOKEN===undefined){throw new Error("GITHUB_TOKEN is required")}const ce=(0,_.getOctokit)(process.env.GITHUB_TOKEN,{baseUrl:oe});const ue="latest.json";const Ae=(0,v.resolve)(process.cwd(),ue);const de={version:p,notes:S,pub_date:(new Date).toISOString(),platforms:{}};const pe=await ce.rest.repos.listReleaseAssets({owner:A,repo:d,release_id:V,per_page:50});const fe=pe.data.find((A=>A.name===ue));if(fe){if(ae){const p=(await ce.request("GET /repos/{owner}/{repo}/releases/{release_id}/assets/{asset_id}",{owner:A,repo:d,release_id:V,asset_id:fe.id})).data;const C=(await ce.request(`GET ${p.browser_download_url}`)).data;de.platforms=JSON.parse(C).platforms}else{const p=(await ce.request(`GET /repos/{owner}/{repo}/releases/assets/{asset_id}`,{owner:A,repo:d,release_id:V,asset_id:fe.id,headers:{accept:"application/octet-stream"}})).data;de.platforms=JSON.parse(Buffer.from(p).toString()).platforms}}const he=[];for(const A of pe.data){he.push({name:A.name,label:A.label,url:A.browser_download_url})}const ge=[];let me;let ye;for(const A of te){if(A.ext===".app.tar.gz"&&A.arch==="universal"){const d={...A,arch:"aarch64"};const p={...A,arch:"x86_64"};const C=(0,ee.br)(d,le);const S=(0,ee.wm)(d,le);const v=(0,ee.br)(p,le);const T=(0,ee.wm)(p,le);me=!!he.find((A=>A.label===S||A.name===C));ye=!!he.find((A=>A.label===T||A.name===v))}const d=(0,ee.wm)(A,le);const p=(0,ee.br)(A,le);const C=he.find((A=>A.label===d||A.name===p))?.url;if(C){ge.push({downloadUrl:C,assetLabel:d,assetName:p,path:A.path,arch:A.arch,bundle:A.bundle})}}const Ee=ge.filter((A=>A.assetName.endsWith(".sig")));function signaturePriority(A){if(ne&&A.endsWith(".AppImage.sig")||!ne&&A.endsWith(".AppImage.tar.gz.sig")){return 100}const d=ie?ne?[".exe.sig",".msi.sig"]:[".nsis.zip.sig",".msi.zip.sig"]:ne?[".msi.sig",".exe.sig"]:[".msi.zip.sig",".nsis.zip.sig"];for(const[p,C]of d.entries()){if(A.endsWith(C)){return 100-p}}return 0}Ee.sort(((A,d)=>signaturePriority(d.path)-signaturePriority(A.path)));if(!Ee[0]){console.warn("Signature not found for the updater JSON. Skipping upload...");return}for(const[A,d]of Ee.entries()){const p=(0,v.basename)(d.assetLabel,(0,v.extname)(d.assetLabel));const S=(0,v.basename)(d.assetName,(0,v.extname)(d.assetName));let _=ge.find((A=>A.assetLabel===p||A.assetName===S))?.downloadUrl;if(!_){console.warn(`Updater asset belonging to signature file "${d.assetName}" not found.`);continue}_=_.replace(/\/download\/(untagged-[^/]+)\//,T?`/download/${encodeURIComponent(T)}/`:"/latest/download/");let V=re.platform;if(V==="macos"){V="darwin"}let Z=d.arch;Z=Z==="amd64"||Z==="x86_64"||Z==="x64"?"x86_64":Z==="x86"||Z==="i386"?"i686":Z==="arm"?"armv7":Z==="arm64"?"aarch64":Z;if(A===0){if(V==="darwin"&&Z==="universal"){if(!de.platforms["darwin-aarch64"]||!me){de.platforms["darwin-aarch64"]={signature:(0,C.readFileSync)(d.path).toString(),url:_}}if(!de.platforms["darwin-x86_64"]||!ye){de.platforms["darwin-x86_64"]={signature:(0,C.readFileSync)(d.path).toString(),url:_}}}de.platforms[`${V}-${Z}`]={signature:(0,C.readFileSync)(d.path).toString(),url:_}}if(V==="darwin"&&Z==="universal"){if(!de.platforms["darwin-aarch64-app"]||!me){de.platforms["darwin-aarch64-app"]={signature:(0,C.readFileSync)(d.path).toString(),url:_}}if(!de.platforms["darwin-x86_64-app"]||!ye){de.platforms["darwin-x86_64-app"]={signature:(0,C.readFileSync)(d.path).toString(),url:_}}}de.platforms[`${V}-${Z}-${d.bundle}`]={signature:(0,C.readFileSync)(d.path).toString(),url:_}}(0,C.writeFileSync)(Ae,JSON.stringify(de,null,2));if(fe){if(ae){await(0,ee.Rx)(ce,A,d,V,fe.id)}else{await ce.rest.repos.deleteReleaseAsset({owner:A,repo:d,release_id:V,asset_id:fe.id})}}const be=(0,ee.Dg)({path:Ae,name:ue,debug:false,platform:re.platform,arch:"",bundle:"",version:p});await(0,Z.r)(A,d,V,[be],se,oe,ae)}},34689:(A,d,p)=>{p.d(d,{I:()=>uploadWorkflowArtifacts});var C=p(76760);var S=p.n(C);var v=p(56037);var T=p.n(v);var _=p(71635);var V=p(56958);async function uploadWorkflowArtifacts(A,d,p){for(const S of A){if(S.workflowArtifactName){let A=S.workflowArtifactName;if(typeof d==="string"){A=(0,V.wm)(S,d)}let v=[S.path];if(S.ext===".app"){v=(0,_.Hz)("**/*",{cwd:S.path,absolute:true})}console.log("Handing it off to GitHub's uploadArtifact function. This will print a few unmanaged logs.");await(0,V.L5)((()=>T().uploadArtifact(A,v,(0,C.dirname)(S.path),{compressionLevel:S.ext===".app"?6:0})),p);console.log("Workflow artifacts uploads DONE!")}}}},56958:(d,p,C)=>{C.d(p,{Dg:()=>createArtifact,Rx:()=>deleteGiteaReleaseAsset,NK:()=>execCommand,wm:()=>getAssetName,Vp:()=>getInfo,d:()=>getTargetDir,sg:()=>getTargetInfo,Lw:()=>getWorkspaceDir,br:()=>ghAssetName,ws:()=>hasDependency,dk:()=>hasTauriScript,L5:()=>retry,Ui:()=>usesBun,_$:()=>usesNpm,me:()=>usesPnpm,z8:()=>usesYarn});var S=C(73024);var v=C(76760);var T=C.n(v); /*! * Copyright (c) Squirrel Chat et al., All rights reserved. * SPDX-License-Identifier: BSD-3-Clause @@ -336,7 +336,7 @@ function peekTable(A,d,p,C){let S=d;let v=p;let T;let _=false;let V;for(let d=0; * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -let ie=/^[a-z0-9-_]+$/i;function extendedTypeOf(A){let d=typeof A;if(d==="object"){if(Array.isArray(A))return"array";if(A instanceof Date)return"date"}return d}function isArrayOfTables(A){for(let d=0;d { const runner = await getRunner(root, buildOpts.tauriScript); - const tauriArgs = buildOpts.args ?? []; - - const debug = - [...tauriArgs].findIndex((e) => e === '-d' || e === '--debug') >= 0; - - const targetArgIdx = [...tauriArgs].findIndex( - (e) => e === '-t' || e === '--target', - ); - const targetPath = - targetArgIdx >= 0 ? [...tauriArgs][targetArgIdx + 1] : undefined; - - const configArgIdx = [...tauriArgs].findIndex( - (e) => e === '-c' || e === '--config', - ); - const configArg = - configArgIdx >= 0 ? [...tauriArgs][configArgIdx + 1] : undefined; - - const profileArgIdx = [...tauriArgs].findIndex((e) => e === '--profile'); - const profile = - profileArgIdx >= 0 ? [...tauriArgs][profileArgIdx + 1] : undefined; + const debug = buildOpts.parsedArgs['debug'] as boolean; + const targetPath = buildOpts.parsedArgs['target'] as string | undefined; + const configArg = buildOpts.parsedArgs['config'] as string | undefined; + const profile = buildOpts.parsedRunnerArgs['profile'] as string | undefined; const targetInfo = getTargetInfo(targetPath); @@ -61,7 +45,7 @@ export async function buildProject( await runner.execTauriCommand( ['build'], - [...tauriArgs], + buildOpts.rawArgs || [], root, targetInfo.platform === 'macos' ? { diff --git a/src/index.ts b/src/index.ts index 8837c06..447bd6f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,6 +13,7 @@ import { execCommand, getInfo, getTargetInfo } from './utils'; import type { Artifact, BuildOptions } from './types'; import { uploadWorkflowArtifacts } from './upload-workflow-artifacts'; +import { parseArgs } from 'node:util'; async function run(): Promise { try { @@ -23,8 +24,26 @@ async function run(): Promise { const includeUpdaterJson = core.getBooleanInput('includeUpdaterJson'); const retryAttempts = parseInt(core.getInput('retryAttempts') || '0', 10); const tauriScript = core.getInput('tauriScript'); - const args = stringArgv(core.getInput('args')); const releaseAssetNamePattern = core.getInput('releaseAssetNamePattern'); + const rawArgs = stringArgv(core.getInput('args')); + const parsedArgs = parseArgs({ + args: rawArgs, + strict: false, + options: { + target: { type: 'string', short: 't' }, + config: { + type: 'string', + short: 'c', + }, + debug: { type: 'boolean', short: 'd' }, + }, + }); + const parsedRunnerArgs = parseArgs({ + args: parsedArgs.positionals, + strict: false, + options: { profile: { type: 'string' } }, + }); + const uploadPlainBinary = core.getBooleanInput('uploadPlainBinary'); let tagName = core.getInput('tagName').replace('refs/tags/', ''); @@ -48,7 +67,7 @@ async function run(): Promise { const workflowArtifactsNamePattern = core.getInput('workflowArtifactsNamePattern') || '[platform]-[arch]-[bundle]'; - const uplodaUpdaterSignatures = core.getBooleanInput( + const uploadUpdaterSignatures = core.getBooleanInput( 'uploadUpdaterSignatures', ); @@ -59,20 +78,13 @@ async function run(): Promise { const buildOptions: BuildOptions = { tauriScript, - args, + rawArgs, + parsedArgs: parsedArgs.values, + parsedRunnerArgs: parsedRunnerArgs.values, }; - const targetArgIdx = [...args].findIndex( - (e) => e === '-t' || e === '--target', - ); - const targetPath = - targetArgIdx >= 0 ? [...args][targetArgIdx + 1] : undefined; - - const configArgIdx = [...args].findIndex( - (e) => e === '-c' || e === '--config', - ); - const configArg = - configArgIdx >= 0 ? [...args][configArgIdx + 1] : undefined; + const targetPath = buildOptions.parsedArgs['target'] as string | undefined; + const configArg = buildOptions.parsedArgs['config'] as string | undefined; const artifacts: Artifact[] = []; @@ -192,7 +204,7 @@ async function run(): Promise { githubBaseUrl, isGitea, releaseAssetNamePattern, - uplodaUpdaterSignatures, + uploadUpdaterSignatures, ); if (includeUpdaterJson) { diff --git a/src/types.d.ts b/src/types.d.ts index c8075de..8863eb5 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -33,9 +33,21 @@ export interface Artifact { export interface BuildOptions { tauriScript: string | null; - args: string[] | null; + rawArgs: string[] | null; + parsedArgs: ParsedArgs; + parsedRunnerArgs: ParsedRunnerArgs; } +type ParsedArgs = { + debug?: string | boolean; + config?: string | boolean; + target?: string | boolean; +}; + +type ParsedRunnerArgs = { + profile?: string | boolean; +}; + export interface CargoManifestBin { name: string; }