rdm 0.4.14.2 → 0.4.17

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.
Files changed (63) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile.lock +26 -19
  3. data/bin/rdm +10 -10
  4. data/example/Rdm.packages +1 -17
  5. data/example/config/app.yml +6 -0
  6. data/example/infrastructure/repository/Package.rb +0 -1
  7. data/example/infrastructure/repository/fixture.txt +1 -0
  8. data/lib/rdm.rb +14 -7
  9. data/lib/rdm/errors.rb +3 -0
  10. data/lib/rdm/gen/init.rb +0 -4
  11. data/lib/rdm/package.rb +18 -9
  12. data/lib/rdm/package_importer.rb +4 -18
  13. data/lib/rdm/package_parser.rb +1 -0
  14. data/lib/rdm/packages/compiler_service.rb +1 -7
  15. data/lib/rdm/settings.rb +10 -21
  16. data/lib/rdm/source.rb +1 -18
  17. data/lib/rdm/source_parser.rb +2 -45
  18. data/lib/rdm/templates/init/Rdm.packages +0 -12
  19. data/lib/rdm/utils/ostruct_utils.rb +12 -0
  20. data/lib/rdm/version.rb +1 -1
  21. data/lib/rdm/yml_config/config_caster.rb +32 -0
  22. data/lib/rdm/yml_config/config_manager.rb +39 -0
  23. data/lib/rdm/yml_config/config_validator.rb +51 -0
  24. data/lib/rdm/yml_config/env_config.rb +46 -0
  25. data/lib/rdm/yml_config/env_config_dsl.rb +92 -0
  26. data/lib/rdm/yml_config/validate_config.rb +13 -0
  27. data/rdm.gemspec +3 -0
  28. data/spec/fixtures/SampleSource.rb +2 -4
  29. data/spec/fixtures/app.yml +17 -0
  30. data/spec/rdm/cli/gen_package_spec.rb +0 -2
  31. data/spec/rdm/gen/init_spec.rb +0 -12
  32. data/spec/rdm/gen/package_spec.rb +1 -0
  33. data/spec/rdm/package_importer_spec.rb +34 -2
  34. data/spec/rdm/rdm_spec.rb +1 -1
  35. data/spec/rdm/source_parser_spec.rb +0 -59
  36. data/spec/rdm/yml_config/config_caster_spec.rb +64 -0
  37. data/spec/rdm/yml_config/config_manager_spec.rb +7 -0
  38. data/spec/rdm/yml_config/config_validator_spec.rb +190 -0
  39. data/spec/rdm/yml_config/env_config_dsl_spec.rb +123 -0
  40. data/spec/spec_helper.rb +1 -0
  41. metadata +69 -34
  42. data/example/.rdm/templates/configs/<%=config_path%> +0 -2
  43. data/example/.rdm/templates/configs/<%=role_config_path%> +0 -2
  44. data/example/configs/app/default.yml +0 -2
  45. data/example/configs/app/production.yml +0 -2
  46. data/example/configs/database/default.yml +0 -3
  47. data/example/env_files/development.env +0 -3
  48. data/example/env_files/production.env +0 -5
  49. data/example/env_files/test.env +0 -3
  50. data/lib/rdm/cli/config.rb +0 -31
  51. data/lib/rdm/config.rb +0 -11
  52. data/lib/rdm/config_locals.rb +0 -11
  53. data/lib/rdm/config_manager.rb +0 -68
  54. data/lib/rdm/config_scope.rb +0 -23
  55. data/lib/rdm/gen/config.rb +0 -59
  56. data/lib/rdm/templates/configs/<%=config_path%> +0 -2
  57. data/lib/rdm/templates/configs/<%=role_config_path%> +0 -2
  58. data/lib/rdm/templates/init/env_files/development.env +0 -3
  59. data/lib/rdm/templates/init/env_files/production.env +0 -3
  60. data/lib/rdm/templates/init/env_files/test.env +0 -3
  61. data/spec/fixtures/config.yml +0 -2
  62. data/spec/rdm/config_manager_spec.rb +0 -136
  63. data/spec/rdm/gen/config_spec.rb +0 -31
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a13427e067b489518c6a2ed9555043e73f0a8894
4
- data.tar.gz: 987c4ee06c9b461f8345ee3d6bedaea3548a27d0
2
+ SHA256:
3
+ metadata.gz: f92289ab666f058d12097df562312b6adcb7311433781270958fe4c550a02659
4
+ data.tar.gz: 9ebc9af89030643d8368659966bcec6dbc3aee536b065ea204e5d6868bf1ed22
5
5
  SHA512:
6
- metadata.gz: b7137d6ac2db182e73c7fce9c93295b93f9b49ed1e6e63d68cd36945900bc5051990ed6e5b5f99073128cc39c8e37a126c3c7bda8cd857427a85e5a5c291f018
7
- data.tar.gz: e41d71721c8b497ab395b743e28e1d98101ae68ac85b9ccf5fdce193b6a466a5180f9bccd3cf8c72d0678557d9abbbc9b71f3fc462dd21863cb5f4ccb097c81d
6
+ metadata.gz: 3bdb3f4ab4ae1eec9732364df1ec3061c4d7f480f34b33af1e5508a8bae4945e602d584243ce6cfb3015ac05063e49da8b6a4dd0ae098f6be96103aba65b31d6
7
+ data.tar.gz: 21db2cc6cbb6e57347aa6b06a4a5bb8a8988a4b6b8d4a1c045b84b66513f6d80b2b9e9ccfc9218fe8e6866df702c054f474214379129d7d9974aa0a90f292520
@@ -1,34 +1,42 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rdm (0.4.14)
4
+ rdm (0.4.17)
5
5
  activesupport
6
+ attr_validator
6
7
  commander (~> 4.4)
8
+ hcast
9
+ morf
7
10
 
8
11
  GEM
9
12
  remote: https://rubygems.org/
10
13
  specs:
11
- activesupport (5.1.2)
14
+ activesupport (5.2.4.4)
12
15
  concurrent-ruby (~> 1.0, >= 1.0.2)
13
- i18n (~> 0.7)
16
+ i18n (>= 0.7, < 2)
14
17
  minitest (~> 5.1)
15
18
  tzinfo (~> 1.1)
16
19
  ast (2.3.0)
20
+ attr_validator (0.2.3)
21
+ i18n
17
22
  byebug (9.0.6)
18
- codecov (0.1.10)
23
+ codecov (0.2.5)
24
+ colorize
19
25
  json
20
26
  simplecov
21
- url
22
- commander (4.4.3)
23
- highline (~> 1.7.2)
24
- concurrent-ruby (1.0.5)
27
+ colorize (0.8.1)
28
+ commander (4.5.2)
29
+ highline (~> 2.0.0)
30
+ concurrent-ruby (1.1.7)
25
31
  diff-lcs (1.3)
26
- docile (1.1.5)
27
- highline (1.7.8)
28
- i18n (0.9.1)
32
+ docile (1.3.2)
33
+ hcast (0.3.0)
34
+ highline (2.0.3)
35
+ i18n (1.8.5)
29
36
  concurrent-ruby (~> 1.0)
30
- json (2.0.3)
31
- minitest (5.10.2)
37
+ json (2.3.1)
38
+ minitest (5.14.2)
39
+ morf (0.0.3)
32
40
  parser (2.3.3.1)
33
41
  ast (~> 2.2)
34
42
  powerpack (0.1.1)
@@ -54,16 +62,15 @@ GEM
54
62
  ruby-progressbar (~> 1.7)
55
63
  unicode-display_width (~> 1.0, >= 1.0.1)
56
64
  ruby-progressbar (1.8.1)
57
- simplecov (0.14.1)
58
- docile (~> 1.1.0)
65
+ simplecov (0.17.1)
66
+ docile (~> 1.1)
59
67
  json (>= 1.8, < 3)
60
68
  simplecov-html (~> 0.10.0)
61
- simplecov-html (0.10.0)
69
+ simplecov-html (0.10.2)
62
70
  thread_safe (0.3.6)
63
- tzinfo (1.2.4)
71
+ tzinfo (1.2.7)
64
72
  thread_safe (~> 0.1)
65
73
  unicode-display_width (1.1.2)
66
- url (0.3.2)
67
74
 
68
75
  PLATFORMS
69
76
  ruby
@@ -78,4 +85,4 @@ DEPENDENCIES
78
85
  rubocop (~> 0.46)
79
86
 
80
87
  BUNDLED WITH
81
- 1.16.0
88
+ 1.17.3
data/bin/rdm CHANGED
@@ -60,7 +60,7 @@ class RdmCliRunner
60
60
  c.action do |args, options|
61
61
  package_name = (args.first || "")
62
62
  defaults = {
63
- current_path: File.expand_path(`pwd`.chomp),
63
+ current_path: `pwd`.chomp,
64
64
  package_name: package_name,
65
65
  path: package_name.downcase.gsub(/\s+/, '_')
66
66
  }
@@ -82,7 +82,7 @@ class RdmCliRunner
82
82
  c.action do |args, options|
83
83
  revision = (args.first || "HEAD")
84
84
  options = {
85
- path: File.expand_path(`pwd`.chomp),
85
+ path: `pwd`.chomp,
86
86
  revision: revision,
87
87
  }
88
88
  Rdm::CLI::DiffPackage.run(options)
@@ -100,7 +100,7 @@ class RdmCliRunner
100
100
  c.action do |args, options|
101
101
  package_name = (args.first || "")
102
102
  opts = {
103
- project_path: File.expand_path(`pwd`.chomp),
103
+ project_path: `pwd`.chomp,
104
104
  package_name: package_name,
105
105
  compile_path: options.path
106
106
  }
@@ -125,7 +125,7 @@ class RdmCliRunner
125
125
 
126
126
  Rdm::CLI::TemplateGenerator.run(
127
127
  template_name: template_name,
128
- current_path: File.expand_path(`pwd`.chomp),
128
+ current_path: `pwd`.chomp,
129
129
  local_path: options_hash.delete(:path),
130
130
  locals: options_hash
131
131
  )
@@ -143,7 +143,7 @@ class RdmCliRunner
143
143
 
144
144
  Rdm::CLI::DependenciesController.run(
145
145
  package_name: package_name,
146
- project_path: File.expand_path(`pwd`.chomp)
146
+ project_path: `pwd`.chomp
147
147
  )
148
148
  end
149
149
  end
@@ -162,7 +162,7 @@ class RdmCliRunner
162
162
 
163
163
  Rdm::CLI::Config.run(
164
164
  config_name: config_name,
165
- current_path: File.expand_path(`pwd`.chomp),
165
+ current_path: `pwd`.chomp,
166
166
  config_data: options_hash
167
167
  )
168
168
  end
@@ -193,11 +193,11 @@ class RdmCliRunner
193
193
  options_hash = options.__hash__
194
194
  options_hash.delete(:trace)
195
195
 
196
- Rdm.root(File.expand_path(`pwd`.chomp))
196
+ Rdm.root(`pwd`.chomp)
197
197
  Rdm::SpecRunner.run(
198
198
  package: package_name,
199
199
  spec_matcher: spec_matcher,
200
- path: File.expand_path(`pwd`.chomp),
200
+ path: `pwd`.chomp,
201
201
  skip_ignored_packages: true,
202
202
  show_missing_packages: true,
203
203
  from: options_hash[:from]
@@ -221,11 +221,11 @@ class RdmCliRunner
221
221
  revision = args[0]
222
222
 
223
223
  ENV['RUBY_ENV'] = 'test'
224
- Rdm.root(File.expand_path(`pwd`.chomp))
224
+ Rdm.root(`pwd`.chomp)
225
225
 
226
226
  Rdm::CLI::DiffSpecRunner.run(
227
227
  revision: revision,
228
- path: File.expand_path(`pwd`.chomp)
228
+ path: `pwd`.chomp
229
229
  )
230
230
  end
231
231
  end
@@ -3,25 +3,9 @@ setup do
3
3
  ENV['RUBY_ENV'] || "production"
4
4
  end
5
5
 
6
- env_file_name do
7
- ENV['ENV_FILE'] || "production"
8
- end
9
-
10
- env_files_dir "env_files"
11
-
12
- configs_dir "configs"
13
- config_path ":configs_dir/:config_name/default.yml"
14
- role_config_path ":configs_dir/:config_name/:role.yml"
15
-
16
- package_subdir_name "package"
17
-
18
-
19
- compile_path "/tmp/rdm/:package_name"
6
+ config_path 'config/app.yml'
20
7
  end
21
8
 
22
- config :database
23
- config :app
24
-
25
9
  package "server"
26
10
  package "application/web"
27
11
  package "domain/core"
@@ -0,0 +1,6 @@
1
+ database:
2
+ username: "root"
3
+ password: "root"
4
+ core:
5
+ app_name: "RdmExampleProject"
6
+
@@ -5,5 +5,4 @@ end
5
5
 
6
6
  dependency do
7
7
  # require "sequel"
8
- import_config :app
9
8
  end
@@ -0,0 +1 @@
1
+ Repository spec working here!
data/lib/rdm.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'morf'
2
+
1
3
  module Rdm
2
4
  SOURCE_FILENAME = 'Rdm.packages'.freeze
3
5
  PACKAGE_FILENAME = 'Package.rb'.freeze
@@ -6,6 +8,7 @@ module Rdm
6
8
  require 'rdm/utils/render_util'
7
9
  require 'rdm/utils/string_utils'
8
10
  require 'rdm/utils/file_utils'
11
+ require 'rdm/utils/ostruct_utils'
9
12
  require 'rdm/version'
10
13
 
11
14
  # CLI part
@@ -15,13 +18,9 @@ module Rdm
15
18
  require 'rdm/cli/diff_package'
16
19
  require 'rdm/cli/template_generator'
17
20
  require 'rdm/cli/dependencies_controller'
18
- require 'rdm/cli/config'
19
21
  require 'rdm/cli/diff_spec_runner.rb'
20
22
 
21
23
  # Runtime part
22
- require 'rdm/config'
23
- require 'rdm/config_scope'
24
- require 'rdm/config_manager'
25
24
  require 'rdm/errors'
26
25
  require 'rdm/package'
27
26
  require 'rdm/package_parser'
@@ -33,7 +32,6 @@ module Rdm
33
32
  require 'rdm/git/diff_manager'
34
33
  require 'rdm/git/diff_command'
35
34
  require 'rdm/git/repository_locator'
36
- require 'rdm/config_locals'
37
35
  require 'rdm/source_modifier'
38
36
 
39
37
  # Package part
@@ -43,7 +41,6 @@ module Rdm
43
41
  # Handlers part
44
42
  require 'rdm/gen/package'
45
43
  require 'rdm/gen/init'
46
- require 'rdm/gen/config'
47
44
  require 'rdm/handlers/diff_package_handler'
48
45
  require 'rdm/handlers/template_handler'
49
46
  require 'rdm/handlers/dependencies_handler'
@@ -62,6 +59,13 @@ module Rdm
62
59
  require 'rdm/spec_runner/view'
63
60
  require 'rdm/spec_runner/spec_filename_matcher'
64
61
 
62
+ require 'rdm/yml_config/env_config_dsl'
63
+ require 'rdm/yml_config/validate_config'
64
+ require 'rdm/yml_config/env_config'
65
+ require 'rdm/yml_config/config_caster'
66
+ require 'rdm/yml_config/config_manager'
67
+ require 'rdm/yml_config/config_validator'
68
+
65
69
  extend Rdm::Helpers::PathHelper
66
70
 
67
71
  class << self
@@ -70,6 +74,9 @@ module Rdm
70
74
  @stdout = stdout
71
75
 
72
76
  Rdm::PackageImporter.import_file(package_path, group: group)
77
+ rescue Rdm::Errors::InvalidConfig => e
78
+ puts e.message
79
+ exit(0)
73
80
  end
74
81
 
75
82
  # Rdm's internal settings
@@ -79,7 +86,7 @@ module Rdm
79
86
 
80
87
  # Rdm's managed configuration
81
88
  def config
82
- @config ||= Rdm::ConfigManager.new
89
+ @config ||= Rdm::ConfigManager
83
90
  end
84
91
 
85
92
  # Setup Rdm's internal settings
@@ -56,5 +56,8 @@ module Rdm
56
56
 
57
57
  class ConfigExists < StandardError
58
58
  end
59
+
60
+ class InvalidConfig < StandardError
61
+ end
59
62
  end
60
63
  end
@@ -45,10 +45,6 @@ module Rdm
45
45
  @template_detector.gem_template_folder('package'),
46
46
  File.dirname(@template_detector.project_template_folder('package'))
47
47
  )
48
- FileUtils.cp_r(
49
- @template_detector.gem_template_folder('configs'),
50
- File.dirname(@template_detector.project_template_folder('configs'))
51
- )
52
48
 
53
49
  generated_files
54
50
  end
@@ -2,6 +2,11 @@ class Rdm::Package
2
2
  DEFAULT_GROUP = '_default_'.freeze
3
3
 
4
4
  attr_accessor :metadata, :local_dependencies, :external_dependencies, :file_dependencies, :config_dependencies, :path
5
+ attr_reader :environments
6
+
7
+ def inspect
8
+ "Rdm::Package(name: #{name}, path: #{path})"
9
+ end
5
10
 
6
11
  def local_dependencies(group = nil)
7
12
  fetch_dependencies(@local_dependencies || {}, group)
@@ -15,10 +20,6 @@ class Rdm::Package
15
20
  fetch_dependencies(@file_dependencies || {}, group)
16
21
  end
17
22
 
18
- def config_dependencies(group = nil)
19
- fetch_dependencies(@config_dependencies || {}, group)
20
- end
21
-
22
23
  def local_dependencies_with_groups
23
24
  return {} if @local_dependencies.nil?
24
25
  @local_dependencies.each_with_object(
@@ -49,11 +50,7 @@ class Rdm::Package
49
50
  @file_dependencies[current_group] << file
50
51
  end
51
52
 
52
- # Import config dependency
53
- def import_config(dependency)
54
- @config_dependencies ||= {}
55
- @config_dependencies[current_group] ||= []
56
- @config_dependencies[current_group] << dependency
53
+ def import_config(*args)
57
54
  end
58
55
 
59
56
  def package
@@ -84,6 +81,18 @@ class Rdm::Package
84
81
  other_package.name == name
85
82
  end
86
83
 
84
+ def set_environments(&block)
85
+ environments.children = Rdm::EnvConfigDSL.new.instance_exec(&block) if block_given?
86
+ end
87
+
88
+ def environments
89
+ @environments ||= Rdm::EnvConfig.new(
90
+ name: name,
91
+ type: Rdm::EnvConfig::Types::HASH,
92
+ optional: false
93
+ )
94
+ end
95
+
87
96
  private
88
97
 
89
98
  def current_group
@@ -31,6 +31,7 @@ class Rdm::PackageImporter
31
31
  # @return [Rdm::Package] Current package
32
32
  def import_file(package_path, group: nil)
33
33
  package = Rdm::PackageParser.parse_file(package_path)
34
+
34
35
  source = read_and_init_source(package.source)
35
36
 
36
37
  # Init Rdm.root based on Rdm.packages directory
@@ -46,10 +47,6 @@ class Rdm::PackageImporter
46
47
  @imported_packages ||= []
47
48
  end
48
49
 
49
- def imported_configs
50
- @imported_configs ||= []
51
- end
52
-
53
50
  # Import package and initialize module
54
51
  def import_package(package_name, source:, group: nil)
55
52
  return imported_packages if imported_packages.include?(package_name.to_s)
@@ -62,14 +59,9 @@ class Rdm::PackageImporter
62
59
 
63
60
  # also import local dependencies
64
61
  package.local_dependencies(group).each do |dependency|
65
- import_package(dependency, source: source)
62
+ import_package(dependency, source: source, group: group)
66
63
  end
67
64
 
68
- # also import config dependencies
69
- package.config_dependencies(group).each do |dependency|
70
- import_config(dependency, source: source)
71
- end
72
-
73
65
  # only after importing dependencies - require package itself
74
66
  begin
75
67
  require package_name
@@ -105,19 +97,13 @@ class Rdm::PackageImporter
105
97
  require File.join(package.path, file_path)
106
98
  end
107
99
 
100
+ Rdm::ConfigManager.load_config(envs: package.environments, path_to_config: Rdm.settings.config_path)
101
+
108
102
  unless ActiveSupport::Dependencies.autoload_paths.include?(package_dir_name)
109
103
  ActiveSupport::Dependencies.autoload_paths << package_dir_name
110
104
  end
111
105
  end
112
106
 
113
- def import_config(config_name, source:)
114
- return if imported_configs.include?(config_name)
115
- config = source.configs[config_name.to_s]
116
- raise "Can't find config with name: #{config_name}" if config.nil?
117
- Rdm.config.load_config(config, source: source)
118
- imported_configs << config_name
119
- end
120
-
121
107
  def read_and_init_source(source_path)
122
108
  source_parser.read_and_init_source(source_path)
123
109
  end
@@ -16,6 +16,7 @@ class Rdm::PackageParser
16
16
 
17
17
  def parse(package_content)
18
18
  spec = Rdm::Package.new
19
+
19
20
  spec.instance_eval(package_content)
20
21
  spec
21
22
  end
@@ -56,13 +56,7 @@ module Rdm
56
56
  end
57
57
  end
58
58
 
59
- FileUtils.cp_r(File.join(@project_path, 'configs'), File.join(@compile_path, 'configs'))
60
- if Dir.exists?(File.join(@project_path, Rdm.settings.env_files_dir))
61
- FileUtils.cp_r(
62
- File.join(@project_path, Rdm.settings.env_files_dir),
63
- File.join(@compile_path, Rdm.settings.env_files_dir)
64
- )
65
- end
59
+ # TODO: paste generated env files to compile directory
66
60
 
67
61
  Rdm.settings.compile_ignore_files.each do |file|
68
62
  Dir["#{@compile_path}/**/#{file}"].each do |file_to_remove|