class Marv::Project::Actions

Public Class Methods

new(project, builder) click to toggle source

Initialize project actions

# File lib/marv/project/actions.rb, line 8
def initialize(project, builder)
  @project = project
  @task = project.task
  @builder = builder
  @global = Marv::Global.new(project.task)
end

Public Instance Methods

build_to_temp_dir() click to toggle source

Built to a temporary directory

# File lib/marv/project/actions.rb, line 134
def build_to_temp_dir
  @builder.build_project

  # Copy build files to temporary directory
  @task.shell.mute do
    @task.directory @project.build_path, ::File.join(@project.package_path, @package_name), :force => true
  end
end
create_package() click to toggle source

Create package

# File lib/marv/project/actions.rb, line 103
def create_package
  create_package_dir
  set_package_filename
  build_to_temp_dir
  create_temp_zip
  create_zip_file
  remove_temp_files
end
create_package_dir() click to toggle source

Create package directory

# File lib/marv/project/actions.rb, line 113
def create_package_dir
  @task.shell.mute do
    unless ::File.directory?(@project.package_path)
      @task.empty_directory @project.package_path
    end
  end
end
create_temp_zip() click to toggle source

Create temporary package

# File lib/marv/project/actions.rb, line 144
def create_temp_zip
  tmp_filename = ::File.join(@project.package_path, "#{@package_name}.tmp")

  # Create an temporary file
  ::Zip.continue_on_exists_proc = true
  ::Zip::File.open(tmp_filename, Zip::File::CREATE) do |zip|
    # Get all filenames
    filenames = ::Dir.glob(::File.join(@project.package_path, @package_name, '**', '*'))

    # Add each file in the zip file
    filenames.each do |filename|
      zip.add filename.gsub("#{@project.package_path}/", ''), filename
    end
  end
end
create_zip_file() click to toggle source

Create the package

# File lib/marv/project/actions.rb, line 161
def create_zip_file
  zip_filename = ::File.join(@project.package_path, "#{@package_name}.zip")
  @task.copy_file ::File.join(@project.package_path, "#{@package_name}.tmp"), zip_filename
end
get_package_name() click to toggle source

Get package name

# File lib/marv/project/actions.rb, line 129
def get_package_name
  ::File.basename(@project.root)
end
package(filename) click to toggle source

Packgage project

# File lib/marv/project/actions.rb, line 29
def package(filename)
  @package_name = filename
  pkg_name = filename || get_package_name

  @task.say_warning "This will package project #{@project.project_id} as #{pkg_name}.zip."
  create_package
end
remove_temp_files() click to toggle source

Remove temporary build directory

# File lib/marv/project/actions.rb, line 167
def remove_temp_files
  @task.shell.mute do
    @task.remove_dir ::File.join(@project.package_path, @package_name)
    @task.remove_file ::File.join(@project.package_path, "#{@package_name}.tmp")
  end
end
set_package_filename() click to toggle source

Set the package file name

# File lib/marv/project/actions.rb, line 122
def set_package_filename
  if @package_name.nil?
    @package_name = get_package_name
  end
end