update_repo 0.8.3 → 0.8.4

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: 9f3535241ed1c52eb02d217ed8527c1b157b2eef
4
- data.tar.gz: 63024bbfebe62bb05f82bb328a1ba6c0e127fda1
3
+ metadata.gz: 0f4b96ca5d15f8eb980a80f3017430ae9a0baed7
4
+ data.tar.gz: 34dfed03a84b45affc5736f09e425be50747830b
5
5
  SHA512:
6
- metadata.gz: 0c29335e5df44c273e7666a36e03a79d4c9b02490f0c3cd715d089a63e9d1a428e53dd88aee4296ae39f379c1f7c81aa24a17884373f2ec5e5539f22eb45ca95
7
- data.tar.gz: eed327dfa5518532b4f01c0e757e5570b8584ecbc9377436e128804eec981a73c02f3960a88effbfd55a8c573e7d0be794f2361cf71f4ad30f4d1aecf68fa594
6
+ metadata.gz: 9a8e063b9a01c9c4ae0dbb68f086ed25fb85c9bb3edc1da8a2fd9e78370b27affd12db1fe86f41f68ee3366e409addfb7fe648e7b78fc375bde081bbd7fb9245
7
+ data.tar.gz: ed02a5370ada39e6f02d19018db770416f0f4bf85ef386c4c275cd910cb43393eec4d9008a3866cbc8b723fc28fb6117ad2db041c18a2bca7b887c8bc5fd9b16
data/.travis.yml CHANGED
@@ -4,4 +4,4 @@ rvm:
4
4
  - 2.1
5
5
  - 2.2.4
6
6
  - 2.3.1
7
- before_install: gem install bundler -v 1.12.5
7
+ before_install: gem install bundler -v 1.13.2
@@ -9,7 +9,7 @@ module UpdateRepo
9
9
 
10
10
  # Constructor for the ConsoleOutput class.
11
11
  # @param logger [class] Pointer to the Logger class
12
- # @param metrics [hash] Hash of metrics and their values
12
+ # @param metrics [class] Pointer to the Metrics class
13
13
  # @param config [class] Pointer to the Confoog class
14
14
  # @return [void]
15
15
  # @example
@@ -33,4 +33,8 @@ module Helpers
33
33
  def print_log(*string)
34
34
  @log.output(*string)
35
35
  end
36
+
37
+ def repo_url
38
+ `git config remote.origin.url`.chomp
39
+ end
36
40
  end
@@ -0,0 +1,53 @@
1
+ require 'update_repo/version'
2
+ require 'update_repo/helpers'
3
+
4
+ module UpdateRepo
5
+ # Class : Metrics.
6
+ # This class takes care of storing the metrics for processed, failures, etc.
7
+ class Metrics
8
+ include Helpers
9
+
10
+ # Constructor for the Metrics class.
11
+ # @param logger [instance] Pointer to the Logger class
12
+ # @return [instance] Instance of the Metrics class
13
+ def initialize(logger)
14
+ @log = logger
15
+ @metrics = { processed: 0, skipped: 0, failed: 0, updated: 0,
16
+ start_time: 0, failed_list: [] }
17
+ end
18
+
19
+ # Read the metric 'key'
20
+ # @param key [symbol] the key to read
21
+ # @return [various] Return the value for hash key 'key'
22
+ def [](key)
23
+ @metrics[key]
24
+ end
25
+
26
+ # Set the metric 'key' to 'value'
27
+ # @param key [symbol] the key to set
28
+ # @param value [symbol] set 'key' to this value.
29
+ # @return [value] Return the value set.
30
+ def []=(key, value)
31
+ @metrics[key] = value
32
+ end
33
+
34
+ # output an error line and update the metrics
35
+ # @param line [string] The string containing the error message
36
+ # @return [void]
37
+ def handle_err(line)
38
+ return unless line =~ /^fatal:|^error:/
39
+ print_log ' ', line.red
40
+ @metrics[:failed] += 1
41
+ err_loc = Dir.pwd + " (#{repo_url})"
42
+ @metrics[:failed_list].push(loc: err_loc, line: line)
43
+ end
44
+
45
+ # print a git output line and update the metrics if an update has occurred
46
+ # @param line [string] The string containing the git output line
47
+ # @return [void]
48
+ def handle_output(line)
49
+ print_log ' ', line.cyan
50
+ @metrics[:updated] += 1 if line =~ %r{^From\s(?:https?|git)://}
51
+ end
52
+ end
53
+ end
@@ -1,4 +1,4 @@
1
1
  module UpdateRepo
2
2
  # constant, current version of this Gem
3
- VERSION = '0.8.3'.freeze
3
+ VERSION = '0.8.4'.freeze
4
4
  end
data/lib/update_repo.rb CHANGED
@@ -3,6 +3,7 @@ require 'update_repo/helpers'
3
3
  require 'update_repo/cmd_config'
4
4
  require 'update_repo/logger'
5
5
  require 'update_repo/console_output'
6
+ require 'update_repo/metrics'
6
7
  require 'yaml'
7
8
  require 'colorize'
8
9
  require 'confoog'
@@ -22,12 +23,12 @@ module UpdateRepo
22
23
  # Class constructor. No parameters required.
23
24
  # @return [void]
24
25
  def initialize
25
- @metrics = { processed: 0, skipped: 0, failed: 0, updated: 0,
26
- start_time: 0, failed_list: [] }
27
26
  # create a new instance of the CmdConfig class then read the config var
28
27
  @cmd = CmdConfig.new
29
- # set up the logfile if needed
28
+ # set up the output and logging class
30
29
  @log = Logger.new(cmd(:log), cmd(:timestamp))
30
+ # create instance of the Metrics class
31
+ @metrics = Metrics.new(@log)
31
32
  # instantiate the console output class for header, footer etc
32
33
  @cons = ConsoleOutput.new(@log, @metrics, @cmd)
33
34
  end
@@ -127,11 +128,11 @@ module UpdateRepo
127
128
  # @param none
128
129
  # @return [void]
129
130
  def do_update
130
- repo_url = `git config remote.origin.url`.chomp
131
+ # repo_url = `git config remote.origin.url`.chomp
131
132
  print_log '* Checking ', Dir.pwd.green, " (#{repo_url})\n"
132
133
  Open3.popen3('git pull') do |stdin, stdout, stderr, thread|
133
134
  stdin.close
134
- do_threads(stdout, stderr, repo_url)
135
+ do_threads(stdout, stderr)
135
136
  thread.join
136
137
  end
137
138
  end
@@ -142,19 +143,12 @@ module UpdateRepo
142
143
  # @param stderr [stream] STDERR Stream from the popen3 call
143
144
  # @param repo_url [string] URL of the associated repository
144
145
  # @return [void]
145
- def do_threads(stdout, stderr, repo_url)
146
+ def do_threads(stdout, stderr)
146
147
  { out: stdout, err: stderr }.each do |key, stream|
147
148
  Thread.new do
148
149
  while (line = stream.gets)
149
- if key == :err && line =~ /^fatal:|^error:/
150
- print_log ' ', line.red
151
- @metrics[:failed] += 1
152
- err_loc = Dir.pwd + " (#{repo_url})"
153
- @metrics[:failed_list].push(loc: err_loc, line: line)
154
- else
155
- print_log ' ', line.cyan
156
- @metrics[:updated] += 1 if line =~ %r{^From\s(?:https?|git)://}
157
- end
150
+ @metrics.handle_err(line) if key == :err
151
+ @metrics.handle_output(line) if key == :out
158
152
  end
159
153
  end
160
154
  end
@@ -166,9 +160,9 @@ module UpdateRepo
166
160
  # @return [void]
167
161
  def dump_repo(dir)
168
162
  Dir.chdir(dir.chomp!('/')) do
169
- repo_url = `git config remote.origin.url`.chomp
163
+ # repo_url = `git config remote.origin.url`.chomp
170
164
  print_log "#{trunc_dir(dir, config['cmd'][:prune])}," if cmd(:dump)
171
- print_log "#{repo_url}\n"
165
+ print_log "#{get_repo_url}\n"
172
166
  end
173
167
  end
174
168
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: update_repo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 0.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Grant Ramsay
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-10 00:00:00.000000000 Z
11
+ date: 2016-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -289,6 +289,7 @@ files:
289
289
  - lib/update_repo/console_output.rb
290
290
  - lib/update_repo/helpers.rb
291
291
  - lib/update_repo/logger.rb
292
+ - lib/update_repo/metrics.rb
292
293
  - lib/update_repo/version.rb
293
294
  - update_repo.gemspec
294
295
  homepage: http://updaterepo.seapagan.net