fastlane-plugin-patch 0.3.0 → 0.4.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 +4 -4
- data/README.md +7 -2
- data/lib/fastlane/plugin/patch/helper/patch_helper.rb +42 -7
- data/lib/fastlane/plugin/patch/version.rb +1 -1
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca22332d6aadf5ba6d6ef8caae93aa206e1cceb0
|
4
|
+
data.tar.gz: 0e7329cfd451552872dc685fef793709c837a246
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52cbcad0a3515ce3b37c484a1bbc6999bbf97639832d06f0f1e41add939bd40a15831e554b12319b5a76487c26860a2929b322c427fe2caed258d1bf72112cfd
|
7
|
+
data.tar.gz: 9d5170068631d7d53cccfcc3f9f3a800d1eaeb01c7b59d2bf22f2d4ae471573600087611fb2f159e0f7fa28df6ad623263cb6c46c70f355d9f994581d9b839b0
|
data/README.md
CHANGED
@@ -62,17 +62,22 @@ patch(
|
|
62
62
|
|
63
63
|
#### Capture groups
|
64
64
|
|
65
|
-
Capture groups may be used in
|
65
|
+
Capture groups may be used within the text argument in any mode. Note that
|
66
|
+
this works best without interpolation (single quotes or %q). If you use double
|
67
|
+
quotes, the backslash must be escaped, e.g. `text: "\\1\"MyOtherpod\""`.
|
66
68
|
|
67
69
|
```Ruby
|
68
70
|
patch(
|
69
71
|
files: "MyPod.podspec",
|
70
|
-
regexp: /(s
|
72
|
+
regexp: /(s\.name\s*=\s*)"MyPod"/,
|
71
73
|
text: '\1"MyOtherPod"',
|
72
74
|
mode: :replace
|
73
75
|
)
|
74
76
|
```
|
75
77
|
|
78
|
+
Patches in `:append` mode using capture groups in the text argument may be
|
79
|
+
reverted. This is not currently supported in `:prepend` mode.
|
80
|
+
|
76
81
|
#### Revert patches
|
77
82
|
|
78
83
|
Revert patches by passing the optional `:revert` parameter:
|
@@ -1,3 +1,32 @@
|
|
1
|
+
class String
|
2
|
+
# Replace capture group references in self with appropriate
|
3
|
+
# data from matches. Modifies the receiver. The receiver
|
4
|
+
# need not match the matches.regexp.
|
5
|
+
#
|
6
|
+
# :matches: A MatchData object returned by Regexp#match
|
7
|
+
def apply_matches!(matches)
|
8
|
+
search_position = 0
|
9
|
+
while (m = /\\(\d+)/.match(self, search_position))
|
10
|
+
capture_group = m[1].to_i
|
11
|
+
search_position = index m[0]
|
12
|
+
gsub! m[0], matches[capture_group]
|
13
|
+
search_position += matches[capture_group].length
|
14
|
+
end
|
15
|
+
nil
|
16
|
+
end
|
17
|
+
|
18
|
+
# Return a copy of the receiver with capture group references
|
19
|
+
# in self replaced by appropriate data from matches. The receiver
|
20
|
+
# need not match the matches.regexp.
|
21
|
+
#
|
22
|
+
# :matches: A MatchData object returned by Regexp#match
|
23
|
+
def apply_matches(matches)
|
24
|
+
string = clone
|
25
|
+
string.apply_matches! matches
|
26
|
+
string
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
1
30
|
module Fastlane
|
2
31
|
module Helper
|
3
32
|
class PatchHelper
|
@@ -17,9 +46,9 @@ module Fastlane
|
|
17
46
|
patched_pattern =
|
18
47
|
case mode
|
19
48
|
when :append
|
20
|
-
"#{matches[0]}#{text}"
|
49
|
+
"#{matches[0]}#{text.apply_matches matches}"
|
21
50
|
when :prepend
|
22
|
-
"#{text}#{matches[0]}"
|
51
|
+
"#{text.apply_matches matches}#{matches[0]}"
|
23
52
|
when :replace
|
24
53
|
matches[0].sub regexp, text
|
25
54
|
else
|
@@ -27,8 +56,8 @@ module Fastlane
|
|
27
56
|
end
|
28
57
|
|
29
58
|
contents = "#{matches.pre_match}#{patched_pattern}#{matches.post_match}"
|
30
|
-
search_position = matches.pre_match.length + patched_pattern.length
|
31
59
|
break unless global
|
60
|
+
search_position = matches.pre_match.length + patched_pattern.length
|
32
61
|
end
|
33
62
|
contents
|
34
63
|
end
|
@@ -51,18 +80,24 @@ module Fastlane
|
|
51
80
|
patched_regexp =
|
52
81
|
case mode
|
53
82
|
when :append
|
54
|
-
/#{regexp_string}#{
|
83
|
+
/#{regexp_string}#{text}/m
|
55
84
|
when :prepend
|
56
|
-
|
85
|
+
# TODO: Capture groups aren't currently revertible in :prepend mode.
|
86
|
+
# This patched regexp can turn into something like /\1.*(\d+)/.
|
87
|
+
# The capture group reference cannot occur in the regexp before definition
|
88
|
+
# of the group. This would have to be transformed to something like
|
89
|
+
# /(\d+).*\1/. Patch reversion is probably not a major use case right
|
90
|
+
# now, so ignore for the moment.
|
91
|
+
/#{text}#{regexp_string}/m
|
57
92
|
else
|
58
93
|
raise ArgumentError, "Invalid mode argument. Specify :append or :prepend."
|
59
94
|
end
|
60
95
|
|
61
96
|
while (matches = patched_regexp.match(contents, search_position))
|
62
|
-
reverted_text = matches[0].sub(text, '')
|
97
|
+
reverted_text = matches[0].sub(text.apply_matches(matches), '')
|
63
98
|
contents = "#{matches.pre_match}#{reverted_text}#{matches.post_match}"
|
64
|
-
search_position = matches.pre_match.length + reverted_text.length
|
65
99
|
break unless global
|
100
|
+
search_position = matches.pre_match.length + reverted_text.length
|
66
101
|
end
|
67
102
|
|
68
103
|
contents
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-patch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jimmy Dee
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -161,4 +161,3 @@ signing_key:
|
|
161
161
|
specification_version: 4
|
162
162
|
summary: Apply and revert pattern-based patches to any text file.
|
163
163
|
test_files: []
|
164
|
-
has_rdoc:
|