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