stocker 1.0.14 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|