console_utils 0.6.1 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 1237df5c83cc470db4751037fb4c69b6621107b6
4
- data.tar.gz: cf25ad98fd29ef7e64ff4492f90f53af900aa7a4
2
+ SHA256:
3
+ metadata.gz: a398186f93724b6e079f8443d514f2e509c68cff8b2f30194538369007278818
4
+ data.tar.gz: 73897b3d111dd2faaa0a53a20f89a2bff7ef7a7e14752ff46ce33bc942218f84
5
5
  SHA512:
6
- metadata.gz: f55c1bc099188665849ae15e78937a856d47fb595e63c0acf407f3d74a84d48736c4f7de308c516c9018d0f7f16209e827b81c93982270cb0608d03d28301594
7
- data.tar.gz: 12e769585f1c0e8e3bb331e39c5c9ac1db266498e0a59d0bcd208d6c29fe4f56b1ffdcbc04fb71d56f64a88a509c2a04fe47437ca15073958b2ca7add44bbbeb
6
+ metadata.gz: 94d282e685e0cda6ca1ab63dad2a647f4b39b9ac26800caef074988315e6230626315c3b12c8a8e9be6245a598412bedd2d9fdfcf476e64d92c7711201219434
7
+ data.tar.gz: 857a57629b1fd1ab6ab855f0b8dc3ac7a4349b1def0729359e9439efe9c1c75cb1d6f1156d41ea8eb19b36a4f0ae1eafa7e4ab886e4e7bedc72cc6ff0fa1e4b2
@@ -1,3 +1,4 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.2.1
3
+ - 2.2.2
4
+ - 2.3.0
data/Appraisals CHANGED
@@ -2,4 +2,10 @@ appraise "rails42" do
2
2
  gem "rails", "~> 4.2"
3
3
  gem "sqlite3"
4
4
  gem "pry-rails"
5
+ end
6
+
7
+ appraise "rails5" do
8
+ gem "rails", "~> 5"
9
+ gem "sqlite3"
10
+ gem "pry-rails"
5
11
  end
data/README.md CHANGED
@@ -184,7 +184,7 @@ Also provides shorthand to find any user by id: `usr(id)`
184
184
  ## OtherUtils
185
185
 
186
186
  #### clr()
187
- Term::ANSIColor shorthand
187
+ [Pastel](https://github.com/piotrmurach/pastel) shorthand
188
188
 
189
189
  #### shutting(:engine_key[, to: logger_level]) {}
190
190
  Shuts up the logger of a specified Rails engine for a given key (`:rails`, `:record`, `:controller` or `:view`).
@@ -20,8 +20,8 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ["lib"]
21
21
  spec.required_ruby_version = ">= 2.1"
22
22
 
23
- spec.add_dependency "activesupport", ">= 4.1", "< 5"
24
- spec.add_dependency "term-ansicolor"
23
+ spec.add_dependency "activesupport", ">= 5.2", "< 7"
24
+ spec.add_dependency "pastel"
25
25
  spec.add_dependency "awesome_print"
26
26
  spec.add_dependency "benchmark-ips"
27
27
  spec.add_dependency "pry-rails"
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- console_utils (0.6.0.2)
5
- activesupport (>= 4.1, < 5)
4
+ console_utils (0.6.1)
5
+ activesupport (>= 4.1, < 6)
6
6
  awesome_print
7
7
  benchmark-ips
8
8
  pry-rails
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 5"
6
+ gem "sqlite3"
7
+ gem "pry-rails"
8
+
9
+ gemspec :path => "../"
@@ -0,0 +1,149 @@
1
+ PATH
2
+ remote: ../
3
+ specs:
4
+ console_utils (0.6.1)
5
+ activesupport (>= 4.1, < 6)
6
+ awesome_print
7
+ benchmark-ips
8
+ pry-rails
9
+ term-ansicolor
10
+
11
+ GEM
12
+ remote: https://rubygems.org/
13
+ specs:
14
+ actioncable (5.0.0)
15
+ actionpack (= 5.0.0)
16
+ nio4r (~> 1.2)
17
+ websocket-driver (~> 0.6.1)
18
+ actionmailer (5.0.0)
19
+ actionpack (= 5.0.0)
20
+ actionview (= 5.0.0)
21
+ activejob (= 5.0.0)
22
+ mail (~> 2.5, >= 2.5.4)
23
+ rails-dom-testing (~> 2.0)
24
+ actionpack (5.0.0)
25
+ actionview (= 5.0.0)
26
+ activesupport (= 5.0.0)
27
+ rack (~> 2.0)
28
+ rack-test (~> 0.6.3)
29
+ rails-dom-testing (~> 2.0)
30
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
31
+ actionview (5.0.0)
32
+ activesupport (= 5.0.0)
33
+ builder (~> 3.1)
34
+ erubis (~> 2.7.0)
35
+ rails-dom-testing (~> 2.0)
36
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
37
+ activejob (5.0.0)
38
+ activesupport (= 5.0.0)
39
+ globalid (>= 0.3.6)
40
+ activemodel (5.0.0)
41
+ activesupport (= 5.0.0)
42
+ activerecord (5.0.0)
43
+ activemodel (= 5.0.0)
44
+ activesupport (= 5.0.0)
45
+ arel (~> 7.0)
46
+ activesupport (5.0.0)
47
+ concurrent-ruby (~> 1.0, >= 1.0.2)
48
+ i18n (~> 0.7)
49
+ minitest (~> 5.1)
50
+ tzinfo (~> 1.1)
51
+ appraisal (2.1.0)
52
+ bundler
53
+ rake
54
+ thor (>= 0.14.0)
55
+ arel (7.1.1)
56
+ awesome_print (1.7.0)
57
+ benchmark-ips (2.7.0)
58
+ builder (3.2.2)
59
+ coderay (1.1.1)
60
+ concurrent-ruby (1.0.2)
61
+ erubis (2.7.0)
62
+ globalid (0.3.7)
63
+ activesupport (>= 4.1.0)
64
+ i18n (0.7.0)
65
+ json (1.8.3)
66
+ loofah (2.0.3)
67
+ nokogiri (>= 1.5.9)
68
+ mail (2.6.4)
69
+ mime-types (>= 1.16, < 4)
70
+ method_source (0.8.2)
71
+ mime-types (3.1)
72
+ mime-types-data (~> 3.2015)
73
+ mime-types-data (3.2016.0521)
74
+ mini_portile2 (2.1.0)
75
+ minitest (5.9.0)
76
+ nio4r (1.2.1)
77
+ nokogiri (1.6.8)
78
+ mini_portile2 (~> 2.1.0)
79
+ pkg-config (~> 1.1.7)
80
+ pkg-config (1.1.7)
81
+ pry (0.10.4)
82
+ coderay (~> 1.1.0)
83
+ method_source (~> 0.8.1)
84
+ slop (~> 3.4)
85
+ pry-rails (0.3.4)
86
+ pry (>= 0.9.10)
87
+ rack (2.0.1)
88
+ rack-test (0.6.3)
89
+ rack (>= 1.0)
90
+ rails (5.0.0)
91
+ actioncable (= 5.0.0)
92
+ actionmailer (= 5.0.0)
93
+ actionpack (= 5.0.0)
94
+ actionview (= 5.0.0)
95
+ activejob (= 5.0.0)
96
+ activemodel (= 5.0.0)
97
+ activerecord (= 5.0.0)
98
+ activesupport (= 5.0.0)
99
+ bundler (>= 1.3.0, < 2.0)
100
+ railties (= 5.0.0)
101
+ sprockets-rails (>= 2.0.0)
102
+ rails-dom-testing (2.0.1)
103
+ activesupport (>= 4.2.0, < 6.0)
104
+ nokogiri (~> 1.6.0)
105
+ rails-html-sanitizer (1.0.3)
106
+ loofah (~> 2.0)
107
+ railties (5.0.0)
108
+ actionpack (= 5.0.0)
109
+ activesupport (= 5.0.0)
110
+ method_source
111
+ rake (>= 0.8.7)
112
+ thor (>= 0.18.1, < 2.0)
113
+ rake (11.2.2)
114
+ rdoc (4.2.2)
115
+ json (~> 1.4)
116
+ slop (3.6.0)
117
+ sprockets (3.7.0)
118
+ concurrent-ruby (~> 1.0)
119
+ rack (> 1, < 3)
120
+ sprockets-rails (3.1.1)
121
+ actionpack (>= 4.0)
122
+ activesupport (>= 4.0)
123
+ sprockets (>= 3.0.0)
124
+ sqlite3 (1.3.11)
125
+ term-ansicolor (1.3.2)
126
+ tins (~> 1.0)
127
+ thor (0.19.1)
128
+ thread_safe (0.3.5)
129
+ tins (1.12.0)
130
+ tzinfo (1.2.2)
131
+ thread_safe (~> 0.1)
132
+ websocket-driver (0.6.4)
133
+ websocket-extensions (>= 0.1.0)
134
+ websocket-extensions (0.1.2)
135
+
136
+ PLATFORMS
137
+ ruby
138
+
139
+ DEPENDENCIES
140
+ appraisal
141
+ console_utils!
142
+ minitest
143
+ pry-rails
144
+ rails (~> 5)
145
+ rdoc
146
+ sqlite3
147
+
148
+ BUNDLED WITH
149
+ 1.12.5
@@ -1,7 +1,7 @@
1
1
  require 'active_support'
2
2
  require 'active_support/core_ext'
3
3
  require 'active_support/tagged_logging'
4
- require 'term/ansicolor'
4
+ require 'pastel'
5
5
  require 'console_utils/core_ext/array_to_proc'
6
6
  require 'console_utils/core_ext/local_values'
7
7
  require 'console_utils/version'
@@ -140,6 +140,12 @@ module ConsoleUtils
140
140
  # which is useful when using the +simple_token_automator+ gem.
141
141
  mattr_accessor(:auth_automator) { ConsoleUtils::RequestUtils::DefaultAuthAutomator }
142
142
 
143
+ # :attr:
144
+ # Keeps any amount of callable objects to invoke them before each request,
145
+ # with an instance of <tt>ConsoleUtils::RequestUtils::RequestParams</tt>
146
+ # as only the argument.
147
+ # (default: <tt>[]</tt>)
148
+ mattr_accessor(:request_hooks) { [] }
143
149
 
144
150
  # :section: Class Methods
145
151
 
@@ -201,6 +207,10 @@ module ConsoleUtils
201
207
  def setup_modules_to(context = nil)
202
208
  ReplState.setup(context)
203
209
  end
210
+
211
+ def pastel
212
+ @pastel ||= Pastel.new
213
+ end
204
214
  end
205
215
 
206
216
  ActiveSupport.run_load_hooks(:console_utils, self)
@@ -6,7 +6,7 @@ module ConsoleUtils #:nodoc:
6
6
 
7
7
  def self.extended(mod)
8
8
  ActiveSupport.on_load(:active_record) do
9
- ActiveRecord::Relation.send(:include, RandomRecord::FinderMethods)
9
+ ActiveRecord::Relation.send(:prepend, RandomRecord::FinderMethods)
10
10
  ActiveRecord::Base.send(:extend, RandomRecord::Querying)
11
11
  end
12
12
  end
@@ -9,8 +9,16 @@ module ConsoleUtils::ActiveRecordUtils #:nodoc:
9
9
  random.first
10
10
  end
11
11
 
12
- def anyid
13
- model.type_for_attribute('id').type_cast(connection.select_value(select(:id).random.limit(1)))
12
+ def anyid(n = nil)
13
+ if n
14
+ @_anyid_history[-n.abs].presence || anyid()
15
+ else
16
+ idval = connection.select_value(select(:id).random.limit(1))
17
+ model.type_for_attribute('id').send(:cast_value, idval).tap do |result|
18
+ (@_anyid_history ||= []) << result
19
+ @_anyid_history.shift if @_anyid_history.size > 10
20
+ end
21
+ end
14
22
  end
15
23
  end
16
24
 
@@ -1,8 +1,8 @@
1
1
  module ConsoleUtils #:nodoc:
2
2
  module OtherUtils
3
- # <tt>Term::ANSIColor</tt> shorthand
3
+ # <tt>Pastel</tt> shorthand
4
4
  def clr
5
- Term::ANSIColor
5
+ ConsoleUtils.pastel
6
6
  end
7
7
 
8
8
  # :call-seq:
@@ -1,7 +1,6 @@
1
1
  module ConsoleUtils::RequestUtils
2
2
  class DefaultAuthAutomator
3
3
  def self.call(rq)
4
- p rq
5
4
  if rq.can_auto_auth?
6
5
  rq.params[ConsoleUtils.token_param] ||= ConsoleUtils.default_token.presence || ConsoleUtils.auto_token_for(rq.uid)
7
6
  end
@@ -4,12 +4,15 @@ module ConsoleUtils::RequestUtils #:nodoc:
4
4
  class Exap < Requester
5
5
  INSPECT_FORMAT = "<Local: %s (%s)>".freeze
6
6
 
7
- ConsoleUtils.request_methods.each do |reqm|
8
- define_method(reqm) do |*args|
9
- @url, *@_args = args
10
- app.public_send(reqm, @url, *normalize_args)
11
- self
12
- end
7
+ ConsoleUtils.request_methods.each do |request_method|
8
+ class_eval <<~RUBY, __FILE__, __LINE__ + 1
9
+ def #{request_method}(url, *args)
10
+ @url = url
11
+ @_args = args
12
+ app.process(:#{request_method}, @url, **normalize_args.to_h)
13
+ self
14
+ end
15
+ RUBY
13
16
  end
14
17
 
15
18
  def to_s
@@ -1,21 +1,25 @@
1
1
  require 'uri'
2
- require "console_utils/request_utils/requester"
2
+ require 'open3'
3
+ require 'shellwords'
4
+ require 'console_utils/request_utils/requester'
3
5
 
4
6
  module ConsoleUtils::RequestUtils #:nodoc:
5
7
  class Remo < Requester
6
- OUT_FORMAT = "\n%{size_download}\n%{time_total}".freeze
7
8
  INSPECT_FORMAT = "<Remote: %s in %s ms>".freeze
8
9
  INSPECT_NOTHING = "<Remote: nothing>".freeze
9
10
 
10
11
  attr_reader :request_method
11
12
 
12
- ConsoleUtils.request_methods.each do |reqm|
13
- define_method(reqm) do |url, *args|
14
- @_args = args
15
- @url = urlify(url, *normalize_args)
16
- @request_method = reqm.to_s.upcase
17
- perform
18
- end
13
+ ConsoleUtils.request_methods.each do |request_method|
14
+ class_eval <<~RUBY, __FILE__, __LINE__ + 1
15
+ def #{request_method}(url, *args)
16
+ @_args = args
17
+ @request_method = "#{request_method.to_s.upcase}"
18
+ @request_params = normalize_args
19
+ @url = urlify(url, @request_params.params)
20
+ perform
21
+ end
22
+ RUBY
19
23
  end
20
24
 
21
25
  def inspect
@@ -30,30 +34,125 @@ module ConsoleUtils::RequestUtils #:nodoc:
30
34
  @_body
31
35
  end
32
36
 
37
+ attr_reader :_result
38
+
33
39
  protected
34
40
 
35
41
  def perform
36
- IO.popen(curl_command, "r+") { |io| set_payload!(io.readlines) }
42
+ data = @request_params.params.to_json unless params_to_query?
43
+ Curl.(request_method, url, data: data, headers: @request_params.headers) do |result, payload|
44
+ @_result = result
45
+ set_payload!(payload)
46
+ end
37
47
  end
38
48
 
39
49
  private
40
50
 
41
- def set_payload!((*body_lines, size, time))
51
+ def set_payload!((*body_lines, code, time, size))
42
52
  @_body = body_lines.join
53
+ @_code = code.to_i
43
54
  @_size = size.to_f
44
55
  @_time = time.tr(?,, ?.).to_f
45
56
  self
46
57
  end
47
58
 
48
- def curl_command
49
- %W(#{ConsoleUtils.curl_bin} --silent --write-out #{OUT_FORMAT} -X #{request_method} #{url}).
50
- tap { |cmd| puts "# #{cmd.shelljoin.inspect}" unless ConsoleUtils.curl_silence }
59
+ def urlify(path, options = nil)
60
+ URI.join(ConsoleUtils.remote_endpoint, path).
61
+ tap { |uri| uri.query = options.to_query if options && params_to_query? }.to_s
51
62
  end
52
63
 
53
- def urlify(*args)
54
- options = args.extract_options!
55
- URI.join(ConsoleUtils.remote_endpoint, *args).
56
- tap { |uri| uri.query = options.to_query }.to_s
64
+ def params_to_query?
65
+ ["GET", "HEAD"].include?(@request_method) || @request_method.headers["Content-Type"] != "application/json"
66
+ end
67
+
68
+ class Curl
69
+ OUT_FORMAT = '\n%{http_code}\n%{time_total}\n%{size_download}'.freeze
70
+ HEADER_JOIN_PROC = proc { |*kv| ["-H", kv.flatten.join(": ")] }
71
+
72
+ def self.call(*args)
73
+ result = new(*args)
74
+ yield(result.to_h, result.payload)
75
+ end
76
+
77
+ attr_reader :request, :response, :payload
78
+
79
+ def initialize(request_method, url, data: nil, headers: nil)
80
+ cmd = %W(#{ConsoleUtils.curl_bin} --silent -v -g)
81
+ cmd.push("-X#{request_method}")
82
+ cmd.push(url)
83
+
84
+ cmd.concat(headers.flat_map(&HEADER_JOIN_PROC)) if headers.present?
85
+ cmd.push("-d", data) if data.present?
86
+
87
+ cmd_line = Shellwords.join(cmd)
88
+ cmd_line << %( --write-out "#{OUT_FORMAT}")
89
+
90
+ puts "$ #{cmd_line}" if verbose?
91
+
92
+ @response = {}
93
+ @request = {}
94
+ @payload = []
95
+
96
+ Open3.popen3(cmd_line) do |stdin, stdout, stderr, thr|
97
+ # stdin.close
98
+ { stderr: stderr, stdout: stdout }.each do |key, io|
99
+ Thread.new do
100
+ begin
101
+ until (line = io.gets).nil? do
102
+ key == :stderr ? process_stderr(line) : @payload << line
103
+ end
104
+ rescue => e
105
+ warn e
106
+ end
107
+ end
108
+ end
109
+ thr.join
110
+ end
111
+ end
112
+
113
+ KEY_MAP = { ">" => :request, "<" => :response }
114
+
115
+ def process_stderr(line)
116
+ # warn(line)
117
+ if type = KEY_MAP[line.chr]
118
+ line = line[2, line.size-1].strip
119
+
120
+ return if line.size == 0
121
+
122
+ case type
123
+ when :request; set_request(line)
124
+ when :response; set_response(line)
125
+ end
126
+ end
127
+ end
128
+
129
+ def set_request(line)
130
+ # warn("Request: #{line}")
131
+ if !@request.key?(:http_version) && line =~ /^(GET|POST|PUT|PATCH|HEAD|OPTION|DELETE) (.+?) HTTP\/(.+)$/
132
+ @request.merge!(method: $1, url: $2, http_version: $3)
133
+ else
134
+ header, value = line.split(": ", 2)
135
+ @request[header] = value
136
+ end
137
+ end
138
+
139
+ def set_response(line)
140
+ # warn("Response: #{line}")
141
+ if !@response.key?(:http_version) && line =~ /^HTTP\/(.+) (\d+?) (.+)$/
142
+ @response.merge!(http_version: $1, http_code: $2.to_i, http_status: $3)
143
+ else
144
+ header, value = line.split(": ", 2)
145
+ @response[header] = value
146
+ end
147
+ end
148
+
149
+ def to_h
150
+ { response: @response, request: @request }
151
+ end
152
+
153
+ def verbose?
154
+ !ConsoleUtils.curl_silence
155
+ end
57
156
  end
58
157
  end
59
158
  end
@@ -1,29 +1,23 @@
1
- module ConsoleUtils::RequestUtils
2
- class RequestParams
3
- attr_accessor :uid
1
+ # frozen_string_literal: true
4
2
 
5
- def initialize(uid_or_params = true, params = nil, headers = nil)
6
- # puts "Request params: uid_or_params=#{uid_or_params} | params=#{params} | headers=#{headers}"
7
-
8
- if uid_or_params.is_a? Hash
9
- headers, params, uid_or_params = [params, uid_or_params, nil]
10
- end
11
-
12
- @params = params if params
13
- @headers = headers if headers
14
- @uid = auto_auth? && ((uid_or_params.nil? || uid_or_params == true) ? ConsoleUtils.default_uid : uid_or_params)
15
-
16
- ConsoleUtils.logger.debug { "#{uid}, #{params()}, #{headers()}" }
3
+ module ConsoleUtils::RequestUtils
4
+ RequestParams = Struct.new(:params, :headers)
17
5
 
18
- auth_automator.(self)
6
+ class RequestParams
7
+ AutoUid = -> (uid) do
8
+ ConsoleUtils.request_auto_auth && ((uid.nil? || uid == true) ? ConsoleUtils.default_uid : uid)
19
9
  end
20
10
 
21
- def params
22
- @params ||= {}
23
- end
11
+ attr_accessor :uid
24
12
 
25
- def headers
26
- @headers ||= {}
13
+ def initialize(uid = true, params = nil, headers = nil)
14
+ params, headers, uid = [uid, params, nil] if uid.is_a?(Hash)
15
+ @uid = AutoUid[uid] || uid
16
+ super(params.to_h, headers.to_h)
17
+
18
+ ConsoleUtils.auth_automator.(self) if ConsoleUtils.auth_automator.respond_to?(:call)
19
+ ConsoleUtils.request_hooks.each { |hook| hook.(self) }
20
+ ConsoleUtils.logger.debug { "#{@uid}, #{self}" }
27
21
  end
28
22
 
29
23
  def to_a
@@ -39,21 +33,11 @@ module ConsoleUtils::RequestUtils
39
33
  headers.merge!(default_headers.to_h)
40
34
  end
41
35
 
42
- to_a
36
+ self
43
37
  end
44
38
 
45
39
  def can_auto_auth?
46
- auto_auth? && uid && auth_automator.respond_to?(:call)
47
- end
48
-
49
- private
50
-
51
- def auto_auth?
52
- ConsoleUtils.request_auto_auth
53
- end
54
-
55
- def auth_automator
56
- ConsoleUtils.auth_automator
40
+ ConsoleUtils.request_auto_auth && @uid && ConsoleUtils.auth_automator.respond_to?(:call)
57
41
  end
58
42
  end
59
43
  end
@@ -5,10 +5,8 @@ module ConsoleUtils::RequestUtils #:nodoc:
5
5
  class Requester < SimpleDelegator
6
6
  INFO_HASH_FIELDS = %i(url size time human_size human_time).freeze
7
7
  INFO_FORMAT = "%#-.50{url} | %#10{human_size} | %#10{human_time}\n".freeze
8
- NO_RESPONSE = Term::ANSIColor.red(" \u27A7 Empty response's body.").freeze
9
- PBCOPY_MESSAGE = Term::ANSIColor.green(" \u27A4 Response body copied to pasteboard\n").freeze
10
- COMPLETE_IN = Term::ANSIColor.green("Complete in %s").freeze
11
- TRANSFERED = Term::ANSIColor.cyan("Transfered: %s").freeze
8
+ NO_RESPONSE = ConsoleUtils.pastel.red(" \u27A7 Empty response's body.").freeze
9
+ PBCOPY_MESSAGE = ConsoleUtils.pastel.green(" \u27A4 Response body copied to pasteboard\n").freeze
12
10
 
13
11
  class_attribute :default_params, instance_writer: false
14
12
  attr_reader :url
@@ -54,33 +52,55 @@ module ConsoleUtils::RequestUtils #:nodoc:
54
52
  end
55
53
 
56
54
  def to_info_hash
57
- INFO_HASH_FIELDS.zip(INFO_HASH_FIELDS.map(&method(:public_send))).to_h
55
+ hsh = {}
56
+ INFO_HASH_FIELDS.each { |field| hsh[field] = public_send(field) }
57
+ hsh
58
58
  end
59
59
 
60
60
  protected
61
61
 
62
62
  def normalize_args
63
- RequestParams.new(*@_args).with_default(default_params).tap do |args|
64
- ConsoleUtils.logger.debug { args }
65
- end
63
+ params = RequestParams.new(*@_args).with_default(default_params)
64
+ ConsoleUtils.logger.debug { params.to_a }
65
+ params
66
66
  end
67
67
 
68
68
  private
69
69
 
70
70
  def show_complete_in!(reset = true)
71
71
  return if @_time.nil?
72
- puts "=> #{COMPLETE_IN % [time_ms]}"
72
+ if @_code && status_code = Rack::Utils::HTTP_STATUS_CODES[@_code]
73
+ print "=> ", pastel.public_send(status_color(@_code), "Completed ", pastel.bold("#{@_code} #{status_code}"), " in #{time_ms}"), "\n"
74
+ else
75
+ puts "=> #{pastel.green("Completed in #{time_ms}")}"
76
+ end
77
+ ensure
78
+ @_code = nil
73
79
  @_time = nil
74
80
  end
75
81
 
82
+ def pastel
83
+ ConsoleUtils.pastel
84
+ end
85
+
76
86
  def show_transfered!(reset = true)
77
87
  return if @_size.nil?
78
- puts "=> #{TRANSFERED % [size_downloaded]}"
88
+ print "=> ", pastel.cyan("Transferred: #{size_downloaded}"), "\n"
89
+ ensure
79
90
  @_size = nil
80
91
  end
81
92
 
93
+ def status_color(code)
94
+ case code
95
+ when 200...400; :green
96
+ when 400...500; :red
97
+ when 500...600; :intense_red
98
+ else :yellow
99
+ end
100
+ end
101
+
82
102
  private_constant :PBCOPY_MESSAGE,
83
- :NO_RESPONSE, :COMPLETE_IN, :TRANSFERED,
103
+ :NO_RESPONSE,
84
104
  :INFO_FORMAT
85
105
  end
86
106
  end
@@ -1,3 +1,3 @@
1
1
  module ConsoleUtils
2
- VERSION = "0.6.1"
2
+ VERSION = "0.10.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: console_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-19 00:00:00.000000000 Z
11
+ date: 2020-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,22 +16,22 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.1'
19
+ version: '5.2'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '5'
22
+ version: '7'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '4.1'
29
+ version: '5.2'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '5'
32
+ version: '7'
33
33
  - !ruby/object:Gem::Dependency
34
- name: term-ansicolor
34
+ name: pastel
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
@@ -149,6 +149,8 @@ files:
149
149
  - console_utils.gemspec
150
150
  - gemfiles/rails42.gemfile
151
151
  - gemfiles/rails42.gemfile.lock
152
+ - gemfiles/rails5.gemfile
153
+ - gemfiles/rails5.gemfile.lock
152
154
  - lib/awesome_print/proc_ext.rb
153
155
  - lib/console_utils.rb
154
156
  - lib/console_utils/active_record_utils.rb
@@ -191,8 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
191
193
  - !ruby/object:Gem::Version
192
194
  version: '0'
193
195
  requirements: []
194
- rubyforge_project:
195
- rubygems_version: 2.6.6
196
+ rubygems_version: 3.0.3
196
197
  signing_key:
197
198
  specification_version: 4
198
199
  summary: Groovy tools for Rails Console.