module Ptf::Commands::Init

Public Class Methods

init(force_override = false) click to toggle source
# File lib/ptf/commands/init.rb, line 6
def init(force_override = false)

  default_permissions = Ptf::FileSystem.file_permission
  default_group = Ptf::Group.default_group
  default_counter = Ptf::FileSystem.id_counter_starting_content

  base_dir = Ptf::FileSystem.base_dir

  return_prefix = ""
  if Dir.exist? base_dir
    if force_override
      FileUtils.rm_r base_dir
      return_prefix = "PTF workspace existed, erasing...\n"
    else
      return "A PTF workspace has already been initialized."
    end
  end

  begin
    Dir.mkdir(base_dir, default_permissions)

    info_dir = Ptf::FileSystem.metadata_dir
    Dir.mkdir(info_dir, default_permissions)

    data_dir = Ptf::FileSystem.data_dir
    Dir.mkdir(data_dir, default_permissions)

    tmp_dir = Ptf::FileSystem.tmp_dir
    Dir.mkdir(tmp_dir, default_permissions)

    open_dir = Ptf::FileSystem.metadata_open_dir
    Dir.mkdir(open_dir, default_permissions)

    closed_dir = Ptf::FileSystem.metadata_closed_dir
    Dir.mkdir(closed_dir, default_permissions)

    Dir.mkdir(File.join(open_dir, default_group.name), default_permissions)
    Dir.mkdir(File.join(closed_dir, default_group.name), default_permissions)

    counter_file = File.new(Ptf::FileSystem.id_counter_file, "w")
    counter_file.puts default_counter
    counter_file.close

    group_file = File.new(Ptf::FileSystem.group_list_file, "w")
    group_file.puts default_group.to_s
    group_file.close
  rescue
    FileUtils.rm_r base_dir
    return return_prefix + "Failed to create PTF workspace."
  end

  return return_prefix + "Created PTF workspace at #{base_dir} successfully!"
end