avm-eac_ruby_base1 0.23.0 → 0.25.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 593b0984d6d71dda38fdf738b47b62a34203ffafaea53ef49677e3784f88b79c
4
- data.tar.gz: 0ea5f59a0beaa510c80876bd7fbaca0882177a398ceaf413646fe7b0f125ea53
3
+ metadata.gz: 61cd74d1c7c94ddf551b1726a2e3b95e3f1da08ff5abba9c376985d638f5f0bf
4
+ data.tar.gz: 8330b9dc83ffe072cbe5f1cde1df134e653c335851636abc84497d910228b073
5
5
  SHA512:
6
- metadata.gz: 0da3cca9255f6720eca645cff4b1e1bb315e3f3cb152011feb3e9cbe28d045b0d57b248ac1139a1747b55102e663982c86dbde9c6db081880444e4f17cd0e825
7
- data.tar.gz: aa6e632bdf53ff895ef761f2e8a9001ec1e764584b53eab34da6b68f8a1efb4fa0a194239c8210a3f0349bda2c33552df04d18644feb8198d8d6ab157cb26f4e
6
+ metadata.gz: e9a91f44d7a06ec671dbadacde3eb430a0866957bb0a44850adea137e45ebbed8f24570c67b49960b6da49e5c64f909f3cb03680262a29d3908693d6f2d7a698
7
+ data.tar.gz: fcd46b0b4bb33164de0209e83484e4e6e86e36a33d3b7852399b57ea2cdfef31e3d0f60cf4ee5f3bef9dc121e75fb439e43df182160faad42ce39540d749dace
@@ -3,6 +3,7 @@
3
3
  require 'tmpdir'
4
4
  require 'eac_cli/speaker'
5
5
  require 'eac_ruby_utils/envs'
6
+ require 'avm/launcher/paths/real'
6
7
  require 'avm/eac_ruby_base1/launcher/gem/specification'
7
8
 
8
9
  module Avm
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_ruby_base1/sources/base'
4
+ require 'avm/version_number'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avm
8
+ module EacRubyBase1
9
+ module LauncherStereotypes
10
+ class Base
11
+ module LocalProjectMixin
12
+ # @return [Avm::EacRubyBase1::Sources::Base]
13
+ def ruby_gem
14
+ @ruby_gem ||= ::Avm::EacRubyBase1::Sources::Base.new(path)
15
+ end
16
+
17
+ def version
18
+ ruby_gem.version.if_present { |v| ::Avm::VersionNumber.new(v) }
19
+ end
20
+
21
+ def version=(value)
22
+ ruby_gem.version_file.value = value
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,129 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'curb'
4
+ require 'json'
5
+ require 'eac_ruby_utils/simple_cache'
6
+ require 'rubygems'
7
+ require 'eac_cli/speaker'
8
+ require 'avm/launcher/publish/base'
9
+ require 'avm/launcher/publish/check_result'
10
+ require 'avm/eac_ruby_base1/launcher/gem'
11
+
12
+ module Avm
13
+ module EacRubyBase1
14
+ module LauncherStereotypes
15
+ class Base
16
+ class Publish < ::Avm::Launcher::Publish::Base
17
+ include ::EacRubyUtils::SimpleCache
18
+ enable_speaker
19
+
20
+ protected
21
+
22
+ def internal_check
23
+ gem_published? ? internal_check_gem_published : internal_check_gem_unpublished
24
+ end
25
+
26
+ private
27
+
28
+ def internal_check_gem_published
29
+ if version_published?
30
+ outdated_version? ? outdated_version_check_result : version_published_check_result
31
+ else
32
+ version_unpublished_check_result
33
+ end
34
+ end
35
+
36
+ def internal_check_gem_unpublished
37
+ if new_gem_allowed?
38
+ version_unpublished_check_result
39
+ else
40
+ new_gem_disallowed_check_result
41
+ end
42
+ end
43
+
44
+ def new_gem_disallowed_check_result
45
+ ::Avm::Launcher::Publish::CheckResult.blocked(
46
+ "#{gem_spec.full_name} does not exist in RubyGems"
47
+ )
48
+ end
49
+
50
+ def version_published_check_result
51
+ ::Avm::Launcher::Publish::CheckResult.updated("#{gem_spec.full_name} already pushed")
52
+ end
53
+
54
+ def outdated_version_check_result
55
+ ::Avm::Launcher::Publish::CheckResult.outdated(
56
+ "#{gem_spec.full_name} is outdated (Max: #{gem_version_max})"
57
+ )
58
+ end
59
+
60
+ def version_unpublished_check_result
61
+ ::Avm::Launcher::Publish::CheckResult.pending("#{gem_spec.full_name} not found " \
62
+ 'in RubyGems')
63
+ end
64
+
65
+ def source_uncached
66
+ instance.warped
67
+ end
68
+
69
+ def gem_spec_uncached
70
+ ::Avm::EacRubyBase1::LauncherStereotypes::Base.load_gemspec(gemspec)
71
+ end
72
+
73
+ def gem_build_uncached
74
+ ::Avm::EacRubyBase1::Launcher::Gem::Build.new(source)
75
+ end
76
+
77
+ def publish
78
+ gem_build.build
79
+ push_gem
80
+ ensure
81
+ gem_build.close
82
+ end
83
+
84
+ def new_gem_allowed?
85
+ ::Avm::Launcher::Context.current.publish_options[:new]
86
+ end
87
+
88
+ def gem_published?
89
+ gem_versions.any?
90
+ end
91
+
92
+ def version_published?
93
+ gem_versions.any? { |v| v['number'] == gem_spec.version }
94
+ end
95
+
96
+ def outdated_version?
97
+ gem_version_max.present? && ::Gem::Version.new(gem_spec.version) < gem_version_max
98
+ end
99
+
100
+ def gem_versions_uncached
101
+ http = Curl.get("https://rubygems.org/api/v1/versions/#{gem_spec.name}.json")
102
+ return JSON.parse!(http.body_str) if /\A2/ =~ http.status
103
+ return [] if /\A4/ =~ http.status
104
+
105
+ raise "#{http} code error: #{http.status}"
106
+ end
107
+
108
+ def gem_version_max_uncached
109
+ gem_versions.map { |v| ::Gem::Version.new(v['number']) }.max
110
+ end
111
+
112
+ def push_gem
113
+ info("Pushing gem #{gem_spec}...")
114
+ command = ['gem', 'push', gem_build.output_file]
115
+ unless ::Avm::Launcher::Context.current.publish_options[:confirm]
116
+ command = %w[echo] + command + %w[(Dry-run)]
117
+ end
118
+ EacRubyUtils::Envs.local.command(command).system
119
+ info('Pushed!')
120
+ end
121
+
122
+ def gemspec_uncached
123
+ source.find_file_with_extension('.gemspec')
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/launcher/stereotype'
4
+ require 'avm/eac_ruby_base1/launcher/gem/specification'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avm
8
+ module EacRubyBase1
9
+ module LauncherStereotypes
10
+ class Base
11
+ require_sub __FILE__
12
+ include ::Avm::Launcher::Stereotype
13
+
14
+ class << self
15
+ def match?(path)
16
+ Dir.glob(File.join(path.real, '*.gemspec')).any?
17
+ end
18
+
19
+ def color
20
+ :red
21
+ end
22
+
23
+ def load_gemspec(gemspec_file)
24
+ ::Avm::EacRubyBase1::Launcher::Gem::Specification.new(gemspec_file)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacRubyBase1
7
+ module LauncherStereotypes
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_ruby_base1/rspec/source_generator'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module EacRubyBase1
8
+ module Rspec
9
+ module Setup
10
+ def self.extended(obj)
11
+ obj.rspec_config.include(::Avm::EacRubyBase1::Rspec::SourceGenerator)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacRubyBase1
7
+ module Rspec
8
+ module SourceGenerator
9
+ APPLICATION_STEREOTYPE = 'EacRubyBase1'
10
+ DEFAULT_EAC_RUBY_GEM_SUPPORT_VERSION = '0.5.1'
11
+ DEFAULT_EAC_RUBY_UTILS_VERSION = '0.104.0'
12
+
13
+ # @return [Avm::EacRubyBase1::Sources::Base]
14
+ def avm_eac_ruby_base1_source(options = {})
15
+ options['eac-ruby-utils-version'] ||= DEFAULT_EAC_RUBY_UTILS_VERSION
16
+ options['eac-ruby-gem-support-version'] ||= DEFAULT_EAC_RUBY_GEM_SUPPORT_VERSION
17
+ avm_source(APPLICATION_STEREOTYPE, options)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacRubyBase1
7
+ module Rspec
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacRubyBase1
5
- VERSION = '0.23.0'
5
+ VERSION = '0.25.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avm-eac_ruby_base1
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.0
4
+ version: 0.25.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-11 00:00:00.000000000 Z
11
+ date: 2022-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avm
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.48'
19
+ version: '0.50'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.48'
26
+ version: '0.50'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: avm-eac_generic_base0
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.104'
47
+ version: '0.105'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.104'
54
+ version: '0.105'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: aranha-parsers
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +109,14 @@ files:
109
109
  - lib/avm/eac_ruby_base1/launcher/gem.rb
110
110
  - lib/avm/eac_ruby_base1/launcher/gem/build.rb
111
111
  - lib/avm/eac_ruby_base1/launcher/gem/specification.rb
112
+ - lib/avm/eac_ruby_base1/launcher_stereotypes.rb
113
+ - lib/avm/eac_ruby_base1/launcher_stereotypes/base.rb
114
+ - lib/avm/eac_ruby_base1/launcher_stereotypes/base/local_project_mixin.rb
115
+ - lib/avm/eac_ruby_base1/launcher_stereotypes/base/publish.rb
112
116
  - lib/avm/eac_ruby_base1/preferred_version_requirements.rb
117
+ - lib/avm/eac_ruby_base1/rspec.rb
118
+ - lib/avm/eac_ruby_base1/rspec/setup.rb
119
+ - lib/avm/eac_ruby_base1/rspec/source_generator.rb
113
120
  - lib/avm/eac_ruby_base1/rubocop.rb
114
121
  - lib/avm/eac_ruby_base1/rubocop/configured.rb
115
122
  - lib/avm/eac_ruby_base1/rubocop/envvar.rb