rdm 0.1.12 → 0.1.13

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.rubocop.yml +17 -0
  4. data/.travis.yml +13 -0
  5. data/Gemfile +5 -1
  6. data/LICENSE.txt +1 -1
  7. data/README.md +84 -28
  8. data/bin/rdm +72 -0
  9. data/bin/rubocop +6 -0
  10. data/docs/_config.yml +1 -0
  11. data/docs/index.md +98 -0
  12. data/docs/interface_brainstorming.md +31 -0
  13. data/example/Rdm.packages +1 -1
  14. data/example/Readme.md +1 -3
  15. data/lib/rdm.rb +29 -20
  16. data/lib/rdm/cli/gen_package.rb +48 -0
  17. data/lib/rdm/cli/init.rb +43 -0
  18. data/lib/rdm/config.rb +9 -1
  19. data/lib/rdm/config_manager.rb +5 -5
  20. data/lib/rdm/config_scope.rb +3 -3
  21. data/lib/rdm/errors.rb +2 -0
  22. data/lib/rdm/gen/concerns/template_handling.rb +81 -0
  23. data/lib/rdm/gen/init.rb +69 -0
  24. data/lib/rdm/gen/package.rb +99 -0
  25. data/lib/rdm/package.rb +17 -16
  26. data/lib/rdm/package_importer.rb +89 -79
  27. data/lib/rdm/package_parser.rb +25 -5
  28. data/lib/rdm/settings.rb +21 -20
  29. data/lib/rdm/source.rb +1 -1
  30. data/lib/rdm/source_locator.rb +31 -0
  31. data/lib/rdm/source_parser.rb +83 -68
  32. data/lib/rdm/support/colorize.rb +106 -0
  33. data/lib/rdm/support/render.rb +17 -0
  34. data/lib/rdm/support/template.rb +30 -0
  35. data/lib/rdm/templates/init/Gemfile.erb +25 -0
  36. data/lib/rdm/templates/init/Rdm.packages.erb +18 -0
  37. data/lib/rdm/templates/init/Readme.md.erb +24 -0
  38. data/lib/rdm/templates/{tests → init/tests}/run +27 -31
  39. data/lib/rdm/templates/package/.gitignore +1 -0
  40. data/lib/rdm/templates/{.rspec → package/.rspec} +0 -0
  41. data/lib/rdm/templates/{bin → package/bin}/console_irb +4 -5
  42. data/lib/rdm/templates/{main_module_file.rb.erb → package/main_module_file.rb.erb} +0 -0
  43. data/lib/rdm/templates/{package.rb.erb → package/package.rb.erb} +0 -0
  44. data/lib/rdm/templates/{spec → package/spec}/spec_helper.rb +0 -0
  45. data/lib/rdm/version.rb +1 -1
  46. data/rdm.gemspec +3 -0
  47. data/spec/fixtures/SampleSource.rb +3 -1
  48. data/spec/fixtures/sample_prj/Rdm.packages +12 -0
  49. data/spec/fixtures/sample_prj/infrastructure/web/Package.rb +16 -0
  50. data/spec/rdm/cli/gen_package_spec.rb +130 -0
  51. data/spec/rdm/cli/init_spec.rb +97 -0
  52. data/spec/rdm/config_manager_spec.rb +37 -1
  53. data/spec/rdm/gen/init_spec.rb +63 -0
  54. data/spec/rdm/gen/package_spec.rb +87 -0
  55. data/spec/rdm/package_importer_spec.rb +5 -1
  56. data/spec/rdm/package_parser_spec.rb +10 -24
  57. data/spec/rdm/rdm_spec.rb +42 -0
  58. data/spec/rdm/source_locator_spec.rb +45 -0
  59. data/spec/rdm/source_parser_spec.rb +45 -3
  60. data/spec/rdm/support/colorize_spec.rb +24 -0
  61. data/spec/rdm/support/template_spec.rb +20 -0
  62. data/spec/spec_helper.rb +45 -0
  63. metadata +92 -16
  64. data/bin/rdm-generate +0 -55
  65. data/bin/rdm-install +0 -13
  66. data/lib/rdm/auto_updater.rb +0 -41
  67. data/lib/rdm/package_generator.rb +0 -121
  68. data/lib/rdm/source_installer.rb +0 -35
  69. data/lib/rdm/templates/.gitignore +0 -1
@@ -1,35 +1,21 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Rdm::PackageParser do
4
- describe "#parse" do
5
- subject { Rdm::PackageParser }
6
-
7
- let(:package_content) {
8
- %Q{
9
- package do
10
- name "web"
11
- version "1.0"
12
- end
13
-
14
- dependency do
15
- import "core"
16
- require "active_support"
17
- require_file "lib/web.rb"
18
- end
19
-
20
- dependency :test do
21
- import "test_factory"
22
- require "rspec"
23
- require_file "lib/spec.rb"
24
- end
25
- }
4
+ describe "#parse_file" do
5
+ let(:fixtures_path) {
6
+ File.join(File.expand_path("../../", __FILE__), 'fixtures')
26
7
  }
27
8
 
28
- let(:package) { subject.parse(package_content) }
9
+ let(:package_path) {
10
+ File.join(fixtures_path, "sample_prj/infrastructure/web/Package.rb")
11
+ }
12
+ let(:package) { Rdm::PackageParser.parse_file(package_path) }
29
13
 
30
14
  it "parses package meta information" do
31
15
  expect(package.name).to eq("web")
32
16
  expect(package.version).to eq("1.0")
17
+ expect(package.path).to match("infrastructure/web")
18
+ expect(package.path).not_to match("infrastructure/web/Package.rb")
33
19
  end
34
20
 
35
21
  it "parses local dependecies" do
@@ -56,4 +42,4 @@ describe Rdm::PackageParser do
56
42
  expect(package.file_dependencies(:test)).to include("lib/spec.rb")
57
43
  end
58
44
  end
59
- end
45
+ end
@@ -0,0 +1,42 @@
1
+ require "spec_helper"
2
+
3
+ describe Rdm do
4
+ let(:example_path) {
5
+ Pathname.new(
6
+ File.join(File.expand_path('../../../', __FILE__), 'example')
7
+ )
8
+ }
9
+ let(:source_file) {
10
+ example_path.join('Rdm.packages').to_s
11
+ }
12
+
13
+ let(:package_path) {
14
+ example_path.join("application/web").to_s
15
+ }
16
+
17
+ context "init" do
18
+ it "will initialize RDM based on path to a package.rb file" do
19
+ package = Rdm.init(package_path)
20
+ expect(package.name).to eq("web")
21
+ end
22
+ end
23
+
24
+ context "settings" do
25
+ it "returns settings" do
26
+ expect(Rdm.settings).to be_a(Rdm::Settings)
27
+ end
28
+ end
29
+
30
+ context "config" do
31
+ it "returns config" do
32
+ expect(Rdm.config).to be_a(Rdm::ConfigManager)
33
+ end
34
+ end
35
+
36
+ context "root=" do
37
+ it "sets root" do
38
+ Rdm.root = "/some/path"
39
+ expect(Rdm.root).to eq("/some/path")
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rdm::SourceLocator do
4
+ describe "::locate" do
5
+ subject { Rdm::SourceParser }
6
+
7
+ let(:example_path) {
8
+ Pathname.new(
9
+ File.join(File.expand_path('../../../', __FILE__), 'example')
10
+ )
11
+ }
12
+ let(:source_file) {
13
+ example_path.join('Rdm.packages').to_s
14
+ }
15
+
16
+ def locate(path)
17
+ Rdm::SourceLocator.locate(path)
18
+ end
19
+
20
+ it "works within valid root folder" do
21
+ expect(locate(example_path)).to eq(source_file)
22
+ end
23
+
24
+ it "works in any (deep) subfolder of valid root folder" do
25
+ path1 = example_path.join('domain/core')
26
+ path2 = example_path.join('infrastructure/repository/package/repository')
27
+ expect(locate(path1)).to eq(source_file)
28
+ expect(locate(path2)).to eq(source_file)
29
+ end
30
+
31
+ it "even works for non-exiting subfolders of valid root folder" do
32
+ path1 = example_path.join('domain/invalid')
33
+ path2 = example_path.join('just/some/random/folders/here')
34
+ expect(locate(path1)).to eq(source_file)
35
+ expect(locate(path2)).to eq(source_file)
36
+ end
37
+
38
+ it "raises when source file could not be found in any folder for the whole folder hierarchy" do
39
+ path1 = "/tmp/not/valid"
40
+ expect {
41
+ locate(path1)
42
+ }.to raise_error(Rdm::Errors::SourceFileDoesNotExist, path1)
43
+ end
44
+ end
45
+ end
@@ -8,12 +8,16 @@ describe Rdm::SourceParser do
8
8
  File.join(File.expand_path("../../", __FILE__), 'fixtures')
9
9
  }
10
10
 
11
+ let(:source_path) {
12
+ File.join(fixtures_path, "SampleSource.rb")
13
+ }
14
+
11
15
  let(:source_content) {
12
- File.read(File.join(fixtures_path, "SampleSource.rb"))
16
+ File.read(source_path)
13
17
  }
14
18
 
15
19
  before :each do
16
- @source = subject.parse(source_content)
20
+ @source = subject.read_and_init_source(source_path)
17
21
  end
18
22
 
19
23
  it "returns Source object" do
@@ -33,4 +37,42 @@ describe Rdm::SourceParser do
33
37
  expect(names).to include("database")
34
38
  end
35
39
  end
36
- end
40
+
41
+
42
+ describe "#parse on real project" do
43
+ subject { Rdm::SourceParser }
44
+
45
+ let(:fixtures_path) {
46
+ File.join(File.expand_path("../../../", __FILE__), 'example')
47
+ }
48
+
49
+ let(:source_path) {
50
+ File.join(fixtures_path, "Rdm.packages")
51
+ }
52
+
53
+ let(:source_content) {
54
+ File.read(source_path)
55
+ }
56
+
57
+ before :each do
58
+ @source = subject.read_and_init_source(source_path)
59
+ end
60
+
61
+ it "returns Source object" do
62
+ expect(@source.is_a?(Rdm::Source)).to be_truthy
63
+ end
64
+
65
+ it "parses all packages paths" do
66
+ paths = @source.package_paths
67
+ expect(paths.count).to be(4)
68
+ expect(paths).to include("application/web")
69
+ expect(paths).to include("domain/core")
70
+ end
71
+
72
+ it "parses all config names" do
73
+ names = @source.config_names
74
+ expect(names.count).to be(2)
75
+ expect(names).to include("database")
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,24 @@
1
+ require "spec_helper"
2
+
3
+ describe Rdm::Support::Colorize do
4
+ let(:subject){Rdm::Support::Colorize}
5
+ context "colorize" do
6
+ it "red works" do
7
+ expect(subject.red('hello')).to eq("\e[31mhello\e[0m")
8
+ end
9
+
10
+ it "green works" do
11
+ expect(subject.green('hello')).to eq("\e[32mhello\e[0m")
12
+ end
13
+
14
+ it "brown works" do
15
+ expect(subject.brown('hello')).to eq("\e[33mhello\e[0m")
16
+ end
17
+ end
18
+
19
+ context "no_colors" do
20
+ it "removes colors from string" do
21
+ expect(subject.no_colors(subject.red('hello'))).to eq("hello")
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,20 @@
1
+ require "spec_helper"
2
+
3
+ describe "Rdm::Support::Template" do
4
+ let(:template) {Rdm::Support::Template.new}
5
+ describe ":default_templates_path" do
6
+ it "is correct" do
7
+ expect(template.default_templates_path.to_s).to match(/lib\/rdm\/templates$/)
8
+ end
9
+ end
10
+
11
+ describe ":content" do
12
+ it "renders template content without locals" do
13
+ expect(template.content("package/.rspec")).to eq("--color\n--require spec_helper\n")
14
+ end
15
+
16
+ it "renders template content without locals" do
17
+ expect(template.content("package/main_module_file.rb.erb", {package_name_camelized: "Some"})).to eq("module Some\n\nend\n")
18
+ end
19
+ end
20
+ end
@@ -1,4 +1,16 @@
1
+ require 'simplecov'
2
+ SimpleCov.start do
3
+ add_filter "/spec/"
4
+ add_filter "/.direnv/"
5
+ add_filter "/rdm/templates"
6
+ end
7
+ if ENV['CI']=='true'
8
+ require 'codecov'
9
+ SimpleCov.formatter = SimpleCov::Formatter::Codecov
10
+ end
11
+
1
12
  require 'rdm'
13
+ require "byebug"
2
14
 
3
15
  Rdm.setup do
4
16
  silence_missing_package_file(true)
@@ -8,3 +20,36 @@ RSpec.configure do |config|
8
20
  config.color = true
9
21
  end
10
22
 
23
+
24
+ module SetupHelper
25
+ def clean_tmp
26
+ FileUtils.rm_rf(tmp_dir)
27
+ end
28
+
29
+ def fresh_project
30
+ clean_tmp
31
+ FileUtils.mkdir_p(tmp_dir)
32
+ FileUtils.cp_r(example_src, tmp_dir)
33
+ end
34
+
35
+ def fresh_empty_project
36
+ clean_tmp
37
+ FileUtils.mkdir_p(empty_project_dir)
38
+ end
39
+
40
+ def project_dir
41
+ File.join(tmp_dir, "example")
42
+ end
43
+
44
+ def empty_project_dir
45
+ File.join(tmp_dir, "empty_project")
46
+ end
47
+
48
+ def tmp_dir
49
+ File.join(File.dirname(__FILE__), "tmp/projects")
50
+ end
51
+
52
+ def example_src
53
+ File.join(File.dirname(__FILE__), "../example/")
54
+ end
55
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.1.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Droid Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-08 00:00:00.000000000 Z
11
+ date: 2017-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: codecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: activesupport
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -66,21 +94,40 @@ dependencies:
66
94
  - - ">="
67
95
  - !ruby/object:Gem::Version
68
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: commander
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '4.4'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '4.4'
69
111
  description: Ruby Dependency Manager
70
112
  email:
71
113
  executables:
72
- - rdm-generate
73
- - rdm-install
114
+ - rdm
115
+ - rubocop
74
116
  extensions: []
75
117
  extra_rdoc_files: []
76
118
  files:
77
119
  - ".gitignore"
120
+ - ".rubocop.yml"
121
+ - ".travis.yml"
78
122
  - Gemfile
79
123
  - LICENSE.txt
80
124
  - README.md
81
125
  - Rakefile
82
- - bin/rdm-generate
83
- - bin/rdm-install
126
+ - bin/rdm
127
+ - bin/rubocop
128
+ - docs/_config.yml
129
+ - docs/index.md
130
+ - docs/interface_brainstorming.md
84
131
  - example/Gemfile
85
132
  - example/Makefile
86
133
  - example/Rdm.packages
@@ -101,35 +148,54 @@ files:
101
148
  - example/server/package/server.rb
102
149
  - example/server/server.rb
103
150
  - lib/rdm.rb
104
- - lib/rdm/auto_updater.rb
151
+ - lib/rdm/cli/gen_package.rb
152
+ - lib/rdm/cli/init.rb
105
153
  - lib/rdm/config.rb
106
154
  - lib/rdm/config_manager.rb
107
155
  - lib/rdm/config_scope.rb
108
156
  - lib/rdm/errors.rb
157
+ - lib/rdm/gen/concerns/template_handling.rb
158
+ - lib/rdm/gen/init.rb
159
+ - lib/rdm/gen/package.rb
109
160
  - lib/rdm/package.rb
110
- - lib/rdm/package_generator.rb
111
161
  - lib/rdm/package_importer.rb
112
162
  - lib/rdm/package_parser.rb
113
163
  - lib/rdm/settings.rb
114
164
  - lib/rdm/source.rb
115
- - lib/rdm/source_installer.rb
165
+ - lib/rdm/source_locator.rb
116
166
  - lib/rdm/source_parser.rb
117
- - lib/rdm/templates/.gitignore
118
- - lib/rdm/templates/.rspec
119
- - lib/rdm/templates/bin/console_irb
120
- - lib/rdm/templates/main_module_file.rb.erb
121
- - lib/rdm/templates/package.rb.erb
122
- - lib/rdm/templates/spec/spec_helper.rb
123
- - lib/rdm/templates/tests/run
167
+ - lib/rdm/support/colorize.rb
168
+ - lib/rdm/support/render.rb
169
+ - lib/rdm/support/template.rb
170
+ - lib/rdm/templates/init/Gemfile.erb
171
+ - lib/rdm/templates/init/Rdm.packages.erb
172
+ - lib/rdm/templates/init/Readme.md.erb
173
+ - lib/rdm/templates/init/tests/run
174
+ - lib/rdm/templates/package/.gitignore
175
+ - lib/rdm/templates/package/.rspec
176
+ - lib/rdm/templates/package/bin/console_irb
177
+ - lib/rdm/templates/package/main_module_file.rb.erb
178
+ - lib/rdm/templates/package/package.rb.erb
179
+ - lib/rdm/templates/package/spec/spec_helper.rb
124
180
  - lib/rdm/version.rb
125
181
  - rdm.gemspec
126
182
  - spec/fixtures/SampleSource.rb
127
183
  - spec/fixtures/config.yml
184
+ - spec/fixtures/sample_prj/Rdm.packages
185
+ - spec/fixtures/sample_prj/infrastructure/web/Package.rb
186
+ - spec/rdm/cli/gen_package_spec.rb
187
+ - spec/rdm/cli/init_spec.rb
128
188
  - spec/rdm/config_manager_spec.rb
189
+ - spec/rdm/gen/init_spec.rb
190
+ - spec/rdm/gen/package_spec.rb
129
191
  - spec/rdm/package_importer_spec.rb
130
192
  - spec/rdm/package_parser_spec.rb
193
+ - spec/rdm/rdm_spec.rb
131
194
  - spec/rdm/settings_spec.rb
195
+ - spec/rdm/source_locator_spec.rb
132
196
  - spec/rdm/source_parser_spec.rb
197
+ - spec/rdm/support/colorize_spec.rb
198
+ - spec/rdm/support/template_spec.rb
133
199
  - spec/spec_helper.rb
134
200
  homepage:
135
201
  licenses: []
@@ -157,9 +223,19 @@ summary: Ruby Dependency Manager
157
223
  test_files:
158
224
  - spec/fixtures/SampleSource.rb
159
225
  - spec/fixtures/config.yml
226
+ - spec/fixtures/sample_prj/Rdm.packages
227
+ - spec/fixtures/sample_prj/infrastructure/web/Package.rb
228
+ - spec/rdm/cli/gen_package_spec.rb
229
+ - spec/rdm/cli/init_spec.rb
160
230
  - spec/rdm/config_manager_spec.rb
231
+ - spec/rdm/gen/init_spec.rb
232
+ - spec/rdm/gen/package_spec.rb
161
233
  - spec/rdm/package_importer_spec.rb
162
234
  - spec/rdm/package_parser_spec.rb
235
+ - spec/rdm/rdm_spec.rb
163
236
  - spec/rdm/settings_spec.rb
237
+ - spec/rdm/source_locator_spec.rb
164
238
  - spec/rdm/source_parser_spec.rb
239
+ - spec/rdm/support/colorize_spec.rb
240
+ - spec/rdm/support/template_spec.rb
165
241
  - spec/spec_helper.rb