jj-cli
Version:
1 lines • 4.35 kB
JavaScript
;const e=require("../../untils/logs"),n=require("../../untils/fs"),a=require("../../untils/parse-config"),t=require("../../untils/format"),o=require("../../untils/common"),s=require(".././upload/common"),{signPlatforms:r}=require("../../constants/platforms"),{runCommand:i,commandExec:l}=require("../../untils/terminal"),p=require("path"),c=require("./../upload/common"),{pgyerUpload:u}=require("./../upload/pgyer"),g="cc08d0408403c04968bcfbf738a7356bf6f4c8be";var d,f,y,k,m;const j=async({platform:n,currentWorkingDir:a,cliBinDir:t,projectname:o,folderpath:s,appcenter:i})=>{d=s||a,f=a,y=o,k=i;const l=n&&n.toLowerCase().trim();var p=r[l];if(!p)return void e.logFatal(`Only support ${Object.keys(r)} now.`);let c=new Map([["ios",async()=>{}],["android",async()=>{await S()}]]);m=p;const u=c.get(p);u&&u()},w=a=>{a||e.logFatal("Missing file");const t=p.resolve(d,...a.split("/"));return n.existsSync(t)||e.logFatal(`Cannot find file: ${a}`),t},h=async a=>{const t=a.unsignedApk;try{const e=await s.findPackageApp(m,f,null);var o=e&&e.fullPath,r=o&&n.existsSync(o)}catch(e){}if(r||(r=(o=p.resolve(f,"app-release-unsigned.apk"))&&n.existsSync(o)),r||(r=(o=p.isAbsolute(t)&&p.resolve(t)||null)&&n.existsSync(o)),!r){o=p.resolve(d,...t.split("/"));r=n.existsSync(o)}r||e.logFatal("Cannot find app-release-unsigned.apk"),a.unsignedApk=o},F=async()=>{const{config:e,configPathDiretory:n}=await a.parseConfig(d);return d=n,await h(e),e},$=async(n,t)=>{try{return await a.askProjects(n,t)}catch(n){e.logFatal("Please write all `project` field as project name")}},b=async(e,a)=>{const o=a&&a.name,s=p.join(e,"../","signedApks");await n.mkdirAsyncRecursive(s);const r=`${o}-signed-${t.formatDate((new Date).getTime(),"yyyy-MM-dd-[hh-mm-ss]")}.apk`;return p.resolve(s,r)},v=e=>{n.existsSync(e)&&n.unlinkSync(e)},C=(e,n)=>{const a=p.join(e,"../",`${n}-unsigned-temp.apk`);return v(a),a};async function S(){await o.isInstalled("apksigner")||e.logFatal("Cannot find `apksigner`"),await o.isInstalled("zipalign")||e.logFatal("Cannot find `zipalign`");const n=await F(),a=n.unsignedApk,t=await $(n,y);e.logFriendly(`Your Project is : ${t.name}`);const s=t.keyStoreFile,r=w(s),i=t.alias||n.defaultAlias;i||e.logFatal("Cannot find alias");const c=t.storepass||t.keypass,g=t.keypass||t.storepass;c&&g||e.logFatal("Cannot find storepass / keypass");const d=await b(r,t),f=C(d,t.name);try{e.blue("................... Zipalign Start ..................."),await l(`zipalign -v -p 4 ${a} ${f}`),e.blue("................... Zipalign End ..................."),e.red("\n...........................................................................................\n"),e.blue("................... Sign Start ..................."),await l(`apksigner sign --ks ${r} --ks-key-alias ${i} --ks-pass pass:${g} --key-pass pass:${c} --verbose --out ${d} ${f}`),v(f),e.blue("................... Sign End ...................\n\n");const s=`\n Your Project name: ${t.name}\n\n Your APK: ${a}\n\n Output: ${d}\n\n `;e.green(s),await o.openUrl(p.join(d,"../"));let y=P(t.pgyer),k=P(t.appcenter);if(y||k||e.logFatal("Cannot find your pgyer or appcenter config"),y&&k){const e=await o.askSelectList(["pgyer","appcenter"],"Website");y="pgyer"===e,k="appcenter"===e}if(k)return void q(d,t.appcenter,m,n.defaultAppcenterToken);y&&await u(m,d,t,n)}catch(n){e.logError(n)}}const P=e=>e&&Object.keys(e).length>0,q=async(a,t,s=m,r="",i=k,l)=>{n.existsSync(a)||e.logFatal(`Cannot find your: ${a}`);const p=(t=t||{})[s]||{},u=Object.keys(p);if(0===u.length)return void e.logFriendly("Cannot find your appcenter config at jj.config.json");const d=i&&p[i];var f;if(d){d.userName&&d.appName&&d.group||e.logFatal("Please check your jj.config.json, Cannot find userName/appName/group"),f={...d,token:d.token||p.token||t.token||r||g,appPath:a,platform:s}}else{const n=u.filter((e=>{const n=p[e];return"object"==typeof n&&Object.keys(n).length>0&&n.userName&&n.appName&&n.group}));0===n.length&&e.logFatal("Please check your jj.config.json, Cannot find userName/appName/group"),e.logFriendly("Upload app to appcenter");var y=await o.askSelectList(n,"Group");const i=p[y];i||e.logFatal("Cannot find your Group info"),f={...i,token:i.token||p.token||t.token||r||g,appPath:a,platform:s}}f.closedfolder=l,c.uploadWithInfo(f)};module.exports={signPlatform:j,uploadToAppcenter:q};