ig3cmd 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/bin/ig3cmd +78 -13
  2. metadata +4 -3
data/bin/ig3cmd CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- # Client v0.1.3 by Lode
3
+ # Client v0.1.4 by Lode
4
4
 
5
5
  # ----------------
6
6
  # Requirements:
@@ -13,9 +13,10 @@ require 'ig3client'
13
13
  # ----------------
14
14
  # Items:
15
15
 
16
- ITEMS = { "cola" => "5449000000996",
16
+ INITITEMS = { "cola" => "5449000000996",
17
17
  "colalight" => "5449000050205",
18
18
  "colalightlemon" => "5449000089229",
19
+ "colazero" => "5449000131805",
19
20
  "fantaorange" => "5449000011527",
20
21
  "fantalemon" => "5449000006004",
21
22
  "minutemaid" => "90494024",
@@ -35,7 +36,8 @@ ITEMS = { "cola" => "5449000000996",
35
36
  "jempyijshoorntje" => "5400141906080",
36
37
  "icetea" => "5410033820103",
37
38
  "iceteagreen" => "5410033822015",
38
- "restolasagne" => "5400141278774"
39
+ "restolasagne" => "5400141278774",
40
+ "kinderbueno" => "80052760"
39
41
  }
40
42
 
41
43
  # ----------------
@@ -46,13 +48,29 @@ module Ig3tool
46
48
  # Maak de functies publiek
47
49
  module_function
48
50
 
51
+ class IG3Error < Exception
52
+ end
53
+
54
+ class Token < IG3Error
55
+ end
56
+
57
+ class NotFound < IG3Error
58
+ end
59
+
49
60
  class Config
50
61
  @username
62
+ @items
63
+
51
64
  def initialize
52
65
  # Ask userinfo if the configfile doesn't exists
53
66
  _ask_userinfo unless File.exists?(File.expand_path("~/.ig3tool"))
54
67
  c = YAML::load(File.open(File.expand_path('~/.ig3tool')))
55
68
  @username = c.username
69
+ if c.items
70
+ @items = c.items
71
+ else
72
+ @items = INITITEMS
73
+ end
56
74
  # Ask a password to generate a ig3token
57
75
  _ask_password unless File.exists?(File.expand_path("~/.ig3token"))
58
76
  end
@@ -69,6 +87,22 @@ module Ig3tool
69
87
  f.close
70
88
  end
71
89
 
90
+ def items
91
+ @items
92
+ end
93
+
94
+ def item=(newitems)
95
+ @items = newitems
96
+ end
97
+
98
+ def additem(newitem, barcode)
99
+ @items[newitem] = barcode
100
+ # Automatically update the config file
101
+ f = File.new(File.expand_path('~/.ig3tool'),'wb')
102
+ f.write self.to_yaml
103
+ f.close
104
+ end
105
+
72
106
  private
73
107
 
74
108
  def _ask_userinfo
@@ -102,23 +136,39 @@ module Ig3tool
102
136
  # Create array with barcodes
103
137
  # Match string with Barcode-list
104
138
  # Scribble expects a list with pairs
105
- code = ITEMS[options.item]
139
+ code = $config.items[options.item]
106
140
  code = options.item if code.nil?
107
141
  # If it's not a valid barcode, quit
108
142
  unless code =~ /^\d+$/
109
- puts "No a valid barcode or product: #{code}"
143
+ puts "No valid barcode or product: #{code}"
110
144
  exit 2
111
145
  end
112
146
  items = [[ code, options.amount ]]
113
- username = options.username || @config.username
147
+ username = options.username || $config.username
114
148
  $client.scribble!({ :debugger => username, :items => items})
115
149
  puts "ScrriiiiiiiiiblleeeDDDDDDDDDD #{options.amount} #{_plural(options.item, options.amount)} for #{username} - oh yeah"
116
150
  exit # Correct executed, exit
151
+ rescue NotFound
152
+ puts "Invalid barcode (Product not found)"
153
+ rescue Token
154
+ File.delete(File.expand_path("~/.ig3token"))
155
+ puts "Invalid token deleted!"
156
+ puts "Please try again..."
117
157
  rescue
118
158
  puts "Error: #{$!}"
119
159
  end
120
160
  end
121
161
 
162
+ def _createitem(options)
163
+ puts options if options.verbose
164
+ info = options.item.split(/:/)
165
+ if info.length == 2
166
+ $config.additem(info[0], info[1])
167
+ else
168
+ puts "Usage: Cola:5449000000996"
169
+ end
170
+ end
171
+
122
172
  # Start functie
123
173
  def start ()
124
174
  # Connect to ig3tool
@@ -127,11 +177,16 @@ module Ig3tool
127
177
  $client = Ig3tool::Client.new(host, port)
128
178
  # Load the config
129
179
  # Automatically asks for username if config file doesn't have it filled in
130
- @config = Config.new
180
+ $config = Config.new
131
181
  # Perform the parse of the arguments
132
182
  options = OptparseIg3tool.parse(ARGV)
133
183
  # Buy/Scribble the items if everything is ok
134
- _buy options if options
184
+ case options.action
185
+ when :buy
186
+ _buy options
187
+ when :createitem
188
+ _createitem options
189
+ end
135
190
  end
136
191
 
137
192
  private
@@ -151,16 +206,17 @@ module Ig3tool
151
206
  options = OpenStruct.new
152
207
  options.encoding = "utf8"
153
208
  options.verbose = false
154
- options.version = "v0.1.3"
209
+ options.version = "v0.1.4"
155
210
  options.item = :none
211
+ options.action = :none
156
212
  options.amount = 1
157
213
 
158
214
  opts = OptionParser.new do |opts|
159
215
 
160
216
  opts.banner = "\n Ig3tool cmdline (GEEK) Interface\n" +
161
- "----------------------------------\n" +
162
- "#{options.version} - 09/04/2008\n" +
163
- "Usage: ig3cmdtool [options]\n"
217
+ "----------------------------------\n" +
218
+ "#{options.version} - 27/11/2008\n" +
219
+ "Usage: ig3cmdtool [options]\n"
164
220
 
165
221
  # Actions
166
222
  opts.separator ""
@@ -168,11 +224,13 @@ module Ig3tool
168
224
 
169
225
  opts.on("-c","--cola","Koop een cola") do |n|
170
226
  options.item = "cola"
227
+ options.action = :buy
171
228
  end
172
229
 
173
230
  # with keyword completion ! =))
174
- opts.on("-b", "--buy ITEM", String, "Koop een ITEM {#{ITEMS.keys.sort.join(',')}}") do |item|
231
+ opts.on("-b", "--buy ITEM", String, "Koop een ITEM {#{$config.items.keys.sort.join(',')}}") do |item|
175
232
  options.item = item
233
+ options.action = :buy
176
234
  end
177
235
 
178
236
  # Boolean switch.
@@ -190,6 +248,13 @@ module Ig3tool
190
248
  options.username = u
191
249
  end
192
250
 
251
+ # Add item
252
+ opts.on("-x","--create STRING:BARCODE", String, "Create new item") do |item|
253
+ options.item = item
254
+ options.action = :createitem
255
+ end
256
+
257
+
193
258
  # Update Client -> via GEM
194
259
  #opts.on("-U","--update","Update Client") do
195
260
  # path = File.expand_path(__FILE__)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ig3cmd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lode Hoste
@@ -9,11 +9,12 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-04-25 00:00:00 +02:00
12
+ date: 2008-12-04 00:00:00 +01:00
13
13
  default_executable: ig3cmd
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: ig3client
17
+ type: :runtime
17
18
  version_requirement:
18
19
  version_requirements: !ruby/object:Gem::Requirement
19
20
  requirements:
@@ -53,7 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
53
54
  requirements: []
54
55
 
55
56
  rubyforge_project:
56
- rubygems_version: 1.0.1
57
+ rubygems_version: 1.3.1
57
58
  signing_key:
58
59
  specification_version: 2
59
60
  summary: commandline ig3tool client