UNPKG

savas-cli

Version:

A cli tool to manage releases through the terminal

84 lines (78 loc) 2.5 kB
const path = require('path') const fs = require('fs-extra') const yaml = require('yaml') const Config = require('../components/config') const inquirer = require('inquirer') const axios = require('axios') const iterate = require('../util/iterate') module.exports = () => { let config = new Config() iterate([ // Check if savas is initialized (resolve, reject, data) => { if (config.isTouched()) { resolve() } else { reject('savas is not yet initialized') } }, // Ask for api token (resolve, reject, data) => { inquirer .prompt([ { type: 'input', name: 'api_token', message: 'Enter api token' } ]) .then(({ api_token}) => { data.api_token = api_token resolve() }) .catch(reject) }, // Validate entered api token (resolve, reject, data) => { console.log('checking token...') let url = config.data.remote + 'api/v1/auth' axios.get(url, { params: { api_token: data.api_token } }) .then(response => response.data) .then(response => { if (response.success) { data.apps = response.apps resolve() } else { reject('invalid access token') } }) }, // Ask for application to use (resolve, reject, data) => { inquirer.prompt([ { type: 'list', name: 'appID', message: 'Select your app to use', choices: data.apps.map(app => ({ name: app.label, value: app.id })) } ]) .then(({ appID }) => { data.appID = appID resolve() }) }, // Save data (resolve, reject, { api_token, appID }) => { config.data.auth = { token: api_token, appID } config.write() console.log('authentication successful') } ]) .catch(error => { console.log(error) }) }