rdm 0.1.12 → 0.1.13

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