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
         |