td 0.9.5 → 0.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/ChangeLog CHANGED
@@ -1,4 +1,10 @@
1
1
 
2
+ == 2011-09-13 version 0.9.6
3
+
4
+ * Implement main routine on TreasureData::Command::Runner to support heroku-td
5
+ * Fixed help message to show options
6
+
7
+
2
8
  == 2011-09-13 version 0.9.5
3
9
 
4
10
  * Supports scheduled queries
data/bin/td CHANGED
@@ -4,4 +4,7 @@ require 'rubygems' unless defined?(gem)
4
4
  gem 'td-client'
5
5
  here = File.dirname(__FILE__)
6
6
  $LOAD_PATH << File.expand_path(File.join(here, '..', 'lib'))
7
- require 'td/command/td'
7
+
8
+ require 'td/command/runner'
9
+ TreasureData::Command::Runner.new.run ARGV
10
+
@@ -40,12 +40,13 @@ module List
40
40
  self.banner = banner
41
41
 
42
42
  @message = nil
43
+ @argv = nil
43
44
  end
44
45
 
45
- attr_accessor :message
46
+ attr_accessor :message, :argv
46
47
 
47
48
  def message
48
- @message || banner
49
+ @message || to_s
49
50
  end
50
51
 
51
52
  def banner
@@ -62,9 +63,9 @@ module List
62
63
  "%-40s # %s" % [@usage_args, @description]
63
64
  end
64
65
 
65
- def cmd_parse(argv=ARGV)
66
+ def cmd_parse(argv=@argv||ARGV)
66
67
  parse!(argv)
67
- if argv.length < @req_args.length || (!@varlen && argv.length > @args.length)
68
+ if argv.length < @req_args.length || (!@varlen && argv.length > @argv.length)
68
69
  cmd_usage nil
69
70
  end
70
71
  if argv.length <= 1
@@ -89,11 +90,17 @@ module List
89
90
  name.split(':', 2).first
90
91
  end
91
92
 
92
- def on(*args)
93
+ def on(*argv)
93
94
  @has_options = true
94
95
  super
95
96
  end
96
97
 
98
+ def with_args(argv)
99
+ d = dup
100
+ d.argv = argv
101
+ d
102
+ end
103
+
97
104
  attr_reader :name
98
105
  attr_reader :description
99
106
  end
@@ -123,7 +130,7 @@ module List
123
130
  require "td/command/#{group}"
124
131
  cmd = name.gsub(':', '_')
125
132
  m = Object.new.extend(Command).method(cmd)
126
- return Proc.new { m.call(op) }
133
+ return Proc.new {|args| m.call(op.with_args(args)) }
127
134
  end
128
135
  nil
129
136
  end
@@ -0,0 +1,114 @@
1
+
2
+ module TreasureData
3
+ module Command
4
+
5
+
6
+ class Runner
7
+ def initialize
8
+ @config_path = nil
9
+ @apikey = nil
10
+ @prog_name = nil
11
+ end
12
+
13
+ attr_accessor :apikey, :config_path, :prog_name
14
+
15
+ def run(argv=ARGV)
16
+ require 'td/version'
17
+ require 'optparse'
18
+
19
+ $prog = @prog_name || File.basename($0)
20
+
21
+ op = OptionParser.new
22
+ op.version = TreasureData::VERSION
23
+ op.banner = <<EOF
24
+ usage: #{$prog} [options] COMMAND [args]
25
+
26
+ options:
27
+ EOF
28
+
29
+ op.summary_indent = " "
30
+
31
+ (class<<self;self;end).module_eval do
32
+ define_method(:usage) do |errmsg|
33
+ require 'td/command/list'
34
+ puts op.to_s
35
+ puts ""
36
+ puts "commands:"
37
+ TreasureData::Command::List.show_help(op.summary_indent)
38
+ puts ""
39
+ puts "Type '#{$prog} help COMMAND' for more information on a specific command."
40
+ if errmsg
41
+ puts "error: #{errmsg}"
42
+ exit 1
43
+ else
44
+ exit 0
45
+ end
46
+ end
47
+ end
48
+
49
+ config_path = @config_path
50
+ apikey = @apikey
51
+ $verbose = false
52
+ #$debug = false
53
+
54
+ op.on('-c', '--config PATH', "path to config file (~/.td/td.conf)") {|s|
55
+ config_path = s
56
+ }
57
+
58
+ op.on('-k', '--apikey KEY', "use this API key instead of reading the config file") {|s|
59
+ apikey = s
60
+ }
61
+
62
+ op.on('-v', '--verbose', "verbose mode", TrueClass) {|b|
63
+ $verbose = b
64
+ }
65
+
66
+ #op.on('-d', '--debug', "debug mode", TrueClass) {|b|
67
+ # $debug = b
68
+ #}
69
+
70
+ begin
71
+ op.order!(argv)
72
+ usage nil if argv.empty?
73
+ cmd = argv.shift
74
+
75
+ require 'td/config'
76
+ if config_path
77
+ TreasureData::Config.path = config_path
78
+ end
79
+ if apikey
80
+ TreasureData::Config.apikey = apikey
81
+ end
82
+ rescue
83
+ usage $!.to_s
84
+ end
85
+
86
+ require 'td/command/list'
87
+
88
+ method = TreasureData::Command::List.get_method(cmd)
89
+ unless method
90
+ $stderr.puts "'#{cmd}' is not a td command. Run '#{$prog}' to show the list."
91
+ TreasureData::Command::List.show_guess(cmd)
92
+ exit 1
93
+ end
94
+
95
+ begin
96
+ method.call(argv)
97
+ rescue TreasureData::ConfigError
98
+ $stderr.puts "TreasureData account is not configured yet."
99
+ $stderr.puts "Run '#{$prog} account' first."
100
+ rescue
101
+ $stderr.puts "error #{$!.class}: backtrace:"
102
+ $!.backtrace.each {|b|
103
+ $stderr.puts " #{b}"
104
+ }
105
+ puts ""
106
+ puts $!
107
+ end
108
+ end
109
+ end
110
+
111
+
112
+ end
113
+ end
114
+
@@ -1,5 +1,5 @@
1
1
  module TreasureData
2
2
 
3
- VERSION = '0.9.5'
3
+ VERSION = '0.9.6'
4
4
 
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: td
3
3
  version: !ruby/object:Gem::Version
4
- hash: 49
4
+ hash: 55
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 5
10
- version: 0.9.5
9
+ - 6
10
+ version: 0.9.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sadayuki Furuhashi
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-09-13 00:00:00 +09:00
18
+ date: 2011-09-20 00:00:00 +09:00
19
19
  default_executable: td
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -118,11 +118,11 @@ files:
118
118
  - lib/td/command/job.rb
119
119
  - lib/td/command/list.rb
120
120
  - lib/td/command/query.rb
121
+ - lib/td/command/runner.rb
121
122
  - lib/td/command/sched.rb
122
123
  - lib/td/command/schema.rb
123
124
  - lib/td/command/server.rb
124
125
  - lib/td/command/table.rb
125
- - lib/td/command/td.rb
126
126
  - lib/td/config.rb
127
127
  - lib/td/version.rb
128
128
  - ChangeLog
@@ -1,94 +0,0 @@
1
-
2
- require 'optparse'
3
- require 'td/version'
4
-
5
- $prog = File.basename($0)
6
-
7
- op = OptionParser.new
8
- op.version = TreasureData::VERSION
9
- op.banner = <<EOF
10
- usage: #{$prog} [options] COMMAND [args]
11
-
12
- options:
13
- EOF
14
-
15
- op.summary_indent = " "
16
-
17
- (class<<self;self;end).module_eval do
18
- define_method(:usage) do |errmsg|
19
- require 'td/command/list'
20
- puts op.to_s
21
- puts ""
22
- puts "commands:"
23
- TreasureData::Command::List.show_help(op.summary_indent)
24
- puts ""
25
- puts "Type 'td help COMMAND' for more information on a specific command."
26
- if errmsg
27
- puts "error: #{errmsg}"
28
- exit 1
29
- else
30
- exit 0
31
- end
32
- end
33
- end
34
-
35
- config_path = nil
36
- apikey = nil
37
- $verbose = false
38
- #$debug = false
39
-
40
- op.on('-c', '--config PATH', "path to config file (~/.td/td.conf)") {|s|
41
- config_path = s
42
- }
43
-
44
- op.on('-k', '--apikey KEY', "use this API key instead of reading the config file") {|s|
45
- apikey = s
46
- }
47
-
48
- op.on('-v', '--verbose', "verbose mode", TrueClass) {|b|
49
- $verbose = b
50
- }
51
-
52
- #op.on('-d', '--debug', "debug mode", TrueClass) {|b|
53
- # $debug = b
54
- #}
55
-
56
- begin
57
- op.order!(ARGV)
58
- usage nil if ARGV.empty?
59
- cmd = ARGV.shift
60
-
61
- require 'td/config'
62
- if config_path
63
- TreasureData::Config.path = config_path
64
- end
65
- if apikey
66
- TreasureData::Config.apikey = apikey
67
- end
68
- rescue
69
- usage $!.to_s
70
- end
71
-
72
- require 'td/command/list'
73
-
74
- method = TreasureData::Command::List.get_method(cmd)
75
- unless method
76
- $stderr.puts "'#{cmd}' is not a td command. Run '#{$prog}' to show the list."
77
- TreasureData::Command::List.show_guess(cmd)
78
- exit 1
79
- end
80
-
81
- begin
82
- method.call
83
- rescue TreasureData::ConfigError
84
- $stderr.puts "TreasureData account is not configured yet."
85
- $stderr.puts "Run '#{$prog} account' first."
86
- rescue
87
- $stderr.puts "error #{$!.class}: backtrace:"
88
- $!.backtrace.each {|b|
89
- $stderr.puts " #{b}"
90
- }
91
- puts ""
92
- puts $!
93
- end
94
-