#!/usr/bin/env node (async function () { 'use strict' // @ts-check // @type {Caporal} const caporal = require('caporal') const semver = require('semver') const updateNotifier = require('update-notifier') const AppSettings = require('../lib/app/AppSettings') const UserSettings = require('../lib/user/UserSettings') const DcHttpClient = require('../lib/DcHttpClient') const logger = require('../lib/logger') const utils = require('../lib/utils/utils') // set version (includes version command) const pkg = require('../package.json') // check node version if (!semver.satisfies(process.version, pkg.engines.node)) { console.error(`You have an outdated node version (${process.version}). Please upgrade to the newest version`) process.exit(1) } const notifier = updateNotifier({ pkg, updateCheckInterval: 0, isGlobal: true }) notifier.notify() if (notifier.update) { process.exit(0) } caporal.version(pkg.version) process.env['SDK_BETA'] = process.env['SDK_BETA'] || (Array.isArray(semver.prerelease(pkg.version)) && semver.prerelease(pkg.version).includes('beta')) let appFolder try { // initialize settings object(s) appFolder = await utils.getApplicationFolder() } catch (err) { } finally { const appSettings = new AppSettings(appFolder || '') const userSettings = new UserSettings() const dcHttpClient = new DcHttpClient(userSettings, logger) // load all custom actions const actions = require('../') Object.keys(actions).forEach(a => actions[a].register(caporal, appSettings, userSettings, dcHttpClient)) // activate argument parsing caporal.parse(process.argv) } })()