forked from FINAKON/HelpProject
1. Initial Commit - a boiler plate code and POC to realize the concept of context sensitive help 2. Frontend code written in ReactJS 3. Backend code written in Java, Spring Boot Framework 4. Frontend Start: pre-requisites : node, npm npm run dev ==> to start the frontend vite server 5. Backend Start: pre-requisites : java, mvn mvn spring-boot:run ==> to start the backend server 6. Visit http://localhost:5173/ for basic demo of help, press F1 in textboxes 7. Visit http://localhost:5173/editor and enter "admin123" to add/modify texts. Happy Coding !!! Thank you, Bhargava.
153 lines
3.5 KiB
JavaScript
Executable File
153 lines
3.5 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
const fs = require('fs')
|
|
const path = require('path')
|
|
const pkg = require('../package.json')
|
|
const JSON5 = require('./')
|
|
|
|
const argv = parseArgs()
|
|
|
|
if (argv.version) {
|
|
version()
|
|
} else if (argv.help) {
|
|
usage()
|
|
} else {
|
|
const inFilename = argv.defaults[0]
|
|
|
|
let readStream
|
|
if (inFilename) {
|
|
readStream = fs.createReadStream(inFilename)
|
|
} else {
|
|
readStream = process.stdin
|
|
}
|
|
|
|
let json5 = ''
|
|
readStream.on('data', data => {
|
|
json5 += data
|
|
})
|
|
|
|
readStream.on('end', () => {
|
|
let space
|
|
if (argv.space === 't' || argv.space === 'tab') {
|
|
space = '\t'
|
|
} else {
|
|
space = Number(argv.space)
|
|
}
|
|
|
|
let value
|
|
try {
|
|
value = JSON5.parse(json5)
|
|
if (!argv.validate) {
|
|
const json = JSON.stringify(value, null, space)
|
|
|
|
let writeStream
|
|
|
|
// --convert is for backward compatibility with v0.5.1. If
|
|
// specified with <file> and not --out-file, then a file with
|
|
// the same name but with a .json extension will be written.
|
|
if (argv.convert && inFilename && !argv.outFile) {
|
|
const parsedFilename = path.parse(inFilename)
|
|
const outFilename = path.format(
|
|
Object.assign(
|
|
parsedFilename,
|
|
{base: path.basename(parsedFilename.base, parsedFilename.ext) + '.json'}
|
|
)
|
|
)
|
|
|
|
writeStream = fs.createWriteStream(outFilename)
|
|
} else if (argv.outFile) {
|
|
writeStream = fs.createWriteStream(argv.outFile)
|
|
} else {
|
|
writeStream = process.stdout
|
|
}
|
|
|
|
writeStream.write(json)
|
|
}
|
|
} catch (err) {
|
|
console.error(err.message)
|
|
process.exit(1)
|
|
}
|
|
})
|
|
}
|
|
|
|
function parseArgs () {
|
|
let convert
|
|
let space
|
|
let validate
|
|
let outFile
|
|
let version
|
|
let help
|
|
const defaults = []
|
|
|
|
const args = process.argv.slice(2)
|
|
for (let i = 0; i < args.length; i++) {
|
|
const arg = args[i]
|
|
switch (arg) {
|
|
case '--convert':
|
|
case '-c':
|
|
convert = true
|
|
break
|
|
|
|
case '--space':
|
|
case '-s':
|
|
space = args[++i]
|
|
break
|
|
|
|
case '--validate':
|
|
case '-v':
|
|
validate = true
|
|
break
|
|
|
|
case '--out-file':
|
|
case '-o':
|
|
outFile = args[++i]
|
|
break
|
|
|
|
case '--version':
|
|
case '-V':
|
|
version = true
|
|
break
|
|
|
|
case '--help':
|
|
case '-h':
|
|
help = true
|
|
break
|
|
|
|
default:
|
|
defaults.push(arg)
|
|
break
|
|
}
|
|
}
|
|
|
|
return {
|
|
convert,
|
|
space,
|
|
validate,
|
|
outFile,
|
|
version,
|
|
help,
|
|
defaults,
|
|
}
|
|
}
|
|
|
|
function version () {
|
|
console.log(pkg.version)
|
|
}
|
|
|
|
function usage () {
|
|
console.log(
|
|
`
|
|
Usage: json5 [options] <file>
|
|
|
|
If <file> is not provided, then STDIN is used.
|
|
|
|
Options:
|
|
|
|
-s, --space The number of spaces to indent or 't' for tabs
|
|
-o, --out-file [file] Output to the specified file, otherwise STDOUT
|
|
-v, --validate Validate JSON5 but do not output JSON
|
|
-V, --version Output the version number
|
|
-h, --help Output usage information`
|
|
)
|
|
}
|