Skip to content

Commit

Permalink
Minimal start with a custom logger and device tracker.
Browse files Browse the repository at this point in the history
  • Loading branch information
sorccu committed Jan 7, 2014
1 parent 971fcb8 commit f67eb6d
Show file tree
Hide file tree
Showing 7 changed files with 126 additions and 0 deletions.
11 changes: 11 additions & 0 deletions .editorconfig
@@ -0,0 +1,11 @@
# http://editorconfig.org/

root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
1 change: 1 addition & 0 deletions .gitignore
@@ -0,0 +1 @@
/node_modules/
2 changes: 2 additions & 0 deletions bin/stf
@@ -0,0 +1,2 @@
#!/usr/bin/env node
require('../lib/cli')
15 changes: 15 additions & 0 deletions lib/cli.js
@@ -0,0 +1,15 @@
var program = require('commander')

var pkg = require('../package')

program
.version(pkg.version)

program
.command('provider')
.description('run STF provider')
.action(function() {
require('./provider')
})

program.parse(process.argv)
26 changes: 26 additions & 0 deletions lib/provider.js
@@ -0,0 +1,26 @@
var adb = require('adbkit')
var async = require('async')

var log = require('./util/logger').createLogger('provider')
var client = adb.createClient()

client.trackDevices(function(err, tracker) {
if (err) {
log.fatal('Unable to track devices: %s', err.message)
throw err
}

log.info('Tracking devices')

tracker.on('add', function(device) {
log.info('Found device "%s" (%s)', device.id, device.type)
})

tracker.on('change', function(device) {
log.info('Device "%s" is now "%s"', device.id, device.type)
})

tracker.on('remove', function(device) {
log.info('Lost device "%s" (%s)', device.id, device.type)
})
})
59 changes: 59 additions & 0 deletions lib/util/logger.js
@@ -0,0 +1,59 @@
var util = require('util')

function Log(tag, stream) {
this.tag = tag
this.stream = stream || process.stderr
this.levels = {
DEBUG: 'DBG'
, VERBOSE: 'VRB'
, INFO: 'INF'
, WARNING: 'WRN'
, ERROR: 'ERR'
, FATAL: 'FTL'
}
}

Log.prototype.debug = function() {
this._write(this._format(this.levels.DEBUG, arguments))
}

Log.prototype.verbose = function() {
this._write(this._format(this.levels.VERBOSE, arguments))
}

Log.prototype.info = function() {
this._write(this._format(this.levels.INFO, arguments))
}

Log.prototype.warn = function() {
this._write(this._format(this.levels.WARNING, arguments))
}

Log.prototype.error = function() {
this._write(this._format(this.levels.ERROR, arguments))
}

Log.prototype.fatal = function() {
this._write(this._format(this.levels.FATAL, arguments))
}

Log.prototype._format = function(priority, args) {
return util.format('%s %s/%s %d %s\n',
Log.prefix, priority, this.tag, process.pid, util.format.apply(util, args))
}

Log.prototype._write = function(out) {
this.stream.write(out)
}

Log.prefix = '*'

Log.createLogger = function(tag) {
return new Log(tag)
}

Log.setPrefix = function(prefix) {
Log.prefix = prefix
}

exports = module.exports = Log
12 changes: 12 additions & 0 deletions test/util/logger.js
@@ -0,0 +1,12 @@
var chai = require('chai')
var expect = chai.expect

var logger = require('../../lib/util/logger')

describe('Logger', function() {

it('should have a createLogger method', function() {
expect(logger).itself.to.respondTo('createLogger')
})

})

0 comments on commit f67eb6d

Please sign in to comment.