weighflow_cli 0.2.5 → 0.2.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f43616755fac94a4e1b1afc3095bdfd03ac5dc50dd2b42ee5ae838cf6023f37
4
- data.tar.gz: 4710b9900bca368eb76a530a15e15681357f513efdb2bdf559ce29e36393f7ba
3
+ metadata.gz: 93ff8b4ee53a8072ca02fba4d89306b6fa79e267acf5cef3b1b19e7f3026b513
4
+ data.tar.gz: 852410b8061d467471b9115a50ce9e9314c4cada5be144f2f7dfce1e207a757c
5
5
  SHA512:
6
- metadata.gz: 8afc73d0d13f07e9f1b893f80040b4dd4d5fa02ad664e7dc55e3567eb9430687cfe9ab956aac8c93bcef93fa80cceb0aa1940010203c2fdc67fbb2fb0f34c7a8
7
- data.tar.gz: ce913eb0ba65a20389c685c1a5aa4a4f51cd90f2d036949c9ae40930da53b49eecb9ec7bcc1e1dc2dd3ef64666841ba71a18117888daac1309b6f4a69d94c72b
6
+ metadata.gz: 553708867bc04f2ffe9287be500c07c5c22e7baf5e2a44a4504637dbff7b62f758abb99c245a47a36c3c447342f1fcbc8f7d01981320f4d77d43ec82eb458e46
7
+ data.tar.gz: b7fb62070b2028f027e630574f0c1903ab64bb13fc0b3ccef2e2a183ea44c27566f4ad09cf52b049e302ca6bd9b8c26b0c89fb1c0d91109738d63641da71c00f
data/.byebug_history CHANGED
@@ -1,3 +1,22 @@
1
+ q
2
+ C
3
+ WeighflowCli::ROOT_PATH
4
+ c
5
+ WeighflowCli::_ROOT_PATH
6
+ WeighflowCli
7
+ _ROOT_PATH
8
+ c
9
+ ap result.first.keys
10
+ ap keys
11
+ q
12
+ c
13
+ uri
14
+ uri.port = 80
15
+ uri.methods
16
+ ap uri
17
+ c
18
+ result.class
19
+ ap result
1
20
  c
2
21
  weight_params
3
22
  c
data/.gitignore CHANGED
@@ -7,6 +7,8 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  /.data/*
10
+ /spec/data
11
+
10
12
  # rspec failure tracking
11
13
  .rspec_status
12
14
  .secret.key
data/Gemfile CHANGED
@@ -10,4 +10,6 @@ gem "rake", "~> 13.0"
10
10
  gem "rspec", "~> 3.0"
11
11
  gem 'awesome_print'
12
12
  gem 'byebug'
13
- gem 'gem-release'
13
+ gem 'gem-release'
14
+ gem 'vcr'
15
+ gem 'webmock'
data/Gemfile.lock CHANGED
@@ -1,25 +1,32 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- weighflow_cli (0.2.4)
4
+ weighflow_cli (0.2.9)
5
5
  httparty
6
6
  thor (~> 1.1.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
+ addressable (2.7.0)
12
+ public_suffix (>= 2.0.2, < 5.0)
11
13
  awesome_print (1.8.0)
12
14
  byebug (11.1.3)
15
+ crack (0.4.5)
16
+ rexml
13
17
  diff-lcs (1.4.4)
14
18
  gem-release (2.2.1)
19
+ hashdiff (1.0.1)
15
20
  httparty (0.18.1)
16
21
  mime-types (~> 3.0)
17
22
  multi_xml (>= 0.5.2)
18
23
  mime-types (3.3.1)
19
24
  mime-types-data (~> 3.2015)
20
- mime-types-data (3.2020.1104)
25
+ mime-types-data (3.2021.0225)
21
26
  multi_xml (0.6.0)
27
+ public_suffix (4.0.6)
22
28
  rake (13.0.3)
29
+ rexml (3.2.4)
23
30
  rspec (3.10.0)
24
31
  rspec-core (~> 3.10.0)
25
32
  rspec-expectations (~> 3.10.0)
@@ -34,6 +41,11 @@ GEM
34
41
  rspec-support (~> 3.10.0)
35
42
  rspec-support (3.10.2)
36
43
  thor (1.1.0)
44
+ vcr (6.0.0)
45
+ webmock (3.12.0)
46
+ addressable (>= 2.3.6)
47
+ crack (>= 0.3.2)
48
+ hashdiff (>= 0.4.0, < 2.0.0)
37
49
 
38
50
  PLATFORMS
39
51
  ruby
@@ -45,6 +57,8 @@ DEPENDENCIES
45
57
  gem-release
46
58
  rake (~> 13.0)
47
59
  rspec (~> 3.0)
60
+ vcr
61
+ webmock
48
62
  weighflow_cli!
49
63
 
50
64
  BUNDLED WITH
data/exe/weighflow_cli CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require "weighflow_cli"
4
-
4
+
5
+
5
6
  WeighflowCli::Cli.start(ARGV)
data/lib/weighflow_cli.rb CHANGED
@@ -6,25 +6,35 @@ require 'httparty'
6
6
  require_relative "weighflow_cli/version"
7
7
  require_relative 'weighflow_cli/rendering'
8
8
  require_relative 'weighflow_cli/client'
9
+ #require_relative 'weighflow_cli/cli_weights'
9
10
  require_relative 'weighflow_cli/cli'
10
11
  require_relative 'weighflow_cli/credentials'
11
12
  require_relative 'weighflow_cli/order_handler'
12
13
 
14
+
13
15
 
14
16
  module WeighflowCli
15
17
 
16
18
  class Error < StandardError; end
17
19
  #
18
- _ROOT_PATH = File.expand_path('~/.weighflow_cli').freeze
20
+ ROOT_PATH = File.expand_path('~/.weighflow_cli').freeze
19
21
  #
20
- Dir.mkdir(_ROOT_PATH) unless Dir.exists?(_ROOT_PATH)
22
+ Dir.mkdir(ROOT_PATH) unless Dir.exists?(ROOT_PATH)
21
23
  #
24
+
22
25
  # Provide an override to relocate data directory
23
- DATA_PATH = ENV['WEIGHFLOW_CLI_PATH'] || File.join(_ROOT_PATH, 'data')
24
- #
25
- #
26
+ def self.data_path
27
+ return @data_path if defined?(@data_path)
28
+ @data_path ||= ENV.fetch('WEIGHFLOW_CLI_PATH') { File.join(WeighflowCli::ROOT_PATH, 'data') }
29
+ ensure_data_path
30
+ @data_path
31
+ end
32
+
33
+ ##
26
34
  # Ensure data path
27
- Dir.mkdir(DATA_PATH) unless Dir.exists?(DATA_PATH)
35
+ def self.ensure_data_path
36
+ Dir.mkdir(data_path) unless Dir.exists?(data_path)
37
+ end
28
38
  #
29
39
 
30
40
  Configuration = Struct.new(:secret, :url)
@@ -1,123 +1,17 @@
1
- require 'byebug'
1
+ require_relative 'cli_weights'
2
2
 
3
3
  module WeighflowCli
4
4
 
5
- class Weights < Thor
6
- include Rendering
7
-
8
- desc 'from_index [INDEX ID]', 'create weight from index'
9
- #option :index, required: true, banner: 'ie. CommodityOrder-T-I-002-3340455-01'
10
- option :gross, aliases: '-g', type: :numeric, required: true
11
- option :tare, aliases: '-t', type: :numeric, required: true
12
- option :certificate, aliases: '-c', required: true
13
- def from_index(index_id)
14
- raise 'index_id required' unless index_id
15
- index = WeighflowCli.find_order(index_id)
16
- raise 'index not found for id' unless index && index.data
17
- #
18
- # parse external id parts
19
- order_type, transport, io, location, order_num, lin = index.data[:external_unique_id].to_s.split('-')
20
- #
21
- # correct for diff in type between order and weight processor
22
- order_type = 'Inventory' if order_type == 'BulkInventory'
23
- #
24
- weight_params = {
25
- io: index.data[:i_o],
26
- order_id: index.data[:order_id],
27
- order_type: order_type,
28
- gross_weight: options[:gross].to_i,
29
- tare_weight: options[:tare].to_i,
30
- weighed_at: Time.now.round,
31
- certificate_number: options[:certificate].to_s
32
- }
33
-
34
- options_renderer(WeighflowCli.create_weight(params: weight_params), options)
35
- end
36
-
37
-
38
- desc 'template [INDEX_ID]', 'create weight template'
39
- def template(index_id)
40
- aise 'index_id required' unless index_id
41
- index = WeighflowCli.find_order(index_id)
42
- raise 'index not found for id' unless index && index.data
43
- #
44
- # parse external id parts
45
- order_type, transport, io, location, order_num, lin = index.data[:external_unique_id].to_s.split('-')
46
- #
47
- # correct for diff in type between order and weight processor
48
- order_type = 'Inventory' if order_type == 'BulkInventory'
49
- #
50
- weight_params = {
51
- io: index.data[:i_o],
52
- order_id: index.data[:order_id],
53
- order_type: order_type,
54
- gross_weight: 0,
55
- tare_weight: 0,
56
- weighed_at: Time.now.round,
57
- certificate_number: "{cert number}"
58
- }
59
- options_renderer(weight_params, options)
60
- end
61
-
62
-
63
- desc 'list', 'List weights within the last 24 hours'
64
- def list
65
- options_renderer(WeighflowCli.weights, options)
66
- end
67
-
68
-
69
-
70
- desc 'create', 'Create a weight given an order'
71
- long_desc <<~DESC
72
-
73
- weighflow_cli --file weight.json
74
-
75
- This file should contain a minimum of :
76
-
77
- {
78
- order_type: "Commodity",
79
- io: "O",
80
- order_id: "{integer}",
81
- gross_weight: "75000",
82
- tare_weight: "25444",
83
- weighed_at: "2021-02-26 10:15:41 am",
84
- release_number: "",
85
- truck_license_number: "",
86
- trailer1_license_number: "",
87
- trailer2_license_number: "",
88
- truck_number: "",
89
- driver_name: "",
90
- driver_number: ""
91
- }
92
-
93
- --
94
- DESC
95
- option :file, aliases: '-f', required: true, banner: '[File name] json format'
96
- def create
97
- weight_params = JSON.parse(File.read(options[:file]), symbolize_names: true)
98
- puts weight_params
99
-
100
- options_renderer(WeighflowCli.create_weight(params: weight_params), options)
101
- #options_renderer(options, options)
102
- end
103
-
104
-
105
- desc 'void', 'Voided a weight within 24 hours'
106
- option :weight_id, required: true
107
- option :reason, required: true
108
- def void
109
- options_renderer(WeighflowCli.void_weight(options[:weight_id], options[:reason]), options)
110
- end
111
-
112
- end
113
-
5
+
114
6
  class Cli < Thor
115
7
  include Rendering
8
+
9
+
116
10
  package_name "WeighflowCli"
117
11
  class_option :yaml, type: :boolean
118
12
 
119
13
  desc 'weights', 'weights commands'
120
- subcommand 'weights', Weights
14
+ subcommand 'weights', CliWeights
121
15
 
122
16
  def self.exit_on_failure?
123
17
  false
@@ -131,7 +25,7 @@
131
25
 
132
26
  desc 'data_path', "Current data path"
133
27
  def data_path
134
- puts DATA_PATH
28
+ puts WeighflowCli.data_path
135
29
  end
136
30
 
137
31
 
@@ -139,17 +33,13 @@
139
33
  def login
140
34
  Credentials.login
141
35
  end
142
-
143
-
144
-
36
+
145
37
 
146
38
  desc "pull", "Pull Orders from Weighflow"
147
39
  def pull
148
40
  options_renderer(WeighflowCli.pull, options)
149
41
  end
150
-
151
-
152
-
42
+
153
43
 
154
44
  desc 'list', "List currently pulled orders"
155
45
  def list
@@ -160,14 +50,6 @@
160
50
  def indexes
161
51
  options_renderer(WeighflowCli.list(indexes_only: true), options)
162
52
  end
163
-
164
-
165
-
166
-
167
-
168
-
169
-
170
-
171
53
 
172
54
 
173
55
  desc 'find_order', 'Find order details'
@@ -0,0 +1,111 @@
1
+
2
+ module WeighflowCli
3
+ class CliWeights < Thor
4
+ include Rendering
5
+
6
+ desc 'from_index [INDEX ID]', 'create weight from index'
7
+ #option :index, required: true, banner: 'ie. CommodityOrder-T-I-002-3340455-01'
8
+ option :gross, aliases: '-g', type: :numeric, required: true
9
+ option :tare, aliases: '-t', type: :numeric, required: true
10
+ option :certificate, aliases: '-c', required: true
11
+ def from_index(index_id)
12
+ raise 'index_id required' unless index_id
13
+ index = WeighflowCli.find_order(index_id)
14
+ raise 'index not found for id' unless index && index.data
15
+ #
16
+ # parse external id parts
17
+ order_type, transport, io, location, order_num, lin = index.data[:external_unique_id].to_s.split('-')
18
+ #
19
+ # correct for diff in type between order and weight processor
20
+ order_type = 'Inventory' if order_type == 'BulkInventory'
21
+ #
22
+ weight_params = {
23
+ io: index.data[:i_o],
24
+ order_id: index.data[:order_id],
25
+ order_type: order_type,
26
+ gross_weight: options[:gross].to_i,
27
+ tare_weight: options[:tare].to_i,
28
+ weighed_at: Time.now.round,
29
+ certificate_number: options[:certificate].to_s
30
+ }
31
+
32
+ options_renderer(WeighflowCli.create_weight(params: weight_params), options)
33
+ end
34
+
35
+
36
+ desc 'template [INDEX_ID]', 'create weight template'
37
+ def template(index_id)
38
+ aise 'index_id required' unless index_id
39
+ index = WeighflowCli.find_order(index_id)
40
+ raise 'index not found for id' unless index && index.data
41
+ #
42
+ # parse external id parts
43
+ order_type, transport, io, location, order_num, lin = index.data[:external_unique_id].to_s.split('-')
44
+ #
45
+ # correct for diff in type between order and weight processor
46
+ order_type = 'Inventory' if order_type == 'BulkInventory'
47
+ #
48
+ weight_params = {
49
+ io: index.data[:i_o],
50
+ order_id: index.data[:order_id],
51
+ order_type: order_type,
52
+ gross_weight: 0,
53
+ tare_weight: 0,
54
+ weighed_at: Time.now.round,
55
+ certificate_number: "{cert number}"
56
+ }
57
+ options_renderer(weight_params, options)
58
+ end
59
+
60
+
61
+ desc 'list', 'List weights within the last 24 hours'
62
+ def list
63
+ options_renderer(WeighflowCli.weights, options)
64
+ end
65
+
66
+
67
+
68
+ desc 'create', 'Create a weight given an order'
69
+ long_desc <<~DESC
70
+
71
+ weighflow_cli --file weight.json
72
+
73
+ This file should contain a minimum of :
74
+
75
+ {
76
+ order_type: "Commodity",
77
+ io: "O",
78
+ order_id: "{integer}",
79
+ gross_weight: "75000",
80
+ tare_weight: "25444",
81
+ weighed_at: "2021-02-26 10:15:41 am",
82
+ release_number: "",
83
+ truck_license_number: "",
84
+ trailer1_license_number: "",
85
+ trailer2_license_number: "",
86
+ truck_number: "",
87
+ driver_name: "",
88
+ driver_number: ""
89
+ }
90
+
91
+ --
92
+ DESC
93
+ option :file, aliases: '-f', required: true, banner: '[File name] json format'
94
+ def create
95
+ weight_params = JSON.parse(File.read(options[:file]), symbolize_names: true)
96
+ puts weight_params
97
+
98
+ options_renderer(WeighflowCli.create_weight(params: weight_params), options)
99
+ #options_renderer(options, options)
100
+ end
101
+
102
+
103
+ desc 'void', 'Voided a weight within 24 hours'
104
+ option :weight_id, required: true
105
+ option :reason, required: true
106
+ def void
107
+ options_renderer(WeighflowCli.void_weight(options[:weight_id], options[:reason]), options)
108
+ end
109
+
110
+ end
111
+ end
@@ -21,7 +21,7 @@ module WeighflowCli
21
21
 
22
22
  def create_weight(params: {})
23
23
  response = self.class.post('/weights', body: params)
24
- render_json(response)
24
+ render_json(response)
25
25
  end
26
26
 
27
27
  def void_weight(weight_id, reason)
@@ -5,7 +5,7 @@ module WeighflowCli
5
5
 
6
6
 
7
7
  def self.key_store_config
8
- File.join(DATA_PATH, '.config.yaml')
8
+ File.join(WeighflowCli.data_path, '.config.yaml')
9
9
  end
10
10
 
11
11
 
@@ -64,7 +64,7 @@ module WeighflowCli
64
64
  #
65
65
  # Data index file name
66
66
  def index_file_name
67
- @index_file_name ||= File.join(DATA_PATH, 'orders_index_cache')
67
+ @index_file_name ||= File.join(WeighflowCli.data_path, 'orders_index_cache')
68
68
  end
69
69
 
70
70
 
@@ -85,7 +85,7 @@ module WeighflowCli
85
85
  #
86
86
  # Build the file name from the checksum
87
87
  def build_detail_file_name(order)
88
- File.join(DATA_PATH, 'order_' + create_checksum(order) + '.json')
88
+ File.join(WeighflowCli.data_path, 'order_' + create_checksum(order) + '.json')
89
89
  end
90
90
 
91
91
 
@@ -4,7 +4,7 @@ module WeighflowCli
4
4
  if options[:yaml]
5
5
  puts result.to_yaml
6
6
  else
7
- puts result.to_json
7
+ puts JSON.pretty_generate(result)
8
8
  end
9
9
  end
10
10
  end
@@ -3,7 +3,7 @@
3
3
 
4
4
 
5
5
  module WeighflowCli
6
- VERSION = "0.2.5"
6
+ VERSION = "0.2.10"
7
7
 
8
8
 
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weighflow_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bruce Martin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-02-26 00:00:00.000000000 Z
11
+ date: 2021-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -60,6 +60,7 @@ files:
60
60
  - exe/weighflow_cli
61
61
  - lib/weighflow_cli.rb
62
62
  - lib/weighflow_cli/cli.rb
63
+ - lib/weighflow_cli/cli_weights.rb
63
64
  - lib/weighflow_cli/client.rb
64
65
  - lib/weighflow_cli/credentials.rb
65
66
  - lib/weighflow_cli/order_handler.rb