gjp 0.36.0 → 0.37.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/.rubocop.yml +7 -0
- data/.rubocop_todo.yml +241 -0
- data/SPECIAL_CASES.md +2 -5
- data/integration-tests/commons.sh +2 -0
- data/lib/gjp.rb +22 -1
- data/lib/gjp/ant_runner.rb +1 -1
- data/lib/gjp/archiver.rb +11 -11
- data/lib/gjp/commands/ant.rb +21 -0
- data/lib/gjp/commands/base.rb +94 -0
- data/lib/gjp/commands/download-maven-source-jars.rb +28 -0
- data/lib/gjp/commands/dry-run.rb +16 -0
- data/lib/gjp/commands/finish.rb +22 -0
- data/lib/gjp/commands/generate-all.rb +38 -0
- data/lib/gjp/commands/generate-kit-archive.rb +18 -0
- data/lib/gjp/commands/generate-kit-spec.rb +16 -0
- data/lib/gjp/commands/generate-package-archive.rb +19 -0
- data/lib/gjp/commands/generate-package-script.rb +21 -0
- data/lib/gjp/commands/generate-package-spec.rb +22 -0
- data/lib/gjp/commands/get-pom.rb +31 -0
- data/lib/gjp/commands/get-source.rb +35 -0
- data/lib/gjp/commands/init.rb +15 -0
- data/lib/gjp/commands/list-kit-missing-sources.rb +21 -0
- data/lib/gjp/commands/move-jars-to-kit.rb +18 -0
- data/lib/gjp/commands/mvn.rb +22 -0
- data/lib/gjp/git.rb +18 -8
- data/lib/gjp/kit_checker.rb +6 -6
- data/lib/gjp/kit_runner.rb +2 -2
- data/lib/gjp/kit_spec_adapter.rb +1 -1
- data/lib/gjp/main.rb +103 -0
- data/lib/gjp/maven_runner.rb +1 -1
- data/lib/gjp/maven_website.rb +8 -6
- data/lib/gjp/package_spec_adapter.rb +1 -1
- data/lib/gjp/pom.rb +3 -1
- data/lib/gjp/pom_getter.rb +12 -4
- data/lib/gjp/project.rb +4 -2
- data/lib/gjp/script_generator.rb +2 -1
- data/lib/gjp/spec_generator.rb +2 -2
- data/lib/gjp/version.rb +1 -1
- data/lib/gjp/version_matcher.rb +3 -3
- data/lib/template/kit.spec +1 -0
- data/lib/template/package.spec +1 -0
- data/spec/lib/ant_runner_spec.rb +3 -3
- data/spec/lib/archiver_spec.rb +1 -1
- data/spec/lib/git_spec.rb +25 -3
- data/spec/lib/kit_checker_spec.rb +6 -6
- data/spec/lib/kit_runner_spec.rb +1 -1
- data/spec/lib/maven_runner_spec.rb +6 -5
- data/spec/lib/maven_website_spec.rb +2 -2
- data/spec/lib/pom_getter_spec.rb +1 -1
- data/spec/lib/pom_spec.rb +5 -3
- data/spec/lib/project_spec.rb +15 -14
- data/spec/lib/script_generator_spec.rb +4 -2
- data/spec/lib/source_getter_spec.rb +1 -1
- data/spec/lib/spec_generator_spec.rb +2 -2
- data/spec/lib/template_manager_spec.rb +6 -6
- data/spec/lib/version_matcher_spec.rb +1 -1
- data/spec/spec_helper.rb +25 -23
- metadata +22 -3
- data/lib/gjp/cli.rb +0 -384
data/.gitignore
CHANGED
data/.rubocop.yml
ADDED
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,241 @@
|
|
1
|
+
# This configuration was generated by `rubocop --auto-gen-config`
|
2
|
+
# on 2014-05-23 15:40:35 +0200 using RuboCop version 0.22.0.
|
3
|
+
# The point is for the user to remove these configuration records
|
4
|
+
# one by one as the offenses are removed from the code base.
|
5
|
+
# Note that changes in the inspected code, or installation of new
|
6
|
+
# versions of RuboCop, may require this file to be generated again.
|
7
|
+
|
8
|
+
# Offense count: 2
|
9
|
+
ClassVars:
|
10
|
+
Enabled: false
|
11
|
+
|
12
|
+
# Offense count: 2
|
13
|
+
# Cop supports --auto-correct.
|
14
|
+
ColonMethodCall:
|
15
|
+
Enabled: false
|
16
|
+
|
17
|
+
# Offense count: 6
|
18
|
+
# Cop supports --auto-correct.
|
19
|
+
CommentIndentation:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
# Offense count: 1
|
23
|
+
CyclomaticComplexity:
|
24
|
+
Max: 8
|
25
|
+
|
26
|
+
# Offense count: 6
|
27
|
+
# Cop supports --auto-correct.
|
28
|
+
DeprecatedClassMethods:
|
29
|
+
Enabled: false
|
30
|
+
|
31
|
+
# Offense count: 8
|
32
|
+
Documentation:
|
33
|
+
Enabled: false
|
34
|
+
|
35
|
+
# Offense count: 1
|
36
|
+
DoubleNegation:
|
37
|
+
Enabled: false
|
38
|
+
|
39
|
+
# Offense count: 1
|
40
|
+
# Cop supports --auto-correct.
|
41
|
+
EmptyLines:
|
42
|
+
Enabled: false
|
43
|
+
|
44
|
+
# Offense count: 1
|
45
|
+
EmptyLinesAroundAccessModifier:
|
46
|
+
Enabled: false
|
47
|
+
|
48
|
+
# Offense count: 1
|
49
|
+
# Cop supports --auto-correct.
|
50
|
+
EmptyLinesAroundBody:
|
51
|
+
Enabled: false
|
52
|
+
|
53
|
+
# Offense count: 2
|
54
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
55
|
+
Encoding:
|
56
|
+
Enabled: false
|
57
|
+
|
58
|
+
# Offense count: 9
|
59
|
+
# Configuration parameters: AlignWith, SupportedStyles.
|
60
|
+
EndAlignment:
|
61
|
+
Enabled: false
|
62
|
+
|
63
|
+
# Offense count: 2
|
64
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
65
|
+
FormatString:
|
66
|
+
Enabled: false
|
67
|
+
|
68
|
+
# Offense count: 4
|
69
|
+
# Configuration parameters: MinBodyLength.
|
70
|
+
GuardClause:
|
71
|
+
Enabled: false
|
72
|
+
|
73
|
+
# Offense count: 27
|
74
|
+
# Cop supports --auto-correct.
|
75
|
+
# Configuration parameters: SupportedStyles.
|
76
|
+
HashSyntax:
|
77
|
+
EnforcedStyle: hash_rockets
|
78
|
+
|
79
|
+
# Offense count: 7
|
80
|
+
# Configuration parameters: MaxLineLength.
|
81
|
+
IfUnlessModifier:
|
82
|
+
Enabled: false
|
83
|
+
|
84
|
+
# Offense count: 3
|
85
|
+
# Cop supports --auto-correct.
|
86
|
+
IndentationConsistency:
|
87
|
+
Enabled: false
|
88
|
+
|
89
|
+
# Offense count: 15
|
90
|
+
# Cop supports --auto-correct.
|
91
|
+
IndentationWidth:
|
92
|
+
Enabled: false
|
93
|
+
|
94
|
+
# Offense count: 3
|
95
|
+
# Cop supports --auto-correct.
|
96
|
+
LineEndConcatenation:
|
97
|
+
Enabled: false
|
98
|
+
|
99
|
+
# Offense count: 4
|
100
|
+
# Cop supports --auto-correct.
|
101
|
+
MethodCallParentheses:
|
102
|
+
Enabled: false
|
103
|
+
|
104
|
+
# Offense count: 28
|
105
|
+
# Configuration parameters: CountComments.
|
106
|
+
MethodLength:
|
107
|
+
Max: 34
|
108
|
+
|
109
|
+
# Offense count: 6
|
110
|
+
MultilineBlockChain:
|
111
|
+
Enabled: false
|
112
|
+
|
113
|
+
# Offense count: 3
|
114
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
115
|
+
Next:
|
116
|
+
Enabled: false
|
117
|
+
|
118
|
+
# Offense count: 8
|
119
|
+
# Cop supports --auto-correct.
|
120
|
+
NilComparison:
|
121
|
+
Enabled: false
|
122
|
+
|
123
|
+
# Offense count: 12
|
124
|
+
# Cop supports --auto-correct.
|
125
|
+
# Configuration parameters: IncludeSemanticChanges.
|
126
|
+
NonNilCheck:
|
127
|
+
Enabled: false
|
128
|
+
|
129
|
+
# Offense count: 1
|
130
|
+
# Cop supports --auto-correct.
|
131
|
+
PerlBackrefs:
|
132
|
+
Enabled: false
|
133
|
+
|
134
|
+
# Offense count: 3
|
135
|
+
# Configuration parameters: NamePrefixBlacklist.
|
136
|
+
PredicateName:
|
137
|
+
Enabled: false
|
138
|
+
|
139
|
+
# Offense count: 4
|
140
|
+
# Configuration parameters: SupportedStyles.
|
141
|
+
RaiseArgs:
|
142
|
+
EnforcedStyle: compact
|
143
|
+
|
144
|
+
# Offense count: 2
|
145
|
+
# Cop supports --auto-correct.
|
146
|
+
RedundantBegin:
|
147
|
+
Enabled: false
|
148
|
+
|
149
|
+
# Offense count: 8
|
150
|
+
# Cop supports --auto-correct.
|
151
|
+
# Configuration parameters: AllowMultipleReturnValues.
|
152
|
+
RedundantReturn:
|
153
|
+
Enabled: false
|
154
|
+
|
155
|
+
# Offense count: 1
|
156
|
+
# Configuration parameters: MaxSlashes.
|
157
|
+
RegexpLiteral:
|
158
|
+
Enabled: false
|
159
|
+
|
160
|
+
# Offense count: 1
|
161
|
+
ShadowingOuterLocalVariable:
|
162
|
+
Enabled: false
|
163
|
+
|
164
|
+
# Offense count: 5
|
165
|
+
# Cop supports --auto-correct.
|
166
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
167
|
+
SignalException:
|
168
|
+
Enabled: false
|
169
|
+
|
170
|
+
# Offense count: 11
|
171
|
+
# Cop supports --auto-correct.
|
172
|
+
SpaceAfterComma:
|
173
|
+
Enabled: false
|
174
|
+
|
175
|
+
# Offense count: 8
|
176
|
+
# Cop supports --auto-correct.
|
177
|
+
SpaceAroundOperators:
|
178
|
+
Enabled: false
|
179
|
+
|
180
|
+
# Offense count: 2
|
181
|
+
# Cop supports --auto-correct.
|
182
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
183
|
+
SpaceBeforeBlockBraces:
|
184
|
+
Enabled: false
|
185
|
+
|
186
|
+
# Offense count: 13
|
187
|
+
# Cop supports --auto-correct.
|
188
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
|
189
|
+
SpaceInsideBlockBraces:
|
190
|
+
Enabled: false
|
191
|
+
|
192
|
+
# Offense count: 22
|
193
|
+
# Cop supports --auto-correct.
|
194
|
+
# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SupportedStyles.
|
195
|
+
SpaceInsideHashLiteralBraces:
|
196
|
+
Enabled: false
|
197
|
+
|
198
|
+
# Offense count: 4
|
199
|
+
# Cop supports --auto-correct.
|
200
|
+
SpecialGlobalVars:
|
201
|
+
Enabled: false
|
202
|
+
|
203
|
+
# Offense count: 7
|
204
|
+
Tab:
|
205
|
+
Enabled: false
|
206
|
+
|
207
|
+
# Offense count: 8
|
208
|
+
# Cop supports --auto-correct.
|
209
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
210
|
+
TrailingBlankLines:
|
211
|
+
Enabled: false
|
212
|
+
|
213
|
+
# Offense count: 2
|
214
|
+
# Configuration parameters: EnforcedStyleForMultiline, SupportedStyles.
|
215
|
+
TrailingComma:
|
216
|
+
Enabled: false
|
217
|
+
|
218
|
+
# Offense count: 45
|
219
|
+
# Cop supports --auto-correct.
|
220
|
+
TrailingWhitespace:
|
221
|
+
Enabled: false
|
222
|
+
|
223
|
+
# Offense count: 2
|
224
|
+
# Cop supports --auto-correct.
|
225
|
+
# Configuration parameters: ExactNameMatch, AllowPredicates, AllowDSLWriters, Whitelist.
|
226
|
+
TrivialAccessors:
|
227
|
+
Enabled: false
|
228
|
+
|
229
|
+
# Offense count: 8
|
230
|
+
# Cop supports --auto-correct.
|
231
|
+
UnusedBlockArgument:
|
232
|
+
Enabled: false
|
233
|
+
|
234
|
+
# Offense count: 6
|
235
|
+
UselessAssignment:
|
236
|
+
Enabled: false
|
237
|
+
|
238
|
+
# Offense count: 6
|
239
|
+
# Cop supports --auto-correct.
|
240
|
+
WordArray:
|
241
|
+
MinSize: 2
|
data/SPECIAL_CASES.md
CHANGED
@@ -68,11 +68,6 @@ Note that the kit package is needed at build time only by OBS, no end user shoul
|
|
68
68
|
## Gotchas
|
69
69
|
|
70
70
|
* `gjp` internally uses `git` to keep track of files, any gjp project is actually also a `git` repo. Feel free to navigate it, you can commit, push and pull as long as the `gjp` tags are preserved. You can also delete commits and tags, effectively rewinding gjp history (just make sure to delete all tags pointing to a certain commit when you discard it);
|
71
|
-
* if your sources come from a Git repo, be sure to remove any `.git`/`.gitignore` files, otherwise `gjp` might get confused;
|
72
|
-
* if OBS complains that jars in your kit or package are compiled for a JDK version higher than 1.5, add the following line after `%install` to squelch the error:
|
73
|
-
|
74
|
-
export NO_BRP_CHECK_BYTECODE_VERSION=true
|
75
|
-
|
76
71
|
* some Maven plugins like the Eclipse Project ones ([Tycho](https://www.eclipse.org/tycho/)) will save data in `/tmp` downloaded from the Internet and will produce errors if this data is not there during offline builds. One way to work around that is to force Java to use a kit subdirectory as `/tmp`. Add the following option to `gjp mvn` during your build:
|
77
72
|
|
78
73
|
-DskipTests=true -Djava.io.tmpdir=<full path to project>/kit/tmp
|
@@ -81,6 +76,8 @@ Use the following option in `mvn` in your build.sh file to make it reproducible:
|
|
81
76
|
|
82
77
|
-DskipTests=true -Djava.io.tmpdir=$PROJECT_PREFIX/kit/tmp
|
83
78
|
|
79
|
+
* Tycho builds may also require NSS, so if you get NSS errors be sure to add `mozilla-nss` or an equivalent package in a BuildRequires: line;
|
80
|
+
|
84
81
|
* if you want to be 100% sure your package builds without network access, you can use scripts in the `utils/` folder to create a special `nonet` user that cannot use the Internet and retry the build from that user.
|
85
82
|
|
86
83
|
## Frequently used sources
|
data/lib/gjp.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# backend
|
1
2
|
require "gjp/version"
|
2
3
|
require "gjp/logger"
|
3
4
|
require "gjp/template_manager"
|
@@ -18,4 +19,24 @@ require "gjp/spec_generator"
|
|
18
19
|
require "gjp/archiver"
|
19
20
|
require "gjp/kit_checker"
|
20
21
|
|
21
|
-
|
22
|
+
# UI
|
23
|
+
require "gjp/commands/base"
|
24
|
+
|
25
|
+
require "gjp/commands/ant"
|
26
|
+
require "gjp/commands/download-maven-source-jars"
|
27
|
+
require "gjp/commands/dry-run"
|
28
|
+
require "gjp/commands/finish"
|
29
|
+
require "gjp/commands/generate-all"
|
30
|
+
require "gjp/commands/generate-kit-archive"
|
31
|
+
require "gjp/commands/generate-kit-spec"
|
32
|
+
require "gjp/commands/generate-package-archive"
|
33
|
+
require "gjp/commands/generate-package-script"
|
34
|
+
require "gjp/commands/generate-package-spec"
|
35
|
+
require "gjp/commands/get-pom"
|
36
|
+
require "gjp/commands/get-source"
|
37
|
+
require "gjp/commands/init"
|
38
|
+
require "gjp/commands/list-kit-missing-sources"
|
39
|
+
require "gjp/commands/move-jars-to-kit"
|
40
|
+
require "gjp/commands/mvn"
|
41
|
+
|
42
|
+
require "gjp/main"
|
data/lib/gjp/ant_runner.rb
CHANGED
@@ -7,7 +7,7 @@ module Gjp
|
|
7
7
|
|
8
8
|
# runs ant in a subprocess
|
9
9
|
def ant(options)
|
10
|
-
run_executable("#{get_ant_commandline(@project.full_path)} #{options.join(
|
10
|
+
run_executable("#{get_ant_commandline(@project.full_path)} #{options.join(" ")}")
|
11
11
|
end
|
12
12
|
|
13
13
|
# returns a command line for running Ant from the specified
|
data/lib/gjp/archiver.rb
CHANGED
@@ -13,17 +13,17 @@ module Gjp
|
|
13
13
|
def archive_kit(full)
|
14
14
|
destination_dir = File.join(@project.full_path, "output", "#{@project.name}-kit")
|
15
15
|
FileUtils.mkdir_p(destination_dir)
|
16
|
-
|
17
|
-
|
16
|
+
file_prefix = "#{@project.name}-kit"
|
17
|
+
file_suffix = ".tar.xz"
|
18
18
|
|
19
19
|
@project.take_snapshot "Kit archival started"
|
20
20
|
|
21
21
|
destination_file = if full
|
22
|
-
remove_stale_incremental(destination_dir,
|
23
|
-
archive_single("kit", File.join(destination_dir,
|
22
|
+
remove_stale_incremental(destination_dir, file_prefix, file_suffix)
|
23
|
+
archive_single("kit", File.join(destination_dir, file_prefix + file_suffix))
|
24
24
|
else
|
25
25
|
log.debug "doing incremental archive"
|
26
|
-
archive_incremental("kit", destination_dir,
|
26
|
+
archive_incremental("kit", destination_dir, file_prefix, file_suffix, :archive_kit)
|
27
27
|
end
|
28
28
|
|
29
29
|
@project.take_snapshot "Kit archive generated", :archive_kit
|
@@ -52,15 +52,15 @@ module Gjp
|
|
52
52
|
|
53
53
|
# archives a directory's changed contents since last time archive_incremental was called
|
54
54
|
# uses snapshots with tag_prefix to keep track of calls to this method
|
55
|
-
# destination files will be
|
56
|
-
def archive_incremental(source_directory, destination_dir,
|
55
|
+
# destination files will be file_prefix_NNNN_file_suffix
|
56
|
+
def archive_incremental(source_directory, destination_dir, file_prefix, file_suffix, tag_prefix)
|
57
57
|
@project.from_directory do
|
58
58
|
latest_tag_count = @project.latest_tag_count(tag_prefix)
|
59
59
|
|
60
60
|
if latest_tag_count == 0
|
61
|
-
archive_single(source_directory, File.join(destination_dir,
|
61
|
+
archive_single(source_directory, File.join(destination_dir, file_prefix + file_suffix))
|
62
62
|
else
|
63
|
-
destination_file = File.join(destination_dir, "#{
|
63
|
+
destination_file = File.join(destination_dir, "#{file_prefix}_#{"%04d" % (latest_tag_count)}#{file_suffix}")
|
64
64
|
tag = @project.latest_tag(tag_prefix)
|
65
65
|
log.debug "creating #{destination_file} with files newer than #{tag}"
|
66
66
|
|
@@ -80,9 +80,9 @@ module Gjp
|
|
80
80
|
end
|
81
81
|
|
82
82
|
# removes any stale incremental files
|
83
|
-
def remove_stale_incremental(destination_dir,
|
83
|
+
def remove_stale_incremental(destination_dir, file_prefix, file_suffix)
|
84
84
|
Dir.entries(destination_dir)
|
85
|
-
.select { |f| f =~ /^#{
|
85
|
+
.select { |f| f =~ /^#{file_prefix}_([0-9]+)#{file_suffix}$/}
|
86
86
|
.each do |f|
|
87
87
|
log.debug "removing stale incremental archive #{f}"
|
88
88
|
File.delete(File.join(destination_dir, f))
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
module Gjp
|
4
|
+
class AntCommand < Gjp::BaseCommand
|
5
|
+
parameter "[ANT OPTIONS] ...", "ant options", :attribute_name => "dummy"
|
6
|
+
|
7
|
+
# override parsing in order to pipe everything to mvn
|
8
|
+
def parse(args)
|
9
|
+
@options = args
|
10
|
+
end
|
11
|
+
|
12
|
+
def execute
|
13
|
+
checking_exceptions do
|
14
|
+
project = Gjp::Project.new(".")
|
15
|
+
ensure_dry_running(true, project) do
|
16
|
+
Gjp::AntRunner.new(project).ant(@options)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require "clamp"
|
3
|
+
require "gjp/logger"
|
4
|
+
|
5
|
+
module Gjp
|
6
|
+
|
7
|
+
# implements common options and utility methods
|
8
|
+
class BaseCommand < Clamp::Command
|
9
|
+
include Logger
|
10
|
+
|
11
|
+
# Options available to all gjp commands
|
12
|
+
option ["-v", "--verbose"], :flag, "verbose output"
|
13
|
+
option ["--very-verbose"], :flag, "very verbose output"
|
14
|
+
option ["--very-very-verbose"], :flag, "very very verbose output"
|
15
|
+
|
16
|
+
# verbosity handlers
|
17
|
+
def very_very_verbose=(flag)
|
18
|
+
configure_log_level(verbose?, very_verbose?, flag)
|
19
|
+
end
|
20
|
+
|
21
|
+
def very_verbose=(flag)
|
22
|
+
configure_log_level(verbose?, flag, very_very_verbose?)
|
23
|
+
end
|
24
|
+
|
25
|
+
def verbose=(flag)
|
26
|
+
configure_log_level(flag, very_verbose?, very_very_verbose?)
|
27
|
+
end
|
28
|
+
|
29
|
+
# maps verbosity options to log level
|
30
|
+
def configure_log_level(v, vv, vvv)
|
31
|
+
if vvv
|
32
|
+
log.level = ::Logger::DEBUG
|
33
|
+
elsif vv
|
34
|
+
log.level = ::Logger::INFO
|
35
|
+
elsif v
|
36
|
+
log.level = ::Logger::WARN
|
37
|
+
else
|
38
|
+
log.level = ::Logger::ERROR
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# prints an error message and exits unless there is a dry-run in progress
|
43
|
+
def ensure_dry_running(state, project)
|
44
|
+
if project.is_dry_running == state
|
45
|
+
yield
|
46
|
+
else
|
47
|
+
if state == true
|
48
|
+
puts "Please start a dry-run first, use \"gjp dry-run\""
|
49
|
+
else
|
50
|
+
puts "Please finish or abort this dry-run first, use \"gjp finish\" or \"gjp finish --abort\""
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# outputs output of a file generation
|
56
|
+
def print_generation_result(project, result_path, conflict_count = 0)
|
57
|
+
puts "#{format_path(result_path, project)} generated"
|
58
|
+
if conflict_count > 0
|
59
|
+
puts "Warning: #{conflict_count} unresolved conflicts"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# generates a version of path relative to the current directory
|
64
|
+
def format_path(path, project)
|
65
|
+
full_path = if Pathname.new(path).relative?
|
66
|
+
File.join(project.full_path, path)
|
67
|
+
else
|
68
|
+
path
|
69
|
+
end
|
70
|
+
Pathname.new(full_path).relative_path_from(Pathname.new(Dir.pwd))
|
71
|
+
end
|
72
|
+
|
73
|
+
# handles most fatal exceptions
|
74
|
+
def checking_exceptions
|
75
|
+
begin
|
76
|
+
yield
|
77
|
+
rescue Errno::EACCES => e
|
78
|
+
$stderr.puts e
|
79
|
+
rescue Errno::ENOENT => e
|
80
|
+
$stderr.puts e
|
81
|
+
rescue Errno::EEXIST => e
|
82
|
+
$stderr.puts e
|
83
|
+
rescue NoProjectDirectoryError => e
|
84
|
+
$stderr.puts "#{e.directory} is not a gjp project directory, see gjp init"
|
85
|
+
rescue NoPackageDirectoryError => e
|
86
|
+
$stderr.puts "#{e.directory} is not a gjp package directory, see README"
|
87
|
+
rescue GitAlreadyInitedError => e
|
88
|
+
$stderr.puts "This directory is already a gjp project"
|
89
|
+
rescue ExecutableNotFoundError => e
|
90
|
+
$stderr.puts "Executable #{e.executable} not found in kit/ or any of its subdirectories"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|