Method: Morpheus::Cli::DotFile#execute

Defined in:
lib/morpheus/cli/dot_file.rb

#executeArray

execute this file as a morpheus shell script executes each line in the file as a morpheus expression, ignores empty lines and comments ‘#’

Returns:

  • (Array)

    exit codes of all the commands that were run.



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/morpheus/cli/dot_file.rb', line 37

def execute()
  if !File.exist?(@filename)
    print "#{Term::ANSIColor.red}source file not found: #{@filename}#{Term::ANSIColor.reset}\n" # if Morpheus::Logging.debug?
  else
    Morpheus::Logging::DarkPrinter.puts "executing source file #{@filename}" if Morpheus::Logging.debug?
  end
  file_contents = File.read(@filename)
  lines = file_contents.split("\n")
  cmd_results = []
  line_num = 0
  lines.each_with_index do |line, line_index|
    line_num = line_index + 1
    line = line.strip
    next if line.empty?
    next if line =~ /^\#/ # skip comments
    
    cmd_exit_code = 0
    cmd_err = nil
    cmd_result = nil
    begin
      cmd_result = Morpheus::Cli::CliRegistry.exec_expression(line)
    rescue SystemExit => err
      if err.success?
        cmd_result = true
      else
        puts "#{red} source file: #{@filename}, line: #{line_num}, command: #{line}, error: #{err}#{reset}"
        cmd_result = false
      end
    rescue => err
      # raise err
      puts "#{red} source file: #{@filename}, line: #{line_num}, command: #{line}, error: #{err}#{reset}"
      cmd_result = false
    end
    cmd_results << cmd_result
  end
  return cmd_results
end