svn_command_helper 1.4.1 → 1.5.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: d2822279fd1a71b8b300daeaf421dec21d765aad
4
- data.tar.gz: 49e95dcf1ff01a848ed92905f61f2eb6e07b92f4
3
+ metadata.gz: 59081bc6e3dc4a9dd6ea552f99923714a875c4cb
4
+ data.tar.gz: 1a9e7d17a23e855f54c4c25f61138a93f4144949
5
5
  SHA512:
6
- metadata.gz: c67b3b38d64c8ff2baf92b3c9d5a327a28b6055d62d437cecdddedb87b0856a62f545e2efeb7942a75b9850bf8350d8e4a54b36fdbfda771fa1c49d47279e674
7
- data.tar.gz: a163415a147810858a1730da95e198a4f7342c2fa993347c627379439ebe0bdef532b1a99f544bf803be2a976b0d6d239a29f847e66139739915a82f2a79ae05
6
+ metadata.gz: 19d200ce20613cc3e9bf8ae0653a5956f489a7bd3f14c4dd464be8b7ee7230f3a5d2404b5e4dd40dc1ec5d6abc2b2ecf7801657d35ca9f018971d38a8c02a743
7
+ data.tar.gz: 38b2e7071caf9f4c9cbedc7b7e2570a783c0b137f14adda9bbd60b45f1473715c712c9db1527d1d89ec9053aac1b6b20fc3a7f4b7b9237d215c9406a870572e9
@@ -3,7 +3,6 @@ require 'pathname'
3
3
  require 'yaml'
4
4
  require 'time'
5
5
  require 'tmpdir'
6
- require 'ostruct'
7
6
  require 'libxml'
8
7
  require "system_command_helper"
9
8
 
@@ -31,7 +30,7 @@ module SvnCommandHelper
31
30
  # svn list
32
31
  # @param [uri string like] uri target uri
33
32
  # @param [Boolean] recursive --recursive
34
- # @return [Array<String>] paths
33
+ # @return [Array<ListItem>] paths
35
34
  def list(uri, recursive = false)
36
35
  if @list_cache && @list_cache[recursive][uri]
37
36
  @list_cache[recursive][uri]
@@ -39,19 +38,30 @@ module SvnCommandHelper
39
38
  list_str = cap("svn list --xml #{recursive ? '-R' : ''} #{uri}")
40
39
  list = LibXML::XML::Document.string(list_str).find("//lists/list/entry").map do |entry|
41
40
  commit = entry.find_first("commit")
42
- OpenStruct.new({
41
+ ListItem.new(
43
42
  kind: entry["kind"],
44
43
  path: entry.find_first("name").content,
45
44
  revision: commit["revision"].to_i,
46
45
  author: commit.find_first("author").content,
47
- date: Time.iso8601(commit.find_first("date").content),
48
- })
46
+ date: Time.iso8601(commit.find_first("date").content)
47
+ )
49
48
  end
50
49
  @list_cache[recursive][uri] = list if @list_cache
51
50
  list
52
51
  end
53
52
  end
54
53
 
54
+ class ListItem
55
+ attr_reader :kind, :path, :revision, :author, :date
56
+ def initialize(kind:, path:, revision:, author:, date:)
57
+ @kind = kind
58
+ @path = path
59
+ @revision = revision
60
+ @author = author
61
+ @date = date
62
+ end
63
+ end
64
+
55
65
  # svn list --recursive
56
66
  # @param [uri string like] uri target uri
57
67
  # @return [Array<String>] paths
@@ -108,19 +118,29 @@ module SvnCommandHelper
108
118
  # @param [uri string like] uri target uri
109
119
  # @param [Integer] limit --limit
110
120
  # @param [Boolean] stop_on_copy --stop-on-copy
111
- # @return [Array<OpenStruct>] log (old to new order)
121
+ # @return [Array<LogItem>] log (old to new order)
112
122
  def log(uri = ".", limit: nil, stop_on_copy: false)
113
123
  log = cap "svn log --xml #{limit ? "--limit #{limit}" : ""} #{stop_on_copy ? "--stop-on-copy" : ""} #{uri}"
114
124
  LibXML::XML::Document.string(log).find("//log/logentry").map do |entry|
115
- OpenStruct.new({
125
+ LogItem.new(
116
126
  revision: entry["revision"].to_i,
117
127
  author: entry.find_first("author").content,
118
128
  date: Time.iso8601(entry.find_first("date").content),
119
- msg: entry.find_first("msg").content,
120
- })
129
+ msg: entry.find_first("msg").content
130
+ )
121
131
  end.reverse
122
132
  end
123
133
 
134
+ class LogItem
135
+ attr_reader :revision, :author, :date, :msg
136
+ def initialize(revision:, author:, date:, msg:)
137
+ @revision = revision
138
+ @author = author
139
+ @date = date
140
+ @msg = msg
141
+ end
142
+ end
143
+
124
144
  # head revision of uri
125
145
  # @param [uri string like] uri target uri
126
146
  # return [Integer] revision number
@@ -208,7 +228,15 @@ module SvnCommandHelper
208
228
  def merge_dry_run(command)
209
229
  cap("#{command} --dry-run")
210
230
  .each_line.map(&:chomp).reject {|line| line[4] != " "}
211
- .map {|line| OpenStruct.new({status: line[0...4], path: line[5..-1]})}
231
+ .map {|line| MergeStatusItem.new(status: line[0...4], path: line[5..-1])}
232
+ end
233
+
234
+ class MergeStatusItem
235
+ attr_reader :status, :path
236
+ def initialize(status:, path:)
237
+ @status = status
238
+ @path = path
239
+ end
212
240
  end
213
241
 
214
242
  # svn merge branch to trunk with detecting revision range
@@ -298,12 +326,12 @@ module SvnCommandHelper
298
326
 
299
327
  diff_str = cap("svn diff --xml --summarize #{from_uri} #{to_uri} #{options.join(' ')}")
300
328
  diff_list = LibXML::XML::Document.string(diff_str).find("//diff/paths/path").map do |path|
301
- OpenStruct.new({
329
+ DiffItem.new(
302
330
  kind: path["kind"],
303
331
  item: path["item"],
304
332
  props: path["props"],
305
- path: path.content,
306
- })
333
+ path: path.content
334
+ )
307
335
  end
308
336
  if ignore_properties
309
337
  diff_list.reject! {|diff| diff.item == "none"}
@@ -323,6 +351,17 @@ module SvnCommandHelper
323
351
  diff_list
324
352
  end
325
353
 
354
+ class DiffItem
355
+ attr_reader :kind, :item, :props, :path
356
+ attr_accessor :from, :to
357
+ def initialize(kind:, item:, props:, path:)
358
+ @kind = kind
359
+ @item = item
360
+ @props = props
361
+ @path = path
362
+ end
363
+ end
364
+
326
365
  # copy single transaction
327
366
  # @param [SvnFileCopyTransaction] transaction from and to info
328
367
  # @param [String] message commit message
@@ -1,4 +1,4 @@
1
1
  module SvnCommandHelper
2
2
  # version
3
- VERSION = "1.4.1"
3
+ VERSION = "1.5.0"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: svn_command_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Narazaka