briefbag 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
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