avm-eac_ruby_base1 0.23.0 → 0.24.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: adacad1ecbdcfe873f0aa0a594f3e684da7e334c1a1467b26c9ce6a18dfd57e6
4
+ data.tar.gz: 1869c4e09e6aa4f04a61dfae8ce11a9544715759595af028dc5025334baa9bd9
5
5
  SHA512:
6
- metadata.gz: 0da3cca9255f6720eca645cff4b1e1bb315e3f3cb152011feb3e9cbe28d045b0d57b248ac1139a1747b55102e663982c86dbde9c6db081880444e4f17cd0e825
7
- data.tar.gz: aa6e632bdf53ff895ef761f2e8a9001ec1e764584b53eab34da6b68f8a1efb4fa0a194239c8210a3f0349bda2c33552df04d18644feb8198d8d6ab157cb26f4e
6
+ metadata.gz: 9f34d02740e45b8b2fa741906db2cdee1b8348d5cd314c136a0b99d08a18a29a845c2221bb6cfdeb8757c25485b47e58a394374b042e45fdea6d96da8d703e47
7
+ data.tar.gz: 14a3051c6e9c101104eee12d21718593c25f1bf63ec25db027d139141d346854a192cd5debd879f1fd118c3cbb55e6b91c543b178d1742c29af60088047a6ce8
@@ -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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacRubyBase1
5
- VERSION = '0.23.0'
5
+ VERSION = '0.24.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.24.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-13 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.49'
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.49'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: avm-eac_generic_base0
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -109,6 +109,10 @@ 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
113
117
  - lib/avm/eac_ruby_base1/rubocop.rb
114
118
  - lib/avm/eac_ruby_base1/rubocop/configured.rb