UNPKG

@appzung/cli

Version:

AppZung CLI

13 lines (10 loc) 4.33 kB
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4c6bd376-ef36-55c2-8138-bd2ea44ffaa5")}catch(e){}}(); import{d as c,m as $,o as h,p as f,u as w,v as m,w as E}from"./chunk-XJDCHVMB.js";import{confirm as V,intro as _,isCancel as j,log as I,outro as L,spinner as T,text as O}from"@clack/prompts";import{Command as z,Flags as u}from"@oclif/core";import r from"picocolors";import{isCancel as x,outro as D}from"@clack/prompts";import{log as v,select as Q,spinner as S}from"@clack/prompts";import N from"picocolors";var b=f`query ListMyApplications($input: ProjectIdentifierInput!, $limit: PositiveInt!, $offset: Int!) { project(input: $input) { id applications(limit: $limit, offset: $offset) { count list { id name slug platform } } } }`;async function C(i,e,{offset:t=0,allApplications:a=[]}={}){let l=S();l.start("Loading applications");let{data:g}=await h.query(b,{input:{bySlug:{organizationSlug:i,projectSlug:e}},limit:10,offset:t}),{list:s,count:o}=g.project.applications;if(l.stop(t?"":`Found ${o} application(s)`),o===0)return;if(o===1&&s[0])return v.message(N.dim(s[0].slug)),s[0].slug;a.push(...s);let p=a.map(y=>({value:y.slug,label:`${y.name} ${N.dim(`(${y.slug})`)}`}));o>(t+1)*10&&p.push({value:"load-more",label:"Load more"});let d=p.at(t),A=await Q({message:"Select an application",options:p,initialValue:d?.value});return A==="load-more"?C(i,e,{allApplications:a,offset:t+10}):A}async function M(i={}){let{organizationSlug:e,projectSlug:t}=await w({org:i.org,project:i.project}),a=i.app??await C(e,t);if(x(a)||!a)throw D("No application selected"),new c;return{applicationSlug:a,projectSlug:t,organizationSlug:e}}function R(i){return i.normalize("NFD").replaceAll(/[\u0300-\u036F]/g,"").replaceAll(/\s+/g,"").replaceAll(/[^\u0000-\u007F]/g,"")}var P=f`mutation CreateReleaseChannel($input: CreateReleaseChannelInput!) { createReleaseChannel(input: $input) { releaseChannel { id publicId } } }`;var q=class i extends z{static hiddenAliases=["release-channel:create","releases-channels:create"];static description="Create a new release channel";static flags={org:u.string({description:"Organization slug",required:!1,char:"o",helpGroup:m.REQUIRED_NON_INTERACTIVE}),project:u.string({description:"Project slug",required:!1,char:"p",helpGroup:m.REQUIRED_NON_INTERACTIVE}),app:u.string({description:"Application slug",required:!1,char:"a",helpGroup:m.REQUIRED_NON_INTERACTIVE}),name:u.string({description:"Release channel name",required:!1,char:"n",helpGroup:m.REQUIRED_NON_INTERACTIVE}),yes:u.boolean({description:"Skip confirmation prompt",default:!1,char:"y"})};async getName(e){let{name:t}=e;if(t)return t;let a=await O({message:"Release channel name",placeholder:"Examples: Main, Beta, Feat-939",validate(n){if(!n)return"Release channel name is required";if(!(n.length>=3))return"Release channel name must be at least 3 characters"}});if(j(a))throw new c;return a}async run(){_(r.bold("\u{1F680} Create release channel"));try{let{flags:e}=await this.parse(i),{organizationSlug:t,projectSlug:a,applicationSlug:n}=await M({org:e.org,project:e.project,app:e.app}),l=await this.getName(e);if(!e.yes&&E){let d=await V({message:`Create release channel ${r.bold(l)} in application ${r.dim(n)}?`});if(j(d)||!d)throw new c}let g=T();g.start("Creating release channel");let{data:s}=await h.mutate(P,{input:{fields:{name:l},application:{bySlug:{organizationSlug:t,projectSlug:a,applicationSlug:n}}}});g.stop("Release channel created"),I.message(` Important IDs for your new release channel:`);let{releaseChannel:o}=s.createReleaseChannel,p=`rc_${R(n).replace(/^a_/,"")}-${R(l)}/${o.id}`;I.message(` 1. ${r.bold("ID")}: ${r.cyan(p)} ${r.dim("Use this with the --release-channel flag when deploying in CI:")} ${r.dim(`appzung releases deploy-react-native --release-channel "${p}"`)}`),I.message(` 2. ${r.bold("Public ID")}: ${r.cyan(o.publicId)} ${r.dim("Use this in your app configuration (CodePushReleaseChannelPublicId)")}`),L("Release channel created successfully! \u{1F389}")}catch(e){$(e)}}};export{b as a,M as b,q as c}; //# sourceMappingURL=chunk-SQFQUYOC.js.map //# debugId=4c6bd376-ef36-55c2-8138-bd2ea44ffaa5