bbk-utils 1.1.4.347221 → 1.1.5.353378
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/Gemfile.lock +12 -6
- data/lib/bbk/utils/cli/env_docs.rb +163 -0
- data/lib/bbk/utils/version.rb +1 -1
- metadata +45 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e70cf59cb6918dc989b059f2fcf4bf5a2b61525adcf0b9dc8342b9ccd1f1bf29
|
|
4
|
+
data.tar.gz: eb45a948ec10919a6fcd723f6430d9f86f250a3fcdb7fc2e9527b9587199d0d1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c23d5418984c07576701d66ba3b0db6dc86ff52b81725e64c7d6644b3ec2e78298beb5adbd43fe5f7b260b55f5fb51507bd174180dc953dd8dafca29f3e97194
|
|
7
|
+
data.tar.gz: f49b9ad03d58043f10a0b658ff3ef2a14b3c5346d0e6b702dfb2d36c39372ae37fdb2dba3c3aeb3e496769b85a4acb8aeb3514201ca6dd5b02a6b6a208163ca8
|
data/Gemfile.lock
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
bbk-utils (1.1.
|
|
4
|
+
bbk-utils (1.1.5)
|
|
5
5
|
activesupport (>= 7.0)
|
|
6
6
|
russian
|
|
7
|
-
securerandom (~> 0.3.2)
|
|
8
7
|
|
|
9
8
|
GEM
|
|
10
9
|
remote: https://rubygems.org/
|
|
@@ -32,12 +31,12 @@ GEM
|
|
|
32
31
|
thread_safe (~> 0.3, >= 0.3.1)
|
|
33
32
|
base64 (0.3.0)
|
|
34
33
|
benchmark (0.5.0)
|
|
35
|
-
bigdecimal (
|
|
34
|
+
bigdecimal (4.0.1)
|
|
36
35
|
byebug (11.1.3)
|
|
37
36
|
coercible (1.0.0)
|
|
38
37
|
descendants_tracker (~> 0.0.1)
|
|
39
38
|
concurrent-ruby (1.2.2)
|
|
40
|
-
connection_pool (2.5.
|
|
39
|
+
connection_pool (2.5.0)
|
|
41
40
|
descendants_tracker (0.0.4)
|
|
42
41
|
thread_safe (~> 0.3, >= 0.3.1)
|
|
43
42
|
diff-lcs (1.6.0)
|
|
@@ -63,13 +62,17 @@ GEM
|
|
|
63
62
|
launchy (2.5.0)
|
|
64
63
|
addressable (~> 2.7)
|
|
65
64
|
logger (1.7.0)
|
|
66
|
-
minitest (
|
|
65
|
+
minitest (6.0.1)
|
|
66
|
+
prism (~> 1.5)
|
|
67
67
|
mutex_m (0.3.0)
|
|
68
|
+
ostruct (0.6.3)
|
|
68
69
|
parallel (1.21.0)
|
|
69
70
|
parser (3.0.3.1)
|
|
70
71
|
ast (~> 2.4.1)
|
|
71
72
|
path_expander (1.1.0)
|
|
73
|
+
prism (1.9.0)
|
|
72
74
|
public_suffix (4.0.6)
|
|
75
|
+
racc (1.8.1)
|
|
73
76
|
rainbow (3.0.0)
|
|
74
77
|
rake (12.3.3)
|
|
75
78
|
reek (6.0.6)
|
|
@@ -122,7 +125,7 @@ GEM
|
|
|
122
125
|
virtus (~> 1.0)
|
|
123
126
|
russian (0.6.0)
|
|
124
127
|
i18n (>= 0.5.0)
|
|
125
|
-
securerandom (0.
|
|
128
|
+
securerandom (0.4.1)
|
|
126
129
|
sexp_processor (4.16.0)
|
|
127
130
|
simplecov (0.21.2)
|
|
128
131
|
docile (~> 1.1)
|
|
@@ -159,6 +162,8 @@ DEPENDENCIES
|
|
|
159
162
|
bundler (~> 2.0)
|
|
160
163
|
byebug
|
|
161
164
|
faker (~> 2.4)
|
|
165
|
+
ostruct
|
|
166
|
+
racc
|
|
162
167
|
rake (~> 12.0)
|
|
163
168
|
rspec (~> 3.0)
|
|
164
169
|
rspec_junit_formatter
|
|
@@ -168,6 +173,7 @@ DEPENDENCIES
|
|
|
168
173
|
simplecov
|
|
169
174
|
simplecov-cobertura
|
|
170
175
|
simplecov-console
|
|
176
|
+
terminal-table
|
|
171
177
|
|
|
172
178
|
BUNDLED WITH
|
|
173
179
|
2.2.33
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
require 'yaml'
|
|
2
|
+
require 'optparse'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
module BBK
|
|
6
|
+
module Utils
|
|
7
|
+
module Cli
|
|
8
|
+
class EnvDocs
|
|
9
|
+
|
|
10
|
+
def self.run(*args) new.run(*args) end
|
|
11
|
+
|
|
12
|
+
def run(*args)
|
|
13
|
+
options = {
|
|
14
|
+
config: './.env_docs.yml',
|
|
15
|
+
output: './env_docs.md'
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
OptionParser.new do |opts|
|
|
19
|
+
opts.banner = "Usage: env_docs [options]"
|
|
20
|
+
|
|
21
|
+
opts.on("-c", "--config CONFIG", "Path to config file (default: #{options[:config]})") do |c|
|
|
22
|
+
options[:config] = c
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
opts.on("-o", "--output OUTPUT", "Path to output file (default: #{options[:output]})") do |o|
|
|
26
|
+
options[:output] = o
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
opts.on("-h", "--help", "Prints this help") do
|
|
30
|
+
puts opts
|
|
31
|
+
exit
|
|
32
|
+
end
|
|
33
|
+
end.parse!(args)
|
|
34
|
+
|
|
35
|
+
output_file = Rails.root.join(options[:output])
|
|
36
|
+
config_file = Rails.root.join(options[:config])
|
|
37
|
+
|
|
38
|
+
if File.exist?(config_file)
|
|
39
|
+
config = YAML.load_file(config_file) || {}
|
|
40
|
+
else
|
|
41
|
+
puts "Config file not found: #{config_file}. Continuing without config."
|
|
42
|
+
config = {}
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
cfg = BBK::Utils::Config.instance.as_json.deep_dup
|
|
46
|
+
cfg = cfg[BBK::Utils::Config.instance.name] unless BBK::Utils::Config.instance.name.nil?
|
|
47
|
+
|
|
48
|
+
BBK::Utils::Config.instance.send(:store_with_subconfigs).each do |k, v|
|
|
49
|
+
if v[:default]&.class&.to_s == "Fugit::Duration"
|
|
50
|
+
cfg[k][:default] = v[:default].original
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
if v[:default]
|
|
54
|
+
cfg[k][:class] = "#{v[:default].class}"
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
env_prefix_order = config.fetch('env_prefix_order', [])
|
|
59
|
+
|
|
60
|
+
matching, remaining = separate(cfg, env_prefix_order)
|
|
61
|
+
|
|
62
|
+
File.open(output_file, 'w') do |file|
|
|
63
|
+
file.puts "# Переменные окружения\n\n"
|
|
64
|
+
file.puts to_markdown(matching)
|
|
65
|
+
file.puts "\n\n"
|
|
66
|
+
file.puts to_markdown(remaining.sort)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
puts "Documentation saved to: #{output_file}"
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def separate(cfg, env_prefix_order)
|
|
73
|
+
matching = {}
|
|
74
|
+
remaining = {}
|
|
75
|
+
|
|
76
|
+
cfg.each do |key, value|
|
|
77
|
+
matched = env_prefix_order.any? do |prefix|
|
|
78
|
+
key == prefix || key.start_with?(prefix + '_')
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
if matched
|
|
82
|
+
matching[key] = value
|
|
83
|
+
else
|
|
84
|
+
remaining[key] = value
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
[matching, remaining]
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def to_markdown(cfg, columns = { :env => "Название", :desc => "Описание", :default => "По умолчанию", :class => "Тип"} )
|
|
92
|
+
rows = cfg_to_array(cfg, columns.keys)
|
|
93
|
+
|
|
94
|
+
create_markdown_table(rows, columns.values)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def cfg_to_array(cfg, keys)
|
|
99
|
+
cfg.each_with_object([]) do |entry, rows|
|
|
100
|
+
rows << keys.each_with_object([]) do |key, row|
|
|
101
|
+
row << entry[1][key]
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def create_markdown_table(rows, headers = [])
|
|
107
|
+
return "| No data |" if rows.empty?
|
|
108
|
+
|
|
109
|
+
column_widths = if headers.size != 0
|
|
110
|
+
headers.map(&:size)
|
|
111
|
+
else
|
|
112
|
+
Array.new(rows[0].count, 0)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
rows.each do |row|
|
|
116
|
+
row.each_with_index do |string, i|
|
|
117
|
+
column_widths[i] = string.to_s.size if string.present? && string.to_s.size > column_widths[i]
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
markdown_table = []
|
|
122
|
+
|
|
123
|
+
# Создаем заголовок таблицы, если он есть
|
|
124
|
+
if headers.size != 0
|
|
125
|
+
header_string = "|"
|
|
126
|
+
separator_string = "|"
|
|
127
|
+
|
|
128
|
+
headers.each_with_index do |header, col|
|
|
129
|
+
header_string += " #{header.ljust(column_widths[col])} |"
|
|
130
|
+
separator_string += "-#{'-' * column_widths[col]}-|"
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
markdown_table << header_string
|
|
134
|
+
markdown_table << separator_string
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# Создаем строки данных
|
|
138
|
+
rows_string = []
|
|
139
|
+
rows.each do |row|
|
|
140
|
+
row_string = "|"
|
|
141
|
+
row.each_with_index do |data, col|
|
|
142
|
+
value = (data || '').to_s
|
|
143
|
+
row_string += " #{value.ljust(column_widths[col])} |"
|
|
144
|
+
end
|
|
145
|
+
rows_string << row_string
|
|
146
|
+
end
|
|
147
|
+
markdown_table += rows_string
|
|
148
|
+
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# "BILLING_ENABLED"=>
|
|
156
|
+
# {:env=>"BILLING_ENABLED",
|
|
157
|
+
# :file=>nil,
|
|
158
|
+
# :required=>false,
|
|
159
|
+
# :default=>false,
|
|
160
|
+
# :desc=>"Send data to billing by api",
|
|
161
|
+
# :bool=>true,
|
|
162
|
+
# :type=>
|
|
163
|
+
# #<Method: BBK::Utils::Config::BooleanCaster.cast(value) /home/user/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/bbk-utils-1.1.2.304819/lib/bbk/utils/config.rb:27
|
data/lib/bbk/utils/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bbk-utils
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.5.353378
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Samoilenko Yuri
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-01-31 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -24,20 +24,6 @@ dependencies:
|
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '7.0'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: securerandom
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - "~>"
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: 0.3.2
|
|
34
|
-
type: :runtime
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - "~>"
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: 0.3.2
|
|
41
27
|
- !ruby/object:Gem::Dependency
|
|
42
28
|
name: russian
|
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -108,6 +94,20 @@ dependencies:
|
|
|
108
94
|
- - "~>"
|
|
109
95
|
- !ruby/object:Gem::Version
|
|
110
96
|
version: '3.0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: terminal-table
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ">="
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ">="
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
112
|
name: byebug
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -164,6 +164,34 @@ dependencies:
|
|
|
164
164
|
- - ">="
|
|
165
165
|
- !ruby/object:Gem::Version
|
|
166
166
|
version: '0'
|
|
167
|
+
- !ruby/object:Gem::Dependency
|
|
168
|
+
name: racc
|
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
|
170
|
+
requirements:
|
|
171
|
+
- - ">="
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: '0'
|
|
174
|
+
type: :development
|
|
175
|
+
prerelease: false
|
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
+
requirements:
|
|
178
|
+
- - ">="
|
|
179
|
+
- !ruby/object:Gem::Version
|
|
180
|
+
version: '0'
|
|
181
|
+
- !ruby/object:Gem::Dependency
|
|
182
|
+
name: ostruct
|
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
|
184
|
+
requirements:
|
|
185
|
+
- - ">="
|
|
186
|
+
- !ruby/object:Gem::Version
|
|
187
|
+
version: '0'
|
|
188
|
+
type: :development
|
|
189
|
+
prerelease: false
|
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
191
|
+
requirements:
|
|
192
|
+
- - ">="
|
|
193
|
+
- !ruby/object:Gem::Version
|
|
194
|
+
version: '0'
|
|
167
195
|
- !ruby/object:Gem::Dependency
|
|
168
196
|
name: rubycritic
|
|
169
197
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -233,6 +261,7 @@ files:
|
|
|
233
261
|
- bin/console
|
|
234
262
|
- bin/setup
|
|
235
263
|
- lib/bbk/utils.rb
|
|
264
|
+
- lib/bbk/utils/cli/env_docs.rb
|
|
236
265
|
- lib/bbk/utils/combined_logger.rb
|
|
237
266
|
- lib/bbk/utils/config.rb
|
|
238
267
|
- lib/bbk/utils/crypt.rb
|