xlogin 0.8.6 → 0.8.7

Sign up to get free protection for your applications and to get access to all the features.
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