Class: Aio::Module::Cmd

Inherits:
Object
  • Object
show all
Includes:
Ui::Verbose
Defined in:
lib/aio/core/module/cmd.rb

Direct Known Subclasses

Cisco, H3C, Huawei, Juniper, Maipu

Defined Under Namespace

Classes: Cisco, H3C, Huawei, Juniper, Maipu, MethodError, MismatchError

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Ui::Verbose

#clear_line, #print_error, #print_good, #progress_bar

Constructor Details

#initialize(info = {}) ⇒ Cmd

Returns a new instance of Cmd.



38
39
40
41
42
# File 'lib/aio/core/module/cmd.rb', line 38

def initialize(info = {})
  @cmd_info = info.dup
  @useful = {}
  set_defaults()
end

Instance Attribute Details

#cmd_infoObject

模块的信息



21
22
23
# File 'lib/aio/core/module/cmd.rb', line 21

def cmd_info
  @cmd_info
end

#contextObject

加载的欲解析的文本



18
19
20
# File 'lib/aio/core/module/cmd.rb', line 18

def context
  @context
end

#device_infoObject

加载设备的基本信息:device_version :device_model



33
34
35
# File 'lib/aio/core/module/cmd.rb', line 33

def device_info
  @device_info
end

#ext_infoObject

获取一些额外的信息,有device提供



36
37
38
# File 'lib/aio/core/module/cmd.rb', line 36

def ext_info
  @ext_info
end

#usefulObject

解析后得到的有用信息以Hash = { :case => info }



25
26
27
# File 'lib/aio/core/module/cmd.rb', line 25

def useful
  @useful
end

#warning_klassObject

加载warning信息



28
29
30
# File 'lib/aio/core/module/cmd.rb', line 28

def warning_klass
  @warning_klass
end

Instance Method Details

#authorObject



80
# File 'lib/aio/core/module/cmd.rb', line 80

def author;    self.cmd_info[:author];   end

#benchmarkObject



83
# File 'lib/aio/core/module/cmd.rb', line 83

def benchmark; self.cmd_info[:benchmark]; end

#clear_usefulObject



69
70
71
# File 'lib/aio/core/module/cmd.rb', line 69

def clear_useful
  @useful = {}
end

#cmd_fullObject



78
# File 'lib/aio/core/module/cmd.rb', line 78

def cmd_full;  self.cmd_info[:cmd_full];  end

#cmd_shortObject



79
# File 'lib/aio/core/module/cmd.rb', line 79

def cmd_short; self.cmd_info[:cmd_short]; end

#descriptionObject



81
# File 'lib/aio/core/module/cmd.rb', line 81

def description;  self.cmd_info[:description]; end

#divisionObject

将自己分裂出来一份,以免遭到覆盖



45
46
47
# File 'lib/aio/core/module/cmd.rb', line 45

def division
  self.class.new
end

#key_standObject



86
# File 'lib/aio/core/module/cmd.rb', line 86

def key_stand; self.cmd_info[:key_stand];   end

#licenseObject



85
# File 'lib/aio/core/module/cmd.rb', line 85

def license;   self.cmd_info[:license];    end

#parseObject

所有Cmd模块都必须重载此方法,用于解析命令

Raises:



74
75
76
# File 'lib/aio/core/module/cmd.rb', line 74

def parse
  raise MethodError.new
end

#platformObject



84
# File 'lib/aio/core/module/cmd.rb', line 84

def platform;  self.cmd_info[:platform];  end

#rankingObject



82
# File 'lib/aio/core/module/cmd.rb', line 82

def ranking;   self.cmd_info[:ranking];    end

#set_defaultsObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/aio/core/module/cmd.rb', line 49

def set_defaults
  self.cmd_info = {
    :cmd_full   => 'No full name',
    :cmd_short  => 'No short name',
    :author     => nil,
    :description => 'No command description',
    :ranking    => Ranking_1,
    # 用于确定设备类型
    :key_stand  => false,
    :benchmark  => {},
    # 平台,是 route, switch 还是 failware
    :platform   => nil,
    :license    => Aio::AIO_LICENSE,
  }.update(@cmd_info)
end

#typeObject



65
66
67
# File 'lib/aio/core/module/cmd.rb', line 65

def type
  Aio::Module::Cmd
end