JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
json_request always pass response, even if empty
[af-coffee.git] / client.coffee
old mode 100644 (file)
new mode 100755 (executable)
index a378480..ccb26b3
@@ -1,3 +1,5 @@
+#!/usr/bin/coffee
+
 fs = require 'fs'
 async = require 'async'
 af = require './api.coffee'
@@ -66,7 +68,7 @@ login = (callback) ->
                        # 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
@@ -74,3 +76,28 @@ login = (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