briefbag 1.0.1 → 1.0.2

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: 89c74cba17822d48234a9b16ec1a232e4bc20a48b18f675daddd670a2f04e08f
4
- data.tar.gz: fedf220e8ab8d6c3f4376685685aff3c4638e71e8aeba507382ebc1361f2e1cf
3
+ metadata.gz: 66b7c96c40783d727444f581e65f520eaadd8b4d249e2887ffc9d0ed20b40dbc
4
+ data.tar.gz: f6e0ef37c64612473441876a50eb0fa5b1270c726774aef289a1c687fa4957e0
5
5
  SHA512:
6
- metadata.gz: 1abfa35f9ac0383b69d805c8ebe76400165a434303b7a8924b420c20ecb512023ee01b35c12017f6c0e34d9d787d6afd40e0d5ef5de404368397d901a6fb89c8
7
- data.tar.gz: 58ea42d6a9087385428d574a6a345152b1e741001589f3783c3b0468eb9291c98c7f307a85c8404bdfdb7c5ca1a42eb353e0a355d3e479648e5664ff6cfae00e
6
+ metadata.gz: d4e9e34c7455c10f69898525de740da05e3bde3776c818afc527768c05af05bd25fa374df28a1e12768034bcbd51b6509666a847e7ef82f1626adac8c1fb2f6a
7
+ data.tar.gz: ce47693102526f590fbd87b88f2b33b86cc562e76814953b5a8e9d221a8453f8c1371483c565a3633a81402234908c3ef7b2033baf1d415ae12c374fb8fca65d
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 3.1.2
2
+ TargetRubyVersion: 2.4.2
3
3
  SuggestExtensions: false
4
4
 
5
5
  Style/StringLiterals:
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.7.5@briefbag
1
+ 2.4.2@briefbag
data/CHANGELOG.md CHANGED
@@ -1,19 +1,13 @@
1
1
  # CHANGELOG
2
2
 
3
- ## 0.0.1 - 2023-01-22
3
+ ## 0.0.1 - 2023-02-03
4
4
 
5
5
  * Briefbag was born
6
6
 
7
- ## 1.0.0 - 2023-02-24
7
+ ## 0.0.2 - 2023-03-15
8
8
 
9
- * Briefbag was born in ruby 2.7.5
9
+ * Fix bugs
10
10
 
11
- ## 1.0.1 - 2023-02-24
11
+ ## 1.0.2 - 2023-03-16
12
12
 
13
- * Briefbag change method work with local files
14
-
15
-
16
- ## 2.0.1 - 2023-01-22
17
-
18
-
19
- * update gem Briefbag to new ruby 3.1.2
13
+ * Refactoring: delete anyway config, using yml from ruby, change params and upd docs, implementation rake tasks
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Briefbag
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/briefbag.svg)](https://badge.fury.io/rb/dadatas)
3
+ [![Gem Version](https://badge.fury.io/rb/briefbag.svg)](https://badge.fury.io/rb/briefbag)
4
4
  [![Gem](https://img.shields.io/gem/dt/briefbag.svg)](https://rubygems.org/gems/briefbag)
5
5
 
6
6
 
@@ -75,7 +75,7 @@ Or install it yourself as:
75
75
  - **consul_token(string)** - *(optional)* If you use ACL Token.
76
76
  - **consul_folder(string)** *(required)* Name config folder in consul.
77
77
  - **environment(string)** - *(optional)* Default value ${development}. Environment in consul.
78
- - **config_name(string)** - *(optional)* Default value ${application}. Config name in your application for example path to yml file: 'config/application.yml' you need use name 'application'.
78
+ - **config_path(string)** - *(required)* Сonfig path to your config file. for example path to yml file: 'config/application.yml'
79
79
 
80
80
  ```ruby
81
81
  require 'briefbag'
@@ -86,7 +86,7 @@ params_config = {
86
86
  consul_token: '233b604b-b92e-48c8-a253-5f11514e4b50',
87
87
  consul_folder: 'briefbag',
88
88
  environment: 'test',
89
- config_name: 'some_config'
89
+ config_path: 'config/some_config.yml'
90
90
  }
91
91
  configs = Briefbag::Configuration.new(params_config).call
92
92
  => #<struct database=#<struct adapter="postgresql", host="localhost", port=5432, database="tets_dev", username="postgres", password=""...
data/briefbag.gemspec CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.summary = 'Briefbag manage your config'
14
14
  spec.homepage = 'https://github.com/MichaelHitchens/briefbag'
15
15
  spec.license = 'MIT'
16
- spec.required_ruby_version = '>= 2.7.5'
16
+ spec.required_ruby_version = '>= 2.4.2'
17
17
 
18
18
  spec.metadata = {
19
19
  'homepage_uri' => spec.homepage,
@@ -33,16 +33,15 @@ Gem::Specification.new do |spec|
33
33
  spec.require_paths = ['lib']
34
34
 
35
35
  # Requires Ruby faraday to http request
36
- spec.add_dependency 'anyway_config', '~> 2.3.1'
37
- spec.add_dependency 'diplomat', '>=2.6.4'
36
+ spec.add_dependency 'diplomat', '>= 2.4.4'
38
37
  spec.add_dependency 'hash_to_struct', '>=1.0.0'
39
- spec.add_dependency 'rainbow', '~> 3.1.1'
40
- spec.add_dependency 'rake', '~> 13.0.6'
38
+ spec.add_dependency 'rainbow', '>= 2.2.2'
39
+ spec.add_dependency 'rake', '>= 13.0.3'
41
40
 
42
- spec.add_development_dependency 'bundler', '~> 2.1.4'
41
+ spec.add_development_dependency 'bundler', '~> 2.3.26'
43
42
  spec.add_development_dependency 'byebug', '~> 11.1.3'
44
- spec.add_development_dependency 'faker', '~> 3.1.1'
43
+ spec.add_development_dependency 'faker', '~> 2.12.0'
45
44
  spec.add_development_dependency 'rake', '~> 13.0.6'
46
45
  spec.add_development_dependency 'rspec', '~> 3.12.0'
47
- spec.add_development_dependency 'rubocop', '~> 1.44.1'
46
+ spec.add_development_dependency 'rubocop', '~> 1.10.0'
48
47
  end
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'briefbag/diplomat'
4
- require 'anyway_config'
5
4
  require 'rainbow'
6
5
  require 'hash_to_struct'
6
+ require 'yaml'
7
7
 
8
8
  module Briefbag
9
9
  class Configuration
10
- attr_reader :config, :config_name
10
+ attr_reader :config, :config_path
11
11
 
12
12
  MESSAGES = {
13
13
  notice_yml: 'NOTICE! Your app is using configs from yml file',
@@ -20,7 +20,7 @@ module Briefbag
20
20
  }.freeze
21
21
 
22
22
  def initialize(config)
23
- @config_name = config[:config_name] || 'application'
23
+ @config_path = config[:config_path]
24
24
  @config = config
25
25
  end
26
26
 
@@ -44,23 +44,17 @@ module Briefbag
44
44
 
45
45
  def file_config
46
46
  Briefbag.warning_message(MESSAGES[:notice_yml])
47
- Anyway::Settings.default_config_path = 'config'
48
- data = Anyway::Config.for(config_name.to_sym, env_prefix: config[:environment])
47
+ data = YAML.load_file(config_path)
49
48
 
50
- return HashToStruct.struct(data.deep_symbolize_keys) if defined?(Rails)
49
+ return HashToStruct.struct(data.deep_symbolize_keys)[config[:environment]] if defined?(Rails)
51
50
 
52
51
  HashToStruct.struct(symbolize_all_keys(data))[config[:environment]]
53
52
  end
54
53
 
55
54
  def file_exist?
56
- @file_exist ||= File.exist?(yaml_file)
55
+ @file_exist ||= File.exist?(config_path)
57
56
  end
58
57
 
59
- def yaml_file
60
- @yaml_file ||= "./config/#{config_name}.yml"
61
- end
62
-
63
-
64
58
  def symbolize_all_keys(h) # rubocop:disable Naming/MethodParameterName
65
59
  if h.is_a? Hash
66
60
  h.transform_keys!(&:to_sym)
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'diplomat'
4
4
  require 'socket'
5
+ require 'yaml'
5
6
 
6
7
  module Briefbag
7
8
  class Diplomat
@@ -22,7 +23,6 @@ module Briefbag
22
23
 
23
24
  def configuration
24
25
  ::Diplomat.configure do |conf|
25
- # Set up a custom Consul URL
26
26
  conf.url = url_build
27
27
  break if config[:consul_token].nil?
28
28
 
@@ -39,15 +39,9 @@ module Briefbag
39
39
  ::Diplomat::Kv.get_all(consul_folder)
40
40
  end
41
41
 
42
- def json_parsing(value)
43
- return JSON.parse(value.force_encoding('UTF-8')) if value.encoding.eql? 'ASCII-8BIT'
44
-
45
- JSON.parse(value)
46
- end
47
-
48
42
  def mapping_hash
49
43
  consul_data.each_with_object({}) do |item, hash|
50
- hash[item[:key].split('/').last.to_sym] = json_parsing(item[:value])
44
+ hash[item[:key].split('/').last.to_sym] = ::YAML.safe_load(item[:value])
51
45
  end
52
46
  end
53
47
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Briefbag
4
- VERSION = '1.0.1'
4
+ VERSION = '1.0.2'
5
5
  end
@@ -1,21 +1,64 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'briefbag'
4
+ require 'byebug'
5
+ require 'rails'
6
+
3
7
  namespace :settings do
4
8
  desc 'create application.yml from consul data'
9
+ task :consul2yml,
10
+ [:consul_host, :consul_port, :consul_token, :consul_folder, :environment, :config_path] do |_t, args|
11
+ diplomat_config = Briefbag::Diplomat.new(
12
+ consul_host: args[:consul_host],
13
+ consul_port: args[:consul_port].to_i,
14
+ consul_token: args[:consul_token],
15
+ consul_folder: args[:consul_folder],
16
+ environment: args[:environment]
17
+ )
5
18
 
6
- # task :consul2yml [:consul_host, :consul_port, :consul_token, :consul_folder, :environment] do |_t, args|
7
- # ss = Briefbag::Diplomat.new(consul_host: args[:consul_host],
8
- # consul_port: args[:consul_port],
9
- # consul_token: args[:consul_token],
10
- # consul_folder: args[:consul_folder],
11
- # environment: args[:environment]).call
12
- # puts ss
13
- # end
19
+ data = diplomat_config.call
14
20
 
15
- task consul2yml: :environment do
16
- p 'ya rake task'
21
+ return warn Rainbow('Consul is down').red unless data.success?
22
+
23
+ yml_file = "#{Rails.root}/#{args[:config_path]}"
24
+ if Rails.env.development? && !File.exist?(yml_file)
25
+ configs = { "#{args[:environment]}": data.consul_data.deep_symbolize_keys }
26
+ warn Rainbow("Create #{args[:config_path]}").green
27
+ File.write(yml_file, configs.deep_stringify_keys.to_yaml)
28
+ warn Rainbow("Done! File #{args[:config_path]} created!").green
29
+ else
30
+ warn Rainbow("Skip! File #{args[:config_path]} exists.").red
31
+ end
32
+ end
33
+
34
+ desc 'Transfer configs file in consul from/to projects'
35
+ task :transfer_config, [:consul_url, :consul_token, :project, :from_env, :to_env] do |_t, args|
36
+ project = args[:project]
37
+ from = args[:from_env]
38
+ to = args[:to_env]
39
+
40
+ Diplomat.configure do |config|
41
+ config.url = args[:consul_url]
42
+ config.options = {
43
+ ssl: { version: :TLSv1_2 },
44
+ headers: {
45
+ 'X-Consul-Token' => args[:consul_token]
46
+ }
47
+ }
48
+ end
49
+ keys = Diplomat::Kv.get("#{from}/#{project}", keys: true)
50
+ keys.delete_at(0) # delete self name folder
51
+ config_names = keys.map { |k| k.split('/').last }
52
+
53
+ config_names.each do |config_name|
54
+ warn Rainbow("Start read data for key: #{config_name}").yellow
55
+ config = Diplomat::Kv.get("#{from}/#{project}/#{config_name}")
56
+ Diplomat::Kv.put("#{to}/#{project}/#{config_name}", config)
57
+ warn Rainbow("Success transfer data for key: #{config_name}").green
58
+ end
17
59
  end
18
60
 
61
+
19
62
  desc 'create application.yml from template'
20
63
  task template2yml: :environment do
21
64
  p 'ya rake task'
metadata CHANGED
@@ -1,43 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: briefbag
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Hitchens
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-07 00:00:00.000000000 Z
11
+ date: 2023-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: anyway_config
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 2.3.1
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 2.3.1
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: diplomat
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - ">="
32
18
  - !ruby/object:Gem::Version
33
- version: 2.6.4
19
+ version: 2.4.4
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
24
  - - ">="
39
25
  - !ruby/object:Gem::Version
40
- version: 2.6.4
26
+ version: 2.4.4
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: hash_to_struct
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -56,44 +42,44 @@ dependencies:
56
42
  name: rainbow
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - "~>"
45
+ - - ">="
60
46
  - !ruby/object:Gem::Version
61
- version: 3.1.1
47
+ version: 2.2.2
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - "~>"
52
+ - - ">="
67
53
  - !ruby/object:Gem::Version
68
- version: 3.1.1
54
+ version: 2.2.2
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rake
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - "~>"
59
+ - - ">="
74
60
  - !ruby/object:Gem::Version
75
- version: 13.0.6
61
+ version: 13.0.3
76
62
  type: :runtime
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - "~>"
66
+ - - ">="
81
67
  - !ruby/object:Gem::Version
82
- version: 13.0.6
68
+ version: 13.0.3
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: bundler
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: 2.1.4
75
+ version: 2.3.26
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: 2.1.4
82
+ version: 2.3.26
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: byebug
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +100,14 @@ dependencies:
114
100
  requirements:
115
101
  - - "~>"
116
102
  - !ruby/object:Gem::Version
117
- version: 3.1.1
103
+ version: 2.12.0
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
107
  requirements:
122
108
  - - "~>"
123
109
  - !ruby/object:Gem::Version
124
- version: 3.1.1
110
+ version: 2.12.0
125
111
  - !ruby/object:Gem::Dependency
126
112
  name: rake
127
113
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +142,14 @@ dependencies:
156
142
  requirements:
157
143
  - - "~>"
158
144
  - !ruby/object:Gem::Version
159
- version: 1.44.1
145
+ version: 1.10.0
160
146
  type: :development
161
147
  prerelease: false
162
148
  version_requirements: !ruby/object:Gem::Requirement
163
149
  requirements:
164
150
  - - "~>"
165
151
  - !ruby/object:Gem::Version
166
- version: 1.44.1
152
+ version: 1.10.0
167
153
  description:
168
154
  email:
169
155
  - mmseleznev@gmail.com
@@ -204,14 +190,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
204
190
  requirements:
205
191
  - - ">="
206
192
  - !ruby/object:Gem::Version
207
- version: 2.7.5
193
+ version: 2.4.2
208
194
  required_rubygems_version: !ruby/object:Gem::Requirement
209
195
  requirements:
210
196
  - - ">="
211
197
  - !ruby/object:Gem::Version
212
198
  version: '0'
213
199
  requirements: []
214
- rubygems_version: 3.1.6
200
+ rubygems_version: 3.0.9
215
201
  signing_key:
216
202
  specification_version: 4
217
203
  summary: Briefbag manage your config