viewar-cli
Advanced tools
Comparing version 0.1.3 to 0.1.4
263
index.js
@@ -9,4 +9,6 @@ #!/usr/bin/env node | ||
const semver = require('semver') | ||
const request = require('request') | ||
const currentVersion = require('./package.json').version | ||
const packageInfo = require('./package.json') | ||
const currentVersion = packageInfo.version | ||
@@ -17,49 +19,42 @@ const repo = 'https://github.com/viewar/viewar-boilerplate.git' | ||
const args = process.argv.slice(2) | ||
;(async function () { | ||
try { | ||
const args = process.argv.slice(2) | ||
console.log(chalk`{bold ViewAR SDK Command Line Interface v${currentVersion}}`) | ||
console.log(chalk`{bold ViewAR SDK Command Line Interface v${currentVersion}}`) | ||
const latestVersion = shell.exec('npm show viewar-cli version', {silent: true}).stdout.trim() | ||
const latestVersion = shell.exec('npm show viewar-cli version', {silent: true}).stdout.trim() | ||
if (semver.gt(latestVersion, currentVersion)) { | ||
console.log(chalk`{bold | ||
if (semver.gt(latestVersion, currentVersion)) { | ||
console.log(chalk`{bold | ||
A newer version is available: ${latestVersion}!} Update now by running: | ||
{green npm update -g viewar-cli}`) | ||
} | ||
} | ||
(function () { | ||
if (args.length === 0 || args[0] === '--help') { | ||
printUsage() | ||
return process.exit(0) | ||
} else { | ||
switch (args[0]) { | ||
switch (args[0] || '') { | ||
case '': | ||
case 'help': | ||
printUsage() | ||
break | ||
case 'init': | ||
return init(args[1], 'vanilla', args[2]) | ||
await init(args[1], 'vanilla', args[2]) | ||
break | ||
case 'init-react': | ||
return init(args[1], 'react', args[2]) | ||
await init(args[1], 'react', args[2]) | ||
break | ||
case 'deploy': | ||
return deploy(args[1]) | ||
await deploy(args[1]) | ||
break | ||
case 'display-version': | ||
console.log(`Current app version is ${chalk.green(get('version'))}`) | ||
return process.exit(0) | ||
displayVersion() | ||
break | ||
case 'set-version': | ||
if (args[1]) { | ||
setVersion(args[1]) | ||
return process.exit(0) | ||
} else { | ||
console.log(chalk.red('Please provide a version!')) | ||
return process.exit(1) | ||
} | ||
setVersion(args[1]) | ||
break | ||
case 'display-token': | ||
const token = get('token') | ||
console.log(`Current app token is ${chalk.green(token)}`) | ||
return process.exit(0) | ||
displayToken() | ||
break | ||
case 'set-token': | ||
if (args[1]) { | ||
setToken(args[1]) | ||
return process.exit(0) | ||
} else { | ||
console.log(chalk.red('Please provide a new token!')) | ||
return process.exit(1) | ||
} | ||
setToken(args[1]) | ||
break | ||
default: | ||
@@ -70,3 +65,7 @@ console.log('Unsupported command: ' + args[0]) | ||
} | ||
} catch (error) { | ||
console.error(error) | ||
return process.exit(1) | ||
} | ||
return process.exit(0) | ||
}()) | ||
@@ -76,2 +75,10 @@ | ||
function displayVersion () { | ||
console.log(`Current app version is ${chalk.green(get('version'))}`) | ||
} | ||
function displayToken () { | ||
console.log(`Current app token is ${chalk.green(get('token'))}`) | ||
} | ||
function printUsage () { | ||
@@ -87,5 +94,7 @@ console.log(chalk` | ||
viewar-cli display-version \t\tDisplays the version of the project | ||
viewar-cli set-version {green [version]} \tSets a specific version for the project | ||
viewar-cli set-version {green [version]} \tSets the version for the project | ||
viewar-cli deploy {green [version]} \tDeploys the project | ||
viewar-cli help {green [version]} \t\tDisplays this message | ||
`) | ||
@@ -109,68 +118,47 @@ } | ||
async function deploy (version) { | ||
try { | ||
console.log(chalk`Bundling app...`) | ||
shell.exec('npm run build', {silent: true}) | ||
await zip(process.cwd()) | ||
const oldVersion = get('version') | ||
version && setVersion(version, {silent: true}) | ||
const config = JSON.parse(fs.readFileSync(path.resolve(process.cwd(), '.viewar-config'), 'utf8')) | ||
console.log(chalk`Uploading app bundle...`) | ||
uploadBundle(config.token, `${process.cwd()}/bundle.zip`) | ||
setVersion(oldVersion, {silent: true}) | ||
shell.rm('-rf', `${process.cwd()}/bundle.zip`) | ||
shell.rm('-rf', `${process.cwd()}/build`) | ||
console.log(chalk`{bold Done!}`) | ||
process.exit(0) | ||
} catch (error) { | ||
console.error(error) | ||
process.exit(1) | ||
} | ||
console.log(chalk`Bundling app...`) | ||
shell.exec('npm run build', {silent: true}) | ||
await zip(process.cwd()) | ||
const oldVersion = get('version') | ||
version && setVersion(version, {silent: true}) | ||
const config = readConfig() | ||
console.log(chalk`Uploading app bundle...`) | ||
await uploadBundle(config.token, `${process.cwd()}/bundle.zip`) | ||
version && setVersion(oldVersion, {silent: true}) | ||
shell.rm('-rf', `${process.cwd()}/bundle.zip`) | ||
shell.rm('-rf', `${process.cwd()}/build`) | ||
console.log(chalk`{bold Done!}`) | ||
} | ||
function displayConfigNotFound () { | ||
console.log(chalk.red('File .viewar-config not found! Are you in a project directory generated by the viewar-cli?')) | ||
process.exit(1) | ||
} | ||
function get (property) { | ||
try { | ||
const config = readConfig() | ||
if (!config) return | ||
return config[property] | ||
} catch (err) { | ||
displayConfigNotFound() | ||
process.exit(1) | ||
} | ||
const config = readConfig() | ||
return config[property] | ||
} | ||
function readConfig () { | ||
const config = JSON.parse(fs.readFileSync(path.resolve(process.cwd(), '.viewar-config'), 'utf8')) | ||
if (!config.token) { | ||
displayConfigNotFound() | ||
process.exit(1) | ||
try { | ||
return JSON.parse(fs.readFileSync(path.resolve(process.cwd(), '.viewar-config'), 'utf8')) | ||
} catch (error) { | ||
throw new Error(chalk.red('File .viewar-config not found! Are you in a project directory generated by the viewar-cli?')) | ||
} | ||
return config | ||
} | ||
function setToken (token, {silent} = {}) { | ||
try { | ||
const config = readConfig() | ||
if (!config) return | ||
if (!token) { | ||
throw new Error(chalk.red('Please provide a new token!')) | ||
} | ||
const config = readConfig() | ||
if (!config) return | ||
const newConfig = Object.assign({}, config, { | ||
token, | ||
version: token.split('-')[1].split('_')[0], | ||
}) | ||
const newConfig = Object.assign({}, config, { | ||
token, | ||
version: token.split('-')[1].split('_')[0], | ||
}) | ||
fs.writeFileSync(path.resolve(process.cwd(), '.viewar-config'), JSON.stringify(newConfig, null, ' '), 'utf8') | ||
writeJson(path.resolve(process.cwd(), '.viewar-config'), newConfig) | ||
if (!silent) { | ||
console.log(chalk`{bold Done!} | ||
Your new token is: {green newConfig.token} | ||
Do not forget to update the token in the settings at {red developer.viewar.com}`) | ||
} | ||
process.exit(0) | ||
} catch (err) { | ||
displayConfigNotFound() | ||
process.exit(1) | ||
if (!silent) { | ||
console.log(chalk`{bold Done!} | ||
Your new token is: {green ${newConfig.token}} | ||
Do not forget to update the token in the settings at {red developer.viewar.com}`) | ||
} | ||
@@ -180,32 +168,35 @@ } | ||
function setVersion (version, {silent} = {}) { | ||
try { | ||
const config = readConfig() | ||
if (!config) return 1 | ||
const token = get('token') | ||
if (!version) { | ||
throw new Error(chalk.red('Please provide a new token!')) | ||
} | ||
const newConfig = Object.assign({}, config, { | ||
token: token.split('-')[0] + '-' + version + '_' + token.split('_')[1], | ||
version, | ||
}) | ||
const config = readConfig() | ||
if (!config) return 1 | ||
fs.writeFileSync(path.resolve(process.cwd(), '.viewar-config'), JSON.stringify(newConfig, null, ' '), 'utf8') | ||
const token = get('token') | ||
if (!silent) { | ||
console.log(chalk`{bold Done!} | ||
Your new version is: {green newConfig.version} | ||
Your new token is: {green newConfig.token} | ||
Do not forget to update the token in the settings at {red developer.viewar.com}`) | ||
} | ||
process.exit(0) | ||
} catch (err) { | ||
displayConfigNotFound() | ||
process.exit(1) | ||
const newConfig = Object.assign({}, config, { | ||
token: token.split('-')[0] + '-' + version + '_' + token.split('_')[1], | ||
version, | ||
}) | ||
writeJson(path.resolve(process.cwd(), '.viewar-config'), newConfig) | ||
if (!silent) { | ||
console.log(chalk`{bold Done!} | ||
Your new version is: {green ${newConfig.version}} | ||
Your new token is: {green ${newConfig.token}} | ||
Do not forget to update the token in the settings at {red developer.viewar.com}`) | ||
} | ||
} | ||
function init (projectName, type, token) { | ||
const dest = createProjectDir(projectName) | ||
shell.cd(dest) | ||
function writeJson (filename, object) { | ||
fs.writeFileSync(filename, JSON.stringify(object, null, ' '), 'utf8') | ||
} | ||
async function init (projectName, type, token) { | ||
const projectDir = createProjectDir(projectName) | ||
shell.cd(projectDir) | ||
console.log(chalk.bold('\nDownloading boilerplate project...')) | ||
@@ -222,4 +213,2 @@ | ||
const packageInfo = JSON.parse(fs.readFileSync(path.resolve(process.cwd(), 'package.json'), 'utf8')) | ||
Object.assign(packageInfo, { | ||
@@ -231,3 +220,3 @@ name: projectName, | ||
fs.writeFileSync(path.resolve(process.cwd(), 'package.json'), JSON.stringify(packageInfo, null, ' '), 'utf8') | ||
writeJson(path.resolve(process.cwd(), 'package.json'), packageInfo) | ||
@@ -239,3 +228,3 @@ const config = { | ||
fs.writeFileSync(path.resolve(process.cwd(), '.viewar-config'), JSON.stringify(config, null, ' '), 'utf8') | ||
writeJson(path.resolve(process.cwd(), '.viewar-config'), config) | ||
@@ -250,42 +239,26 @@ console.log(chalk` | ||
Open {green \`/src/index.js\`} to begin editing your app.`) | ||
process.exit(1) | ||
} | ||
function createProjectDir (projectName) { | ||
const dest = path.join(process.cwd(), projectName) | ||
const projectDir = path.join(process.cwd(), projectName) | ||
try { | ||
const stat = fs.statSync(dest) | ||
if (stat) { | ||
console.log(`A ${(stat.isDirectory() ? 'directory' | ||
: 'file')} named ${projectName} already exists! Exiting without creating a new project.`) | ||
process.exit(1) | ||
} | ||
} catch (e) { | ||
if (e.code !== 'ENOENT') { | ||
console.error(e) | ||
process.exit(1) | ||
} else { | ||
fs.mkdirSync(dest) | ||
} | ||
const stat = fs.statSync(projectDir) | ||
if (!stat) { | ||
fs.mkdirSync(projectDir) | ||
return projectDir | ||
} else { | ||
throw new Error(`A ${(stat.isDirectory() ? 'directory' | ||
: 'file')} named ${projectName} already exists! Exiting without creating a new project.`) | ||
} | ||
return dest | ||
} | ||
function uploadBundle (token, path) { | ||
const url = 'http://dev2.viewar.com/resources/AppfilesUpload' | ||
const formData = { | ||
token, | ||
file: fs.createReadStream(path), | ||
} | ||
const req = request.post({url, formData}, (err, resp, body) => { | ||
if (err) { | ||
console.log('Error!', err) | ||
} else { | ||
console.log(chalk`{bold Deployment successful!}`) | ||
return new Promise((resolve, reject) => { | ||
const url = 'http://dev2.viewar.com/resources/AppfilesUpload' | ||
const formData = { | ||
token, | ||
file: fs.createReadStream(path), | ||
} | ||
request.post({url, formData}, (error) => error ? reject(error) : resolve()) | ||
}) | ||
} |
{ | ||
"name": "viewar-cli", | ||
"version": "0.1.3", | ||
"version": "0.1.4", | ||
"description": "ViewAR SDK Command Line Interface", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
0
10263
205