avm-eac_ruby_base1 0.23.0 → 0.25.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.
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