xlogin 0.4.7 → 0.4.8

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
  SHA1:
3
- metadata.gz: f5cae10e317124a423c1aa86ebb0461645ecd54f
4
- data.tar.gz: 9d69438c6cefdb260c2503abb4575d6afc057d17
3
+ metadata.gz: c814eeefd4b51ff2814b8884832929111d7ab66e
4
+ data.tar.gz: 0b426a3286f44ceeae1c4daa2d95d9a33e9091c4
5
5
  SHA512:
6
- metadata.gz: d5686ebbb6036c35d71a7a10bedd63f3be198bc4bcfe2fa53e2c9680811f388cf1debcf04b68c15447dda45821b16c035b357310d221f90df850dfe131fe263c
7
- data.tar.gz: 44abe1bda6ea08bba42613fd9f6fc7b016aff20d3b107c9e40db591b4e553184f2db71f9611aff79efe5c0b9faed0ad4b7486f3929f2a3cd7c87e6934761ac22
6
+ metadata.gz: 9f7960c129ab9e558cb5587dc102c599dc3d6f94f9c2c6a9ce307e57cc96ac76d217061f7618dfa3b85b8307452927f269b518d7a14f8866864c8dfeb5df5fe8
7
+ data.tar.gz: 52c75c2f293eef34aea1a0be6c3109cb0cb2bb3e075411eeb29130b00e53b0ef864f85847261a84620d8bf6d9faf8e8ded436550f29932e23fce70a70c911f3c
@@ -8,25 +8,20 @@ module Xlogin
8
8
 
9
9
  class GeneralError < StandardError; end
10
10
 
11
- # default template directory
12
- TEMPLATE_DIR = File.join(File.dirname(__FILE__), 'xlogin', 'templates')
11
+ BUILDIN_TEMPLATES = Dir.glob(File.join(File.dirname(__FILE__), 'xlogin', 'templates', '*.rb'))
13
12
 
14
13
  class << self
15
14
  def factory
16
- @factory ||= configure_factory
15
+ @factory ||= load_templates(*BUILDIN_TEMPLATES)
17
16
  end
18
17
 
19
- def configure_factory(*template_dirs)
20
- unless @factory
21
- @factory = Xlogin::FirmwareFactory.instance
22
-
23
- template_dirs = [TEMPLATE_DIR, File.join(Dir.pwd, 'templates'), *template_dirs]
24
- template_dirs.compact.uniq.each do |dir|
25
- next unless FileTest.directory?(dir)
26
- @factory.load_template_file(*Dir.glob(File.join(dir, '*.rb')))
27
- end
18
+ def load_templates(*template_files)
19
+ @loaded_template_files ||= []
20
+ Xlogin::FirmwareFactory.instance.tap do |factory|
21
+ files = template_files - @loaded_template_files
22
+ factory.load_template_file(*files)
23
+ @loaded_template_files += files
28
24
  end
29
- @factory
30
25
  end
31
26
 
32
27
  def configure(name)
@@ -63,25 +63,23 @@ module Xlogin
63
63
  end
64
64
 
65
65
  def build(args)
66
- uri = args.delete(:uri)
67
- type = args.delete(:type)
68
- name = args.delete(:name)
69
- opts = args.reduce({}) { |a, (k, v)| a.merge(k.to_s.downcase.to_sym => v) }
70
- raise Xlogin::GeneralError.new("Host not found: #{args}") unless uri && type
71
-
66
+ type = args.delete(:type)
72
67
  template = get_template(type)
73
68
  raise Xlogin::GeneralError.new("Template not defined: #{type}") unless template
74
69
 
70
+ uri = args.delete(:uri)
71
+ opts = args.reduce({}) { |a, (k, v)| a.merge(k.to_s.downcase.to_sym => v) }
72
+ raise Xlogin::GeneralError.new("Host not found: #{args}") unless uri
73
+
75
74
  session = template.dup.run(uri, opts)
76
- session.name = name if name
77
75
  session
78
76
  end
79
77
 
80
78
  def build_from_hostname(hostname, **args)
81
- host = get(hostname)
82
- raise Xlogin::GeneralError.new("Host not found: #{hostname}") unless host
79
+ hostinfo = get(hostname)
80
+ raise Xlogin::GeneralError.new("Host not found: #{hostname}") unless hostinfo
83
81
 
84
- build(get(hostname).merge(args))
82
+ build(hostinfo.merge(args))
85
83
  end
86
84
 
87
85
  def method_missing(name, *args, &block)
@@ -10,7 +10,8 @@ module Xlogin
10
10
 
11
11
  def configure_session(**opts)
12
12
  @opts = opts.dup
13
- @host = @name = @opts[:host]
13
+ @host = @opts[:host]
14
+ @name = @opts[:name] || @host
14
15
  @port = @opts[:port]
15
16
  @userinfo = @opts[:userinfo].to_s.split(':')
16
17
  raise Xlogin::GeneralError.new('Argument error.') unless @host && @port
@@ -1,3 +1,3 @@
1
1
  module Xlogin
2
- VERSION = "0.4.7"
2
+ VERSION = "0.4.8"
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.4.7
4
+ version: 0.4.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - haccht
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-19 00:00:00.000000000 Z
11
+ date: 2017-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler