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.
- checksums.yaml +4 -4
- data/bin/stocker +1 -1
- data/lib/stocker.rb +104 -54
- metadata +29 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b7b473f277fa7b86bfcd52475d1b1c91f6ecddf
|
4
|
+
data.tar.gz: fa90747434c31c3b660f9730da3554c4c34a9c7a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aeec67333fbf2f584b1bc9ad1ecebbbd575fb976bdaadbba984cb28703ce4497f7509aae616a4011fc798a8f7485eebd65a04191a5f7547582becab56422b950
|
7
|
+
data.tar.gz: 579657b693335f62e123b0040fb4faa31eea7ea2766d26d92f9f219bb28c0a19119409e5fedb63d730ef5e223c9a228dc3a99bd3b1e123be9bdeaef64843c4f0
|
data/bin/stocker
CHANGED
data/lib/stocker.rb
CHANGED
@@ -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
|
14
|
+
option :url, :aliases => :u
|
44
15
|
option :minimum, :aliases => :m, :default => 1
|
45
16
|
def new(item, total)
|
46
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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 #{
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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:
|