stocker 1.0.14 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/stocker +1 -1
  3. data/lib/stocker.rb +104 -54
  4. metadata +29 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e69deb8fecd1264f0e87d6771fa6f523090dcff6
4
- data.tar.gz: b2f11a35556495b07c4dbd266c01318db7089c94
3
+ metadata.gz: 2b7b473f277fa7b86bfcd52475d1b1c91f6ecddf
4
+ data.tar.gz: fa90747434c31c3b660f9730da3554c4c34a9c7a
5
5
  SHA512:
6
- metadata.gz: 80f238bc543d1d5bd8365d26336887772bcccac83c81f9a593a9a062526c519a72f39392c0b033d13f470d3a8f5b41d70366b3162c05476f5cc2567a2bb1513a
7
- data.tar.gz: f83518d0fc073719113b7f58a3083972f0238b1ba007c6dcbc1dd4c65355a25c53d8afbf60f0568161cc4e4abaf511b76f28a65ad393e1abce13ba210e903c11
6
+ metadata.gz: aeec67333fbf2f584b1bc9ad1ecebbbd575fb976bdaadbba984cb28703ce4497f7509aae616a4011fc798a8f7485eebd65a04191a5f7547582becab56422b950
7
+ data.tar.gz: 579657b693335f62e123b0040fb4faa31eea7ea2766d26d92f9f219bb28c0a19119409e5fedb63d730ef5e223c9a228dc3a99bd3b1e123be9bdeaef64843c4f0
@@ -3,4 +3,4 @@
3
3
  require File.dirname(__FILE__) + '/../lib/stocker.rb'
4
4
 
5
5
  Stocker::Generator.start(ARGV)
6
- Stocker::Generator.save
6
+ # Stocker::Generator.save
@@ -10,52 +10,27 @@ module Stocker
10
10
  class Generator < Thor
11
11
  trap("SIGINT") { exit 0 }
12
12
 
13
- @@path = nil
14
-
15
- private
16
-
17
- def self.check_for_dropbox
18
- home = Dir.home
19
- db = "#{Dir.home}/Dropbox"
20
- home_path = Pathname.new(home)
21
- db_path = Pathname.new(db)
22
- @@path = db_path || home_path
23
- %x{mv #{@@path}/.stocker.yml #{@@path}.stocker.yaml} if File.exist?("#{@@path}/.stocker.yml")
24
- end
25
-
26
- public
27
-
28
- check_for_dropbox
29
- @@yaml = Pathname.new("#{@@path}/.stocker.yaml")
30
- `touch #{@@yaml}`
31
- @@stock = YAML.load(@@yaml.read)
32
- @@stock = {} unless @@stock.class == Hash
33
-
34
- private
35
-
36
- def match_name(item)
37
- @@stock.each_key { |key| @@item = key if key =~ /#{item}/ }
38
- end
39
-
40
- public
41
-
42
13
  desc "new ITEM TOTAL", "Add ITEM with TOTAL on hand to inventory."
43
- option :url, :aliases => :u, :default => 'http://amazon.com'
14
+ option :url, :aliases => :u
44
15
  option :minimum, :aliases => :m, :default => 1
45
16
  def new(item, total)
46
- @@stock[item] = {'total' => total.to_i, 'min' => options[:minimum].to_i, 'url' => options[:url], 'checked' => Time.now}
17
+ data = read_file
18
+ data[item] = {'total' => total.to_i, 'min' => options[:minimum].to_i, 'url' => options[:url] || read_config['url'], 'checked' => Time.now}
19
+ write_file(data)
47
20
  end
48
21
 
49
22
  desc "delete ITEM", "Delete ITEM from inventory."
50
23
  def delete(item)
24
+ data = read_file
51
25
  match_name(item)
52
- @@stock.delete(@@item)
26
+ data.delete(@@item)
27
+ write_file(data)
53
28
  end
54
29
 
55
30
  desc "check", "Check for low stock items."
56
31
  def check
57
32
  links = []
58
- @@stock.each do |key, value|
33
+ read_file.each do |key, value|
59
34
  value["checked"] = Time.now
60
35
  if value["total"] < value["min"]
61
36
  puts "You're running low on #{key}!"
@@ -68,47 +43,39 @@ module Stocker
68
43
 
69
44
  desc "total ITEM TOTAL", "Set TOTAL of ITEM."
70
45
  def total(item, total)
46
+ data = read_file
71
47
  match_name(item)
72
- @@stock[@@item]["total"] = total.to_i
48
+ data[@@item]["total"] = total.to_i
73
49
  time(item)
50
+ write_file(data)
74
51
  end
75
52
 
76
- private
77
-
78
- def time(item)
79
- match_name(item)
80
- @@stock[@@item]["checked"] = Time.now
81
- end
82
-
83
- def self.save
84
- @@yaml.open('w') { |t| t << @@stock.to_yaml }
85
- # @@yaml.write(@@stock.to_yaml)
86
- end
87
-
88
- public
89
-
90
53
  desc "url ITEM URL", "Set URL of ITEM."
91
54
  def url(item, url)
55
+ data = read_file
92
56
  match_name(item)
93
- @@stock[@@item]["url"] = url
57
+ data[@@item]["url"] = url
94
58
  time(item)
59
+ write_file(data)
95
60
  end
96
61
 
97
62
  desc "buy ITEM", "Open link to buy ITEM"
98
63
  def buy(item)
99
64
  match_name(item)
100
- `open -a Safari #{@@stock[@@item]["url"]}`
65
+ `open -a Safari #{read_file[@@item]["url"]}`
101
66
  end
102
67
 
103
68
  desc "min ITEM MINIMUM", "Set minimum acceptable amount for ITEM."
104
69
  def min(item, min)
70
+ data = read_file
105
71
  match_name(item)
106
- @@stock[@@item]["min"] = min.to_i
72
+ data[@@item]["min"] = min.to_i
73
+ write_file(data)
107
74
  end
108
75
 
109
76
  desc "count", "Take an interactive inventory."
110
77
  def count
111
- @@stock.each do |key, value|
78
+ read_file.each do |key, value|
112
79
  value["checked"] = Time.now
113
80
  value["total"] = ask("#{key.titlecase}:", *args).to_i
114
81
  end
@@ -117,7 +84,7 @@ module Stocker
117
84
 
118
85
  desc "csv", "Write entire inventory as CSV."
119
86
  def csv
120
- @@stock.each { |key, value| puts "#{key.titlecase},#{value['total']},#{value['min']},#{value['url']},#{value['checked']}" }
87
+ read_file.each { |key, value| puts "#{key.titlecase},#{value['total']},#{value['min']},#{value['url']},#{value['checked']}" }
121
88
  end
122
89
 
123
90
  desc "list", "List all inventory items and total on hand."
@@ -139,7 +106,7 @@ module Stocker
139
106
  @green2 = []
140
107
  @red = []
141
108
  @red2 = []
142
- @@stock.each do |key, value|
109
+ read_file.each do |key, value|
143
110
  if value['total'] > value['min']
144
111
  @green += [[key.titlecase,value['total'], value['total']-value['min']]]
145
112
  elsif value['total'] == value['min']
@@ -162,5 +129,88 @@ module Stocker
162
129
  puts "Inventory empty"
163
130
  end
164
131
  end
132
+
133
+ desc "config", "Set configuration settings for stocker."
134
+ option :url, :aliases => :u, :type => :string, :required => true
135
+ def config
136
+ settings = read_config
137
+ settings['url'] = options[:url] || 'http://amazon.com'
138
+ write_config(settings)
139
+ end
140
+
141
+ no_commands do
142
+ def path
143
+ dropbox = Pathname.new("#{ENV['HOME']}/Dropbox/")
144
+ home = Pathname.new("#{ENV['HOME']}/")
145
+ path = dropbox.exist? ? dropbox : home
146
+ end
147
+
148
+ def config_file
149
+ path.join(".stocker.config.yaml")
150
+ end
151
+
152
+ def read_config
153
+ config_file_exist?
154
+ YAML.load(config_file.read)
155
+ end
156
+
157
+ def write_file(hash)
158
+ file.open('w') { |t| t << hash.to_yaml }
159
+ end
160
+
161
+ def write_config(hash)
162
+ config_file.open('w') { |t| t << hash.to_yaml }
163
+ end
164
+
165
+ def editor
166
+ read_config[:editor]
167
+ end
168
+
169
+ def file
170
+ path.join(".stocker.yaml")
171
+ end
172
+
173
+ def read_file
174
+ YAML.load(file.read)
175
+ end
176
+
177
+ def config_file_exist?
178
+ return true if config_file.exist?
179
+ create_config_file
180
+ return true
181
+ end
182
+
183
+ def file_exist?
184
+ return true if file.exist?
185
+ create_file
186
+ return true
187
+ end
188
+
189
+ def create_config_file
190
+ FileUtils.touch(config_file)
191
+ settings = {}
192
+ settings['url'] = 'http://amazon.com'
193
+ write_config(settings)
194
+ end
195
+
196
+ def create_file
197
+ FileUtils.touch(file)
198
+ end
199
+
200
+ def today
201
+ Date.today
202
+ end
203
+
204
+ def time(item)
205
+ data = read_file
206
+ match_name(item)
207
+ data[@@item]["checked"] = Time.now
208
+ write_file(data)
209
+ end
210
+
211
+ def match_name(item)
212
+ read_file.each_key { |key| @@item = key if key =~ /#{item}/ }
213
+ end
214
+ end
165
215
  end
166
216
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stocker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.14
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Pittman
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: cucumber
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: aruba
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  description: stocker will help track how many of something you have on hand.
42
70
  email: brandonpittman@gmail.com
43
71
  executables: