| // Generated by CoffeeScript 1.8.0 |
| var fs, getDotWeinreServerProperties, getTildeReplacement, nopt, optionDefaults, path, printHelp, printNoptError, replaceTilde, utils, weinre, _; |
| |
| fs = require('fs'); |
| |
| path = require('path'); |
| |
| _ = require('underscore'); |
| |
| nopt = require('nopt'); |
| |
| utils = require('./utils'); |
| |
| weinre = require('./weinre'); |
| |
| optionDefaults = { |
| httpPort: 8080, |
| boundHost: 'localhost', |
| verbose: false, |
| debug: false, |
| readTimeout: 5 |
| }; |
| |
| exports.run = function() { |
| var args, knownOpts, opts, parsedOpts, shortHands; |
| knownOpts = { |
| httpPort: Number, |
| boundHost: String, |
| verbose: Boolean, |
| debug: Boolean, |
| readTimeout: Number, |
| deathTimeout: Number, |
| help: Boolean |
| }; |
| shortHands = { |
| '?': ['--help'], |
| 'h': ['--help'] |
| }; |
| nopt.invalidHandler = printNoptError; |
| parsedOpts = nopt(knownOpts, shortHands, process.argv, 2); |
| if (parsedOpts.help) { |
| printHelp(); |
| } |
| args = parsedOpts.argv.remain; |
| if (args.length !== 0) { |
| printHelp(); |
| } |
| delete parsedOpts.argv; |
| opts = _.extend({}, optionDefaults, getDotWeinreServerProperties(), parsedOpts); |
| if (opts.deathTimeout == null) { |
| opts.deathTimeout = 3 * opts.readTimeout; |
| } |
| utils.setOptions(opts); |
| return weinre.run(opts); |
| }; |
| |
| printNoptError = function(key, val, types) { |
| return utils.exit("error with option '" + key + "', value '" + val + "'"); |
| }; |
| |
| printHelp = function() { |
| var version; |
| version = weinre.getVersion(); |
| console.error("usage: " + utils.Program + " [options]\nversion: " + version + "\n\noptions:\n --httpPort port to run the http server on default: " + optionDefaults.httpPort + "\n --boundHost ip address to bind the server to default: " + optionDefaults.boundHost + "\n --verbose print more diagnostics default: " + optionDefaults.verbose + "\n --debug print even more diagnostics default: " + optionDefaults.debug + "\n --readTimeout seconds to wait for a client message default: " + optionDefaults.readTimeout + "\n --deathTimeout seconds to wait to kill client default: 3*readTimeout\n\n--boundHost can be an ip address, hostname, or -all-, where -all-\nmeans binding to all ip address on the current machine'\n\nfor more info see: http://people.apache.org/~pmuellr/weinre/"); |
| return process.exit(); |
| }; |
| |
| getDotWeinreServerProperties = function() { |
| var contents, fileName, key, line, lines, match, properties, val, _i, _len; |
| properties = {}; |
| fileName = replaceTilde('~/.weinre/server.properties'); |
| if (!utils.fileExistsSync(fileName)) { |
| return properties; |
| } |
| contents = fs.readFileSync(fileName, 'utf8'); |
| lines = contents.split('\n'); |
| for (_i = 0, _len = lines.length; _i < _len; _i++) { |
| line = lines[_i]; |
| line = line.replace(/#.*/, ''); |
| match = line.match(/\s*(\w+)\s*:\s*(.+)\s*/); |
| if (!match) { |
| continue; |
| } |
| key = utils.trim(match[1]); |
| val = utils.trim(match[2]); |
| properties[key] = val; |
| } |
| return properties; |
| }; |
| |
| replaceTilde = function(fileName) { |
| return fileName.replace('~', getTildeReplacement()); |
| }; |
| |
| getTildeReplacement = function() { |
| return process.env["HOME"] || process.env["USERPROFILE"] || '.'; |
| }; |