Son CV dans un terminal web en Javascript!
https://terminal-cv.gregandev.fr
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.3 KiB
104 lines
2.3 KiB
2 years ago
|
#!/usr/bin/env node
|
||
|
|
||
|
const generate = require('../dist/astring').generate
|
||
|
const version = require('../package').version
|
||
|
const fs = require('fs')
|
||
|
const path = require('path')
|
||
|
|
||
|
const argv = process.argv.slice(2)
|
||
|
const options = {
|
||
|
indent: ' ',
|
||
|
lindeEnd: '\n',
|
||
|
startingIndentLevel: 0,
|
||
|
}
|
||
|
const files = []
|
||
|
|
||
|
function printHelp(status) {
|
||
|
// eslint-disable-next-line no-console
|
||
|
const print = status === 0 ? console.log : console.error
|
||
|
const binName = path.basename(process.argv[1])
|
||
|
print('Usage: ' + binName + ' [-h, --help] [-v, --version]')
|
||
|
print(
|
||
|
' ' +
|
||
|
binName +
|
||
|
' [-i, --indent INDENT] [-l, --line-end LINE_END] [-s, --starting-indent-level LEVEL] files...',
|
||
|
)
|
||
|
process.exit(status)
|
||
|
}
|
||
|
|
||
|
function printVersion() {
|
||
|
// eslint-disable-next-line no-console
|
||
|
console.log(version)
|
||
|
process.exit(0)
|
||
|
}
|
||
|
|
||
|
for (let i = 0, length = argv.length; i < length; i++) {
|
||
|
let arg = argv[i]
|
||
|
if (arg[0] === '-') {
|
||
|
switch (arg) {
|
||
|
case '-i':
|
||
|
case '--indent':
|
||
|
options.indent = argv[++i]
|
||
|
break
|
||
|
case '-l':
|
||
|
case '--line-end':
|
||
|
options.lineEnd = argv[++i]
|
||
|
break
|
||
|
case '-s':
|
||
|
case '--starting-indent-level':
|
||
|
options.startingIndentLevel = parseInt(argv[++i])
|
||
|
break
|
||
|
case '-h':
|
||
|
case '--help':
|
||
|
printHelp(0)
|
||
|
break
|
||
|
case '-v':
|
||
|
case '--version':
|
||
|
printVersion()
|
||
|
break
|
||
|
default:
|
||
|
console.error('Option "' + arg + '" not supported.')
|
||
|
printHelp(1)
|
||
|
break
|
||
|
}
|
||
|
} else {
|
||
|
files.push(arg)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
options.output = process.stdout
|
||
|
|
||
|
if (files.length === 0) {
|
||
|
let data = ''
|
||
|
process.stdin.setEncoding('utf8')
|
||
|
process.stdin.resume()
|
||
|
process.stdin
|
||
|
.on('data', function (chunk) {
|
||
|
data += chunk
|
||
|
})
|
||
|
.on('end', function () {
|
||
|
try {
|
||
|
generate(JSON.parse(data), options)
|
||
|
} catch (error) {
|
||
|
console.error('Error: ' + error.message)
|
||
|
process.exit(1)
|
||
|
}
|
||
|
})
|
||
|
} else {
|
||
|
let hasError = false
|
||
|
for (let i = 0, length = files.length; i < length; i++) {
|
||
|
try {
|
||
|
let file = files[i]
|
||
|
generate(JSON.parse(fs.readFileSync(file, 'utf8')), options)
|
||
|
} catch (error) {
|
||
|
console.error('Error: ' + error.message)
|
||
|
if (hasError !== true) {
|
||
|
hasError = true
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (hasError) {
|
||
|
process.exit(1)
|
||
|
}
|
||
|
}
|