cloudflare-dns-update 2.0.1 → 2.1.0

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: 763d0560f70e47da8ae51b6ca9d6297a52b9502f
4
- data.tar.gz: 820b17155d8e28007ab607287c02849d77cfbaac
3
+ metadata.gz: 6233abf492347fbca6f5f3612c7f17c31bd3b899
4
+ data.tar.gz: 71393d51929cb97ff6ddda857370b7dc69f29dcb
5
5
  SHA512:
6
- metadata.gz: d49043a68036d167e4cc01ca259bc2f02e87307844a85ec9210317913ad1256e382dbc190376890475fb1736c43c8816088f760a0937108112e2699fcabf09b7
7
- data.tar.gz: e0b21ec76ac73988291d37c2b43b99048c10d12b309d289bee2754ec9f5c431ac8467f6c80d06ab1b9b4ed20ffe2c4e1727420809e1235a3b20dc3a2bf20cbbf
6
+ metadata.gz: 2d0c6f568e5f4c43a4200ed1c58ea544eb9cb23ea8c4c2c4a65c3654736b7fcaa634cc69538c33bc85ec66bb477045892c612ada9942184f6aecf0d6aa5b2032
7
+ data.tar.gz: a1524e97636719e1ac123c468ebfb26b796c9cdb51f6f3aa21741467614a8fd41d3b8de66318c96f1c97bb4dd06b58d7fa21e6ddd4ded9e1e041cbef512416f9
data/README.md CHANGED
@@ -4,6 +4,8 @@ This gem provides a simple executable tool for managing Cloudflare records to pr
4
4
 
5
5
  [![Build Status](https://secure.travis-ci.org/ioquatix/cloudflare-dns-update.svg)](http://travis-ci.org/ioquatix/cloudflare-dns-update)
6
6
 
7
+ [![Cloudflare DNS Update Introduction](http://img.youtube.com/vi/lQK6bWuQllM/maxresdefault.jpg)](https://www.youtube.com/watch?v=lQK6bWuQllM&feature=youtu.be&hd=1 "Cloudflare DNS Update Introduction")
8
+
7
9
  ## Installation
8
10
 
9
11
  Install it yourself as:
@@ -22,4 +22,4 @@
22
22
 
23
23
  require 'cloudflare/dns/update/command'
24
24
 
25
- Cloudflare::DNS::Update::Command::Top.parse(ARGV).invoke
25
+ Cloudflare::DNS::Update::Command.parse(ARGV).invoke
@@ -30,16 +30,41 @@ require_relative 'version'
30
30
 
31
31
  module Cloudflare::DNS::Update
32
32
  module Command
33
+ def self.parse(*args)
34
+ Top.parse(*args)
35
+ end
36
+
33
37
  # The top level utopia command.
34
38
  class Top < Samovar::Command
35
39
  self.description = "Update remote DNS records according to locally run commands."
36
40
 
37
41
  options do
38
42
  option '-c/--configuration <path>', "Use the specified configuration file."
43
+ option '--verbose | --quiet', "Verbosity of output for debugging.", key: :logging
39
44
  option '-h/--help', "Print out help information."
40
45
  option '-v/--version', "Print out the application version."
41
46
  end
42
47
 
48
+ def verbose?
49
+ @options[:logging] == :verbose
50
+ end
51
+
52
+ def quiet?
53
+ @options[:logging] == :quiet
54
+ end
55
+
56
+ def logger
57
+ @logger ||= Logger.new($stderr).tap do |logger|
58
+ if verbose?
59
+ logger.level = Logger::DEBUG
60
+ elsif quiet?
61
+ logger.level = Logger::WARN
62
+ else
63
+ logger.level = Logger::INFO
64
+ end
65
+ end
66
+ end
67
+
43
68
  def prompt
44
69
  @prompt ||= TTY::Prompt.new
45
70
  end
@@ -95,14 +120,14 @@ module Cloudflare::DNS::Update
95
120
  def initialize_command
96
121
  configuration_store.transaction do |configuration|
97
122
  unless configuration[:content_command]
98
- configuration[:content_command] = prompt.ask("What command to get content for record?", default: 'curl ipinfo.io/ip')
123
+ configuration[:content_command] = prompt.ask("What command to get content for record?", default: 'curl -s ipinfo.io/ip')
99
124
  end
100
125
  end
101
126
  end
102
127
 
103
128
  def update_domains
104
129
  configuration_store.transaction do |configuration|
105
- prompt.puts "Executing content command: #{configuration[:content_command]}"
130
+ logger.debug "Executing content command: #{configuration[:content_command]}"
106
131
  content, status = Open3.capture2(configuration[:content_command])
107
132
 
108
133
  unless status.success?
@@ -119,7 +144,7 @@ module Cloudflare::DNS::Update
119
144
 
120
145
  configuration[:domains].each do |record|
121
146
  if record[:content] != content
122
- puts "Content changed #{content.inspect}, updating record..."
147
+ logger.info "Content changed #{content.inspect}, updating record..."
123
148
 
124
149
  domain = zone.dns_records.find_by_id(record[:id])
125
150
 
@@ -132,13 +157,13 @@ module Cloudflare::DNS::Update
132
157
  response = domain.put(changes.to_json, content_type: 'application/json')
133
158
 
134
159
  if response.successful?
135
- puts "Updated domain content to #{content}."
160
+ logger.info "Updated domain content to #{content}."
136
161
  record[:content] = content
137
162
  else
138
- puts "Failed to update domain content to #{content}: #{response.errors.join(', ')}!"
163
+ logger.warn "Failed to update domain content to #{content}: #{response.errors.join(', ')}!"
139
164
  end
140
165
  else
141
- puts "Content hasn't changed."
166
+ logger.debug "Content hasn't changed."
142
167
  end
143
168
  end
144
169
 
@@ -22,7 +22,7 @@
22
22
  module Cloudflare
23
23
  module DNS
24
24
  module Update
25
- VERSION = "2.0.1"
25
+ VERSION = "2.1.0"
26
26
  end
27
27
  end
28
28
  end
@@ -9,8 +9,8 @@ RSpec.describe Cloudflare::DNS::Update::Command::Top, order: :defined do
9
9
  subject{described_class.new(["-c", configuration_path])}
10
10
 
11
11
  let(:zone) {connection.zones.all.first}
12
- let(:name) {"dyndns"}
13
- let(:qualified_name) {"dyndns.#{zone.record[:name]}"}
12
+ let!(:name) {"dyndns#{ENV['TRAVIS_JOB_ID']}"}
13
+ let!(:qualified_name) {"#{name}.#{zone.record[:name]}"}
14
14
 
15
15
  it "should create dns record" do
16
16
  response = zone.dns_records.post({
@@ -29,10 +29,8 @@ RSpec.describe Cloudflare::DNS::Update::Command::Top, order: :defined do
29
29
  it "should update dns record" do
30
30
  subject.connection = connection
31
31
 
32
- puts
33
-
34
32
  subject.configuration_store.transaction do |configuration|
35
- configuration[:content_command] = 'curl ipinfo.io/ip'
33
+ configuration[:content_command] = 'curl -s ipinfo.io/ip'
36
34
  configuration[:zone] = zone.record
37
35
  configuration[:domains] = [dns_record.record]
38
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudflare-dns-update
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-25 00:00:00.000000000 Z
11
+ date: 2017-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: samovar