mirror of
https://github.com/typicode/json-server.git
synced 2025-07-29 13:14:12 +08:00
Update
This commit is contained in:
87
src/cli.js
Normal file
87
src/cli.js
Normal file
@ -0,0 +1,87 @@
|
||||
var fs = require('fs')
|
||||
var chalk = require('chalk')
|
||||
var minimist = require('minimist')
|
||||
var request = require('superagent')
|
||||
var low = require('low')
|
||||
var server = require('./server')
|
||||
|
||||
// Output version
|
||||
function version() {
|
||||
var pkg = require('../package.json')
|
||||
console.log(pkg.version)
|
||||
}
|
||||
|
||||
// Output help.txt with some colors
|
||||
function help() {
|
||||
var txt = fs.readFileSync(__dirname + '/help.txt').toString()
|
||||
txt = txt.replace(/json-server/g, chalk.green('json-server'))
|
||||
console.log(txt)
|
||||
}
|
||||
|
||||
// Start server
|
||||
function start(port) {
|
||||
for (var prop in low.db) {
|
||||
console.log('http://localhost:' + port + '/' + chalk.green(prop))
|
||||
}
|
||||
|
||||
console.log(
|
||||
'\nEnter ' + chalk.green('`s`') + ' at any time to create a snapshot of the db\n'
|
||||
)
|
||||
process.stdin.resume()
|
||||
process.stdin.setEncoding('utf8')
|
||||
process.stdin.on('data', function (chunk) {
|
||||
if (chunk.trim().toLowerCase() === 's') {
|
||||
var file = 'db-' + Date.now() + '.json'
|
||||
low.save(file)
|
||||
console.log('\nSaved snapshot to ' + chalk.green(file) + '\n')
|
||||
}
|
||||
})
|
||||
|
||||
server.listen(port)
|
||||
}
|
||||
|
||||
// Load source
|
||||
function load(source, port) {
|
||||
console.log(chalk.green('\n{^ ^} Heya!\n'))
|
||||
|
||||
console.log('Loading database from ' + source + '\n')
|
||||
|
||||
if (/\.json$/.test(source)) {
|
||||
var path = process.cwd() + '/' + source
|
||||
low.path = path
|
||||
low.db = require(path);
|
||||
start(port)
|
||||
}
|
||||
|
||||
if (/\.js$/.test(source)) {
|
||||
var path = process.cwd() + '/' + source
|
||||
low.db = require(path).run();
|
||||
start(port)
|
||||
}
|
||||
|
||||
if (/^http/.test(source)) {
|
||||
request
|
||||
.get(source)
|
||||
.end(function(err, res) {
|
||||
if (err) {
|
||||
console.error(err)
|
||||
} else {
|
||||
low.db = JSON.parse(res.text)
|
||||
start(port)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// Uses minimist parsed argv
|
||||
function run(argv) {
|
||||
var source = argv._[0]
|
||||
var port = argv.port || 3000
|
||||
|
||||
if (argv.version) return version()
|
||||
if (source) return load(source, port)
|
||||
|
||||
help()
|
||||
}
|
||||
|
||||
module.exports.run = run
|
Reference in New Issue
Block a user