td 0.9.1 → 0.9.2

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,12 @@
1
1
 
2
+ == 2011-09-08 version 0.9.2
3
+
4
+ * Added job:kill subcommand
5
+ * Added apikey:show and apikey:set subcommands
6
+ * requires td-logger for Rails
7
+ * Fixed command/account.rb file is missed
8
+
9
+
2
10
  == 2011-09-08 version 0.9.1
3
11
 
4
12
  * Accepts the 'TREASURE_DATA_API_KEY' environment variable to set API key
data/lib/td.rb ADDED
@@ -0,0 +1 @@
1
+ require 'td-logger'
@@ -0,0 +1,91 @@
1
+
2
+ module TreasureData
3
+ module Command
4
+
5
+ def account(op)
6
+ op.banner << "\noptions:\n"
7
+
8
+ force = false
9
+ op.on('-f', '--force', 'overwrite current account setting', TrueClass) {|b|
10
+ force = true
11
+ }
12
+
13
+ user_name = op.cmd_parse
14
+
15
+ conf = nil
16
+ begin
17
+ conf = Config.read
18
+ rescue ConfigError
19
+ end
20
+ if conf && conf['account.apikey']
21
+ unless force
22
+ if conf['account.user']
23
+ $stderr.puts "Account is already configured with '#{conf['account.user']}' account."
24
+ else
25
+ $stderr.puts "Account is already configured."
26
+ end
27
+ $stderr.puts "Add '-f' option to overwrite."
28
+ exit 0
29
+ end
30
+ end
31
+
32
+ unless user_name
33
+ begin
34
+ print "User name: "
35
+ line = STDIN.gets || ""
36
+ user_name = line.strip
37
+ rescue Interrupt
38
+ $stderr.puts "\ncanceled."
39
+ exit 1
40
+ end
41
+ end
42
+
43
+ if user_name.empty?
44
+ $stderr.puts "canceled."
45
+ exit 0
46
+ end
47
+
48
+ client = nil
49
+
50
+ 3.times do
51
+ begin
52
+ system "stty -echo" # TODO termios
53
+ print "Password: "
54
+ password = STDIN.gets || ""
55
+ password = password[0..-2] # strip \n
56
+ rescue Interrupt
57
+ $stderr.print "\ncanceled."
58
+ exit 1
59
+ ensure
60
+ system "stty echo" # TODO termios
61
+ print "\n"
62
+ end
63
+
64
+ if password.empty?
65
+ $stderr.puts "canceled."
66
+ exit 0
67
+ end
68
+
69
+ begin
70
+ client = Client.authenticate(user_name, password)
71
+ rescue TreasureData::AuthError
72
+ $stderr.puts "User name or password mismatched."
73
+ end
74
+
75
+ break if client
76
+ end
77
+ return unless client
78
+
79
+ $stderr.puts "Authenticated successfully."
80
+
81
+ conf ||= Config.new
82
+ conf["account.user"] = user_name
83
+ conf["account.apikey"] = client.apikey
84
+ conf.save
85
+
86
+ $stderr.puts "Use '#{$prog} db:create <db_name>' to create a database."
87
+ end
88
+
89
+ end
90
+ end
91
+
@@ -0,0 +1,59 @@
1
+
2
+ module TreasureData
3
+ module Command
4
+
5
+ def apikey_show(op)
6
+ conf = nil
7
+ begin
8
+ conf = Config.read
9
+ rescue ConfigError
10
+ end
11
+
12
+ if !conf || !conf['account.apikey']
13
+ $stderr.puts "Account is not configured yet."
14
+ $stderr.puts "Use '#{$prog} apikey:set' or '#{$prog} account' first."
15
+ exit 1
16
+ end
17
+
18
+ puts conf['account.apikey']
19
+ end
20
+
21
+ def apikey_set(op)
22
+ op.banner << "\noptions:\n"
23
+
24
+ force = false
25
+ op.on('-f', '--force', 'overwrite current account setting', TrueClass) {|b|
26
+ force = true
27
+ }
28
+
29
+ apikey = op.cmd_parse
30
+
31
+ conf = nil
32
+ begin
33
+ conf = Config.read
34
+ rescue ConfigError
35
+ end
36
+ if conf && conf['account.apikey']
37
+ unless force
38
+ if conf['account.user']
39
+ $stderr.puts "Account is already configured with '#{conf['account.user']}' account."
40
+ else
41
+ $stderr.puts "Account is already configured."
42
+ end
43
+ $stderr.puts "Add '-f' option to overwrite."
44
+ exit 0
45
+ end
46
+ end
47
+
48
+ conf ||= Config.new
49
+ conf.delete("account.user")
50
+ conf["account.apikey"] = apikey
51
+ conf.save
52
+
53
+ $stderr.puts "API key is set."
54
+
55
+ $stderr.puts "Use '#{$prog} db:create <db_name>' to create a database."
56
+ end
57
+
58
+ end
59
+ end
data/lib/td/command/db.rb CHANGED
@@ -37,7 +37,7 @@ module Command
37
37
 
38
38
  if dbs.empty?
39
39
  $stderr.puts "There are no databases."
40
- $stderr.puts "Use '#{$prog} create-database <db_name>' to create a database."
40
+ $stderr.puts "Use '#{$prog} db:create <db_name>' to create a database."
41
41
  end
42
42
  end
43
43
 
@@ -56,7 +56,7 @@ module Command
56
56
  end
57
57
 
58
58
  $stderr.puts "Database '#{db_name}' is created."
59
- $stderr.puts "Use '#{$prog} create-log-table #{db_name} <table_name>' to create a table."
59
+ $stderr.puts "Use '#{$prog} table:create #{db_name} <table_name>' to create a table."
60
60
  end
61
61
 
62
62
  def db_delete(op)
@@ -126,8 +126,17 @@ module Command
126
126
 
127
127
  client = get_client
128
128
 
129
- client.kill_job(job_id)
130
- # TODO error
129
+ former_status = client.kill(job_id)
130
+ if TreasureData::Job::FINISHED_STATUS.include?(former_status)
131
+ $stderr.puts "Job #{job_id} is already finished (#{former_status})"
132
+ exit 0
133
+ end
134
+
135
+ if former_status == TreasureData::Job::STATUS_RUNNING
136
+ $stderr.puts "Job #{job_id} is killed."
137
+ else
138
+ $stderr.puts "Job #{job_id} is canceled."
139
+ end
131
140
  end
132
141
 
133
142
  private
@@ -194,9 +194,11 @@ module List
194
194
 
195
195
  add_list 'job:show', %w[job_id], 'Show status and result of a job'
196
196
  add_list 'job:list', %w[max?], 'Show list of jobs'
197
- #add_list 'job:kill', %w[job_id], 'Kill a job'
197
+ add_list 'job:kill', %w[job_id], 'Kill or cancel a job'
198
198
 
199
- add_list 'account', %w[], 'Setup a Treasure Data account'
199
+ add_list 'account', %w[user_name?], 'Setup a Treasure Data account'
200
+ add_list 'apikey:show', %w[], 'Show Treasure Data API key'
201
+ add_list 'apikey:set', %w[apikey], 'Set Treasure Data API key'
200
202
 
201
203
  add_list 'server:status', %w[], 'Show status of the Treasure Data server'
202
204
 
@@ -220,6 +222,9 @@ module List
220
222
 
221
223
  add_alias 'job', 'job:show'
222
224
  add_alias 'jobs', 'job:list'
225
+ add_alias 'kill', 'job:kill'
226
+
227
+ add_alias 'apikey', 'apikey:show'
223
228
 
224
229
  # backward compatibility
225
230
  add_alias 'show-databases', 'db:list'
@@ -15,7 +15,7 @@ module Command
15
15
  rescue NotFoundError
16
16
  cmd_debug_error $!
17
17
  $stderr.puts "Database '#{db_name}' does not exist."
18
- $stderr.puts "Use '#{$prog} create-database #{db_name}' to create the database."
18
+ $stderr.puts "Use '#{$prog} db:create #{db_name}' to create the database."
19
19
  exit 1
20
20
  rescue AlreadyExistsError
21
21
  cmd_debug_error $!
@@ -76,7 +76,7 @@ module Command
76
76
  $stderr.puts "Use '#{$prog} table:create <db.table>' to create a table."
77
77
  elsif dbs.empty?
78
78
  $stderr.puts "There are no databases."
79
- $stderr.puts "Use '#{$prog} database:create <db>' to create a database."
79
+ $stderr.puts "Use '#{$prog} db:create <db>' to create a database."
80
80
  else
81
81
  $stderr.puts "There are no tables."
82
82
  $stderr.puts "Use '#{$prog} table:create <db.table>' to create a table."
data/lib/td/config.rb CHANGED
@@ -30,6 +30,10 @@ class Config
30
30
  @conf[cate_key] = val
31
31
  end
32
32
 
33
+ def delete(cate_key)
34
+ @conf.delete(cate_key)
35
+ end
36
+
33
37
  def read(path=@path)
34
38
  @path = path
35
39
  begin
data/lib/td/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module TreasureData
2
2
 
3
- VERSION = '0.9.1'
3
+ VERSION = '0.9.2'
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: 57
4
+ hash: 63
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 1
10
- version: 0.9.1
9
+ - 2
10
+ version: 0.9.2
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-08 00:00:00 +09:00
18
+ date: 2011-09-09 00:00:00 +09:00
19
19
  default_executable: td
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -74,12 +74,12 @@ dependencies:
74
74
  requirements:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
- hash: 63
77
+ hash: 61
78
78
  segments:
79
79
  - 0
80
80
  - 8
81
- - 0
82
- version: 0.8.0
81
+ - 1
82
+ version: 0.8.1
83
83
  type: :runtime
84
84
  version_requirements: *id004
85
85
  - !ruby/object:Gem::Dependency
@@ -90,12 +90,12 @@ dependencies:
90
90
  requirements:
91
91
  - - ~>
92
92
  - !ruby/object:Gem::Version
93
- hash: 19
93
+ hash: 17
94
94
  segments:
95
95
  - 0
96
96
  - 2
97
- - 2
98
- version: 0.2.2
97
+ - 3
98
+ version: 0.2.3
99
99
  type: :runtime
100
100
  version_requirements: *id005
101
101
  description:
@@ -108,6 +108,9 @@ extra_rdoc_files:
108
108
  - ChangeLog
109
109
  - README.rdoc
110
110
  files:
111
+ - lib/td.rb
112
+ - lib/td/command/account.rb
113
+ - lib/td/command/apikey.rb
111
114
  - lib/td/command/common.rb
112
115
  - lib/td/command/db.rb
113
116
  - lib/td/command/help.rb