eac_launcher 0.1.2 → 0.1.3
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.
- checksums.yaml +4 -4
- data/lib/eac_launcher.rb +3 -0
- data/lib/eac_launcher/git/publish_base.rb +3 -1
- data/lib/eac_launcher/instances/base.rb +2 -2
- data/lib/eac_launcher/instances/error.rb +6 -0
- data/lib/eac_launcher/path.rb +1 -1
- data/lib/eac_launcher/publish/base.rb +6 -0
- data/lib/eac_launcher/ruby/gem/build.rb +75 -0
- data/lib/eac_launcher/ruby/gem/specification.rb +47 -0
- data/lib/eac_launcher/stereotypes/git_subrepo/warp.rb +4 -3
- data/lib/eac_launcher/stereotypes/ruby_gem.rb +2 -2
- data/lib/eac_launcher/stereotypes/ruby_gem/publish.rb +18 -44
- data/lib/eac_launcher/version.rb +1 -1
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 380d1f61d80e539cc654af9001183f3de43c5456
|
4
|
+
data.tar.gz: 12c85fabb456c5aeb4544a374cefbc469dc6c916
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4949dcf967347ccb56f4f50f3185bf35911bbe70c96592134d9894bffac708ea53454e6a416ac6387e1afd07b34b27e58f8a4519508a3f84362e63c59cc2949a
|
7
|
+
data.tar.gz: 3742a103c667b7fb5cc7e38047420eacf91261decb58ca798a03a9dde37a64d5ab1e948281c198d030a4e82ae239af2adc438fc0fdc07c200fab2c08723f40cd
|
data/lib/eac_launcher.rb
CHANGED
@@ -23,10 +23,13 @@ module EacLauncher
|
|
23
23
|
require 'eac_launcher/git/publish_base'
|
24
24
|
require 'eac_launcher/git/warp_base'
|
25
25
|
require 'eac_launcher/instances/base'
|
26
|
+
require 'eac_launcher/instances/error'
|
26
27
|
require 'eac_launcher/instances/runner_helper'
|
27
28
|
require 'eac_launcher/instances/settings'
|
28
29
|
require 'eac_launcher/publish/base'
|
29
30
|
require 'eac_launcher/publish/check_result'
|
31
|
+
require 'eac_launcher/ruby/gem/build'
|
32
|
+
require 'eac_launcher/ruby/gem/specification'
|
30
33
|
require 'eac_launcher/stereotypes/git'
|
31
34
|
require 'eac_launcher/stereotypes/git_subrepo'
|
32
35
|
require 'eac_launcher/stereotypes/git_subtree'
|
@@ -63,8 +63,8 @@ module EacLauncher
|
|
63
63
|
stereotypes.each do |s|
|
64
64
|
return s.warp_class.new(self) if s.warp_class
|
65
65
|
end
|
66
|
-
raise "None stereotype of \"#{to_root_path}\" has
|
67
|
-
"(#{stereotypes.join(', ')})"
|
66
|
+
raise ::EacLauncher::Instances::Error, "None stereotype of \"#{to_root_path}\" has " \
|
67
|
+
"subclass \"CurrentCache\" (#{stereotypes.join(', ')})"
|
68
68
|
end
|
69
69
|
|
70
70
|
private
|
data/lib/eac_launcher/path.rb
CHANGED
@@ -11,7 +11,7 @@ module EacLauncher
|
|
11
11
|
def find_file_with_extension(extension)
|
12
12
|
r = find_files_with_extension(extension)
|
13
13
|
return r.first if r.any?
|
14
|
-
raise "Extension \"#{extension}\" not found in directory \"#{
|
14
|
+
raise "Extension \"#{extension}\" not found in directory \"#{self}\""
|
15
15
|
end
|
16
16
|
|
17
17
|
def find_files_with_extension(extension)
|
@@ -7,6 +7,12 @@ module EacLauncher
|
|
7
7
|
return unless s.status == ::EacLauncher::Publish::CheckResult::STATUS_PENDING
|
8
8
|
publish
|
9
9
|
end
|
10
|
+
|
11
|
+
def check
|
12
|
+
internal_check
|
13
|
+
rescue ::EacLauncher::Instances::Error => ex
|
14
|
+
::EacLauncher::Publish::CheckResult.blocked("Error: #{ex}")
|
15
|
+
end
|
10
16
|
end
|
11
17
|
end
|
12
18
|
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
module EacLauncher
|
2
|
+
module Ruby
|
3
|
+
module Gem
|
4
|
+
class Build
|
5
|
+
include ::EacRubyUtils::Console::Speaker
|
6
|
+
|
7
|
+
def initialize(original_gem_root)
|
8
|
+
@original_gem_root = original_gem_root
|
9
|
+
end
|
10
|
+
|
11
|
+
def output_file
|
12
|
+
return nil unless @gem_root
|
13
|
+
@gem_root.find_files_with_extension('.gem').first
|
14
|
+
end
|
15
|
+
|
16
|
+
def builded?
|
17
|
+
output_file.present? && ::File.exist?(output_file)
|
18
|
+
end
|
19
|
+
|
20
|
+
def build
|
21
|
+
return if builded?
|
22
|
+
copy_gem_files
|
23
|
+
build_gem
|
24
|
+
check_gem
|
25
|
+
end
|
26
|
+
|
27
|
+
def close
|
28
|
+
::FileUtils.remove_entry(@gem_root) if ::File.directory?(@gem_root)
|
29
|
+
@gem_root = nil
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def copy_gem_files
|
35
|
+
@gem_root = ::EacLauncher::Path.new(::Dir.mktmpdir)
|
36
|
+
FileUtils.cp_r "#{@original_gem_root}/.", @gem_root
|
37
|
+
end
|
38
|
+
|
39
|
+
def build_gem
|
40
|
+
info("Building gemspec #{gemspec_file}...")
|
41
|
+
clear_gems
|
42
|
+
Dir.chdir @gem_root do
|
43
|
+
EacRubyUtils::Envs.local.command('gem', 'build', gemspec_file).execute!
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def check_gem
|
48
|
+
Dir.mktmpdir do |dir|
|
49
|
+
Dir.chdir dir do
|
50
|
+
EacRubyUtils::Envs.local.command('gem', 'unpack', gem).system
|
51
|
+
gs = File.join(dir, File.basename(gem, '.gem'))
|
52
|
+
if (Dir.entries(gs) - %w[. ..]).empty?
|
53
|
+
raise "\"#{dir}\" (Unpacked from #{gem}) has no source code"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def clear_gems
|
60
|
+
@gem_root.find_files_with_extension('.gem').each do |f|
|
61
|
+
FileUtils.rm_rf(f)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def gemspec_file
|
66
|
+
@gem_root.find_file_with_extension('.gemspec')
|
67
|
+
end
|
68
|
+
|
69
|
+
def gem
|
70
|
+
@gem_root.find_file_with_extension('.gem')
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module EacLauncher
|
2
|
+
module Ruby
|
3
|
+
module Gem
|
4
|
+
class Specification
|
5
|
+
class << self
|
6
|
+
def parse_version_file(file)
|
7
|
+
s = ::File.read(file)
|
8
|
+
m = /VERSION\s*=\s*[\'\"]([^\'\"]+)[\'\"]/.match(s)
|
9
|
+
m ? m[1] : nil
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
attr_reader :gemspec_file
|
14
|
+
|
15
|
+
def initialize(gemspec_file)
|
16
|
+
@gemspec_file = gemspec_file
|
17
|
+
end
|
18
|
+
|
19
|
+
def version
|
20
|
+
v = self.class.parse_version_file(version_file)
|
21
|
+
return v if v.present?
|
22
|
+
raise "Version not found on file \"#{version_file}\""
|
23
|
+
end
|
24
|
+
|
25
|
+
def name
|
26
|
+
::File.basename(gemspec_file).gsub(/\.gemspec\z/, '')
|
27
|
+
end
|
28
|
+
|
29
|
+
def full_name
|
30
|
+
"#{name}-#{version}"
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def gem_root
|
36
|
+
::File.dirname(gemspec_file)
|
37
|
+
end
|
38
|
+
|
39
|
+
def version_file
|
40
|
+
f = ::File.join(gem_root, 'lib', name, 'version.rb')
|
41
|
+
return f if ::File.exist?(f)
|
42
|
+
raise "Version file \"#{f}\" does not exist"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -20,9 +20,10 @@ module EacLauncher
|
|
20
20
|
private
|
21
21
|
|
22
22
|
def check_parent
|
23
|
-
return if parent_cache_git.
|
24
|
-
|
25
|
-
|
23
|
+
return if parent_cache_git.rev_parse(subrepo_parent_hash) &&
|
24
|
+
parent_cache_git.descendant?('HEAD', subrepo_parent_hash)
|
25
|
+
raise EacLauncher::Instances::Error, "Subrepo parent hash \"#{subrepo_parent_hash}\""\
|
26
|
+
" not found in \"#{parent_cache_git}\""
|
26
27
|
end
|
27
28
|
|
28
29
|
def subrepo_parent_hash
|
@@ -6,10 +6,12 @@ module EacLauncher
|
|
6
6
|
include ::EacRubyUtils::Console::Speaker
|
7
7
|
|
8
8
|
def initialize(instance)
|
9
|
-
@
|
9
|
+
@instance = instance
|
10
10
|
end
|
11
11
|
|
12
|
-
|
12
|
+
protected
|
13
|
+
|
14
|
+
def internal_check
|
13
15
|
if new_and_unpublishing_new?
|
14
16
|
::EacLauncher::Publish::CheckResult.blocked(
|
15
17
|
"#{gem_spec.full_name} does not exist in RubyGems"
|
@@ -24,17 +26,23 @@ module EacLauncher
|
|
24
26
|
|
25
27
|
private
|
26
28
|
|
29
|
+
def source_uncached
|
30
|
+
@instance.current_cache
|
31
|
+
end
|
32
|
+
|
27
33
|
def gem_spec_uncached
|
28
34
|
::EacLauncher::Stereotypes::RubyGem.load_gemspec(gemspec)
|
29
35
|
end
|
30
36
|
|
37
|
+
def gem_build_uncached
|
38
|
+
::EacLauncher::Ruby::Gem::Build.new(source)
|
39
|
+
end
|
40
|
+
|
31
41
|
def publish
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
push_gem
|
37
|
-
end
|
42
|
+
gem_build.open
|
43
|
+
push_gem
|
44
|
+
ensure
|
45
|
+
gem_build.close
|
38
46
|
end
|
39
47
|
|
40
48
|
def new_and_unpublishing_new?
|
@@ -46,7 +54,7 @@ module EacLauncher
|
|
46
54
|
end
|
47
55
|
|
48
56
|
def version_already_pushed?
|
49
|
-
gem_versions.any? { |v| v['number'] == gem_spec.version
|
57
|
+
gem_versions.any? { |v| v['number'] == gem_spec.version }
|
50
58
|
end
|
51
59
|
|
52
60
|
def gem_versions_uncached
|
@@ -56,36 +64,6 @@ module EacLauncher
|
|
56
64
|
raise "#{http} code error: #{http.status}"
|
57
65
|
end
|
58
66
|
|
59
|
-
def build_gem
|
60
|
-
info("Building gem #{gem_spec}...")
|
61
|
-
clear_gems
|
62
|
-
Dir.chdir @source do
|
63
|
-
EacRubyUtils::Envs.local.command('gem', 'build', gemspec).system
|
64
|
-
end
|
65
|
-
source = @source.find_file_with_extension('.gem')
|
66
|
-
FileUtils.mv(source, File.join(@tempdir, File.basename(source)))
|
67
|
-
ensure
|
68
|
-
clear_gems
|
69
|
-
end
|
70
|
-
|
71
|
-
def clear_gems
|
72
|
-
@source.find_files_with_extension('.gem').each do |f|
|
73
|
-
FileUtils.rm_rf(f)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def check_gem
|
78
|
-
Dir.mktmpdir do |dir|
|
79
|
-
Dir.chdir dir do
|
80
|
-
EacRubyUtils::Envs.local.command('gem', 'unpack', gem).system
|
81
|
-
gs = File.join(dir, File.basename(gem, '.gem'))
|
82
|
-
if (Dir.entries(gs) - %w[. ..]).empty?
|
83
|
-
raise "\"#{dir}\" (Unpacked from #{gem}) has no source code"
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
67
|
def push_gem
|
90
68
|
info("Pushing gem #{gem_spec}...")
|
91
69
|
if ::EacLauncher::Context.current.publish_options[:confirm]
|
@@ -97,11 +75,7 @@ module EacLauncher
|
|
97
75
|
end
|
98
76
|
|
99
77
|
def gemspec_uncached
|
100
|
-
|
101
|
-
end
|
102
|
-
|
103
|
-
def gem
|
104
|
-
@tempdir.find_file_with_extension('.gem')
|
78
|
+
source.find_file_with_extension('.gemspec')
|
105
79
|
end
|
106
80
|
end
|
107
81
|
end
|
data/lib/eac_launcher/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eac_launcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esquilo Azul Company
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -106,6 +106,20 @@ dependencies:
|
|
106
106
|
- - "~>"
|
107
107
|
- !ruby/object:Gem::Version
|
108
108
|
version: 1.3.0
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: rspec
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - "~>"
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '3.7'
|
116
|
+
type: :development
|
117
|
+
prerelease: false
|
118
|
+
version_requirements: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - "~>"
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '3.7'
|
109
123
|
- !ruby/object:Gem::Dependency
|
110
124
|
name: rubocop
|
111
125
|
requirement: !ruby/object:Gem::Requirement
|
@@ -145,12 +159,15 @@ files:
|
|
145
159
|
- lib/eac_launcher/git/warp_base.rb
|
146
160
|
- lib/eac_launcher/instances/base.rb
|
147
161
|
- lib/eac_launcher/instances/base/cache.rb
|
162
|
+
- lib/eac_launcher/instances/error.rb
|
148
163
|
- lib/eac_launcher/instances/runner_helper.rb
|
149
164
|
- lib/eac_launcher/instances/settings.rb
|
150
165
|
- lib/eac_launcher/path.rb
|
151
166
|
- lib/eac_launcher/project.rb
|
152
167
|
- lib/eac_launcher/publish/base.rb
|
153
168
|
- lib/eac_launcher/publish/check_result.rb
|
169
|
+
- lib/eac_launcher/ruby/gem/build.rb
|
170
|
+
- lib/eac_launcher/ruby/gem/specification.rb
|
154
171
|
- lib/eac_launcher/stereotype.rb
|
155
172
|
- lib/eac_launcher/stereotypes/git.rb
|
156
173
|
- lib/eac_launcher/stereotypes/git/publish.rb
|