Class: Tebako::PackagerLite

Inherits:
Object
  • Object
show all
Defined in:
lib/tebako/packager_lite.rb

Overview

Tebako application package descriptor

Constant Summary collapse

DEPLOYMENT_ENVIRONMENT =
%w[
  ARCHFLAGS
  BUNDLE_DEPLOYMENT
  BUNDLE_FORCE_RUBY_PLATFORM
  BUNDLE_FROZEN
  BUNDLE_WITH
  BUNDLE_WITHOUT
  CFLAGS
  CPPFLAGS
  CXXFLAGS
  LDFLAGS
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(options_manager, scenario_manager) ⇒ PackagerLite

Returns a new instance of PackagerLite.



56
57
58
59
60
# File 'lib/tebako/packager_lite.rb', line 56

def initialize(options_manager, scenario_manager)
  @opts = options_manager
  @scm = scenario_manager
  @scm.configure_scenario
end

Instance Method Details

#codegenObject



62
63
64
65
66
67
# File 'lib/tebako/packager_lite.rb', line 62

def codegen
  puts "-- Generating files"
  return Tebako::Codegen.generate_package_descriptor(@opts, @scm) unless layered?

  Tebako::Codegen.generate_package_descriptor(@opts, @scm, mount_point: application_mount_point)
end

#create_implibObject



69
70
71
72
73
74
75
76
77
# File 'lib/tebako/packager_lite.rb', line 69

def create_implib
  rv = Tebako::RubyVersion.new(@opts.ruby_ver)
  bname = if @opts.mode == "application"
            @opts.ref
          else # @opts.mode == "both"
            @opts.package
          end
  Tebako::Packager.create_implib(@opts.ruby_src_dir, @opts.data_src_dir, bname, rv)
end

#create_layered_packageObject



96
97
98
99
100
101
102
103
104
105
# File 'lib/tebako/packager_lite.rb', line 96

def create_layered_package
  descriptor = codegen
  layers = package_layers.map do |mount_point, source|
    image = layer_image(mount_point)
    Tebako::Packager.mkdwarfs(@opts.deps_bin_dir, image, source, nil, @opts.compression_level,
                              @opts.filesystem_cache_dir)
    Tebako::LayeredPackage::Layer.new(mount_point: mount_point, path: image)
  end
  Tebako::LayeredPackage.write(name, descriptor: descriptor, layers: layers)
end

#create_monolithic_packageObject



91
92
93
94
# File 'lib/tebako/packager_lite.rb', line 91

def create_monolithic_package
  Tebako::Packager.mkdwarfs(@opts.deps_bin_dir, name, @opts.data_src_dir, codegen, @opts.compression_level,
                            @opts.filesystem_cache_dir)
end

#create_packageObject



79
80
81
82
83
84
85
86
87
88
89
# File 'lib/tebako/packager_lite.rb', line 79

def create_package
  deploy
  FileUtils.rm_f(name)
  layered? ? create_layered_package : create_monolithic_package
  Tebako::BuildReporter.record(
    stage: "application_package",
    status: "rebuilt",
    reason: "application package assembly completed"
  )
  puts "Created tebako #{@opts.output_type_second} at \"#{name}\""
end

#deployObject



107
108
109
110
111
112
113
# File 'lib/tebako/packager_lite.rb', line 107

def deploy
  return deploy_uncached if !@opts.deployment_cache? || layered?

  deployment_cache.fetch(@opts.data_src_dir) do
    deploy_uncached
  end
end

#nameObject



115
116
117
118
# File 'lib/tebako/packager_lite.rb', line 115

def name
  bname = Pathname.new(@opts.package).cleanpath.to_s
  @name ||= "#{bname}.tebako"
end