xlogin 0.8.6 → 0.8.7

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
- SHA1:
3
- metadata.gz: e9ecc897b867c8eb0b0ebfe2c8041eb38f660426
4
- data.tar.gz: efc23e0139e2b9ffb7fa8b60211e11d71cee76b8
2
+ SHA256:
3
+ metadata.gz: 58dec6deed809f45a8ec2f9b5afc73eff63dfddd89344eef9826e8199ac2424f
4
+ data.tar.gz: 660d5943f6847e6770768c6a15a3322a49b7fc7e49bdda426f2eaa229a7ec3f7
5
5
  SHA512:
6
- metadata.gz: e433036245ec229557d7c4cec84c6226b9b331acf8fe696679a1b33d2c5307b622388cd923ebaff35fb76a2d8cdcb3d873113931a516d4fd0082b5e2efb96834
7
- data.tar.gz: 46d2f4b2bfad95cab1e04445bcc9c430f95b9a273629650330fa004aa10cf07ece3aae09f8b5867a7bd69d05e30c9ce8858c894802392d0a05741e171d7f4bb1
6
+ metadata.gz: a623e0f7e82dc95b079f0be68d69983152df553f5a9468193e7557f8f67ea2b6f032c7f9ae143cbc75f9a3dd8620d42ca9bac5a28c4050847d4c9eeb8a4a531b
7
+ data.tar.gz: '0854bb0ff3e7e25abd35edadfd9ffc9236b25ba5ff08c55f81514e6d3a27b406569d7fbc0cb2d1091357689c61f80cae8531c6a74f16a100f54cf709f4cebb02'
data/README.md CHANGED
@@ -28,6 +28,24 @@ xlogin vyos01
28
28
  xlogin 'vyos*' -e 'show configuration command | no-more; exit' -j 2
29
29
  ~~~
30
30
 
31
+ その他のオプションは下記の通り。
32
+
33
+ ~~~sh
34
+ $ xlogin -h
35
+ xlogin HOST_PATTERN [Options]
36
+ -i, --inventory PATH The PATH to the inventory file(default: $HOME/.xloginrc).
37
+ --template PATH The PATH to the template file.
38
+ -T, --template-dir DIRECTORY The DIRECTORY of the template files.
39
+ -L, --log-dir [DIRECTORY] The DIRECTORY of the log files(default: $PWD).
40
+ -l, --list List all available devices.
41
+ -e, --exec Execute commands and quit.
42
+ -t, --tty Allocate a pseudo-tty.
43
+ -p, --port NUM Run as server on specified port(default: 8080).
44
+ -j, --jobs NUM The NUM of jobs to execute in parallel(default: 1).
45
+ -E, --enable Try to gain enable priviledge.
46
+ -y, --assume-yes Automatically answer yes to prompts.
47
+ ~~~
48
+
31
49
  ## Installation
32
50
 
33
51
  Add this line to your application's Gemfile:
data/lib/xlogin/cli.rb CHANGED
@@ -64,7 +64,7 @@ module Xlogin
64
64
  load_templates(*config.templates.map { |file| File.expand_path(file, ENV['PWD']) })
65
65
  end
66
66
 
67
- config.hostlist = host.to_s.split(/\s+/).map { |pattern| Xlogin.factory.list(pattern) }.reduce(&:&)
67
+ config.hostlist = Xlogin.factory.list(*host.to_s.split(/\s+/))
68
68
  raise "No host found: `#{host}`" if config.hostlist.empty?
69
69
  rescue => e
70
70
  $stderr.puts e, '', parser
@@ -75,9 +75,9 @@ module Xlogin
75
75
  end
76
76
 
77
77
  def list(config)
78
- wid1 = config.hostlist.map { |e| e[:name].length }.max
79
- wid2 = config.hostlist.map { |e| e[:type].length }.max
80
- list = config.hostlist.map { |e| "#{e[:name].to_s.ljust(wid1)} #{e[:type].to_s.ljust(wid2)} #{e[:uri]}" }.sort
78
+ wid1 = config.hostlist.map { |e| e[:type].length }.max
79
+ wid2 = config.hostlist.map { |e| e[:name].length }.max
80
+ list = config.hostlist.map { |e| "#{e[:type].to_s.ljust(wid1)} #{e[:name].to_s.ljust(wid2)} #{e[:uri]}" }.sort
81
81
  $stdout.puts list
82
82
  end
83
83
 
@@ -36,7 +36,7 @@ module Xlogin
36
36
  # vyos 'vyos01', 'telnet://user:pass@host:port'
37
37
  # relay_srv 'vyos01::relay', 'telnet://relay_user:relay_pass@relay_host:relay_port', relay: 'vyos01'
38
38
  #
39
- ## Write firmware definition
39
+ ## Write firmware template for 'relay_srv'
40
40
  #
41
41
  # login do |username, password|
42
42
  # waitfor(/login:\s*\z/) && puts(username)
@@ -1,5 +1,4 @@
1
1
  require 'singleton'
2
- require 'thread'
3
2
  require 'xlogin/template'
4
3
 
5
4
  module Xlogin
@@ -28,10 +27,15 @@ module Xlogin
28
27
  @database[name]
29
28
  end
30
29
 
31
- def list(pattern = nil)
32
- key, val = pattern.to_s.split(':')
33
- key, val = 'name', (key || '*') if val.nil?
34
- val.split(',').map { |e| @database.values.select { |info| File.fnmatch(e, info[key.to_sym]) } }.reduce(&:|)
30
+ def list(*patterns)
31
+ return @database.values if patterns.empty?
32
+
33
+ values = patterns.map do |pattern|
34
+ key, val = pattern.to_s.split(':')
35
+ key, val = 'name', key if val.nil?
36
+ val.split(',').map { |e| @database.values.select { |info| File.fnmatch(e, info[key.to_sym]) } }.reduce(&:|)
37
+ end
38
+ values.reduce(&:&).uniq
35
39
  end
36
40
 
37
41
  def source_template(*files)
@@ -75,6 +79,8 @@ module Xlogin
75
79
  name = args.shift
76
80
  uri = args.shift
77
81
  opts = args.shift || {}
82
+
83
+ super if [type, name, uri].any? { |e| e.nil? }
78
84
  set(type: type, name: name, uri: uri, **opts)
79
85
  end
80
86
 
@@ -45,12 +45,11 @@ module Xlogin
45
45
  klass = Class.new(Xlogin.const_get(uri.scheme.capitalize))
46
46
  klass.class_exec(@methods) do |methods|
47
47
  methods.each do |name, block|
48
- case name
49
- when :enable
50
- define_method(name) { |args = opts[:enable]| instance_exec(args, &block) }
51
- else
52
- define_method(name, &block)
48
+ if name == :enable
49
+ define_method(name) { |*args| instance_exec([*args, opts[name]].first, &block) }
50
+ next
53
51
  end
52
+ define_method(name, &block)
54
53
  end
55
54
  end
56
55
 
@@ -58,7 +57,7 @@ module Xlogin
58
57
  end
59
58
 
60
59
  def method_missing(name, *, &block)
61
- super unless RESERVED_METHODS.include? name
60
+ super unless RESERVED_METHODS.include?(name) and block_given?
62
61
  bind(name) { |*args| instance_exec(*args, &block) }
63
62
  end
64
63
  end
@@ -1,3 +1,3 @@
1
1
  module Xlogin
2
- VERSION = "0.8.6"
2
+ VERSION = "0.8.7"
3
3
  end
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.8.6
4
+ version: 0.8.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - haccht
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-19 00:00:00.000000000 Z
11
+ date: 2018-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-telnet
@@ -166,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
166
  version: '0'
167
167
  requirements: []
168
168
  rubyforge_project:
169
- rubygems_version: 2.4.5.2
169
+ rubygems_version: 2.7.6
170
170
  signing_key:
171
171
  specification_version: 4
172
172
  summary: rancid clogin alternative