Module: ProjectLoader

Defined in:
lib/asker/loader/project_loader.rb

Overview

Load params into Project class using arg input

  • load

  • load_from_string

  • load_from_yaml

  • load_from_directory

  • load_error

Class Method Summary collapse

Class Method Details

.error_loading(arg) ⇒ Object

Error found and exit application.



77
78
79
80
81
# File 'lib/asker/loader/project_loader.rb', line 77

def self.error_loading(arg)
  msg = Rainbow("[ERROR] Loading... #{arg}").red.bright
  puts msg
  exit 1
end

.load(args) ⇒ Object

Load project from args rubocop:disable Metrics/MethodLength

Parameters:

  • args (String or Hash)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/asker/loader/project_loader.rb', line 17

def self.load(args)
  project = ProjectData.instance

  if args.class == Hash
    project.param.merge!(args)
    project.open
    return project
  elsif args.class == String
    ProjectLoader.load_from_string(args)
    project.open
    return project
  end

  msg = '[ERROR] ProjectLoader:'
  msg += "Configuration params format is <#{pArgs.class}>!"
  puts Rainbow(msg).red
  raise msg
end

.load_from_string(filepath) ⇒ Object

Load project from filepath. Options:

  • HAML filepath

  • XML filepath

  • YAML filepath

rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize

Parameters:

  • filepath (String)


45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/asker/loader/project_loader.rb', line 45

def self.load_from_string(filepath)
  project = ProjectData.instance
  unless File.exist?(filepath)
    msg = Rainbow("[ERROR] #{filepath} not found!").red.bright
    puts msg
    exit 1
  end

  if File.extname(filepath) == '.haml' || File.extname(filepath) == '.xml'
    project.set(:inputdirs, File.dirname(filepath))
    project.set(:process_file, File.basename(filepath))
    return project
  elsif File.extname(filepath) == '.yaml'
    return load_from_yaml(filepath)
  end
  error_loading(filepath)
end

.load_from_yaml(arg) ⇒ Object

rubocop:disable Security/YAMLLoad



66
67
68
69
70
71
72
# File 'lib/asker/loader/project_loader.rb', line 66

def self.load_from_yaml(arg)
  project = ProjectData.instance
  project.param.merge!(YAML.load(File.open(arg)))
  project.set(:configfilename, arg)
  project.set(:projectdir, File.dirname(arg))
  project
end