reposier
Version:
Tasty CLI on the outside, simple integration with GitHub's API on the inside.
73 lines (62 loc) • 1.9 kB
JavaScript
require('dotenv').config({ path: __dirname + '/.env' })
// To print NodeJS errors in a more readable format
require('pretty-error').start()
// To check if user is connected to internet
const isOnline = require('is-online')
// For spinners / loaders
const ora = require('ora')
// Configuration Storage
const Configstore = require('configstore')
// Create a Configuration File with Configstore
const conf = new Configstore('reposier')
// Custom Modules
const {
printTitle,
timeout,
createMenu,
displayNoConnection,
displaySetupWalkthrough
} = require('./lib/helpers')
const {
setupMenu,
mainMenu,
setupResponse,
mainResponse
} = require('./lib/menus')
// Overall functionality
const run = () => {
// Determine if User is connected to internet
const connectionSpinner = ora('Testing connection ...').start()
isOnline().then(online => {
// If user is connected to internet
if (online) {
connectionSpinner.succeed('Connected to internet.')
// Print Title Screen
printTitle('reposier')
// Check if this is first time running program
if (conf.get('firstTime') !== false) {
// This is the user's first time
// Walk user through set-up
displaySetupWalkthrough()
// After final statement, prompt user for GitHub username and password
timeout(8000, () => {
createMenu(setupMenu, setupResponse, 'setup')
})
} else {
// Create Main Menu
createMenu(mainMenu, mainResponse, 'main')
}
} else {
// User is not connected to internet
// Launch app with limited capabilities
connectionSpinner.fail('Not connected to internet.')
// Print Title Screen
printTitle('reposier')
// Display message to user telling them to connect to the internet
displayNoConnection()
}
})
}
// Run reposier
run()