quick_and_ruby 0.5.1 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c685bd6937aa82ca104aa4d885bb6cb150e465d61dafe2fc4c5bcd18f2a19cc5
4
- data.tar.gz: c6e90670c6447c6261fb3c25be94d7617c0c4a4042da22cd302f5c9a9c906481
3
+ metadata.gz: f694bf17e5634da7e5f13228b072538f39f2ea252ec354579a075367199afc01
4
+ data.tar.gz: ab9726131a26e889a39a7130bb96b52846a84b8213e2a979ce04dd566e1754a1
5
5
  SHA512:
6
- metadata.gz: '03189ba3378295c3358c4449d30d6c2c6075f1c292f83b6f5db7f4cedcac775e3bc6cfd0d639cb50d54fcbe56f77aa70df2eaad3fe17263286bb968f34097933'
7
- data.tar.gz: 00b294e7bc307dbb19947dfc48dd49cdd0b803fc5c69258ddcf6d5596b2df9923fb2be3e86921b3784ccef348d78f2d5865fe13c3a3cba15c5927e42b7f8278d
6
+ metadata.gz: 4df216e8b4b49e9e23c2362ac1ece88e0ef4485715af358000e1d72f29dcbeeea3f3e0439f233264fbb46921642277139cdd816fbe116924395a27e70e8549aa
7
+ data.tar.gz: 5a2e34b0b1b9f95aa40f558cd4bd3c2ab2ed457372a60b5e17a952f1e23963409241c40429f6b44b1928cc4927bb4ac15392774b67ff19f8958a9c0907227956
data/.rubocop.yml CHANGED
@@ -1,4 +1,4 @@
1
- require:
1
+ plugins:
2
2
  - rubocop-rake
3
3
  - rubocop-rspec
4
4
 
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in quick_and_ruby.gemspec
data/bin/epoch ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'quick_and_ruby/time'
5
+
6
+ QuickAndRuby::Time::EpochCli.new.run
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'optparse'
4
+
5
+ # Usage example:
6
+ #
7
+ # epoch
8
+ # => 1740485717
9
+ # epoch -ms
10
+ # => 1740485775670
11
+ # epoch 1740485717
12
+ # => 2025-02-25T13:17:14.508+01:00
13
+ # epoch -u 1740485717
14
+ # => 2025-02-25T12:18:21.954Z
15
+ # epoch [-d|--diff] 1740485717
16
+ # => 30sec ago
17
+ # epoch [-v|--verbose] 1740485717
18
+ # => 2025-02-25T12:18:21.954Z
19
+ # => 30sec ago
20
+
21
+ module QuickAndRuby
22
+ module Time
23
+ class EpochCli
24
+ attr_reader :argv, :env
25
+
26
+ def initialize(argv: ARGV, env: ENV)
27
+ @argv = argv.clone
28
+ @env = env.to_h.clone
29
+ end
30
+
31
+ def run
32
+ options = parse_options
33
+ puts EpochConverter.new(**options.to_h).convert_all(*argv)
34
+ end
35
+
36
+ def parse_options(options: Options.new)
37
+ parser = OptionParser.new do |opts|
38
+ opts.banner = 'Usage: epoch [options]'
39
+
40
+ opts.on('-h', '--help', 'Prints this help') do
41
+ puts parser
42
+ exit
43
+ end
44
+
45
+ opts.on('-m', '--millis', 'Display epoch in milliseconds') do |_millis|
46
+ options.millis = true
47
+ end
48
+
49
+ opts.on('-u', '--utc', 'Display time in UTC') do
50
+ options.utc = true
51
+ end
52
+ end
53
+
54
+ parser.parse!(argv)
55
+ options
56
+ end
57
+
58
+ class Options
59
+ DEFAULT_MILLIS = false
60
+ DEFAULT_UTC = false
61
+
62
+ attr_accessor :millis, :utc
63
+
64
+ def initialize(millis: DEFAULT_MILLIS, utc: DEFAULT_UTC)
65
+ @millis = millis
66
+ @utc = utc
67
+ end
68
+
69
+ def to_h
70
+ { millis: millis,
71
+ utc: utc }
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'time'
4
+
5
+ module QuickAndRuby
6
+ module Time
7
+ class EpochConverter
8
+ attr_reader :millis, :utc
9
+
10
+ def initialize(millis:, utc:)
11
+ @millis = millis
12
+ @utc = utc
13
+ end
14
+
15
+ def convert_all(*values)
16
+ values.map { |value_str| convert(value_str) }
17
+ end
18
+
19
+ def convert(value_str)
20
+ if value_str.match(/\D/)
21
+ convert_time(value_str)
22
+ else
23
+ convert_epoch(value_str)
24
+ end
25
+ end
26
+
27
+ def convert_time(time_str)
28
+ time = ::Time.parse(time_str)
29
+ epoch = time.to_f
30
+ epoch *= 1000 if millis
31
+ epoch.to_i
32
+ end
33
+
34
+ def convert_epoch(epoch_str)
35
+ epoch = epoch_str.to_i
36
+ epoch /= 1000.0 if epoch_str.size > 10
37
+ time = ::Time.at(epoch)
38
+ time = time.utc if utc
39
+ time.iso8601(3)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'version'
4
+ require_relative 'time/epoch_converter'
5
+ require_relative 'time/epoch_cli'
6
+
7
+ module QuickAndRuby
8
+ module Time
9
+ end
10
+ end
@@ -1,3 +1,3 @@
1
1
  module QuickAndRuby
2
- VERSION = '0.5.1'.freeze
2
+ VERSION = '0.6.0'.freeze
3
3
  end
@@ -42,13 +42,16 @@ Gem::Specification.new do |spec|
42
42
  spec.executables = spec.files.grep(%r{^#{spec.bindir}/}) { |f| File.basename(f) }
43
43
  spec.require_paths = ['lib']
44
44
 
45
+ spec.add_dependency 'ostruct', '~> 0.6.1'
46
+ spec.add_dependency 'webrick', '~> 1.9', '>= 1.9.1'
47
+
45
48
  spec.add_development_dependency 'bump', '~> 0.10.0'
46
- spec.add_development_dependency 'bundler', '~> 2.2', '>= 2.2.31'
49
+ spec.add_development_dependency 'bundler', '~> 2.6', '>= 2.6.5'
47
50
  spec.add_development_dependency 'byebug', '~> 11.1', '>= 11.1.3'
48
- spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
49
- spec.add_development_dependency 'reek', '~> 6.0', '>= 6.0.6'
50
- spec.add_development_dependency 'rspec', '~> 3.10'
51
- spec.add_development_dependency 'rubocop', '~> 1.22', '>= 1.22.3'
52
- spec.add_development_dependency 'rubocop-rake', '~> 0.6.0'
53
- spec.add_development_dependency 'rubocop-rspec', '~> 2.6'
51
+ spec.add_development_dependency 'rake', '~> 13.2', '>= 13.2.1'
52
+ spec.add_development_dependency 'reek', '~> 6.4'
53
+ spec.add_development_dependency 'rspec', '~> 3.13'
54
+ spec.add_development_dependency 'rubocop', '~> 1.72', '>= 1.72.2'
55
+ spec.add_development_dependency 'rubocop-rake', '~> 0.7.1'
56
+ spec.add_development_dependency 'rubocop-rspec', '~> 3.5'
54
57
  end
metadata CHANGED
@@ -1,15 +1,48 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quick_and_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ttych
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-12-15 00:00:00.000000000 Z
10
+ date: 2025-02-25 00:00:00.000000000 Z
12
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: ostruct
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: 0.6.1
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: 0.6.1
26
+ - !ruby/object:Gem::Dependency
27
+ name: webrick
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.9'
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: 1.9.1
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '1.9'
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: 1.9.1
13
46
  - !ruby/object:Gem::Dependency
14
47
  name: bump
15
48
  requirement: !ruby/object:Gem::Requirement
@@ -30,20 +63,20 @@ dependencies:
30
63
  requirements:
31
64
  - - "~>"
32
65
  - !ruby/object:Gem::Version
33
- version: '2.2'
66
+ version: '2.6'
34
67
  - - ">="
35
68
  - !ruby/object:Gem::Version
36
- version: 2.2.31
69
+ version: 2.6.5
37
70
  type: :development
38
71
  prerelease: false
39
72
  version_requirements: !ruby/object:Gem::Requirement
40
73
  requirements:
41
74
  - - "~>"
42
75
  - !ruby/object:Gem::Version
43
- version: '2.2'
76
+ version: '2.6'
44
77
  - - ">="
45
78
  - !ruby/object:Gem::Version
46
- version: 2.2.31
79
+ version: 2.6.5
47
80
  - !ruby/object:Gem::Dependency
48
81
  name: byebug
49
82
  requirement: !ruby/object:Gem::Requirement
@@ -70,102 +103,96 @@ dependencies:
70
103
  requirements:
71
104
  - - "~>"
72
105
  - !ruby/object:Gem::Version
73
- version: '13.0'
106
+ version: '13.2'
74
107
  - - ">="
75
108
  - !ruby/object:Gem::Version
76
- version: 13.0.6
109
+ version: 13.2.1
77
110
  type: :development
78
111
  prerelease: false
79
112
  version_requirements: !ruby/object:Gem::Requirement
80
113
  requirements:
81
114
  - - "~>"
82
115
  - !ruby/object:Gem::Version
83
- version: '13.0'
116
+ version: '13.2'
84
117
  - - ">="
85
118
  - !ruby/object:Gem::Version
86
- version: 13.0.6
119
+ version: 13.2.1
87
120
  - !ruby/object:Gem::Dependency
88
121
  name: reek
89
122
  requirement: !ruby/object:Gem::Requirement
90
123
  requirements:
91
124
  - - "~>"
92
125
  - !ruby/object:Gem::Version
93
- version: '6.0'
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: 6.0.6
126
+ version: '6.4'
97
127
  type: :development
98
128
  prerelease: false
99
129
  version_requirements: !ruby/object:Gem::Requirement
100
130
  requirements:
101
131
  - - "~>"
102
132
  - !ruby/object:Gem::Version
103
- version: '6.0'
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- version: 6.0.6
133
+ version: '6.4'
107
134
  - !ruby/object:Gem::Dependency
108
135
  name: rspec
109
136
  requirement: !ruby/object:Gem::Requirement
110
137
  requirements:
111
138
  - - "~>"
112
139
  - !ruby/object:Gem::Version
113
- version: '3.10'
140
+ version: '3.13'
114
141
  type: :development
115
142
  prerelease: false
116
143
  version_requirements: !ruby/object:Gem::Requirement
117
144
  requirements:
118
145
  - - "~>"
119
146
  - !ruby/object:Gem::Version
120
- version: '3.10'
147
+ version: '3.13'
121
148
  - !ruby/object:Gem::Dependency
122
149
  name: rubocop
123
150
  requirement: !ruby/object:Gem::Requirement
124
151
  requirements:
125
152
  - - "~>"
126
153
  - !ruby/object:Gem::Version
127
- version: '1.22'
154
+ version: '1.72'
128
155
  - - ">="
129
156
  - !ruby/object:Gem::Version
130
- version: 1.22.3
157
+ version: 1.72.2
131
158
  type: :development
132
159
  prerelease: false
133
160
  version_requirements: !ruby/object:Gem::Requirement
134
161
  requirements:
135
162
  - - "~>"
136
163
  - !ruby/object:Gem::Version
137
- version: '1.22'
164
+ version: '1.72'
138
165
  - - ">="
139
166
  - !ruby/object:Gem::Version
140
- version: 1.22.3
167
+ version: 1.72.2
141
168
  - !ruby/object:Gem::Dependency
142
169
  name: rubocop-rake
143
170
  requirement: !ruby/object:Gem::Requirement
144
171
  requirements:
145
172
  - - "~>"
146
173
  - !ruby/object:Gem::Version
147
- version: 0.6.0
174
+ version: 0.7.1
148
175
  type: :development
149
176
  prerelease: false
150
177
  version_requirements: !ruby/object:Gem::Requirement
151
178
  requirements:
152
179
  - - "~>"
153
180
  - !ruby/object:Gem::Version
154
- version: 0.6.0
181
+ version: 0.7.1
155
182
  - !ruby/object:Gem::Dependency
156
183
  name: rubocop-rspec
157
184
  requirement: !ruby/object:Gem::Requirement
158
185
  requirements:
159
186
  - - "~>"
160
187
  - !ruby/object:Gem::Version
161
- version: '2.6'
188
+ version: '3.5'
162
189
  type: :development
163
190
  prerelease: false
164
191
  version_requirements: !ruby/object:Gem::Requirement
165
192
  requirements:
166
193
  - - "~>"
167
194
  - !ruby/object:Gem::Version
168
- version: '2.6'
195
+ version: '3.5'
169
196
  description: Set of small and standalone utilities in Ruby.
170
197
  email:
171
198
  - thomas.tych@gmail.com
@@ -173,6 +200,7 @@ executables:
173
200
  - cat.rb
174
201
  - datetime
175
202
  - distinguished_name
203
+ - epoch
176
204
  - jb
177
205
  - json2yaml
178
206
  - proxy
@@ -194,6 +222,7 @@ files:
194
222
  - bin/cat.rb
195
223
  - bin/datetime
196
224
  - bin/distinguished_name
225
+ - bin/epoch
197
226
  - bin/jb
198
227
  - bin/json2yaml
199
228
  - bin/proxy
@@ -215,6 +244,9 @@ files:
215
244
  - lib/quick_and_ruby/proxy/proxy.rb
216
245
  - lib/quick_and_ruby/string.rb
217
246
  - lib/quick_and_ruby/string/case.rb
247
+ - lib/quick_and_ruby/time.rb
248
+ - lib/quick_and_ruby/time/epoch_cli.rb
249
+ - lib/quick_and_ruby/time/epoch_converter.rb
218
250
  - lib/quick_and_ruby/version.rb
219
251
  - man/distinguished_name.1.ronn
220
252
  - quick_and_ruby.gemspec
@@ -229,7 +261,6 @@ metadata:
229
261
  source_code_uri: https://github.com/ttych/quick_and_ruby
230
262
  changelog_uri: https://github.com/ttych/quick_and_ruby/CHANGELOG.md
231
263
  rubygems_mfa_required: 'true'
232
- post_install_message:
233
264
  rdoc_options: []
234
265
  require_paths:
235
266
  - lib
@@ -244,8 +275,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
244
275
  - !ruby/object:Gem::Version
245
276
  version: '0'
246
277
  requirements: []
247
- rubygems_version: 3.1.6
248
- signing_key:
278
+ rubygems_version: 3.6.4
249
279
  specification_version: 4
250
280
  summary: Quick and Ruby utilities.
251
281
  test_files: []