22const _ = require ( 'lodash' ) ;
33const got = require ( 'got' ) ;
44const chalk = require ( 'chalk' ) ;
5+ const ora = require ( 'ora' ) ;
56
67// our packages
78const { userConfig, isLoggedIn, logout} = require ( '../config' ) ;
@@ -10,18 +11,58 @@ const {userConfig, isLoggedIn, logout} = require('../config');
1011const validTargets = [ 'traefik' , 'server' ] ;
1112
1213exports . command = [ 'update [target]' ] ;
13- exports . describe = 'update given target' ;
14+ exports . describe = 'check for updates or update given target' ;
1415exports . builder = {
1516 target : {
1617 alias : 't' ,
1718 description : `Target for update (${ validTargets . join ( ', ' ) } )` ,
1819 } ,
1920} ;
20- exports . handler = async ( { target} = { target : 'self' } ) => {
21+ exports . handler = async ( { target} ) => {
2122 if ( ! isLoggedIn ( ) ) {
2223 return ;
2324 }
2425
26+ // construct shared request params
27+ const options = {
28+ headers : {
29+ Authorization : `Bearer ${ userConfig . token } ` ,
30+ } ,
31+ json : true ,
32+ } ;
33+
34+ // if no target given - check for update
35+ if ( ! target || ! target . length ) {
36+ // show loader
37+ const spinner = ora ( 'Checking for update...' ) . start ( ) ;
38+
39+ // services request url
40+ const remoteUrl = `${ userConfig . endpoint } /version` ;
41+ // send request
42+ const { body, statusCode} = await got . get ( remoteUrl , options ) ;
43+ if ( statusCode !== 200 || body . error ) {
44+ spinner . fail ( 'Error checking for update' ) ;
45+ console . log ( body . error || 'Oops. Something went wrong! Try again please.' ) ;
46+ return ;
47+ }
48+
49+ if ( body . serverUpdate || body . traefikUpdate ) {
50+ spinner . warn ( 'Updates available!' ) ;
51+ } else {
52+ spinner . succeed ( 'You are up to date!' ) ;
53+ }
54+
55+ console . log ( ) ;
56+ console . log ( chalk . bold ( 'Exoframe Server:' ) ) ;
57+ console . log ( ` current: ${ body . server } ` ) ;
58+ console . log ( ` latest: ${ body . latestServer } ` ) ;
59+ console . log ( ) ;
60+ console . log ( chalk . bold ( 'Traefik:' ) ) ;
61+ console . log ( ` current: ${ body . traefik } ` ) ;
62+ console . log ( ` latest: ${ body . latestTraefik } ` ) ;
63+ return ;
64+ }
65+
2566 if ( ! validTargets . includes ( target ) ) {
2667 console . log (
2768 chalk . red ( 'Error!' ) ,
@@ -35,13 +76,6 @@ exports.handler = async ({target} = {target: 'self'}) => {
3576
3677 // services request url
3778 const remoteUrl = `${ userConfig . endpoint } /update/${ target } ` ;
38- // construct shared request params
39- const options = {
40- headers : {
41- Authorization : `Bearer ${ userConfig . token } ` ,
42- } ,
43- json : true ,
44- } ;
4579 // try sending request
4680 try {
4781 const { body, statusCode} = await got . post ( remoteUrl , options ) ;
0 commit comments