class Revealing::CLI

Constants

TEMPLATES_DIR

Public Class Methods

exit_on_failure?() click to toggle source
# File lib/revealing/cli.rb, line 15
def self.exit_on_failure?
  true
end

Public Instance Methods

doctor() click to toggle source
# File lib/revealing/cli.rb, line 20
def doctor
  anything_missing = false
  missing_tools = PREREQUISITES.reject(&:available?)

  if missing_tools.any?
    anything_missing = true
    warn 'Error: The following required tools are not available:'
    missing_tools.each do |tool|
      warn "  * #{tool} - install it with `#{tool.install_hint}`"
    end
  end

  missing_files = target_files_in(Pathname.getwd).reject(&:exist?)

  if missing_files.any?
    anything_missing = true
    warn 'Error: The following files do not exist:'
    missing_files.each do |missing|
      warn "  * #{missing.relative_path_from(Pathname.getwd)}"
    end
    warn 'Consider running `revealing init` to create them.'
  end

  exit 1 if anything_missing
end
init(directory = '.') click to toggle source
# File lib/revealing/cli.rb, line 47
def init(directory = '.')
  project_directory = Pathname(directory)
  project_directory.mkdir unless project_directory.exist?

  # FileUtils.cp_r overwrites the target if it exists, but we want to preserve it
  # and print information about what happened
  template_files.zip(target_files_in(project_directory)).each do |src, target|
    if target.exist?
      warn "#{target} exists; skipping"
    else
      target.dirname.mkpath
      FileUtils.cp(src, target)
      puts "#{target} created"
    end
  end
end
version() click to toggle source
# File lib/revealing/cli.rb, line 65
def version
  puts "revealing #{Revealing::VERSION}"
end

Private Instance Methods

target_files_in(dir) click to toggle source
# File lib/revealing/cli.rb, line 78
def target_files_in(dir)
  template_files.map{|f| dir / f.relative_path_from(TEMPLATES_DIR)}
end
template_files() click to toggle source
# File lib/revealing/cli.rb, line 74
def template_files
  TEMPLATES_DIR.glob("**/*", File::FNM_DOTMATCH).select(&:file?)
end