import * as program from 'commander'
import * as prompt from 'prompt'
-const Table = require('cli-table')
-import { getSettings, writeSettings, netrc } from './cli'
+import { getSettings, writeSettings, getNetrc } from './cli'
import { isHostValid } from '../helpers/custom-validators/servers'
import { isUserUsernameValid } from '../helpers/custom-validators/users'
+const Table = require('cli-table')
+
async function delInstance (url: string) {
- const settings = await getSettings()
+ const [ settings, netrc ] = await Promise.all([ getSettings(), getNetrc() ])
+
+ const index = settings.remotes.indexOf(url)
+ settings.remotes.splice(index)
+
+ if (settings.default === index) settings.default = -1
- settings.remotes.splice(settings.remotes.indexOf(url))
await writeSettings(settings)
delete netrc.machines[url]
+
await netrc.save()
}
-async function setInstance (url: string, username: string, password: string) {
- const settings = await getSettings()
+async function setInstance (url: string, username: string, password: string, isDefault: boolean) {
+ const [ settings, netrc ] = await Promise.all([ getSettings(), getNetrc() ])
+
if (settings.remotes.indexOf(url) === -1) {
settings.remotes.push(url)
}
+
+ if (isDefault || settings.remotes.length === 1) {
+ settings.default = settings.remotes.length - 1
+ }
+
await writeSettings(settings)
netrc.machines[url] = { login: username, password }
}
}
}, async (_, result) => {
- await setInstance(result.url, result.username, result.password)
+ await setInstance(result.url, result.username, result.password, program['default'])
process.exit(0)
})
.command('list')
.description('lists registered remote instances')
.action(async () => {
- const settings = await getSettings()
+ const [ settings, netrc ] = await Promise.all([ getSettings(), getNetrc() ])
+
const table = new Table({
head: ['instance', 'login'],
colWidths: [30, 30]
})
- netrc.loadSync()
+
settings.remotes.forEach(element => {
+ if (!netrc.machines[element]) return
+
table.push([
element,
netrc.machines[element].login