+#!/usr/bin/coffee
+
fs = require 'fs'
async = require 'async'
af = require './api.coffee'
# wait for file write so there's no race condition if get_token gets called soon
fs.writeFile token_file, token, (err) ->
if err
- console.log "Warning: couldn't cache auth token in #{token_file}: ", err
+ process.stderr.write "Warning: couldn't cache auth token in #{token_file}: #{err}\n"
# don't pass on error, it's ok if we can't cache it
callback null, token
], callback
exports.new_session = ->
return new Session()
+
+usage = ->
+ process.stderr.write "usage: #{process.argv[0]} #{process.argv[1]} command [args...]\n"
+ process.stderr.write "valid commands are:\n"
+ for k, v of af
+ process.stderr.write "\t#{k}\n" unless k is 'login'
+
+# parse and act on commandline arguments unless we were require()d as a module
+if require.main is module
+ args = process.argv[2..]
+ if args.length is 0
+ usage()
+ else if not af[args[0]]
+ process.stderr.write "unknown command \"#{args[0]}\"\n"
+ usage()
+ else
+ session = new Session()
+ session.api args[0], args[1..], (err, result) ->
+ if err?
+ process.stderr.write "Error: #{JSON.stringify err}\n"
+ if result?
+ if typeof result is 'string'
+ process.stdout.write result
+ else
+ process.stdout.write JSON.stringify result