svn_command_helper 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 34acdb9910cb150f794c4319621e038c37737388
4
- data.tar.gz: b8a942e444e3bed3a7539abc71d23d1abc80f6e8
3
+ metadata.gz: d47ea36471b94fda56202e1c64b89d24b989ae98
4
+ data.tar.gz: 794513a1bc00aea3fdcb3e426e09e3a7732f56f2
5
5
  SHA512:
6
- metadata.gz: e58f2996c63cc5b46ede2f51328596bfc9f7486fa332f8e2530699ec9e1ddc9a89bf570bd775f956358cfafe50bfe1ec504d7dc66d23ce6e81a1134e2d84c44b
7
- data.tar.gz: 55b53a1d787037835765696baf6252ce5f8522f4c40f95505127630f7670c3113d17a02d000585e6d9dea350bd7f5191698a8210bc69b7616dcf9e4a18eafc87
6
+ metadata.gz: 45ca7ade456b31728cc8ba6737792f8a9fdff942f64442f398ee5f323d62168d0324d1321b03c6d9d573240317a21d71a9fcd283d99eb33d01cf6dd60b1dcfcd
7
+ data.tar.gz: 3c6af82ce304903f6710383f0eebc088a7d331078110b4b035a13d4a021e28edd38834b9f283ecc54525935e9a6173e0becc8f11baa9cba802738d76ac889b20
data/README.md CHANGED
@@ -1,8 +1,12 @@
1
1
  # SvnCommandHelper
2
+ # [SvnCommandHelper](https://github.com/SystemCommandHelperRB/svn_command_helper)
2
3
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/svn_command_helper`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+ [![Gem](https://img.shields.io/gem/v/svn_command_helper.svg)](https://rubygems.org/gems/svn_command_helper)
5
+ [![Gem](https://img.shields.io/gem/dtv/svn_command_helper.svg)](https://rubygems.org/gems/svn_command_helper)
6
+ [![Gemnasium](https://gemnasium.com/github.com/SystemCommandHelperRB/svn_command_helper.svg)](https://gemnasium.com/github.com/SystemCommandHelperRB/svn_command_helper)
7
+ [![Inch CI](http://inch-ci.org/github/SystemCommandHelperRB/svn_command_helper.svg)](http://inch-ci.org/github/SystemCommandHelperRB/svn_command_helper)
4
8
 
5
- TODO: Delete this and the text above, and describe your gem
9
+ svn command helper
6
10
 
7
11
  ## Installation
8
12
 
@@ -20,10 +24,6 @@ Or install it yourself as:
20
24
 
21
25
  $ gem install svn_command_helper
22
26
 
23
- ## Usage
24
-
25
- TODO: Write usage instructions here
26
-
27
27
  ## Development
28
28
 
29
29
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -32,10 +32,12 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
32
32
 
33
33
  ## Contributing
34
34
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/svn_command_helper.
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/SystemCommandHelperRB/svn_command_helper.
36
36
 
37
+ ## API
37
38
 
38
- ## License
39
+ [API Document](http://www.rubydoc.info/github/SystemCommandHelperRB/svn_command_helper)
39
40
 
40
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
41
+ ## License
41
42
 
43
+ This is released under [MIT License](http://narazaka.net/license/MIT?2016).
@@ -3,11 +3,17 @@ require 'pathname'
3
3
  require 'yaml'
4
4
  require "system_command_helper"
5
5
 
6
+ # Subversion command helper
6
7
  module SvnCommandHelper
8
+ # Subversion native command and some utilities
7
9
  module Svn
10
+ # module methods
8
11
  module ModuleMethods
9
12
  include ::SystemCommandHelper
10
13
 
14
+ # svn commit
15
+ # @param [String] message commit message
16
+ # @param [path string like] path target path
11
17
  def commit(message, path = ".")
12
18
  if cap("svn status #{path}").empty?
13
19
  sys "svn revert -R #{path}"
@@ -18,27 +24,61 @@ module SvnCommandHelper
18
24
  sys "svn update #{path}"
19
25
  end
20
26
 
27
+ # svn list
28
+ # @param [uri string like] uri target uri
29
+ # @param [Boolean] recursive --recursive
30
+ # @return [Array<String>] paths
21
31
  def list(uri, recursive = false)
22
32
  cap("svn list #{recursive ? '-R' : ''} #{uri}").split(/\n/).compact
23
33
  .reject {|path| path.empty?}
24
34
  end
25
35
 
36
+ # svn list --recursive
37
+ # @param [uri string like] uri target uri
38
+ # @return [Array<String>] paths
26
39
  def list_recursive(uri)
27
40
  list(uri, true)
28
41
  end
29
42
 
43
+ # svn list -> grep only files
44
+ # @param [uri string like] uri target uri
45
+ # @param [Boolean] recursive --recursive
46
+ # @return [Array<String>] file paths
30
47
  def list_files(uri, recursive = false)
31
48
  list(uri, recursive).reject {|path| path.end_with?("/")} # dir
32
49
  end
33
50
 
51
+ # svn list --recursive -> grep only files
52
+ # @param [uri string like] uri target uri
53
+ # @return [Array<String>] file paths
34
54
  def list_files_recursive(uri)
35
55
  list_files(uri, true)
36
56
  end
37
57
 
38
- def update(path, depth = nil)
58
+ # check svn uri exists or not
59
+ # @param [uri string like] uri target uri
60
+ # @return [Boolean] true if exists
61
+ def exist?(uri)
62
+ list(File.dirname(uri)).find{|_file| File.fnmatch(@file, _file.sub(/\/$/, ''))}
63
+ end
64
+
65
+ # check svn uri file exists or not
66
+ # @param [uri string like] uri target uri
67
+ # @return [Boolean] true if exists
68
+ def exist_file?(uri)
69
+ list_files(File.dirname(uri)).find{|_file| File.fnmatch(@file, _file)}
70
+ end
71
+
72
+ # svn update
73
+ # @param [path string like] path target path
74
+ # @param [depth] depth --set-depth
75
+ def update(path = ".", depth = nil)
39
76
  sys "svn update #{depth ? "--set-depth #{depth}" : ""} #{path}"
40
77
  end
41
78
 
79
+ # svn update to deep path recursive
80
+ # @param [path string like] path target path
81
+ # @param [depth] depth --set-depth for only new updated dirs
42
82
  def update_deep(path, depth = nil)
43
83
  root = Pathname.new(Svn.working_copy_root_path(path)).realpath
44
84
  end_path = Pathname.new(path.to_s).expand_path.realpath
@@ -55,18 +95,30 @@ module SvnCommandHelper
55
95
  end
56
96
  end
57
97
 
98
+ # svn info -> yaml parse
99
+ # @param [path string like] path target path
100
+ # @return [Hash<String, String>] svn info contents
58
101
  def info(path = ".")
59
102
  YAML.load(cap("svn info #{path}"))
60
103
  end
61
104
 
105
+ # svn cat
106
+ # @param [path string like] path target path
107
+ # @return [String] file contents
62
108
  def cat(path)
63
109
  cap("svn cat #{path}")
64
110
  end
65
111
 
112
+ # Working Copy Root Path from svn info
113
+ # @param [path string like] path target path
114
+ # @return [String] Working Copy Root Path
66
115
  def working_copy_root_path(path = ".")
67
116
  info(path)["Working Copy Root Path"]
68
117
  end
69
118
 
119
+ # find common part of the given uris
120
+ # @param [Array<uri string like>] uris target uri
121
+ # @return [String] common part of the given uris
70
122
  def base_uri_of(uris)
71
123
  uris.reduce(Pathname.new(uris.first.to_s)) do |base_uri, uri|
72
124
  rel = Pathname.new(uri).relative_path_from(base_uri)
@@ -75,6 +127,9 @@ module SvnCommandHelper
75
127
  end.to_s
76
128
  end
77
129
 
130
+ # copy single transaction
131
+ # @param [SvnFileCopyTransaction] transaction from and to info
132
+ # @param [String] message commit message
78
133
  def copy_single(transaction, message)
79
134
  transactions = transaction.glob_transactions
80
135
  raise "copy_single: #{transaction.from} not exists" if transactions.empty?
@@ -97,6 +152,9 @@ module SvnCommandHelper
97
152
  end
98
153
  end
99
154
 
155
+ # copy multi transactions
156
+ # @param [Array<SvnFileCopyTransaction>] transactions from and to info list
157
+ # @param [String] message commit message
100
158
  def copy_multi(transactions, message)
101
159
  base_uri = base_uri_of(transactions.map(&:from_base) + trnsactions.map(&:to_base))
102
160
  transactions.each do |transaction|
@@ -118,16 +176,22 @@ module SvnCommandHelper
118
176
  end
119
177
  end
120
178
 
179
+ # check transaction from file exists
180
+ # @param [SvnFileCopyTransaction] transaction from and to info
181
+ # @param [Boolean] raise_if_from_not_found raise if from not found
182
+ # @return [Boolean] true if file exists
121
183
  def check_exists(transaction, raise_if_from_not_found = true)
122
184
  unless transaction.from_exist?
123
185
  if !raise_if_from_not_found
124
- return
186
+ false
125
187
  elsif transaction.to_exist?
126
188
  puts "[WARNING] File:#{file}はコピー先のみにあります"
127
- return
189
+ false
128
190
  else
129
191
  raise "[Error] File:#{file}が見つかりません!"
130
192
  end
193
+ else
194
+ true
131
195
  end
132
196
  end
133
197
  end
@@ -135,49 +199,76 @@ module SvnCommandHelper
135
199
  extend ModuleMethods
136
200
  end
137
201
 
202
+ # svn file copy transaction
203
+ # @attr [String] from_base from base uri
204
+ # @attr [String] to_base to base uri
205
+ # @attr [String] file file basename
138
206
  class SvnFileCopyTransaction
139
- attr_reader :from_base, :to_base, :file
207
+ attr_reader :from_base
208
+ attr_reader :to_base
209
+ attr_reader :file
140
210
 
211
+ # @param [String] from_base from base uri
212
+ # @param [String] to_base to base uri
213
+ # @param [String] file file basename
141
214
  def initialize(from_base:, to_base:, file:)
142
215
  @from_base = from_base
143
216
  @to_base = to_base
144
217
  @file = file
145
218
  end
146
219
 
220
+ # from uri
221
+ # @return [String] from uri
147
222
  def from
148
223
  File.join(@from_base, @file)
149
224
  end
150
225
 
226
+ # to uri
227
+ # @return [String] to uri
151
228
  def to
152
229
  File.join(@to_base, @file)
153
230
  end
154
231
 
232
+ # filename glob (like "hoge*") to each single file transaction
233
+ # @return [Array<SvnFileCopyTransaction>] transactions
155
234
  def glob_transactions
156
235
  Svn.list_files(@from_base)
157
236
  .select{|_file| File.fnmatch(@file, _file)}
158
237
  .map{|_file| SvnFileCopyTransaction.new(from_base: @from_base, to_base: @to_base, file: _file)}
159
238
  end
160
239
 
240
+ # from uri exists?
241
+ # @return [Boolean]
161
242
  def from_exist?
162
- Svn.list_files(@from_base).find{|_file| File.fnmatch(@file, _file)}
243
+ Svn.exist_file?(from)
163
244
  end
164
245
 
246
+ # to uri exists?
247
+ # @return [Boolean]
165
248
  def to_exist?
166
- Svn.list_files(@to_base).find{|_file| File.fnmatch(@file, _file)}
249
+ Svn.exist_file?(to)
167
250
  end
168
251
 
252
+ # relative from base path from given base uri
253
+ # @return [String] relative from base path
169
254
  def relative_from_base(path)
170
255
  Pathname.new(@from_base).relative_path_from(Pathname.new(path)).to_s
171
256
  end
172
257
 
258
+ # relative to base path from given base uri
259
+ # @return [String] relative to base path
173
260
  def relative_to_base(path)
174
261
  Pathname.new(@to_base).relative_path_from(Pathname.new(path)).to_s
175
262
  end
176
263
 
264
+ # relative from path from given base uri
265
+ # @return [String] relative from path
177
266
  def relative_from(path)
178
267
  File.join(relative_from_base(path), @file)
179
268
  end
180
269
 
270
+ # relative to path from given base uri
271
+ # @return [String] relative to path
181
272
  def relative_to(path)
182
273
  File.join(relative_from_to(path), @file)
183
274
  end
@@ -1,3 +1,4 @@
1
1
  module SvnCommandHelper
2
- VERSION = "0.1.0"
2
+ # version
3
+ VERSION = "0.2.0"
3
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: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Narazaka