shark
Version:
A CLI to interact with DigitalOcean
92 lines (85 loc) • 1.95 kB
JavaScript
const {prompt} = require('enquirer');
// Check https://github.com/enquirer/enquirer/issues/13#issuecomment-447602031
prompt.on('cancel', () => process.exit());
/**
* @param {Array} sizes - Available droplet sizes
* @returns {Promise} prompt - Returns a prompt
*/
const askDropletSize = sizes =>
prompt({
type: 'select',
name: 'dropletSize',
message: 'Select droplet size',
choices: sizes
});
const askDropletImage = images => {
return prompt({
type: 'autocomplete',
name: 'dropletImage',
message: 'Select droplet image',
choices: images || [
'coreos-beta',
'freebsd-10-3-x64-zfs',
'freebsd-10-3-x64',
'freebsd-11-1-x64',
'freebsd-11-1-x64-zfs',
'freebsd-10-4-x64-zfs',
'freebsd-10-4-x64',
'fedora-27-x64',
'centos-6-x32',
'debian-8-x64',
'debian-8-x32',
'fedora-28-x64',
'fedora-28-x64-atomic',
'centos-7-x64',
'centos-6-x64',
'freebsd-11-2-x64-zfs',
'freebsd-11-2-x64',
'ubuntu-18-10-x64',
'rancheros',
'ubuntu-14-04-x32',
'ubuntu-14-04-x64',
'ubuntu-18-04-x64',
'coreos-alpha',
'coreos-stable',
'ubuntu-16-04-x32',
'ubuntu-16-04-x64',
'debian-9-x64'
]
});
};
const askSSHKey = keys => {
return prompt({
type: 'multiselect',
name: 'sshKey',
message: 'Select the SSH keys you want to embed',
choices: keys
});
};
const askAdditionalOptions = () => {
return prompt({
type: 'multiselect',
name: 'additionalOptions',
message: 'Select the features you want to enable',
choices: [
{
name: 'ipv6',
message: 'IPv6'
},
{
name: 'monitoring',
message: 'Monitoring'
},
{
name: 'backups',
message: 'Droplet Backups'
}
]
});
};
module.exports = {
askSSHKey,
askDropletSize,
askDropletImage,
askAdditionalOptions
};