123456789_123456789_123456789_123456789_123456789_

Class: RubyInstaller::Build::Components::Msys2

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, Base, Rake::Task
Instance Chain:
Inherits: RubyInstaller::Build::Components::Base
Defined in: lib/ruby_installer/build/components/01_msys2.rb

Constant Summary

::RubyInstaller::Build::Colors - Included

ColorMap, ESC, NND

Class Method Summary

Base - Inherited

Instance Attribute Summary

Instance Method Summary

Constructor Details

This class inherits a constructor from RubyInstaller::Build::Components::Base

Instance Method Details

#description

[ GitHub ]

  
# File 'lib/ruby_installer/build/components/01_msys2.rb', line 5

def description
  "MSYS2 base installation"
end

#execute(args)

[ GitHub ]

  
# File 'lib/ruby_installer/build/components/01_msys2.rb', line 30

def execute(args)
  hash = ENV['MSYS2_VERSION'] ? nil : msys2_download_hash
  downloaded_path = download(msys2_download_uri, hash)

  puts "Run the MSYS2 installer ..."
  if run_verbose(downloaded_path) && msys.with_msys_apps_enabled { run_verbose("sh", "-lc", "true") }
    puts green(" Success")
  else
    puts red(" Failed")
    raise "MSYS2 installer failed.\n\nYou might download MSYS2 from the official site: https://www.msys2.org/ and run the installer manually.\nThen you can use 'ridk install' to install necessary tools and to keep MSYS2 up-to-date."
  end
end

#msys2_download_hash (private)

[ GitHub ]

  
# File 'lib/ruby_installer/build/components/01_msys2.rb', line 53

def msys2_download_hash
  MSYS2_SHA256
end

#msys2_download_uri (private)

[ GitHub ]

  
# File 'lib/ruby_installer/build/components/01_msys2.rb', line 49

def msys2_download_uri
  MSYS2_URI
end

#needed?(try_kill: true) ⇒ Boolean

[ GitHub ]

  
# File 'lib/ruby_installer/build/components/01_msys2.rb', line 9

def needed?(try_kill: true)
  begin
    autorebase

    if msys.with_msys_apps_enabled(if_no_msys: :raise) { run_verbose("sh", "-lc", "true") }
      puts "MSYS2 seems to be " + green("properly installed")
      false
    else
      if try_kill
        # Already running MSYS2 processes might interference with our MSYS2 through shared memory.
        kill_all_msys2_processes
        return needed?(try_kill: false)
      end
      true
    end
  rescue Msys2Installation::MsysNotFound
    puts "MSYS2 seems to be " + red("unavailable")
    true
  end
end