xlogin 0.12.4 → 0.12.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 40a19a8c4be89c5b57af233605e059b2cb835c293e8ad6db1a52ed568b1968c7
4
- data.tar.gz: 96d9bda304dd69d4a1c2962336af11c68862924987b7661af417ebc566be39ab
3
+ metadata.gz: 81f206f9e13d4c7554c774e78b2f1922c38b2dbca8e159f4874f027a82c82c99
4
+ data.tar.gz: 03e07c95b87a97dd6865013b829c3da4468ee599d3262430f81a6e230551198f
5
5
  SHA512:
6
- metadata.gz: 0f0720e0bb78e942f01d360e9a9e0cfb9fcaddcf4b324bac18052ef44d59a95e41e5925814b257be4604154cebed065b57589546d34a66c74f7aa1ab5e0a4b91
7
- data.tar.gz: 89c7788c08960f365eacfdfc1c74b0e52a136faa84f60045da97939af8206b0d9739e7b19d51dfffb7de7bf771843c59156831f0c408f2d750047195ae451343
6
+ metadata.gz: 73af1ca92ea918891c286f1f1a5b9d0e5fbc6acf878cc4d823739350d6af9edfb85ad1da9b9e2bcbe1e3e75f51c907850c81c885c3243087e588cc7f1e38ed1b
7
+ data.tar.gz: 56835cfe13e9f94a41b3a20681cc6ba883b429276f7d1ec5665a5da040f6be8c1c4c9a342cb46809436d5d4771d1435d924e0726f1177874eda1bfc5b322e5df
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # xlogin
2
2
 
3
3
  rancid clogin alternative.
4
- xlogin is a tool to login devices and execute series of tasks.
4
+ xlogin is a tool to login devices and execute series of commands with ease.
5
5
 
6
6
  ## Installation
7
7
 
@@ -21,8 +21,9 @@ Or install it yourself as:
21
21
 
22
22
  ## Usage
23
23
 
24
- Write a template file that describe how to login to the specific type of device, and store it to `~/.xlogin.d/`.
25
- Take vyos as an example, template file would be:
24
+ Write a firmware template that describe how to manage the device, and store it to `~/.xlogin.d/`.
25
+ Be aware that the name of the template file should match the hosttype of the device in the inventory file.
26
+ Take vyos as an example, template file `vyos.rb` would be:
26
27
 
27
28
  ```ruby
28
29
  prompt(/[$#] (?:\e\[K)?\z/n)
@@ -34,11 +35,10 @@ login do |username, password|
34
35
  end
35
36
  ```
36
37
 
37
- Some other examples are in [lib/xlogin/templates](https://github.com/haccht/xlogin/tree/master/lib/xlogin/templates).
38
+ Some other example templates are in [lib/xlogin/templates](https://github.com/haccht/xlogin/tree/master/lib/xlogin/templates).
38
39
  You can just load these built-in templates by adding `require "xlogin/template"` in your script.
39
40
 
40
- Beside template files, you need to prepare an inventory file `~/.xloginrc`.
41
- In this file, you need to write all information required to login each device.
41
+ Besides template files, you need to prepare an inventory file `~/.xloginrc` that list all information required to login each devices.
42
42
 
43
43
  ```
44
44
  #hosttype hostname uri scheme
@@ -46,13 +46,13 @@ vyos 'vyos01', 'telnet://vagrant:vagrant@127.0.0.1:2200'
46
46
  vyos 'vyos02', 'telnet://vagrant:vagrant@127.0.0.1:2201'
47
47
  ```
48
48
 
49
- Now you can login any device in your `.xloginrc` file with a command:
49
+ Now you can login the device in your `.xloginrc` file.
50
50
 
51
51
  ```sh
52
52
  $ xlogin vyos01
53
53
  ```
54
54
 
55
- And execute multiple operations with just a single command:
55
+ And execute multiple operations with just a single command.
56
56
 
57
57
  ~~~sh
58
58
  $ xlogin 'vyos*' -e 'show configuration command | no-more; exit' -j 2
data/lib/xlogin/cli.rb CHANGED
@@ -21,8 +21,8 @@ module Xlogin
21
21
  def self.getopts(args)
22
22
  config = OpenStruct.new(
23
23
  jobs: 1,
24
- auth: false,
25
24
  task: [:tty, nil],
25
+ assume_yes: false,
26
26
  inventory: DEFAULT_INVENTORY_FILE,
27
27
  template_dir: DEFAULT_TEMPLATE_DIR,
28
28
  )
@@ -40,12 +40,12 @@ module Xlogin
40
40
  parser.on('-e COMMAND', '--exec', 'Execute commands and quit.') { |v| config.task = [:exec, v] }
41
41
 
42
42
  parser.on('-j NUM', '--jobs', Integer, 'The NUM of jobs to execute in parallel(default: 1).') { |v| config.jobs = v }
43
- parser.on('-y', '--assume-yes', TrueClass, 'Automatically answer yes to prompts.') { |v| config.auth = v }
44
43
  parser.on('-E', '--enable', TrueClass, 'Try to gain enable priviledge.') { |v| config.enable = v }
44
+ parser.on('-y', '--assume-yes', TrueClass, 'Automatically answer yes to prompts.') { |v| config.assume_yes = v }
45
45
 
46
46
  parser.parse!(args)
47
47
  Xlogin.configure do
48
- authorize(config.auth)
48
+ assume_yes(true)
49
49
  source(File.expand_path(config.inventory, ENV['PWD']))
50
50
  template(File.expand_path(config.template_dir, ENV['PWD']))
51
51
  end
@@ -85,14 +85,6 @@ module Xlogin
85
85
  logger.push buffer if !silent && Rake.application.options.always_multitask
86
86
 
87
87
  session = Xlogin.get(name, log: logger, timeout: timeout)
88
- def session.msg(text, prefix: "[INFO]", chomp: false, **color)
89
- default_color = { color: :green }
90
-
91
- log("\n")
92
- log(Time.now.iso8601.colorize(**color) + ' ') if !Rake.application.options.always_multitask
93
- log("#{prefix} #{text}".colorize(**default_color.merge(color)))
94
- cmd('') unless chomp
95
- end
96
88
 
97
89
  @runner.call(session)
98
90
  $stdout.print format_log(buffer.string)
@@ -117,4 +109,15 @@ module Xlogin
117
109
  end
118
110
 
119
111
  end
112
+
113
+ module SessionModule
114
+ def msg(text, prefix: "[INFO]", chomp: false, **color)
115
+ default_color = { color: :green }
116
+
117
+ log("\n")
118
+ log(Time.now.iso8601.colorize(**color) + ' ') if !Rake.application.options.always_multitask
119
+ log("#{prefix} #{text}".colorize(**default_color.merge(color)))
120
+ cmd('') unless chomp
121
+ end
122
+ end
120
123
  end
@@ -62,7 +62,7 @@ module Xlogin
62
62
 
63
63
  def puts(*args, &block)
64
64
  args = [instance_exec(*args, &@template.interrupt!)].flatten.compact if @template.interrupt!
65
- super(*args, &block) unless args.empty?
65
+ args.empty? ? super('', &block) : super(*args, &block)
66
66
  end
67
67
 
68
68
  def waitfor(*args, &block)
@@ -1,3 +1,3 @@
1
1
  module Xlogin
2
- VERSION = "0.12.4"
2
+ VERSION = "0.12.5"
3
3
  end
data/lib/xlogin.rb CHANGED
@@ -8,7 +8,6 @@ module Xlogin
8
8
 
9
9
  class SessionError < StandardError; end
10
10
  class TemplateError < StandardError; end
11
- class AuthorizationError < StandardError; end
12
11
 
13
12
  class << self
14
13
 
@@ -46,8 +45,8 @@ module Xlogin
46
45
  instance_eval(&block)
47
46
  end
48
47
 
49
- def authorized?
50
- @authorized == true
48
+ def assume_yes?
49
+ @assume_yes == true
51
50
  end
52
51
 
53
52
  def generate_templates(dir)
@@ -57,8 +56,8 @@ module Xlogin
57
56
  end
58
57
 
59
58
  private
60
- def authorize(boolean = true, &block)
61
- @authorized = boolean == true || (block && block.call == true)
59
+ def assume_yes(boolean = true, &block)
60
+ @assume_yes = boolean == true || (block && block.call == true)
62
61
  end
63
62
 
64
63
  def source(*sources, &block)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xlogin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.4
4
+ version: 0.12.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - haccht
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-10 00:00:00.000000000 Z
11
+ date: 2019-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-telnet