module MetricFu::Io::FileSystem

TODO: Move this module / functionality elsewhere and make less verbose

Public Class Methods

artifact_dir() click to toggle source
# File lib/metric_fu/io.rb, line 11
def self.artifact_dir
  (ENV["CC_BUILD_ARTIFACTS"] || @artifact_dir)
end
artifact_dir=(artifact_dir) click to toggle source
# File lib/metric_fu/io.rb, line 14
def self.artifact_dir=(artifact_dir)
  @artifact_dir = artifact_dir
end
default_artifact_dir() click to toggle source
# File lib/metric_fu/io.rb, line 8
def self.default_artifact_dir
  @default_artifact_dir
end

Public Instance Methods

create_directories(*dirs) click to toggle source
# File lib/metric_fu/io.rb, line 52
def create_directories(*dirs)
  # due to behavior differences between ruby 1.8.7 and 1.9.3
  # this is good enough for now
  Array(*dirs).each do |dir|
    MetricFu::Utility.mkdir_p dir
  end
end
directories() click to toggle source
# File lib/metric_fu/io.rb, line 21
def directories
  @directories ||= {}
end
directory(name) click to toggle source
# File lib/metric_fu/io.rb, line 25
def directory(name)
  directories.fetch(name) { raise "No such directory configured: #{name}" }
end
file_globs_to_ignore() click to toggle source
# File lib/metric_fu/io.rb, line 33
def file_globs_to_ignore
  @file_globs_to_ignore ||= []
end
scratch_directory(name) click to toggle source
# File lib/metric_fu/io.rb, line 29
def scratch_directory(name)
  File.join(directory("scratch_directory"), name.to_s)
end
set_code_dirs() click to toggle source

Add the 'app' directory if we're running within rails.

# File lib/metric_fu/io.rb, line 61
def set_code_dirs
  @directories["code_dirs"] = %w(app lib).select { |dir| Dir.exist?(dir) }
end
set_directories() click to toggle source
# File lib/metric_fu/io.rb, line 37
def set_directories
  @directories = {}
  @directories["base_directory"]    = MetricFu.artifact_dir
  @directories["scratch_directory"] = MetricFu.scratch_dir
  @directories["output_directory"]  = MetricFu.output_dir
  @directories["data_directory"]    = MetricFu.data_dir
  create_directories @directories.values

  @directories["root_directory"]    = MetricFu.root_dir
  # TODO Though this is true of the general AwesomeTemplate, it is not necessarily true of templates within each Metric.  Each metric should probably know how to use AwesomeTemplate (or whatever)
  @directories["template_directory"] = File.join(@directories.fetch("root_directory"), "lib", "templates")
  @file_globs_to_ignore = []
  set_code_dirs
end