UNPKG

shareme

Version:

help you sharing someting easily

100 lines (87 loc) 2.51 kB
#! /usr/bin/env node 'use strict' const exec = require('child_process').exec const store = require('./store') const path = require('path') const fs = require('fs') const os = require('os') const basedir = path.dirname(process.argv[1]) const logFile = path.join(basedir, 'server.log') const ADD = 'add' const DELETE = 'delete' const LIST = 'list' const START = 'start' const argv = require('yargs') .command(ADD, '-A', function(args){ let argv = args.reset() .argv let file = argv._[1] dispatch(ADD,{file:file}) console.log('Added '+ file + ' into shared-list successfully') }) .command(DELETE, '-D', function(args){ let argv = args.reset() .argv let file = argv._[1] dispatch(DELETE,{file:file}) console.log('Removed '+ file + ' from shared-list successfully') }) .command(LIST, '-L', function(args){ let files = dispatch(LIST).map(function(f){ return f.name + ' *** ' + f.path }) console.log('All shared files \n\n' + files.join('\n')) }) .command(START, START, function(args){ console.log('Start sharing') let argv = args.reset() .alias('p','port') .argv let port = argv.p || 4000 let addr = getAddress(port) console.log('Try: http://localhost:' + port + '\n ' + addr) dispatch(START, {port: port}) }) .usage('Usage: shareme [options]') .example('shareme add photo.jpg', 'Add photo.jpg into shared list') .help('h') .alias('h','help') .epilog('copyright 2016') .argv return function dispatch(action,option){ switch(action){ case ADD: return store.add(option.file) case DELETE: return store.delete(option.file) case LIST: return store.list() case START: let child = exec('node --harmony "' + path.join(basedir, 'server.js') + '" ' + (option.port||'') , function(err, stdout, stderr){ if(err) log(err) log(stdout) log(stderr) }) return default : return } } function log(str){ fs.appendFileSync(logFile, new Date()) fs.appendFileSync(logFile, str) } function getAddress(port){ let addr = '' try{ //Windows platform solution if(os.type().toLowerCase().indexOf('win') !== -1){ let ifs = os.networkInterfaces() let ip = (ifs['Local Area Connection'] || ifs['Wireless Network Connection']).filter(function(i){ return i.family=='IPv4' })[0].address addr = 'http://' + ip + ':' + port }else{ } }catch(err){ addr = '' } return addr }