@saury/tiny-app-cli
Version:
自动提审与发布微信小程序, 更好的实现小程序的CI/CD
11 lines (10 loc) • 20.7 kB
JavaScript
import{program as g,Option as D}from"commander";import F from"node:process";import{red as C,blue as f,green as w,yellow as A,reset as x,bgGreen as j}from"kolorist";import v from"prompts";import L from"puppeteer";import N from"ora";import k from"node:path";import O from"node:fs";import{fileURLToPath as V}from"node:url";import W from"qrcode-terminal";import U from"jsqr";import $ from"upng-js";const z="@saury/tiny-app-cli",X="2.2.0",M="\u81EA\u52A8\u63D0\u5BA1\u4E0E\u53D1\u5E03\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F, \u66F4\u597D\u7684\u5B9E\u73B0\u5C0F\u7A0B\u5E8F\u7684CI/CD",G="https://mp.weixin.qq.com/";var h=(u=>(u.WEIXIN="weixin",u.ALIPAY="alipay",u))(h||{}),d=(u=>(u.REVIEW="review",u.RELEASE="release",u.INSPECT="inspect",u))(d||{}),H=(u=>(u.TRUE="true",u.FALSE="false",u))(H||{});const S={width:1920,height:1080,deviceScaleFactor:1.5},q=F.env.NODE_ENV==="development",Q=k.dirname(V(import.meta.url));function R(...u){return k.resolve(Q,...u)}async function I(u){return new Promise((n,s)=>{const e=$.decode(O.readFileSync(u)),o=U(new Uint8ClampedArray($.toRGBA8(e)[0]),e.width,e.height);o?W.generate(o.data,{small:!0},c=>{n(c)}):s(new Error("QR code not found"))})}function _(u=500){return new Promise(n=>{setTimeout(n,u)})}function T(u){return u==null?!0:typeof u=="string"||Array.isArray(u)?u.length===0:typeof u=="object"?Object.keys(u).length===0:!1}function Y(u){return u==="true"?!0:u==="false"?!1:u}function J(u){return u.headless=Y(u.headless),u}function E(){throw new Error(`${C("\u2716")} Operation cancelled`)}let B,t,a,m;async function K(u=m){a=N("\u6B63\u5728\u83B7\u53D6\u767B\u5F55\u4E8C\u7EF4\u7801...").start(),B=await L.launch({headless:q?!1:u.headless}),t=await B.newPage(),await t.setViewport(S),await t.goto(G);const n=".login_frame.input_login",s=await t.waitForSelector(n);await t.evaluate(()=>new Promise((i,r)=>{const l=document.querySelector(".login__type__container__scan__qrcode");l?(l.onload=()=>i(),l.onerror=r):r(new Error("\u767B\u5F55\u5931\u8D25"))}));const e=R("../cache/login-qr.png"),o=async()=>{await s?.screenshot({path:e,type:"png"});try{return await I(e)}catch{return await _(),o()}},c=await o();a.succeed(A("\u8BF7\u4F7F\u7528\u5FAE\u4FE1\u626B\u63CF\u4E8C\u7EF4\u7801\u767B\u5F55\u5FAE\u4FE1\u516C\u4F17\u5E73\u53F0")),console.log(c),await t.waitForSelector(".weui-desktop-icon.weui-desktop-icon__success.weui-desktop-icon__large",{timeout:0}),a.succeed("\u626B\u7801\u6210\u529F")}async function Z(){try{if(a.start("\u6B63\u5728\u83B7\u53D6\u8D26\u53F7\u5217\u8868..."),await _(2e3),!await t.$("#js_container_box > div.col_side.open.transparent > div > div.menu_box_other > div.menu_box_other_item_wrapper.account_info > div > div.menu_box_account_info > div.menu_box_account_info_item")&&!await t.$(".menu_box_account_info_item")){const e=await t.evaluate(()=>document.querySelector("#js_container_box > div.col_side.open.transparent > div > div.menu_box_other > div.menu_box_other_item_wrapper.account_info > div > div.menu_box_account_info > div.menu_box_account_info_item")?.textContent?.trim()||"\u5F53\u524D\u8D26\u53F7");return a.succeed("\u83B7\u53D6\u8D26\u53F7\u5217\u8868\u5B8C\u6210"),[{name:e,email:"",index:0,display:e}]}const u=await t.evaluate(()=>document.querySelector("#js_container_box > div.col_side.open.transparent > div > div.menu_box_other > div.menu_box_other_item_wrapper.account_info > div > div.menu_box_account_info > div.menu_box_account_info_item")?.textContent?.trim()||"\u5F53\u524D\u8D26\u53F7");let n=await t.evaluate(()=>{const e=document.querySelector("#js_container_box > div.col_side.open.transparent > div > div.menu_box_other > div.menu_box_other_item_wrapper.account_info > div > div.menu_box_account_info > div.menu_box_account_info_item");return e?(e.scrollIntoView({behavior:"smooth",block:"center"}),setTimeout(()=>e.click(),300),!0):!1});if(n||(n=await t.evaluate(()=>{const e=document.querySelector(".menu_box_account_info_item");return e?(e.scrollIntoView({behavior:"smooth",block:"center"}),setTimeout(()=>e.click(),300),!0):!1})),!n)throw new Error("\u65E0\u6CD5\u70B9\u51FB\u5207\u6362\u8D26\u53F7\u6309\u94AE");if(await _(1500),!await t.waitForSelector("#app > div.switch_account_dialog > div > div.account_list",{timeout:1e4}))throw new Error("\u672A\u627E\u5230\u8D26\u53F7\u5217\u8868");const s=await t.evaluate(()=>{const e=document.querySelectorAll("#app > div.switch_account_dialog > div > div.account_list > div.account_item");return Array.from(e).map((o,c)=>{const i=o.querySelector(".account_name"),r=o.querySelector(".account_email"),l=i?.textContent?.trim()||`\u8D26\u53F7${c+1}`,p=r?.textContent?.trim()||"";return{name:l,email:p,index:c,display:p?`${l} (${p})`:l}})},u);return await t.evaluate(()=>{const e=document.querySelector("#app > div.switch_account_dialog .weui-desktop-btn_default");if(e)e.click();else{const o=document.querySelector("#app > div.switch_account_dialog");o&&o.click()}}),await t.waitForSelector("#app > div.switch_account_dialog",{hidden:!0,timeout:5e3}).catch(()=>t.keyboard.press("Escape")),a.succeed("\u83B7\u53D6\u8D26\u53F7\u5217\u8868\u5B8C\u6210"),s}catch(u){throw a.fail(`\u83B7\u53D6\u8D26\u53F7\u5217\u8868\u5931\u8D25: ${u?.message}`),u}}async function uu(u){try{a.start("\u6B63\u5728\u5207\u6362\u8D26\u53F7...");let n=await t.evaluate(()=>{const e=document.querySelector("#js_container_box > div.col_side.open.transparent > div > div.menu_box_other > div.menu_box_other_item_wrapper.account_info > div > div.menu_box_account_info > div.menu_box_account_info_item");return e?(e.scrollIntoView({behavior:"smooth",block:"center"}),setTimeout(()=>e.click(),300),!0):!1});if(n||(n=await t.evaluate(()=>{const e=document.querySelector(".menu_box_account_info_item");return e?(e.scrollIntoView({behavior:"smooth",block:"center"}),setTimeout(()=>e.click(),300),!0):!1})),!n)throw new Error("\u65E0\u6CD5\u70B9\u51FB\u5207\u6362\u8D26\u53F7\u6309\u94AE");if(await _(1500),!await t.waitForSelector("#app > div.switch_account_dialog > div > div.account_list",{timeout:1e4}))throw new Error("\u672A\u627E\u5230\u8D26\u53F7\u5217\u8868");await _(1e3),await t.evaluate(e=>{const o=document.querySelectorAll("#app > div.switch_account_dialog > div > div.account_list > div.account_item")[e];o&&(o.scrollIntoView({behavior:"smooth",block:"center"}),setTimeout(()=>{o.click()},300))},u.index);try{await t.waitForSelector("#app > div.switch_account_dialog",{hidden:!0,timeout:15e3})}catch{await t.waitForFunction(()=>{const e=document.querySelector("#app > div.switch_account_dialog"),o=document.querySelectorAll(".loading"),c=Array.from(o).some(i=>i.style.display!=="none"&&i.offsetParent!==null);return!e||!c},{timeout:3e4})}await _(3e3);const s=u.display;return a.succeed(`\u8D26\u53F7\u5207\u6362\u6210\u529F: ${w(s)}`),!0}catch(n){return a.fail(`\u5207\u6362\u8D26\u53F7\u5931\u8D25: ${n?.message}`),!1}}async function b(){if(a.start("\u6B63\u5728\u8DF3\u8F6C\u5230\u7248\u672C\u7BA1\u7406\u9875\u9762..."),!await t.waitForSelector(".menu_item .tab-bar__wrap.tab-bar__wrap--submenu",{timeout:0}))throw a.fail("\u672A\u627E\u5230\u7248\u672C\u7BA1\u7406"),new Error("\u672A\u627E\u5230\u7248\u672C\u7BA1\u7406");a.start("\u6B63\u5728\u8DF3\u8F6C\u5230\u7248\u672C\u7BA1\u7406\u9875\u9762...");const u=new URL(t.url()).searchParams.get("token");await t.goto(`https://mp.weixin.qq.com/wxamp/wacodepage/getcodepage?token=${u}&lang=zh_CN`)}async function P(){const u=".mod_default_box.code_version_dev .code_version_log .weui-desktop-btn.weui-desktop-btn_primary";let n=await t.waitForSelector(u);const s=await t.$$(".mod_default_box.code_version_dev .code_version_log");if(s.length>0){for await(const e of s)if(await e.evaluate(o=>o.querySelector(".js_show_exp_version")!==null)){n=await e.$(".weui-desktop-btn.weui-desktop-btn_primary");const o=await e.evaluate(c=>{const i=c.querySelectorAll(".simple_preview_item");let r="";for(const l of i){const p=l.querySelector(".simple_preview_label");if(p&&p.textContent?.includes("\u7248\u672C\u53F7")){const y=l.querySelector(".simple_preview_value");y&&(r=(y.textContent||"").trim().split(`
`)[0].trim());break}}return r});o&&a.info(`\u9009\u62E9\u4F53\u9A8C\u7248\u8FDB\u884C\u63D0\u5BA1: ${w(o)} (${f("\u4F53\u9A8C\u7248")})`)}}return n}async function eu(){let u=await P();if(!u)throw a.fail("\u672A\u627E\u5230\u63D0\u4EA4\u5BA1\u6838\u6309\u94AE"),new Error("\u672A\u627E\u5230\u63D0\u4EA4\u5BA1\u6838\u6309\u94AE");const n=await u.evaluate(r=>r.classList.contains("weui-desktop-btn_disabled")),s=await t.$(".mod_default_bd.default_box.test_version");if(s&&!await s.evaluate(r=>r.textContent?.includes("\u4F60\u6682\u65E0\u63D0\u4EA4\u5BA1\u6838\u7684\u7248\u672C\u6216\u8005\u7248\u672C\u5DF2\u53D1\u5E03\u4E0A\u7EBF"))&&!m.forceSubmit)if(a.stop(),(await v([{type:"confirm",name:"forceSubmit",message:"\u5F53\u524D\u5DF2\u5B58\u5728\u7248\u672C\uFF0C\u662F\u5426\u7EE7\u7EED\u5F3A\u5236\u63D0\u4EA4\u5BA1\u6838\uFF1F",initial:!1}],{onCancel:E})).forceSubmit)a.start();else throw a.info("\u7528\u6237\u53D6\u6D88\u63D0\u5BA1\u64CD\u4F5C"),new Error("\u7528\u6237\u53D6\u6D88\u63D0\u5BA1");n&&(await t.evaluate(()=>{document.querySelector(".mod_default_bd.default_box.test_version .weui-desktop-dropdown__list-ele__text").click()}),await _(),await(await t.$("body > div:nth-child(9) > div.weui-desktop-dialog__wrp.self-weui-modal > div > div.weui-desktop-dialog__ft > div > div:nth-child(2) > button"))?.click(),await _(2e3),u=await P()),await u.click(),a.start("\u6B63\u5728\u63D0\u4EA4\u5BA1\u6838\u4E2D...");const e=await t.waitForSelector(".weui-desktop-icon-checkbox",{visible:!0}),o=await t.waitForSelector(".code_submit_dialog .weui-desktop-btn.weui-desktop-btn_primary",{visible:!0});if(!e||!o)throw new Error("\u672A\u627E\u9605\u8BFB\u5E76\u4E86\u89E3\u5E73\u53F0\u5BA1\u6838\u89C4\u5219");await e.click(),await o.click(),await t.evaluate(()=>{const r=[...document.querySelectorAll(".weui-desktop-dialog")].reverse();for(const l of r)if(l.querySelector("h4")?.textContent==="\u4EE3\u7801\u5BA1\u6838\u8FDB\u884C\u5B89\u5168\u6D4B\u8BD5\u63D0\u9192"){l.querySelector(".weui-desktop-btn_primary")?.click();break}}),await _(1e3),await t.close(),await _(1e3);const c=await B.pages();let i=!1;for(const r of c)if(r.url().includes("wxamp/wadevelopcode/get_class")){t=r,i=!0;break}if(t.setViewport(S),!i)throw new Error("\u83B7\u53D6\u63D0\u4EA4\u5BA1\u6838\u9875\u9762\u5931\u8D25")}async function tu(){const u=await t.waitForSelector(".btn_primary");if(await _(200),!u)throw new Error("\u83B7\u53D6\u63D0\u4EA4\u5BA1\u6838\u5931\u8D25");if(await u.click(),await t.waitForSelector(".msg_icon_wrp .icon_msg.success"),(await t.evaluate(()=>document.querySelector(".msg_content")?.innerHTML))?.includes("\u5DF2\u63D0\u4EA4\u5BA1\u6838"))a.succeed("\u63D0\u4EA4\u5BA1\u6838\u6210\u529F");else throw new Error("\u63D0\u4EA4\u5BA1\u6838\u5931\u8D25")}async function ou(){try{a.start("\u6B63\u5728\u68C0\u67E5\u5BA1\u6838\u7248\u672C\u72B6\u6001..."),await _(5e3);const u=await t.$("#js_container_box > div.col_main > div > div:nth-child(4) > div.main_bd > span > div.code_mod.mod_default_box.code_version_test > div.mod_default_bd.default_box.test_version > div > div > div.code_version_log_hd > div > p.simple_preview_value");if(!u)return a.info("\u5F53\u524D\u6CA1\u6709\u5BA1\u6838\u7248\u672C"),null;const n=await t.evaluate(o=>o?.textContent?.trim()||"",u),s=await t.$("#js_container_box > div.col_main > div > div:nth-child(4) > div.main_bd > span > div.code_mod.mod_default_box.code_version_test > div.mod_default_bd.default_box.test_version > div > div > div.code_version_log_hd > div > p:nth-child(3) > span.status_tag");let e="\u672A\u77E5\u72B6\u6001";return s&&(e=await t.evaluate(o=>o?.textContent?.trim()||"\u672A\u77E5\u72B6\u6001",s)),a.succeed("\u5BA1\u6838\u7248\u672C\u68C0\u67E5\u5B8C\u6210"),{version:n,status:e}}catch(u){return a.fail(`\u68C0\u67E5\u5BA1\u6838\u7248\u672C\u72B6\u6001\u5931\u8D25: ${u?.message}`),null}}async function iu(){const u=await t.waitForSelector("#js_container_box > div.col_main > div > div:nth-child(4) > div.main_bd > span > div.code_mod.mod_default_box.code_version_test > div.mod_default_bd.default_box.test_version > div > div > div.code_version_log_hd > div > p:nth-child(3) > span"),n=await t.evaluate(o=>o?.innerHTML,u);if(n!=="\u5BA1\u6838\u901A\u8FC7\u5F85\u53D1\u5E03")throw a.fail(n),new Error(n);await(await t.waitForSelector("#js_container_box > div.col_main > div > div:nth-child(4) > div.main_bd > span > div.code_mod.mod_default_box.code_version_test > div.mod_default_bd.default_box.test_version > div > div > div.code_version_log_ft > div > div.weui-desktop-popover__wrp > span > div > button"))?.click(),await(await t.waitForSelector("#js_container_box > div.col_main > div > div:nth-child(4) > div:nth-child(9) > div.weui-desktop-dialog__wrp.self-weui-modal > div > div.weui-desktop-dialog__ft > div > div:nth-child(1) > button"))?.click();const s=R("../cache/release.png"),e=await t.waitForSelector("#js_container_box > div.col_main > div > div:nth-child(4) > div.qrcheck_dialog_simple > div.weui-desktop-dialog__wrp.self-weui-modal > div > div.weui-desktop-dialog__bd > div > div > div > div.weui-desktop-qrcheck__qrcode-area > div > img");await t.evaluate(o=>new Promise((c,i)=>{o?(o.onload=c,o.onerror=i):i(new Error("\u83B7\u53D6\u53D1\u5E03\u4E8C\u7EF4\u7801\u5931\u8D25"))}),e),await e?.screenshot({path:s,type:"png"}),a.clear(),console.clear(),a.succeed(A("\u8BF7\u4F7F\u7528\u5FAE\u4FE1\u626B\u63CF\u4E8C\u7EF4\u7801\u53D1\u5E03")),console.log(await I(s)),await t.waitForSelector("#js_container_box > div.col_main > div > div:nth-child(4) > div.main_bd > span > div.code_mod.mod_default_box.code_version_test > div.mod_default_bd.default_box.test_version > div > div > p")&&a.succeed("\u53D1\u5E03\u6210\u529F")}async function au(u,n){try{if(a.info(`\u5F00\u59CB\u5904\u7406\u8D26\u53F7: ${w(u.display)}`),await b(),u.index>0){if(!await uu(u))return a.warn(`\u5207\u6362\u5230\u8D26\u53F7 ${u.display} \u5931\u8D25\uFF0C\u8DF3\u8FC7\u8BE5\u8D26\u53F7`),!1;await b()}if(n===d.REVIEW){await eu(),await tu(),a.succeed(`\u2705 \u8D26\u53F7 ${w(u.display)} \u63D0\u5BA1\u64CD\u4F5C\u5B8C\u6210`);const e=new URL(t.url()).searchParams.get("token");return await t.goto(`https://mp.weixin.qq.com/wxamp/wacodepage/getcodepage?token=${e}&lang=zh_CN`),!0}else if(n===d.RELEASE){await iu(),a.succeed(`\u2705 \u8D26\u53F7 ${w(u.display)} \u53D1\u5E03\u64CD\u4F5C\u5B8C\u6210`);const e=new URL(t.url()).searchParams.get("token");return await t.goto(`https://mp.weixin.qq.com/wxamp/wacodepage/getcodepage?token=${e}&lang=zh_CN`),!0}else if(n===d.INSPECT){const e=await ou();a.succeed(`\u2705 \u8D26\u53F7 ${w(u.display)} \u81EA\u68C0\u64CD\u4F5C\u5B8C\u6210`);const o=new URL(t.url()).searchParams.get("token");return await t.goto(`https://mp.weixin.qq.com/wxamp/wacodepage/getcodepage?token=${o}&lang=zh_CN`),e}const s=new URL(t.url()).searchParams.get("token");return await t.goto(`https://mp.weixin.qq.com/wxamp/wacodepage/getcodepage?token=${s}&lang=zh_CN`),!0}catch(s){const e=s?.message||"\u672A\u77E5\u9519\u8BEF";return e.includes("\u7528\u6237\u53D6\u6D88")?(a.warn(`\u8D26\u53F7 ${u.display} \u64CD\u4F5C\u88AB\u7528\u6237\u53D6\u6D88`),!1):(a.fail(`\u8D26\u53F7 ${u.display} \u64CD\u4F5C\u5931\u8D25: ${e}`),!1)}}async function nu(u){m=u;try{await K(),await b();const n=await Z();n.length===0&&(a.fail("\u672A\u627E\u5230\u4EFB\u4F55\u53EF\u7528\u8D26\u53F7"),F.exit(1)),a.stop();const s=m.action===d.REVIEW?"\u63D0\u5BA1":m.action===d.RELEASE?"\u53D1\u5E03":"\u81EA\u68C0",e=await v([{type:"multiselect",name:"accounts",message:`\u8BF7\u9009\u62E9\u8981\u8FDB\u884C${s}\u64CD\u4F5C\u7684\u8D26\u53F7 (\u4F7F\u7528\u7A7A\u683C\u952E\u9009\u62E9/\u53D6\u6D88\u9009\u62E9\uFF0C\u56DE\u8F66\u786E\u8BA4):`,choices:n.map(i=>({title:f(i.display),description:i.email?`\u90AE\u7BB1: ${i.email}`:"",value:i.index})),min:1,hint:"- \u4F7F\u7528\u65B9\u5411\u952E\u79FB\u52A8, \u7A7A\u683C\u952E\u9009\u62E9/\u53D6\u6D88\u9009\u62E9, \u56DE\u8F66\u786E\u8BA4"}],{onCancel:E});(!e.accounts||e.accounts.length===0)&&(a.info("\u672A\u9009\u62E9\u4EFB\u4F55\u8D26\u53F7\uFF0C\u7A0B\u5E8F\u9000\u51FA"),F.exit(0));const o=n.filter(i=>e.accounts.includes(i.index));(await v([{type:"confirm",name:"confirm",message:`\u786E\u8BA4\u5BF9\u4EE5\u4E0B ${o.length} \u4E2A\u8D26\u53F7\u6267\u884C${s}\u64CD\u4F5C\u5417\uFF1F
${o.map(i=>` \u2022 ${i.display}`).join(`
`)}`,initial:!0}],{onCancel:E})).confirm||(a.info("\u64CD\u4F5C\u5DF2\u53D6\u6D88\uFF0C\u7A0B\u5E8F\u9000\u51FA"),F.exit(0)),a.info(`\u5F00\u59CB\u6279\u91CF${s}\u64CD\u4F5C\uFF0C\u5171 ${o.length} \u4E2A\u8D26\u53F7`);const c={success:[],failed:[],skipped:[],inspectResults:[]};for(let i=0;i<o.length;i++){const r=o[i];a.info(`\u6B63\u5728\u5904\u7406\u7B2C ${i+1}/${o.length} \u4E2A\u8D26\u53F7...`);try{const l=await au(r,m.action);m.action===d.INSPECT?l&&typeof l=="object"&&"version"in l?(c.inspectResults.push({account:r,version:l.version,status:l.status}),c.success.push(r)):l===null?(c.inspectResults.push({account:r,version:"\u65E0",status:"\u65E0\u5BA1\u6838\u7248\u672C"}),c.success.push(r)):c.failed.push(r):l===!0?c.success.push(r):c.failed.push(r)}catch(l){const p=l?.message||"\u672A\u77E5\u9519\u8BEF";if(p.includes("\u7528\u6237\u53D6\u6D88"))if(a.stop(),(await v([{type:"confirm",name:"continue",message:`\u8D26\u53F7 ${r.display} \u64CD\u4F5C\u88AB\u53D6\u6D88\uFF0C\u662F\u5426\u7EE7\u7EED\u5904\u7406\u5269\u4F59\u7684 ${o.length-i-1} \u4E2A\u8D26\u53F7\uFF1F`,initial:!0}],{onCancel:E})).continue){c.failed.push(r);continue}else{c.skipped.push(...o.slice(i));break}else if(a.fail(`\u8D26\u53F7 ${r.display} \u5904\u7406\u5931\u8D25: ${p}`),c.failed.push(r),i<o.length-1&&(a.stop(),!(await v([{type:"confirm",name:"continue",message:`\u662F\u5426\u7EE7\u7EED\u5904\u7406\u5269\u4F59\u7684 ${o.length-i-1} \u4E2A\u8D26\u53F7\uFF1F`,initial:!0}],{onCancel:E})).continue)){c.skipped.push(...o.slice(i+1));break}}}a.stop(),console.log(`
${"=".repeat(50)}`),console.log(`\u{1F4CA} \u6279\u91CF${s}\u64CD\u4F5C\u5B8C\u6210\uFF01`),console.log("=".repeat(50)),m.action===d.INSPECT&&c.inspectResults.length>0?(console.log(`
\u{1F50D} \u81EA\u68C0\u7ED3\u679C (${c.inspectResults.length}\u4E2A):`),c.inspectResults.forEach(i=>{const r=i.status==="\u5BA1\u6838\u901A\u8FC7\u5F85\u53D1\u5E03"?w:i.status==="\u5BA1\u6838\u4E2D"?A:i.status==="\u5BA1\u6838\u4E0D\u901A\u8FC7"?C:f;console.log(` \u2022 ${f(i.account.display)}`),console.log(` \u7248\u672C\u53F7: ${i.version}`),console.log(` \u72B6\u6001: ${r(i.status)}`),console.log("")})):(c.success.length>0&&(console.log(`
\u2705 \u6210\u529F (${c.success.length}\u4E2A):`),c.success.forEach(i=>{console.log(` \u2022 ${w(i.display)}`)})),c.failed.length>0&&(console.log(`
\u274C \u5931\u8D25 (${c.failed.length}\u4E2A):`),c.failed.forEach(i=>{console.log(` \u2022 ${C(i.display)}`)})),c.skipped.length>0&&(console.log(`
\u23ED\uFE0F \u8DF3\u8FC7 (${c.skipped.length}\u4E2A):`),c.skipped.forEach(i=>{console.log(` \u2022 ${A(i.display)}`)}))),console.log(`
${"=".repeat(50)}`),console.log("\u611F\u8C22\u4F7F\u7528\uFF01"),F.exit(0)}catch(n){if(q){console.error(n);return}F.exit(1)}}async function cu(u){const n=await v([{type:T(u.platform)?"select":null,message:x("\u8BF7\u9009\u62E9\u53D1\u5E03\u5E73\u53F0"),name:"platform",choices:[{title:w("\u5FAE\u4FE1"),description:"\u767B\u5F55\u5FAE\u4FE1\u516C\u4F17\u5E73\u53F0",value:h.WEIXIN}],initial:0},{type:T(u.action)?"select":null,message:x("\u60A8\u662F\u63D0\u4EA4\u5BA1\u6838\u8FD8\u662F\u53D1\u5E03\uFF1F"),name:"action",choices:[{title:"\u63D0\u5BA1",description:"\u63D0\u5BA1\u5C0F\u7A0B\u5E8F",value:d.REVIEW},{title:C("\u53D1\u5E03"),description:"\u53D1\u5E03\u5C0F\u7A0B\u5E8F",value:d.RELEASE},{title:f("\u81EA\u68C0"),description:"\u68C0\u67E5\u5BA1\u6838\u7248\u672C\u72B6\u6001",value:d.INSPECT}],initial:0}],{onCancel:E}),s={...u,...n};s.platform===h.WEIXIN?await nu(s):console.log(j("\u6B63\u5728\u5F00\u53D1\u4E2D..."))}g.name(z).version(X).description(M).addOption(new D("-p, --platform <platform>","\u64CD\u4F5C\u7684\u5E73\u53F0").default(h.WEIXIN).choices(Object.values(h))).addOption(new D("-a, --action <action>","\u63D0\u5BA1\u3001\u53D1\u5E03\u6216\u81EA\u68C0").choices(Object.values(d))).addOption(new D("-f, --force-submit","\u5982\u679C\u5B58\u5728\u3010\u5BA1\u6838\u4E2D\u3011\u6216\u3010\u5BA1\u6838\u901A\u8FC7\u3011\u7684\u7248\u672C\uFF0C\u8FD9\u5C06\u5F3A\u5236\u63D0\u4EA4\u65B0\u7684\u5BA1\u6838\u7248\u672C")).addOption(new D("-hl, --headless [headless]","\u6D4F\u89C8\u5668\u65E0\u5934\u6A21\u5F0F").default("new").choices(["false","new"])),g.parse();const su=J(g.opts());cu(su).catch(u=>{console.error(u)});