Class: Morpheus::Cli::EditRcCommand

Inherits:
Object
  • Object
show all
Includes:
CliCommand
Defined in:
lib/morpheus/cli/commands/edit_rc_command.rb

Overview

Command for editing the .morpheus_profile initalization script

Instance Attribute Summary

Attributes included from CliCommand

#no_prompt

Instance Method Summary collapse

Methods included from CliCommand

#add_query_parameter, #apply_options, #build_common_options, #build_get_options, #build_list_options, #build_option_type_options, #build_standard_add_many_options, #build_standard_add_options, #build_standard_api_options, #build_standard_delete_options, #build_standard_get_options, #build_standard_list_options, #build_standard_post_options, #build_standard_put_options, #build_standard_remove_options, #build_standard_update_options, #command_description, #command_name, #confirm, #confirm!, #default_refresh_interval, #default_sigdig, #default_subcommand, #establish_remote_appliance_connection, #execute_api, #execute_api_payload, #execute_api_request, #find_all, #find_all_json, #find_by_id, #find_by_name, #find_by_name_or_id, #find_record, #find_record_json, #full_command_usage, #get_interface, #get_list_key, #get_object_key, #get_subcommand_description, #handle_each_payload, #handle_subcommand, included, #interactive?, #my_help_command, #my_terminal, #my_terminal=, #parse_array, #parse_bytes_param, #parse_get_options!, #parse_id_list, #parse_labels, #parse_list_options, #parse_list_options!, #parse_list_subtitles, #parse_options, #parse_parameter_as_resource_id!, #parse_passed_options, #parse_payload, #parse_query_options, #print, #print_error, #println, #prog_name, #puts, #puts_error, #raise_args_error, #raise_command_error, #render_response, #run_command_for_each_arg, #subcommand_aliases, #subcommand_description, #subcommand_usage, #subcommands, #usage, #validate_outfile, #verify_args!, #visible_subcommands

Instance Method Details

#handle(args) ⇒ Object

set_command_hidden



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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
74
75
# File 'lib/morpheus/cli/commands/edit_rc_command.rb', line 9

def handle(args)
  options = {}
  editor = nil
  filename = Morpheus::Cli::DotFile.morpheusrc_filename
  optparse = Morpheus::Cli::OptionParser.new do|opts|
    opts.banner = "Usage: morpheus #{command_name}"
    opts.on( '-e', '--editor PROGRAM', "Editor program to use. The default is $EDITOR." ) do |val|
      editor = val.gsub("'",'')
    end
    build_common_options(opts, options, [])
    opts.footer = <<-EOT
Edit your .morpheusrc script located in the morpheus home directory.
This script runs at the beginning of the interactive morpheus shell command.
It provides a way to initialize your interactive morpheus shell environment.

Example:

# customize the morpheus shell prompt
set-prompt "%cyan%username%reset@%magenta%remote %cyanmorpheus> %reset"

# print the morpheus cli version
version

# print the current remote appliance version
remote get current

# greetings
echo "Welcome back %username"
EOT
  end
  optparse.parse!(args)
  

  if !editor
    editor = ENV['EDITOR']
  end

  # try something...
  if !editor
    if Morpheus::Cli.windows?
      editor = "notepad"
    else
      editor = "nano"
    end
  end

  if !editor
    print_error Morpheus::Terminal.angry_prompt
    puts_error "You have not defined an EDITOR."
    puts_error "Try export EDITOR=emacs"
    #puts "Trying nano..."
    #editor = "nano"
    return 1
  end
  has_editor = true
  puts "opening #{filename} for editing"
  system(editor, filename)
  if !$?.success?
    print_error Morpheus::Terminal.angry_prompt
    puts_error "edit command failed with #{$?.exitstatus}: #{editor} #{filename}"
    return $?.exitstatus
  end
  if Morpheus::Cli::Shell.has_instance?
    puts "use 'reload' to re-execute your startup script"
  end
  return 0 # $?
end