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 +4 -4
- data/.rubocop.yml +1 -1
- data/Gemfile +2 -0
- data/bin/epoch +6 -0
- data/lib/quick_and_ruby/time/epoch_cli.rb +76 -0
- data/lib/quick_and_ruby/time/epoch_converter.rb +43 -0
- data/lib/quick_and_ruby/time.rb +10 -0
- data/lib/quick_and_ruby/version.rb +1 -1
- data/quick_and_ruby.gemspec +10 -7
- metadata +62 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f694bf17e5634da7e5f13228b072538f39f2ea252ec354579a075367199afc01
|
4
|
+
data.tar.gz: ab9726131a26e889a39a7130bb96b52846a84b8213e2a979ce04dd566e1754a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4df216e8b4b49e9e23c2362ac1ece88e0ef4485715af358000e1d72f29dcbeeea3f3e0439f233264fbb46921642277139cdd816fbe116924395a27e70e8549aa
|
7
|
+
data.tar.gz: 5a2e34b0b1b9f95aa40f558cd4bd3c2ab2ed457372a60b5e17a952f1e23963409241c40429f6b44b1928cc4927bb4ac15392774b67ff19f8958a9c0907227956
|
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
data/bin/epoch
ADDED
@@ -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
|
data/quick_and_ruby.gemspec
CHANGED
@@ -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.
|
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.
|
49
|
-
spec.add_development_dependency 'reek', '~> 6.
|
50
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
51
|
-
spec.add_development_dependency 'rubocop', '~> 1.
|
52
|
-
spec.add_development_dependency 'rubocop-rake', '~> 0.
|
53
|
-
spec.add_development_dependency 'rubocop-rspec', '~>
|
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.
|
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:
|
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.
|
66
|
+
version: '2.6'
|
34
67
|
- - ">="
|
35
68
|
- !ruby/object:Gem::Version
|
36
|
-
version: 2.
|
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.
|
76
|
+
version: '2.6'
|
44
77
|
- - ">="
|
45
78
|
- !ruby/object:Gem::Version
|
46
|
-
version: 2.
|
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.
|
106
|
+
version: '13.2'
|
74
107
|
- - ">="
|
75
108
|
- !ruby/object:Gem::Version
|
76
|
-
version: 13.
|
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.
|
116
|
+
version: '13.2'
|
84
117
|
- - ">="
|
85
118
|
- !ruby/object:Gem::Version
|
86
|
-
version: 13.
|
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.
|
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.
|
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.
|
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.
|
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.
|
154
|
+
version: '1.72'
|
128
155
|
- - ">="
|
129
156
|
- !ruby/object:Gem::Version
|
130
|
-
version: 1.
|
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.
|
164
|
+
version: '1.72'
|
138
165
|
- - ">="
|
139
166
|
- !ruby/object:Gem::Version
|
140
|
-
version: 1.
|
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.
|
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.
|
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: '
|
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: '
|
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.
|
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: []
|