Class: TinyCI::Compactor

Inherits:
Object
  • Object
show all
Includes:
GitUtils, Subprocesses
Defined in:
lib/tinyci/compactor.rb

Overview

Tool for compressing old builds into .tar.gz files

Constant Summary collapse

BLOCKSIZE_TO_READ =
1024 * 1000

Instance Method Summary collapse

Methods included from Subprocesses

#execute, #execute_pipe, #execute_stream

Methods included from GitUtils

#git_cmd, #git_directory_path, #inside_bare_repo?, #inside_git_directory?, #inside_repository?, #inside_work_tree?, #repo_root

Constructor Details

#initialize(working_dir: nil, num_builds_to_leave: nil, builds_to_leave: nil, logger: nil) ⇒ Compactor

Constructor

Parameters:

  • working_dir (String) (defaults to: nil)

    The directory from which to run.

  • num_builds_to_leave (Integer) (defaults to: nil)

    How many builds not to compact, starting from the newest

  • builds_to_leave (String) (defaults to: nil)

    Comma-separated list of build directory names not to compact

  • logger (Logger) (defaults to: nil)

    Logger object



22
23
24
25
26
27
# File 'lib/tinyci/compactor.rb', line 22

def initialize(working_dir: nil, num_builds_to_leave: nil, builds_to_leave: nil, logger: nil)
  @logger = logger
  @working_dir = working_dir || repo_root
  @num_builds_to_leave = (num_builds_to_leave || 1).to_i
  @builds_to_leave = builds_to_leave || []
end

Instance Method Details

#compact!Object

Compress and delete the build directories



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/tinyci/compactor.rb', line 30

def compact!
  unless inside_repository?
    log_error "not currently in a git repository"
    return false
  end
  
  directories_to_compact.each do |dir|
    compress_directory dir
    FileUtils.rm_rf builds_dir(dir)
    
    log_info "Compacted #{archive_path(dir)}"
  end
end