Sha256: a5775686172286446a0a930e41705e782963dc622f77bc57908e788c42473733

Contents?: true

Size: 1.71 KB

Versions: 21

Compression:

Stored size: 1.71 KB

Contents

class Jets::Builders
  class GemReplacer
    extend Memoist
    def initialize(ruby_version, options)
      @ruby_version = ruby_version
      @options = options
    end

    def run
      check = Jets::Gems::Check.new
      found_gems = check.run! # exits early if missing gems found

      # Reaching here means its safe to download and extract the gems
      found_gems.each do |gem_name, source|
        options = @options.merge(source_url: source)
        gem_extractor = Jets::Gems::Extract::Gem.new(gem_name, options)
        gem_extractor.run
      end

      tidy
    end

    def report_missing_gems

    end

    # remove unnecessary files to reduce package size
    def tidy
      tidy_gems("#{@options[:project_root]}/bundled/gems/ruby/*/gems/*")
      tidy_gems("#{@options[:project_root]}/bundled/gems/ruby/*/bundler/gems/*")
    end

    def tidy_gems(gems_path)
      Dir.glob(gems_path).each do |gem_path|
        tidy_gem(gem_path)
      end
    end

    # Clean up some unneeded files to try to keep the package size down
    # In a generated jets app this made a decent 9% difference:
    #  175M test2
    #  191M test3
    def tidy_gem(path)
      # remove top level tests and cache folders
      Dir.glob("#{path}/*").each do |path|
        next unless File.directory?(path)
        folder = File.basename(path)
        if %w[test tests spec features benchmark cache doc].include?(folder)
          FileUtils.rm_rf(path)
        end
      end

      Dir.glob("#{path}/**/*").each do |path|
        next unless File.file?(path)
        ext = File.extname(path)
        if %w[.rdoc .md .markdown].include?(ext) or
           path =~ /LICENSE|CHANGELOG|README/
          FileUtils.rm_f(path)
        end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
jets-1.2.1 lib/jets/builders/gem_replacer.rb
jets-1.2.0 lib/jets/builders/gem_replacer.rb
jets-1.1.5 lib/jets/builders/gem_replacer.rb
jets-1.1.4 lib/jets/builders/gem_replacer.rb
jets-1.1.3 lib/jets/builders/gem_replacer.rb
jets-1.1.2 lib/jets/builders/gem_replacer.rb
jets-1.1.1 lib/jets/builders/gem_replacer.rb
jets-1.1.0 lib/jets/builders/gem_replacer.rb
jets-1.0.18 lib/jets/builders/gem_replacer.rb
jets-1.0.17 lib/jets/builders/gem_replacer.rb
jets-1.0.16 lib/jets/builders/gem_replacer.rb
jets-1.0.15 lib/jets/builders/gem_replacer.rb
jets-1.0.13 lib/jets/builders/gem_replacer.rb
jets-1.0.12 lib/jets/builders/gem_replacer.rb
jets-1.0.11 lib/jets/builders/gem_replacer.rb
jets-1.0.10 lib/jets/builders/gem_replacer.rb
jets-1.0.9 lib/jets/builders/gem_replacer.rb
jets-1.0.8 lib/jets/builders/gem_replacer.rb
jets-1.0.7 lib/jets/builders/gem_replacer.rb
jets-1.0.6 lib/jets/builders/gem_replacer.rb