tetra 0.40.0 → 0.41.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/.gitignore +1 -1
  2. data/Gemfile +2 -0
  3. data/Gemfile.lock +48 -0
  4. data/MOTIVATION.md +9 -3
  5. data/README.md +5 -5
  6. data/SPECIAL_CASES.md +1 -3
  7. data/integration-tests/{commons.sh → build-commons.sh} +26 -6
  8. data/integration-tests/build-obs.sh +21 -0
  9. data/lib/template/kit_item.spec +53 -0
  10. data/lib/template/package.spec +4 -2
  11. data/lib/tetra.rb +5 -3
  12. data/lib/tetra/archiver.rb +23 -87
  13. data/lib/tetra/commands/generate_all.rb +13 -16
  14. data/lib/tetra/commands/generate_kit_archive.rb +4 -4
  15. data/lib/tetra/commands/generate_kit_spec.rb +4 -2
  16. data/lib/tetra/commands/generate_package_archive.rb +1 -1
  17. data/lib/tetra/commands/generate_package_spec.rb +2 -2
  18. data/lib/tetra/git.rb +19 -10
  19. data/lib/tetra/glue_kit_item.rb +42 -0
  20. data/lib/tetra/jar_kit_item.rb +45 -0
  21. data/lib/tetra/kit.rb +73 -0
  22. data/lib/tetra/maven_kit_item.rb +64 -0
  23. data/lib/tetra/package.rb +82 -0
  24. data/lib/tetra/project.rb +26 -22
  25. data/lib/tetra/spec_generator.rb +38 -42
  26. data/lib/tetra/version.rb +1 -1
  27. data/spec/lib/archiver_spec.rb +30 -86
  28. data/spec/lib/git_spec.rb +8 -8
  29. data/spec/lib/glue_kit_item_spec.rb +31 -0
  30. data/spec/lib/kit_spec.rb +67 -0
  31. data/spec/lib/maven_kit_item_spec.rb +74 -0
  32. data/spec/lib/package_spec.rb +78 -0
  33. data/spec/lib/project_spec.rb +1 -1
  34. data/spec/lib/spec_generator_spec.rb +59 -87
  35. metadata +15 -8
  36. data/lib/template/kit.spec +0 -64
  37. data/lib/tetra/kit_spec_adapter.rb +0 -28
  38. data/lib/tetra/package_spec_adapter.rb +0 -59
  39. data/lib/tetra/template_manager.rb +0 -33
  40. data/spec/lib/template_manager_spec.rb +0 -54
@@ -1,59 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- module Tetra
4
- # encapsulates details of a package needed by the spec file
5
- # retrieving them from other objects
6
- class PackageSpecAdapter
7
- attr_reader :name
8
- attr_reader :version
9
- attr_reader :license
10
- attr_reader :summary
11
- attr_reader :url
12
- attr_reader :project_name
13
- attr_reader :project_version
14
- attr_reader :group_id
15
- attr_reader :artifact_id
16
- attr_reader :version
17
- attr_reader :runtime_dependency_ids
18
- attr_reader :description
19
- attr_reader :outputs
20
-
21
- def initialize(project, package_name, pom, filter)
22
- @name = package_name
23
- @version = pom.version
24
- @license = (
25
- if pom.license_name != ""
26
- pom.license_name
27
- else
28
- "Apache-2.0"
29
- end
30
- )
31
- @summary = cleanup_description(pom.description, 60)
32
- @url = pom.url
33
- @project_name = project.name
34
- @project_version = project.version
35
- @group_id = pom.group_id
36
- @artifact_id = pom.artifact_id
37
- @version = pom.version
38
- @runtime_dependency_ids = pom.runtime_dependency_ids
39
- @description = cleanup_description(pom.description, 1500)
40
-
41
- @outputs = project.get_produced_files(package_name).select do |file|
42
- File.fnmatch? filter, File.basename(file)
43
- end
44
- end
45
-
46
- def public_binding
47
- binding
48
- end
49
-
50
- def cleanup_description(raw, max_length)
51
- raw
52
- .gsub(/[\s]+/, " ")
53
- .strip
54
- .slice(0..max_length - 1)
55
- .sub(/\s\w+$/, "")
56
- .sub(/\.+$/, "")
57
- end
58
- end
59
- end
@@ -1,33 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- module Tetra
4
- # operates on files in template/
5
- class TemplateManager
6
- include Logging
7
-
8
- attr_reader :template_path
9
-
10
- def initialize
11
- @template_path = File.join(File.dirname(__FILE__), "..", "template")
12
- end
13
-
14
- # copies a template file in a directory
15
- def copy(template_name, destination_dir)
16
- FileUtils.cp_r(File.join(template_path, template_name), destination_dir)
17
- end
18
-
19
- # generates content from an ERB template and an object binding
20
- # if destination_path is given, write it to that file, otherwise just
21
- # return it
22
- def generate(template_name, object_binding, destination_path = nil)
23
- erb = ERB.new File.read(File.join(template_path, template_name)), nil, "<>"
24
- new_content = erb.result(object_binding)
25
-
26
- unless destination_path.nil?
27
- File.open(destination_path, "w") { |io| io.write new_content }
28
- end
29
-
30
- new_content
31
- end
32
- end
33
- end
@@ -1,54 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require "spec_helper"
4
-
5
- describe Tetra::TemplateManager do
6
- let(:template_manager) { Tetra::TemplateManager.new }
7
-
8
- describe "#template_path" do
9
- it "returns the pathname where all templates are stored" do
10
- relative_path = template_manager.template_path
11
- expected_path = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "lib", "template"))
12
- expect(File.expand_path(relative_path)).to eq expected_path
13
- end
14
- end
15
-
16
- describe "#copy" do
17
- it "copies a file from template to another dir" do
18
- destination = Tempfile.new("TemplateManager spec")
19
- destination_path = destination.path
20
- destination.unlink
21
-
22
- template_manager.copy(File.join("src", "CONTENTS"), destination_path)
23
-
24
- File.exist?(destination_path)
25
- end
26
- end
27
-
28
- describe "#generate" do
29
- it "compiles a file from a template and a value objects file" do
30
- template_path = File.join(template_manager.template_path, "test.erb")
31
- File.open(template_path, "w") { |io| io.puts "Hello <%= world_property %>" }
32
-
33
- destination = Tempfile.new("TemplateManager spec")
34
- destination_path = destination.path
35
- destination.unlink
36
-
37
- # binding test class
38
- class WorldClass
39
- def world_property
40
- "World!"
41
- end
42
-
43
- def public_binding
44
- binding
45
- end
46
- end
47
-
48
- template_manager.generate("test.erb", WorldClass.new.public_binding, destination_path)
49
- File.unlink(template_path)
50
-
51
- expect(File.read(destination_path)).to eq "Hello World!\n"
52
- end
53
- end
54
- end