quick_and_ruby 0.4.0 → 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 +19 -8
- data/Gemfile +2 -0
- data/bin/datetime +1 -1
- data/bin/distinguished_name +5 -5
- data/bin/epoch +6 -0
- data/bin/json2yaml +1 -1
- data/bin/proxy +2 -0
- data/bin/yaml2json +2 -2
- data/lib/quick_and_ruby/distinguished_name/attribute.rb +45 -0
- data/lib/quick_and_ruby/distinguished_name/openssl_format.rb +46 -0
- data/lib/quick_and_ruby/distinguished_name/rfc_format.rb +47 -0
- data/lib/quick_and_ruby/distinguished_name.rb +38 -31
- data/lib/quick_and_ruby/string/case.rb +18 -0
- data/lib/quick_and_ruby/string.rb +5 -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
- data/scripts/console +1 -0
- metadata +67 -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
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
plugins:
|
2
2
|
- rubocop-rake
|
3
3
|
- rubocop-rspec
|
4
4
|
|
@@ -6,6 +6,9 @@ AllCops:
|
|
6
6
|
NewCops: enable
|
7
7
|
TargetRubyVersion: 2.7
|
8
8
|
|
9
|
+
Gemspec/DevelopmentDependencies:
|
10
|
+
Enabled: false
|
11
|
+
|
9
12
|
Layout/LineLength:
|
10
13
|
Max: 100
|
11
14
|
|
@@ -14,21 +17,29 @@ Metrics/BlockLength:
|
|
14
17
|
- quick_and_ruby.gemspec
|
15
18
|
- spec/**/*.rb
|
16
19
|
|
20
|
+
Metrics/ClassLength:
|
21
|
+
Exclude:
|
22
|
+
- test/**/*.rb
|
23
|
+
|
24
|
+
Metrics/CyclomaticComplexity:
|
25
|
+
Max: 10
|
26
|
+
|
17
27
|
Metrics/MethodLength:
|
18
28
|
Max: 25
|
19
29
|
|
30
|
+
Style/Documentation:
|
31
|
+
Enabled: false
|
32
|
+
|
20
33
|
# Style/StringLiterals:
|
21
34
|
# Enabled: true
|
22
35
|
# EnforcedStyle: double_quotes
|
23
36
|
|
24
|
-
Style/
|
25
|
-
|
26
|
-
|
27
|
-
Style/StringLiteralsInInterpolation:
|
28
|
-
Enabled: true
|
29
|
-
EnforcedStyle: double_quotes
|
37
|
+
# Style/StringLiteralsInInterpolation:
|
38
|
+
# Enabled: true
|
39
|
+
# EnforcedStyle: double_quotes
|
30
40
|
|
31
|
-
|
41
|
+
RSpec/ExampleLength:
|
42
|
+
Max: 10
|
32
43
|
|
33
44
|
RSpec/MultipleExpectations:
|
34
45
|
Max: 2
|
data/Gemfile
CHANGED
data/bin/datetime
CHANGED
data/bin/distinguished_name
CHANGED
@@ -20,15 +20,15 @@ end
|
|
20
20
|
|
21
21
|
option_parser.parse!(argv)
|
22
22
|
if argv.empty?
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
warn 'error: you must supply a distinguished_name'
|
24
|
+
$stderr.puts
|
25
|
+
warn option_parser.help
|
26
26
|
exit 2
|
27
27
|
else
|
28
|
-
distinguished_name = argv.clone.join(
|
28
|
+
distinguished_name = argv.clone.join(' ')
|
29
29
|
end
|
30
30
|
|
31
|
-
dn = QuickAndRuby::DistinguishedName.
|
31
|
+
dn = QuickAndRuby::DistinguishedName.from_s(distinguished_name)
|
32
32
|
dn = dn.reverse if options[:reverse]
|
33
33
|
|
34
34
|
puts dn.to_s
|
data/bin/epoch
ADDED
data/bin/json2yaml
CHANGED
data/bin/proxy
CHANGED
data/bin/yaml2json
CHANGED
@@ -5,12 +5,12 @@ require 'json'
|
|
5
5
|
require 'yaml'
|
6
6
|
|
7
7
|
def yaml2json(str)
|
8
|
-
JSON.pretty_generate(YAML.safe_load(str))
|
8
|
+
JSON.pretty_generate(YAML.safe_load(str, aliases: true))
|
9
9
|
end
|
10
10
|
|
11
11
|
from = ARGV[0]
|
12
12
|
if from && File.exist?(from)
|
13
|
-
to = ARGV[1] || "#{from.chomp(
|
13
|
+
to = ARGV[1] || "#{from.chomp('.yaml').chomp('.yml')}.json"
|
14
14
|
|
15
15
|
File.write(to, yaml2json(File.read(from)))
|
16
16
|
elsif from
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module QuickAndRuby
|
4
|
+
class DistinguishedName
|
5
|
+
class Attribute
|
6
|
+
# DC domainComponent
|
7
|
+
# CN commonName
|
8
|
+
# OU organizationalUnitName
|
9
|
+
# O organizationName
|
10
|
+
# STREET streetAddress
|
11
|
+
# L localityName
|
12
|
+
# ST stateOrProvinceName
|
13
|
+
# C countryName
|
14
|
+
# UID userid
|
15
|
+
|
16
|
+
SPLIT_RE = /^(\w+)=((?:\\.|[^\\])+)$/.freeze
|
17
|
+
|
18
|
+
attr_reader :name, :value
|
19
|
+
|
20
|
+
def initialize(name, value)
|
21
|
+
@name = name
|
22
|
+
@value = value
|
23
|
+
end
|
24
|
+
|
25
|
+
def to_s(escaper: nil)
|
26
|
+
escaped_value = value
|
27
|
+
escaped_value = escaper.call(escaped_value) if escaper
|
28
|
+
|
29
|
+
"#{name}=#{escaped_value}"
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.from_s(part, unescaper: nil)
|
33
|
+
unless (match = SPLIT_RE.match(part))
|
34
|
+
raise "Invalid DN part: '#{part}'"
|
35
|
+
end
|
36
|
+
|
37
|
+
key = match[1].strip
|
38
|
+
value = match[2].strip
|
39
|
+
unescaped_value = value
|
40
|
+
unescaped_value = unescaper.call(unescaped_value) if unescaper
|
41
|
+
new(key, unescaped_value)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'attribute'
|
4
|
+
|
5
|
+
module QuickAndRuby
|
6
|
+
class DistinguishedName
|
7
|
+
class OpensslFormat
|
8
|
+
LABEL = :openssl
|
9
|
+
SEPARATOR = '/'
|
10
|
+
SPLIT_RE = %r{(?<!\\)/}.freeze
|
11
|
+
|
12
|
+
def escape(value)
|
13
|
+
value.gsub(%r{([/\\])}, '\\\\\1')
|
14
|
+
end
|
15
|
+
|
16
|
+
def unescape(value)
|
17
|
+
value.gsub(%r{\\([/\\])}, '\1')
|
18
|
+
end
|
19
|
+
|
20
|
+
def recognize?(dn_str)
|
21
|
+
return true if !dn_str || dn_str.empty?
|
22
|
+
return true if dn_str.start_with?(SEPARATOR)
|
23
|
+
|
24
|
+
false
|
25
|
+
end
|
26
|
+
|
27
|
+
def split(dn_str)
|
28
|
+
dn_str = dn_str[1..] if dn_str.start_with?(SEPARATOR)
|
29
|
+
|
30
|
+
parts = dn_str.split(SPLIT_RE)
|
31
|
+
parts.map do |part|
|
32
|
+
part = part.strip if part
|
33
|
+
next if !part || part.empty?
|
34
|
+
|
35
|
+
Attribute.from_s(part, unescaper: method(:unescape))
|
36
|
+
end.compact
|
37
|
+
end
|
38
|
+
|
39
|
+
def join(attributes)
|
40
|
+
SEPARATOR + attributes.map do |attribute|
|
41
|
+
attribute.to_s(escaper: method(:escape))
|
42
|
+
end.join(SEPARATOR)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'attribute'
|
4
|
+
|
5
|
+
module QuickAndRuby
|
6
|
+
class DistinguishedName
|
7
|
+
class RfcFormat
|
8
|
+
LABEL = :rfc
|
9
|
+
SEPARATOR = ','
|
10
|
+
SPLIT_RE = /(?<!\\),/.freeze
|
11
|
+
|
12
|
+
UNESCAPE_ALL_RE = /\\(.)/.freeze
|
13
|
+
|
14
|
+
def escape(value)
|
15
|
+
# value.gsub(/([,\\+<>;"= ])/, '\\\1')
|
16
|
+
value.gsub(/([,\\+<>;"=])/, '\\\\\1')
|
17
|
+
end
|
18
|
+
|
19
|
+
def unescape(value)
|
20
|
+
# .gsub(UNESCAPE_ALL_RE, '\1')
|
21
|
+
value.gsub(/\\([,\\+<>;"= ])/, '\1')
|
22
|
+
end
|
23
|
+
|
24
|
+
def recognize?(dn_str)
|
25
|
+
return true if !dn_str || dn_str.empty?
|
26
|
+
|
27
|
+
true
|
28
|
+
end
|
29
|
+
|
30
|
+
def split(dn_str)
|
31
|
+
parts = dn_str.split(SPLIT_RE)
|
32
|
+
parts.map do |part|
|
33
|
+
part = part.strip if part
|
34
|
+
next if !part || part.empty?
|
35
|
+
|
36
|
+
Attribute.from_s(part, unescaper: method(:unescape))
|
37
|
+
end.compact
|
38
|
+
end
|
39
|
+
|
40
|
+
def join(attributes)
|
41
|
+
attributes.map do |attribute|
|
42
|
+
attribute.to_s(escaper: method(:escape))
|
43
|
+
end.join(SEPARATOR)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -1,5 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative 'distinguished_name/attribute'
|
4
|
+
require_relative 'distinguished_name/rfc_format'
|
5
|
+
require_relative 'distinguished_name/openssl_format'
|
6
|
+
|
3
7
|
module QuickAndRuby
|
4
8
|
class DistinguishedName
|
5
9
|
attr_reader :attributes
|
@@ -8,51 +12,54 @@ module QuickAndRuby
|
|
8
12
|
@attributes = attributes
|
9
13
|
end
|
10
14
|
|
11
|
-
def to_s
|
12
|
-
|
15
|
+
def to_s(format: :rfc)
|
16
|
+
formatter = get_format(format)
|
17
|
+
formatter.join(attributes)
|
18
|
+
end
|
19
|
+
|
20
|
+
def reverse
|
21
|
+
self.class.new(attributes.reverse)
|
13
22
|
end
|
14
23
|
|
15
24
|
def size
|
16
|
-
|
25
|
+
attributes.size
|
17
26
|
end
|
18
27
|
alias length size
|
19
28
|
|
20
|
-
def
|
21
|
-
self.class.
|
29
|
+
def get_format(label = :rfc)
|
30
|
+
self.class.get_format(label)
|
22
31
|
end
|
23
32
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
33
|
+
class << self
|
34
|
+
def from_s(dn_str, format: nil)
|
35
|
+
return new if !dn_str || dn_str.empty?
|
36
|
+
|
37
|
+
formatter ||= get_format(format) if format
|
38
|
+
formatter ||= openssl_format if openssl_format.recognize?(dn_str)
|
39
|
+
formatter ||= rfc_format
|
40
|
+
|
41
|
+
attributes = formatter.split(dn_str)
|
29
42
|
|
30
|
-
|
43
|
+
new(attributes)
|
31
44
|
end
|
32
45
|
|
33
|
-
|
34
|
-
|
46
|
+
def rfc_format
|
47
|
+
get_format(:rfc)
|
48
|
+
end
|
35
49
|
|
36
|
-
|
37
|
-
|
38
|
-
# CN commonName
|
39
|
-
# OU organizationalUnitName
|
40
|
-
# O organizationName
|
41
|
-
# STREET streetAddress
|
42
|
-
# L localityName
|
43
|
-
# ST stateOrProvinceName
|
44
|
-
# C countryName
|
45
|
-
# UID userid
|
46
|
-
|
47
|
-
attr_reader :attribute, :value
|
48
|
-
|
49
|
-
def initialize(attribute, value)
|
50
|
-
@attribute = attribute
|
51
|
-
@value = value
|
50
|
+
def openssl_format
|
51
|
+
get_format(:openssl)
|
52
52
|
end
|
53
53
|
|
54
|
-
def
|
55
|
-
|
54
|
+
def get_format(label = :rfc)
|
55
|
+
case label.to_sym
|
56
|
+
when :rfc
|
57
|
+
RfcFormat.new
|
58
|
+
when :openssl
|
59
|
+
OpensslFormat.new
|
60
|
+
else
|
61
|
+
raise ArgumentError, "Unsupported format #{label}"
|
62
|
+
end
|
56
63
|
end
|
57
64
|
end
|
58
65
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module QuickAndRuby
|
4
|
+
module String
|
5
|
+
module Case
|
6
|
+
def snakecase
|
7
|
+
gsub(/\s+/, '_').gsub(/([a-z\d])([A-Z])/, '\1_\2').downcase
|
8
|
+
end
|
9
|
+
|
10
|
+
# def snakecase2
|
11
|
+
# return downcase if match(/\A[A-Z]+\z/)
|
12
|
+
# gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
|
13
|
+
# gsub(/([a-z])([A-Z])/, '\1_\2').
|
14
|
+
# downcase
|
15
|
+
# end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -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
|
data/scripts/console
CHANGED
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
|
@@ -207,9 +236,17 @@ files:
|
|
207
236
|
- lib/quick_and_ruby/date/date_time_args.rb
|
208
237
|
- lib/quick_and_ruby/date/date_time_cli.rb
|
209
238
|
- lib/quick_and_ruby/distinguished_name.rb
|
239
|
+
- lib/quick_and_ruby/distinguished_name/attribute.rb
|
240
|
+
- lib/quick_and_ruby/distinguished_name/openssl_format.rb
|
241
|
+
- lib/quick_and_ruby/distinguished_name/rfc_format.rb
|
210
242
|
- lib/quick_and_ruby/proxy/arg_parser.rb
|
211
243
|
- lib/quick_and_ruby/proxy/env_parser.rb
|
212
244
|
- lib/quick_and_ruby/proxy/proxy.rb
|
245
|
+
- lib/quick_and_ruby/string.rb
|
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
|
213
250
|
- lib/quick_and_ruby/version.rb
|
214
251
|
- man/distinguished_name.1.ronn
|
215
252
|
- quick_and_ruby.gemspec
|
@@ -224,7 +261,6 @@ metadata:
|
|
224
261
|
source_code_uri: https://github.com/ttych/quick_and_ruby
|
225
262
|
changelog_uri: https://github.com/ttych/quick_and_ruby/CHANGELOG.md
|
226
263
|
rubygems_mfa_required: 'true'
|
227
|
-
post_install_message:
|
228
264
|
rdoc_options: []
|
229
265
|
require_paths:
|
230
266
|
- lib
|
@@ -239,8 +275,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
239
275
|
- !ruby/object:Gem::Version
|
240
276
|
version: '0'
|
241
277
|
requirements: []
|
242
|
-
rubygems_version: 3.
|
243
|
-
signing_key:
|
278
|
+
rubygems_version: 3.6.4
|
244
279
|
specification_version: 4
|
245
280
|
summary: Quick and Ruby utilities.
|
246
281
|
test_files: []
|