class Muwu::ProjectWriter

Attributes

project[RW]

Public Class Methods

new(project) click to toggle source
# File lib/muwu/project_builder/project_writer.rb, line 18
def initialize(project)
  @project = project
end

Public Instance Methods

phase_1_make_project_folder() click to toggle source
# File lib/muwu/project_builder/project_writer.rb, line 45
def phase_1_make_project_folder
  announce_and_execute_dir_mkdir(@project.working_directory)
end
phase_2_make_folder_css_and_copy_files() click to toggle source
# File lib/muwu/project_builder/project_writer.rb, line 58
def phase_2_make_folder_css_and_copy_files
  folder_source_gem = File.absolute_path(File.join(Muwu::GEM_HOME_LIB, 'muwu','project_builder','assets','config','css'))
  folder_destination_project = @project.path_css
  announce_and_execute_fileutils_cp_r(folder_source_gem, folder_destination_project)
end
phase_2_make_project_subfolders() click to toggle source
# File lib/muwu/project_builder/project_writer.rb, line 50
def phase_2_make_project_subfolders
  announce_and_execute_dir_mkdir(@project.path_compiled)
  announce_and_execute_dir_mkdir(@project.path_config)
  # announce_and_execute_dir_mkdir(@project.path_images)    # DEPRECATED
  announce_and_execute_dir_mkdir(@project.path_text)
end
phase_3_write_file_metadata_yml() click to toggle source
# File lib/muwu/project_builder/project_writer.rb, line 65
def phase_3_write_file_metadata_yml
  announce_and_execute_yaml_dump(HashHelper.human_readable_hash(@project.metadata), @project.metadata_filename)
end
phase_3_write_file_options_yml() click to toggle source
# File lib/muwu/project_builder/project_writer.rb, line 70
def phase_3_write_file_options_yml
  announce_and_execute_yaml_dump(HashHelper.human_readable_hash(@project.options), @project.options_filename)
end
phase_3_write_file_outline_yml() click to toggle source
# File lib/muwu/project_builder/project_writer.rb, line 76
def phase_3_write_file_outline_yml
  if @project.outline.any?
    phase_3_write_file_outline_yml_dump
  elsif @project.outline.empty?
    phase_3_write_file_outline_yml_blank
  end
end
phase_3_write_file_outline_yml_blank() click to toggle source
# File lib/muwu/project_builder/project_writer.rb, line 90
def phase_3_write_file_outline_yml_blank
  announce_and_execute_fileutils_touch(@project.outline_filename)
end
phase_3_write_file_outline_yml_dump() click to toggle source
# File lib/muwu/project_builder/project_writer.rb, line 85
def phase_3_write_file_outline_yml_dump
  announce_and_execute_yaml_dump(@project.outline, @project.outline_filename)
end
write() click to toggle source
# File lib/muwu/project_builder/project_writer.rb, line 26
def write
  if Dir.exist?(@project.working_directory) == false
    puts '# Writing project'
    phase_1_make_project_folder
    phase_2_make_project_subfolders
    phase_2_make_folder_css_and_copy_files
    phase_3_write_file_metadata_yml
    phase_3_write_file_options_yml
    phase_3_write_file_outline_yml
    puts "\n"
    puts '# Project written.'

  elsif Dir.exist?(@project.working_directory) == true
    raise ProjectExceptionHandler::Fatal.new(ProjectException::TargetProjectFolderAlreadyExists.new(@project))

  end
end

Private Instance Methods

announce_and_execute_dir_mkdir(dir) click to toggle source
# File lib/muwu/project_builder/project_writer.rb, line 99
def announce_and_execute_dir_mkdir(dir)
  print "- Making directory".ljust(18)
  puts "  `#{dir}`"
  Dir.mkdir(dir)
end
announce_and_execute_fileutils_cp_r(folder_source_gem, folder_destination_project) click to toggle source
# File lib/muwu/project_builder/project_writer.rb, line 106
def announce_and_execute_fileutils_cp_r(folder_source_gem, folder_destination_project)
  print "- Writing tree".ljust(18)
  puts "  `#{folder_destination_project}`"
  FileUtils.cp_r(folder_source_gem, folder_destination_project)
end
announce_and_execute_fileutils_touch(filename) click to toggle source
# File lib/muwu/project_builder/project_writer.rb, line 113
def announce_and_execute_fileutils_touch(filename)
  print "- Writing file".ljust(18)
  puts "  `#{filename}`"
  FileUtils.touch(filename)
end
announce_and_execute_yaml_dump(obj, filename) click to toggle source
# File lib/muwu/project_builder/project_writer.rb, line 120
def announce_and_execute_yaml_dump(obj, filename)
  print "- Writing file".ljust(18)
  puts "  `#{filename}`"
  File.open(filename,'w') { |file| YAML.dump(obj, file, canonical: false) }
end