UNPKG

@calljmp/cli

Version:
2 lines (1 loc) 4.46 kB
"use strict";var w=Object.create;var l=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var P=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var O=(r,e)=>{for(var s in e)l(r,s,{get:e[s],enumerable:!0})},u=(r,e,s,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of T(e))!I.call(r,i)&&i!==s&&l(r,i,{get:()=>e[i],enumerable:!(c=C(e,i))||c.enumerable});return r};var f=(r,e,s)=>(s=r!=null?w(P(r)):{},u(e||!r||!r.__esModule?l(s,"default",{value:r,enumerable:!0}):s,r)),U=r=>u(l({},"__esModule",{value:!0}),r);var $={};O($,{default:()=>R});module.exports=U($);var p=require("commander"),a=f(require("../config")),j=require("../env"),o=f(require("../logger")),n=f(require("chalk")),m=require("../project"),h=require("../build"),y=f(require("ora")),b=require("../configure");const E=()=>new p.Command("deploy").description("Deploy the application").addOption(a.ConfigOptions.ProjectDirectory).action(async r=>{const e=await(0,a.default)(r);(!e.projectId||!e.accessToken)&&(o.default.error(n.default.red("Project is not linked. Please run `setup` command first.")),process.exit(1));const s=await(0,j.readVariables)(e.project,"production"),c=Object.entries(s).filter(([t])=>t.toUpperCase().startsWith("SECRET_")).reduce((t,[d,g])=>(t[d.toUpperCase()]=g,t),{}),i=Object.entries(s).filter(([t])=>!t.toUpperCase().startsWith("SECRET_")).reduce((t,[d,g])=>(t[`VARIABLE_${d.toUpperCase()}`]=g,t),{});o.default.info("Secrets:"),Object.keys(c).length>0?Object.entries(c).forEach(([t])=>{o.default.info(` ${n.default.gray(t.replace("SECRET_",""))}: ${n.default.blue("********")}`)}):o.default.info(" No secrets found."),o.default.info("Variables:"),Object.keys(i).length>0?Object.entries(i).forEach(([t,d])=>{o.default.info(` ${n.default.gray(t.replace("VARIABLE_",""))}: ${n.default.blue(d)}`)}):o.default.info(" No variables found.");const k=new m.Project({baseUrl:e.baseUrl,accessToken:e.accessToken}),v=await(async()=>{const t=(0,y.default)("Building service...").start();try{const d=(0,h.build)({entryPoints:[e.entry]});return t.succeed("Build completed"),d}catch(d){t.fail("Build failed"),o.default.error(d),process.exit(1)}finally{t.stop()}})();{const t=(0,y.default)("Deploying service...").start();try{await k.deployService({projectId:e.projectId,script:v,secrets:c,variables:i}),t.succeed("Deployment completed"),o.default.info(`Access your service at: ${n.default.blue(e.baseUrl)}/target/v1/service`)}catch(d){t.fail("Deployment failed"),o.default.error(d),process.exit(1)}finally{t.stop()}}}),D=()=>new p.Command("access").description("Get access token for the service").addOption(a.ConfigOptions.ProjectDirectory).action(async r=>{const e=await(0,a.default)(r);(!e.projectId||!e.accessToken)&&(o.default.error(n.default.red("Project is not linked. Please run `setup` command first.")),process.exit(1));const s=new m.Project({baseUrl:e.baseUrl,accessToken:e.accessToken}),c=(0,y.default)("Accessing service...").start();try{const{accessToken:i}=await s.accessTarget({projectId:e.projectId});c.stop(),o.default.info(n.default.dim(`curl https://api.calljmp.com/target/v1/service --header "X-Calljmp-Platform: ios" --header "Authorization: Bearer ${i}"`))}catch(i){c.fail("Access failed"),o.default.error(i),process.exit(1)}finally{c.stop()}}),x=()=>new p.Command("bindings").description("Synchronize service bindings").addOption(a.ConfigOptions.ProjectDirectory).action(async r=>{const e=await(0,a.default)(r);(!e.projectId||!e.accessToken)&&(o.default.error(n.default.red("Project is not linked. Please run `setup` command first.")),process.exit(1));const s=new m.Project({baseUrl:e.baseUrl,accessToken:e.accessToken});o.default.info(n.default.dim("Synchronizing service bindings..."));try{const c=await s.bindings({projectId:e.projectId});e.bindings=c,await(0,a.writeConfig)(e),await(0,b.configureService)({directory:e.project,entry:e.entry,buckets:e.bindings?.buckets})}catch(c){o.default.error(n.default.red("Failed to synchronize service bindings"),c),process.exit(1)}}),A=()=>new p.Command("generate").description("Generate service code for the project").addOption(a.ConfigOptions.ProjectDirectory).action(async r=>{const e=await(0,a.default)(r);await(0,b.configureService)({directory:e.project,entry:e.entry,buckets:e.bindings?.buckets})}),S=()=>new p.Command("service").description("Deploy and manage a cloud service").addCommand(E()).addCommand(x()).addCommand(D()).addCommand(A());var R=S;