Class: Rpremote::LanguageSource
- Inherits:
-
Object
- Object
- Rpremote::LanguageSource
- Defined in:
- lib/rpremote/language_source.rb,
sig/rpremote.rbs
Defined Under Namespace
Classes: DownloadError, Error, ExtractError
Constant Summary collapse
- MAX_REDIRECTS =
5
Instance Attribute Summary collapse
-
#cache_dir ⇒ String
readonly
Returns the value of attribute cache_dir.
-
#language ⇒ String
readonly
Returns the value of attribute language.
-
#version ⇒ String
readonly
Returns the value of attribute version.
Instance Method Summary collapse
- #archive_path ⇒ String
- #archive_url ⇒ String
-
#initialize(language: Target::DEFAULT_LANGUAGE, version: Target::DEFAULT_LANGUAGE_VERSION, cache_dir: Target::DEFAULT_CACHE_DIR, fetcher: nil, extractor: nil, preparer: nil) ⇒ LanguageSource
constructor
A new instance of LanguageSource.
- #setup(force: false) ⇒ String
- #source_dir ⇒ String
Constructor Details
#initialize(language: Target::DEFAULT_LANGUAGE, version: Target::DEFAULT_LANGUAGE_VERSION, cache_dir: Target::DEFAULT_CACHE_DIR, fetcher: nil, extractor: nil, preparer: nil) ⇒ LanguageSource
Returns a new instance of LanguageSource.
19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/rpremote/language_source.rb', line 19 def initialize(language: Target::DEFAULT_LANGUAGE, version: Target::DEFAULT_LANGUAGE_VERSION, cache_dir: Target::DEFAULT_CACHE_DIR, fetcher: nil, extractor: nil, preparer: nil) Language.validate!(language) @language = language @version = version @cache_dir = File.(cache_dir.gsub("{version}", version)) @fetcher = fetcher || method(:download) @extractor = extractor || method(:extract) @preparer = preparer || method(:prepare_repository) @patcher = PicoRubySourcePatch.new(version: version).method(:apply) end |
Instance Attribute Details
#cache_dir ⇒ String (readonly)
Returns the value of attribute cache_dir.
17 18 19 |
# File 'lib/rpremote/language_source.rb', line 17 def cache_dir @cache_dir end |
#language ⇒ String (readonly)
Returns the value of attribute language.
17 18 19 |
# File 'lib/rpremote/language_source.rb', line 17 def language @language end |
#version ⇒ String (readonly)
Returns the value of attribute version.
17 18 19 |
# File 'lib/rpremote/language_source.rb', line 17 def version @version end |
Instance Method Details
#archive_path ⇒ String
51 52 53 |
# File 'lib/rpremote/language_source.rb', line 51 def archive_path File.join(cache_dir, "picoruby-#{version}.zip") end |
#archive_url ⇒ String
47 48 49 |
# File 'lib/rpremote/language_source.rb', line 47 def archive_url "https://github.com/picoruby/picoruby/archive/refs/tags/#{version}.zip" end |
#setup(force: false) ⇒ String
33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/rpremote/language_source.rb', line 33 def setup(force: false) FileUtils.mkdir_p(cache_dir) fetch_archive if force || !File.size?(archive_path) unless File.directory?(source_dir) && !force FileUtils.rm_rf(source_dir) if force extractor.call(archive_path, cache_dir) end raise ExtractError, "PicoRuby source was not extracted: #{source_dir}" unless File.directory?(source_dir) preparer.call(source_dir) patcher.call(source_dir) source_dir end |
#source_dir ⇒ String
55 56 57 |
# File 'lib/rpremote/language_source.rb', line 55 def source_dir File.join(cache_dir, "picoruby-#{version}") end |