UNPKG

mp-ci-helper

Version:

微信小程序 CI 工具。

2 lines 3.21 kB
#! /usr/bin/env node 'use strict';var u=require('fs'),y=require('fs/promises'),c=require('path'),b=require('@bit2byte/nano-json'),t=require('@clack/prompts'),bundleRequire=require('bundle-require'),S=require('joycon'),n=require('kleur'),miniprogramCi=require('miniprogram-ci'),f=require('semver');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var u__default=/*#__PURE__*/_interopDefault(u);var y__default=/*#__PURE__*/_interopDefault(y);var c__default=/*#__PURE__*/_interopDefault(c);var b__default=/*#__PURE__*/_interopDefault(b);var t__default=/*#__PURE__*/_interopDefault(t);var S__default=/*#__PURE__*/_interopDefault(S);var n__default=/*#__PURE__*/_interopDefault(n);var f__default=/*#__PURE__*/_interopDefault(f);function D(e){t__default.default.cancel(e),process.exit(0);}var J=["mp-ci-helper.config.ts","mp-ci-helper.config.mts"];async function M(){let e=process.cwd(),h=await new S__default.default().resolve({files:J,cwd:e,stopDir:c__default.default.parse(e).root}),{mod:v}=await bundleRequire.bundleRequire({filepath:h??"",preserveTemporaryFile:false}),o=v.default;o.project.privateKeyPath||D("\u672A\u914D\u7F6E privateKeyPath");let j=c__default.default.join(e,o.project.privateKeyPath??""),w=new miniprogramCi.Project({appid:o.project.appid,type:o.project.type,projectPath:o.project.projectPath,privateKeyPath:j,ignores:o.project.ignores??["node_modules/**/*"]}),i=new b__default.default(c__default.default.join(e,"./package.json"));await i.r();let a=i.d?.version??"0.0.0",d=i.d?.description??"",p=await t__default.default.group({version:()=>t__default.default.text({message:n__default.default.cyan("\u8F93\u5165\u672C\u6B21\u63D0\u4EA4\u7248\u672C\u53F7"),placeholder:a,initialValue:a,validate(s){if(f__default.default.valid(s)){if(f__default.default.valid(a)&&f__default.default.lte(s,a))return "\u7248\u672C\u53F7\u5FC5\u987B\u5927\u4E8E\u4E0A\u6B21\u63D0\u4EA4\u7248\u672C\u53F7"}else return "\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u7248\u672C\u53F7"}}),desc:()=>t__default.default.text({message:n__default.default.cyan("\u8F93\u5165\u63D0\u4EA4\u5907\u6CE8"),placeholder:d,initialValue:d})},{onCancel:()=>{t__default.default.cancel("\u2716 \u5DF2\u53D6\u6D88"),process.exit(0);}});t__default.default.log.info(n__default.default.green("\u4EE3\u7801\u5F00\u59CB\u4E0A\u4F20..."));let g=async s=>{let m=await y__default.default.readdir(s,{withFileTypes:true});return new Set(m.filter(r=>r.isDirectory()).map(r=>r.name))},P=await g(e),C=await miniprogramCi.upload({project:w,version:p.version,desc:p.desc,setting:{...o.upload?.setting},robot:o.upload?.robot,threads:o.upload?.threads,useCOS:o.upload?.useCOS,onProgressUpdate:o.upload?.onProgressUpdate});i.d&&(i.d.version=p.version),await i.w(),console.log(C),t__default.default.log.success(n__default.default.green("\u4EE3\u7801\u4E0A\u4F20\u5B8C\u6210 \u{1F389}"));try{let s=await g(e),m=/^[0-9a-f]{32}$/;for(let r of s)if(!P.has(r)&&m.test(r)){let l=c__default.default.join(e,r);u__default.default.existsSync(l)&&u__default.default.statSync(l).isDirectory()&&await y__default.default.rm(l,{recursive:!0,force:!0});}}catch{}}M().catch(e=>{t__default.default.log.error(n__default.default.red(e.message)),process.exit(1);});