rtprov 0.1.1 → 0.1.3

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: a42f3a6c37f9233c1e1fdd92873969d5ed678d6ad27fdfc4fdff77af6227febc
4
- data.tar.gz: 62605c2099496b32f52fdc46252eb0e520db43aaf9406417ee0946306fe315d6
3
+ metadata.gz: dddbe1e1f19412764cd3299b98b846671818d7f968fd1fad9561119396f83913
4
+ data.tar.gz: 6113e8893c87e96c0a5ec1c1a9b33bcd05bfd3f63002e21a6bf85a24b077c43c
5
5
  SHA512:
6
- metadata.gz: ba354ca8fd48fcedfc6b07ff496843c1c8f23db8d6828cdfb4cc330d4912f2c6bd449986e461ec9d3a56b6cf4982e7625fa7609e7fc7b3ce234355164be7be63
7
- data.tar.gz: 29dd3afde18056a78e1ce1e9d81896e538ace1b4b604664ac6f67846b62fe91968d05bb9d62db9e3b02665bad115b0757944368642c764b0703d6def1ca60c6b
6
+ metadata.gz: a35844a0c506d3eb612edd02ddccc12f98826cfaf14624066dd001e44208377e2abfdc0bad9f548507e0834869c868c9ceaf298934cf9f53bdae59478161365a
7
+ data.tar.gz: 9f5313e2783404f33b7a71ea3bc19398ab7781fb1497e5de008754415cc5b7f55fa4ac239d7cc278cca11793bd1c95d3f9560af727ddf060c2ab9cddc0fb763b
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ # v0.1.3
2
+
3
+ * use file name instead of config number on `get`, `diff`
4
+
5
+ # v0.1.2
6
+
7
+ * add subcommands `print`, `diff`
8
+
1
9
  # v0.1.1
2
10
 
3
11
  * support prompt change like 'pp1>' by 'pp select 1'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rtprov (0.1.1)
4
+ rtprov (0.1.3)
5
5
  reversible_cryptography
6
6
  thor
7
7
 
@@ -14,7 +14,7 @@ GEM
14
14
  parser (2.6.3.0)
15
15
  ast (~> 2.4.0)
16
16
  rainbow (3.0.0)
17
- rake (10.5.0)
17
+ rake (13.0.1)
18
18
  reversible_cryptography (0.5.0)
19
19
  thor
20
20
  rubocop (0.74.0)
@@ -25,7 +25,7 @@ GEM
25
25
  ruby-progressbar (~> 1.7)
26
26
  unicode-display_width (>= 1.4.0, < 1.7)
27
27
  ruby-progressbar (1.10.1)
28
- thor (0.20.3)
28
+ thor (1.2.1)
29
29
  unicode-display_width (1.6.0)
30
30
 
31
31
  PLATFORMS
@@ -33,9 +33,9 @@ PLATFORMS
33
33
 
34
34
  DEPENDENCIES
35
35
  bundler (~> 2.0)
36
- rake (~> 10.0)
36
+ rake (~> 13.0)
37
37
  rtprov!
38
38
  rubocop (~> 0.74.0)
39
39
 
40
40
  BUNDLED WITH
41
- 2.0.1
41
+ 2.3.25
data/README.md CHANGED
@@ -80,6 +80,20 @@ rtprov uses `ENV["RTPROV_DIFF"]` or `colordiff` or `diff` to print diff.
80
80
  # Rendering templates/my_config.erb and put to my_route as config1 and load it.
81
81
  $ rtprov put my_router --number 1 my_config
82
82
 
83
+ Templates are ERB file. In template, define variables described in router file.
84
+ For example, in router file,
85
+
86
+ variables:
87
+ foo:
88
+ bar:
89
+ - baz: foobar
90
+
91
+ in template,
92
+
93
+ <%= foo.bar[0].baz >
94
+
95
+ you can get "foobar".
96
+
83
97
 
84
98
  ## Development
85
99
 
data/lib/rtprov/cli.rb CHANGED
@@ -19,11 +19,33 @@ module Rtprov
19
19
  end
20
20
 
21
21
  desc "get ROUTER", "Get config from router"
22
- option :number, type: :numeric, default: 0, aliases: :n, desc: "Configuration number"
22
+ option :filename, type: :string, default: "/system/config", aliases: :f, desc: "Configuration file"
23
23
  def get(router_name)
24
24
  router = Router.load(router_name)
25
25
  sftp = Sftp.new(router.host, router.user, router.administrator_password)
26
- puts sftp.get("/system/config#{options[:number]}")
26
+ puts sftp.get(options[:filename])
27
+ end
28
+
29
+ desc "diff ROUTER TEMPLATE", "Show config diff of current and new config"
30
+ option :filename, type: :string, default: "/system/config", aliases: :f, desc: "Configuration file"
31
+ def diff(router_name, template_name)
32
+ current_file = options[:filename]
33
+ router = Router.load(router_name)
34
+
35
+ template = Template.find(router_name, template_name)
36
+ new_config = template.render(router.variables)
37
+
38
+ sftp = Sftp.new(router.host, router.user, router.administrator_password)
39
+ current_config = sftp.get(current_file)
40
+ diff = ENV["RTPROV_DIFF"] || %w(colordiff diff).find {|cmd| system("which", cmd, out: "/dev/null", err: "/dev/null") }
41
+
42
+ Dir.mktmpdir do |dir|
43
+ Dir.chdir(dir) do
44
+ File.write("new.conf", new_config.gsub(/^\s*#.*$/, "").gsub(/(\r\n|\r|\n)+/, "\r\n").chomp)
45
+ File.write("current.conf", current_config.gsub(/^\s*#.*$/, "").gsub(/\s+$/, "").gsub(/(\r\n|\r|\n)+/, "\r\n").chomp)
46
+ system("#{diff} -u current.conf new.conf", out: $stdout, err: $stderr)
47
+ end
48
+ end
27
49
  end
28
50
 
29
51
  desc "put ROUTER TEMPLATE", "Put config from router"
@@ -66,6 +88,15 @@ module Rtprov
66
88
  end
67
89
  end
68
90
 
91
+ desc "print ROUTER TEMPLATE", "Print config"
92
+ def print(router_name, template_name)
93
+ router = Router.load(router_name)
94
+
95
+ template = Template.find(router_name, template_name)
96
+ new_config = template.render(router.variables)
97
+ puts new_config
98
+ end
99
+
69
100
  desc "ls", "List routers"
70
101
  def ls
71
102
  Router.names.each do |name|
@@ -1,3 +1,3 @@
1
1
  module Rtprov
2
- VERSION = "0.1.1".freeze
2
+ VERSION = "0.1.3".freeze
3
3
  end
data/rtprov.gemspec CHANGED
@@ -41,6 +41,6 @@ Gem::Specification.new do |spec|
41
41
  spec.add_dependency "thor"
42
42
 
43
43
  spec.add_development_dependency "bundler", "~> 2.0"
44
- spec.add_development_dependency "rake", "~> 10.0"
44
+ spec.add_development_dependency "rake", "~> 13.0"
45
45
  spec.add_development_dependency "rubocop", "~> 0.74.0"
46
46
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rtprov
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - labocho
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-05 00:00:00.000000000 Z
11
+ date: 2022-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: reversible_cryptography
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: '13.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: '13.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rubocop
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -117,7 +117,7 @@ metadata:
117
117
  homepage_uri: https://github.com/labocho/rtprov
118
118
  source_code_uri: https://github.com/labocho/rtprov
119
119
  changelog_uri: https://github.com/labocho/rtprov/master/CHANGELOG.md
120
- post_install_message:
120
+ post_install_message:
121
121
  rdoc_options: []
122
122
  require_paths:
123
123
  - lib
@@ -132,8 +132,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  - !ruby/object:Gem::Version
133
133
  version: '0'
134
134
  requirements: []
135
- rubygems_version: 3.0.3
136
- signing_key:
135
+ rubygems_version: 3.3.3
136
+ signing_key:
137
137
  specification_version: 4
138
138
  summary: Yamaha router (RTX or NVR series) provisioning tool
139
139
  test_files: []