stocker 1.0.14 → 1.1.0

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.
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: