tetra 0.43.0 → 0.44.0
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.
- data/.rubocop.yml +1 -1
- data/README.md +2 -2
- data/SPECIAL_CASES.md +8 -8
- data/integration-tests/build-commons.sh +5 -6
- data/lib/template/gitignore +1 -1
- data/lib/template/{output → packages}/CONTENTS +0 -0
- data/lib/template/packages/kit/CONTENTS +3 -0
- data/lib/tetra.rb +14 -14
- data/lib/tetra/commands/generate_all.rb +7 -11
- data/lib/tetra/commands/{generate_package_archive.rb → generate_archive.rb} +3 -3
- data/lib/tetra/commands/{generate_kit_spec.rb → generate_kit.rb} +5 -2
- data/lib/tetra/commands/generate_script.rb +18 -0
- data/lib/tetra/commands/{generate_package_spec.rb → generate_spec.rb} +3 -3
- data/lib/tetra/git.rb +0 -8
- data/lib/tetra/main.rb +9 -15
- data/lib/tetra/packages/archivable.rb +26 -0
- data/lib/tetra/{package.rb → packages/built_package.rb} +11 -25
- data/lib/tetra/{glue_kit_item.rb → packages/glue_kit_item.rb} +14 -15
- data/lib/tetra/{jar_kit_item.rb → packages/jar_kit_item.rb} +13 -15
- data/lib/tetra/{kit.rb → packages/kit.rb} +0 -0
- data/lib/tetra/{maven_kit_item.rb → packages/maven_kit_item.rb} +13 -13
- data/lib/tetra/packages/scriptable.rb +48 -0
- data/lib/tetra/{spec_generator.rb → packages/speccable.rb} +12 -22
- data/lib/tetra/project.rb +19 -10
- data/lib/tetra/version.rb +1 -1
- data/spec/lib/archivable_spec.rb +36 -0
- data/spec/lib/{package_spec.rb → built_package_spec.rb} +4 -4
- data/spec/lib/git_spec.rb +0 -6
- data/spec/lib/glue_kit_item_spec.rb +1 -1
- data/spec/lib/maven_kit_item_spec.rb +2 -2
- data/spec/lib/project_spec.rb +8 -0
- data/spec/lib/{script_generator_spec.rb → scriptable_spec.rb} +8 -11
- data/spec/lib/{spec_generator_spec.rb → speccable.rb} +11 -20
- metadata +20 -20
- data/lib/tetra/archiver.rb +0 -31
- data/lib/tetra/commands/generate_kit_archive.rb +0 -18
- data/lib/tetra/commands/generate_package_script.rb +0 -18
- data/lib/tetra/script_generator.rb +0 -58
- data/spec/lib/archiver_spec.rb +0 -50
@@ -2,26 +2,17 @@
|
|
2
2
|
|
3
3
|
require "spec_helper"
|
4
4
|
|
5
|
-
describe Tetra::
|
5
|
+
describe Tetra::Speccable do
|
6
6
|
include Tetra::Mockers
|
7
7
|
|
8
8
|
# mock
|
9
|
-
class
|
9
|
+
class SpeccableTestClass
|
10
10
|
attr_accessor :world_property
|
11
11
|
|
12
|
-
include Tetra::
|
13
|
-
attr_reader :project
|
14
|
-
attr_reader :package_name
|
15
|
-
attr_reader :spec_dir
|
16
|
-
attr_reader :template_spec_name
|
12
|
+
include Tetra::Speccable
|
17
13
|
|
18
|
-
def initialize
|
14
|
+
def initialize
|
19
15
|
@world_property = "World!"
|
20
|
-
|
21
|
-
@project = project
|
22
|
-
@package_name = "test-package"
|
23
|
-
@spec_dir = "kit"
|
24
|
-
@template_spec_name = "test.spec"
|
25
16
|
end
|
26
17
|
end
|
27
18
|
|
@@ -31,10 +22,10 @@ describe Tetra::SpecGenerator do
|
|
31
22
|
@template_path = File.join(instance.template_path, "test.spec")
|
32
23
|
File.open(@template_path, "w") { |io| io.puts "Hello <%= world_property %>\nintentionally blank line\n" }
|
33
24
|
|
34
|
-
@destination_path = File.join("output",
|
25
|
+
@destination_path = File.join("output", "test-package", "test-package.spec")
|
35
26
|
end
|
36
27
|
|
37
|
-
let(:instance) {
|
28
|
+
let(:instance) { SpeccableTestClass.new }
|
38
29
|
|
39
30
|
after(:each) do
|
40
31
|
delete_mock_project
|
@@ -43,7 +34,7 @@ describe Tetra::SpecGenerator do
|
|
43
34
|
|
44
35
|
describe "#to_spec" do
|
45
36
|
it "generates a first version" do
|
46
|
-
expect(instance.
|
37
|
+
expect(instance._to_spec(@project, "test-package", "kit", "test.spec")).to be_truthy
|
47
38
|
|
48
39
|
@project.from_directory do
|
49
40
|
spec_lines = File.readlines(@destination_path)
|
@@ -52,7 +43,7 @@ describe Tetra::SpecGenerator do
|
|
52
43
|
end
|
53
44
|
|
54
45
|
it "generates a second version" do
|
55
|
-
expect(instance.
|
46
|
+
expect(instance._to_spec(@project, "test-package", "kit", "test.spec")).to be_truthy
|
56
47
|
|
57
48
|
@project.from_directory do
|
58
49
|
File.open(@destination_path, "a") do |io|
|
@@ -62,7 +53,7 @@ describe Tetra::SpecGenerator do
|
|
62
53
|
|
63
54
|
instance.world_property = "Mario!"
|
64
55
|
|
65
|
-
expect(instance.
|
56
|
+
expect(instance._to_spec(@project, "test-package", "kit", "test.spec")).to be_truthy
|
66
57
|
|
67
58
|
@project.from_directory do
|
68
59
|
spec_lines = File.readlines(@destination_path)
|
@@ -73,7 +64,7 @@ describe Tetra::SpecGenerator do
|
|
73
64
|
end
|
74
65
|
|
75
66
|
it "generates a conflicting version" do
|
76
|
-
expect(instance.
|
67
|
+
expect(instance._to_spec(@project, "test-package", "kit", "test.spec")).to be_truthy
|
77
68
|
|
78
69
|
@project.from_directory do
|
79
70
|
spec_contents = File.read(@destination_path)
|
@@ -86,7 +77,7 @@ describe Tetra::SpecGenerator do
|
|
86
77
|
|
87
78
|
instance.world_property = "Mario!"
|
88
79
|
|
89
|
-
expect(instance.
|
80
|
+
expect(instance._to_spec(@project, "test-package", "kit", "test.spec")).to be_truthy
|
90
81
|
|
91
82
|
@project.from_directory do
|
92
83
|
spec_lines = File.readlines(@destination_path)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tetra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.44.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-10-
|
12
|
+
date: 2014-10-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -167,23 +167,22 @@ files:
|
|
167
167
|
- lib/template/kit/jars/CONTENTS
|
168
168
|
- lib/template/kit/m2/settings.xml
|
169
169
|
- lib/template/kit_item.spec
|
170
|
-
- lib/template/output/CONTENTS
|
171
170
|
- lib/template/package.spec
|
171
|
+
- lib/template/packages/CONTENTS
|
172
|
+
- lib/template/packages/kit/CONTENTS
|
172
173
|
- lib/template/src/CONTENTS
|
173
174
|
- lib/tetra.rb
|
174
175
|
- lib/tetra/ant_runner.rb
|
175
|
-
- lib/tetra/archiver.rb
|
176
176
|
- lib/tetra/commands/ant.rb
|
177
177
|
- lib/tetra/commands/base.rb
|
178
178
|
- lib/tetra/commands/download_maven_source_jars.rb
|
179
179
|
- lib/tetra/commands/dry_run.rb
|
180
180
|
- lib/tetra/commands/finish.rb
|
181
181
|
- lib/tetra/commands/generate_all.rb
|
182
|
-
- lib/tetra/commands/
|
183
|
-
- lib/tetra/commands/
|
184
|
-
- lib/tetra/commands/
|
185
|
-
- lib/tetra/commands/
|
186
|
-
- lib/tetra/commands/generate_package_spec.rb
|
182
|
+
- lib/tetra/commands/generate_archive.rb
|
183
|
+
- lib/tetra/commands/generate_kit.rb
|
184
|
+
- lib/tetra/commands/generate_script.rb
|
185
|
+
- lib/tetra/commands/generate_spec.rb
|
187
186
|
- lib/tetra/commands/get_pom.rb
|
188
187
|
- lib/tetra/commands/get_source.rb
|
189
188
|
- lib/tetra/commands/init.rb
|
@@ -191,23 +190,24 @@ files:
|
|
191
190
|
- lib/tetra/commands/move_jars_to_kit.rb
|
192
191
|
- lib/tetra/commands/mvn.rb
|
193
192
|
- lib/tetra/git.rb
|
194
|
-
- lib/tetra/glue_kit_item.rb
|
195
|
-
- lib/tetra/jar_kit_item.rb
|
196
|
-
- lib/tetra/kit.rb
|
197
193
|
- lib/tetra/kit_checker.rb
|
198
194
|
- lib/tetra/kit_runner.rb
|
199
195
|
- lib/tetra/logger.rb
|
200
196
|
- lib/tetra/main.rb
|
201
|
-
- lib/tetra/maven_kit_item.rb
|
202
197
|
- lib/tetra/maven_runner.rb
|
203
198
|
- lib/tetra/maven_website.rb
|
204
|
-
- lib/tetra/
|
199
|
+
- lib/tetra/packages/archivable.rb
|
200
|
+
- lib/tetra/packages/built_package.rb
|
201
|
+
- lib/tetra/packages/glue_kit_item.rb
|
202
|
+
- lib/tetra/packages/jar_kit_item.rb
|
203
|
+
- lib/tetra/packages/kit.rb
|
204
|
+
- lib/tetra/packages/maven_kit_item.rb
|
205
|
+
- lib/tetra/packages/scriptable.rb
|
206
|
+
- lib/tetra/packages/speccable.rb
|
205
207
|
- lib/tetra/pom.rb
|
206
208
|
- lib/tetra/pom_getter.rb
|
207
209
|
- lib/tetra/project.rb
|
208
|
-
- lib/tetra/script_generator.rb
|
209
210
|
- lib/tetra/source_getter.rb
|
210
|
-
- lib/tetra/spec_generator.rb
|
211
211
|
- lib/tetra/version.rb
|
212
212
|
- lib/tetra/version_matcher.rb
|
213
213
|
- spec/data/ant-super-simple-code/build.xml
|
@@ -227,7 +227,8 @@ files:
|
|
227
227
|
- spec/data/struts-apps/pom.xml
|
228
228
|
- spec/data/tomcat/pom.xml
|
229
229
|
- spec/lib/ant_runner_spec.rb
|
230
|
-
- spec/lib/
|
230
|
+
- spec/lib/archivable_spec.rb
|
231
|
+
- spec/lib/built_package_spec.rb
|
231
232
|
- spec/lib/git_spec.rb
|
232
233
|
- spec/lib/glue_kit_item_spec.rb
|
233
234
|
- spec/lib/kit_checker_spec.rb
|
@@ -235,13 +236,12 @@ files:
|
|
235
236
|
- spec/lib/maven_kit_item_spec.rb
|
236
237
|
- spec/lib/maven_runner_spec.rb
|
237
238
|
- spec/lib/maven_website_spec.rb
|
238
|
-
- spec/lib/package_spec.rb
|
239
239
|
- spec/lib/pom_getter_spec.rb
|
240
240
|
- spec/lib/pom_spec.rb
|
241
241
|
- spec/lib/project_spec.rb
|
242
|
-
- spec/lib/
|
242
|
+
- spec/lib/scriptable_spec.rb
|
243
243
|
- spec/lib/source_getter_spec.rb
|
244
|
-
- spec/lib/
|
244
|
+
- spec/lib/speccable.rb
|
245
245
|
- spec/lib/version_matcher_spec.rb
|
246
246
|
- spec/spec_helper.rb
|
247
247
|
- spec/support/kit_runner_examples.rb
|
data/lib/tetra/archiver.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
module Tetra
|
4
|
-
# implements a to_archive method
|
5
|
-
module Archiver
|
6
|
-
include Logging
|
7
|
-
# expected attributes:
|
8
|
-
# project (Tetra::Project)
|
9
|
-
# package_name (string)
|
10
|
-
# source_dir (string)
|
11
|
-
# source_paths ([string])
|
12
|
-
# destination_dir (string)
|
13
|
-
|
14
|
-
# generates an archive and returns its name
|
15
|
-
# this will archive source_paths starting from source_dir in
|
16
|
-
# destination_dir + package_name + extension
|
17
|
-
def to_archive
|
18
|
-
full_destination_dir = File.join(project.full_path, "output", destination_dir)
|
19
|
-
FileUtils.mkdir_p(full_destination_dir)
|
20
|
-
|
21
|
-
project.from_directory(source_dir) do
|
22
|
-
destination_path = File.join(full_destination_dir, "#{package_name}.tar.xz")
|
23
|
-
log.debug "creating #{destination_path}"
|
24
|
-
|
25
|
-
`tar -cJf #{destination_path} #{source_paths.join(" ")}`
|
26
|
-
|
27
|
-
destination_path
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
module Tetra
|
4
|
-
# tetra generate-kit-archive
|
5
|
-
class GenerateKitArchiveCommand < Tetra::BaseCommand
|
6
|
-
def execute
|
7
|
-
checking_exceptions do
|
8
|
-
project = Tetra::Project.new(".")
|
9
|
-
ensure_dry_running(false, project) do
|
10
|
-
Tetra::Kit.new(project).items.each do |item|
|
11
|
-
result_path = item.to_archive
|
12
|
-
print_generation_result(project, result_path)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
module Tetra
|
4
|
-
# tetra generate-package-script
|
5
|
-
class GeneratePackageScriptCommand < Tetra::BaseCommand
|
6
|
-
def execute
|
7
|
-
checking_exceptions do
|
8
|
-
project = Tetra::Project.new(".")
|
9
|
-
ensure_dry_running(false, project) do
|
10
|
-
history_file = File.join(Dir.home, ".bash_history")
|
11
|
-
result_path, conflict_count = Tetra::ScriptGenerator.new(project, history_file)
|
12
|
-
.generate_build_script
|
13
|
-
print_generation_result(project, result_path, conflict_count)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
module Tetra
|
4
|
-
# generates build scripts from bash_history
|
5
|
-
class ScriptGenerator
|
6
|
-
include Logging
|
7
|
-
|
8
|
-
def initialize(project, history_path)
|
9
|
-
@project = project
|
10
|
-
@ant_runner = Tetra::AntRunner.new(project)
|
11
|
-
@maven_runner = Tetra::MavenRunner.new(project)
|
12
|
-
@history_path = history_path
|
13
|
-
end
|
14
|
-
|
15
|
-
def generate_build_script
|
16
|
-
@project.from_directory do
|
17
|
-
history_lines = File.readlines(@history_path).map { |e| e.strip }
|
18
|
-
relevant_lines =
|
19
|
-
history_lines
|
20
|
-
.reverse
|
21
|
-
.take_while { |e| e.match(/tetra +dry-run/).nil? }
|
22
|
-
.reverse
|
23
|
-
.take_while { |e| e.match(/tetra +finish/).nil? }
|
24
|
-
.select { |e| e.match(/^#/).nil? }
|
25
|
-
|
26
|
-
script_lines = [
|
27
|
-
"#!/bin/bash",
|
28
|
-
"set -xe",
|
29
|
-
"PROJECT_PREFIX=`readlink -e .`",
|
30
|
-
"cd #{@project.latest_dry_run_directory}"
|
31
|
-
] +
|
32
|
-
relevant_lines.map do |line|
|
33
|
-
if line =~ /tetra +mvn/
|
34
|
-
line.gsub(/tetra +mvn/, "#{@maven_runner.get_maven_commandline("$PROJECT_PREFIX", ["-o"])}")
|
35
|
-
elsif line =~ /tetra +ant/
|
36
|
-
line.gsub(/tetra +ant/, "#{@ant_runner.get_ant_commandline("$PROJECT_PREFIX")}")
|
37
|
-
else
|
38
|
-
line
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
new_content = script_lines.join("\n") + "\n"
|
43
|
-
|
44
|
-
result_path = File.join("src", "build.sh")
|
45
|
-
conflict_count = @project.merge_new_content(new_content, result_path, "Build script generated",
|
46
|
-
"generate_build_script")
|
47
|
-
|
48
|
-
output_dir = File.join("output", @project.name)
|
49
|
-
FileUtils.mkdir_p(output_dir)
|
50
|
-
|
51
|
-
destination_script_path = File.join(output_dir, "build.sh")
|
52
|
-
FileUtils.symlink(File.expand_path(result_path), destination_script_path, force: true)
|
53
|
-
|
54
|
-
[destination_script_path, conflict_count]
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
data/spec/lib/archiver_spec.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
require "spec_helper"
|
4
|
-
|
5
|
-
describe Tetra::Archiver do
|
6
|
-
include Tetra::Mockers
|
7
|
-
|
8
|
-
# mock
|
9
|
-
class TestArchiverClass
|
10
|
-
include Tetra::Archiver
|
11
|
-
|
12
|
-
attr_reader :project
|
13
|
-
attr_reader :package_name
|
14
|
-
attr_reader :source_dir
|
15
|
-
attr_reader :source_paths
|
16
|
-
attr_reader :destination_dir
|
17
|
-
|
18
|
-
def initialize(project)
|
19
|
-
@project = project
|
20
|
-
@package_name = "test-package"
|
21
|
-
@source_dir = "kit"
|
22
|
-
@source_paths = ["*"]
|
23
|
-
@destination_dir = "test-package"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
before(:each) do
|
28
|
-
create_mock_project
|
29
|
-
end
|
30
|
-
|
31
|
-
let(:instance) { TestArchiverClass.new(@project) }
|
32
|
-
|
33
|
-
after(:each) do
|
34
|
-
delete_mock_project
|
35
|
-
end
|
36
|
-
|
37
|
-
describe "#to_archive" do
|
38
|
-
it "generates an archive" do
|
39
|
-
@project.from_directory("kit") do
|
40
|
-
FileUtils.touch("kit_test")
|
41
|
-
end
|
42
|
-
|
43
|
-
instance.to_archive
|
44
|
-
|
45
|
-
@project.from_directory do
|
46
|
-
expect(`tar -Jtf output/test-package/test-package.tar.xz`.split).to include("kit_test")
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|