raykit 0.0.524 → 0.0.525
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/LICENSE +21 -21
- data/README.md +25 -25
- data/bin/raykit +6 -6
- data/lib/raykit/auto_setup.rb +69 -69
- data/lib/raykit/command.rb +374 -374
- data/lib/raykit/conan/buildinfo.rb +69 -69
- data/lib/raykit/conanpackage.rb +49 -49
- data/lib/raykit/configuration.rb +53 -53
- data/lib/raykit/console.rb +310 -310
- data/lib/raykit/default_content.rb +227 -227
- data/lib/raykit/dir.rb +96 -96
- data/lib/raykit/dotnet.rb +174 -174
- data/lib/raykit/environment.rb +115 -115
- data/lib/raykit/filesystem.rb +34 -34
- data/lib/raykit/git/commit.rb +16 -16
- data/lib/raykit/git/directory.rb +216 -216
- data/lib/raykit/git/files.rb +46 -46
- data/lib/raykit/git/repositories.rb +89 -89
- data/lib/raykit/git/repository.rb +362 -362
- data/lib/raykit/installer.rb +17 -17
- data/lib/raykit/log.rb +80 -80
- data/lib/raykit/logevent.rb +29 -29
- data/lib/raykit/logger.rb +100 -100
- data/lib/raykit/logging.rb +57 -57
- data/lib/raykit/markdown.rb +21 -21
- data/lib/raykit/msbuild.rb +54 -54
- data/lib/raykit/nugetpackage.rb +54 -54
- data/lib/raykit/nunit.rb +13 -13
- data/lib/raykit/project.rb +343 -343
- data/lib/raykit/rake.rb +39 -39
- data/lib/raykit/runner.rb +42 -42
- data/lib/raykit/secrets.rb +38 -38
- data/lib/raykit/sourceImport.rb +76 -76
- data/lib/raykit/sourceImports.rb +43 -43
- data/lib/raykit/string.rb +18 -18
- data/lib/raykit/symbols.rb +115 -115
- data/lib/raykit/tasks.rb +91 -91
- data/lib/raykit/text.rb +32 -32
- data/lib/raykit/timer.rb +31 -31
- data/lib/raykit/version.rb +95 -95
- data/lib/raykit/vstest.rb +24 -24
- data/lib/raykit/wix.rb +61 -61
- data/lib/raykit/wt.rb +28 -28
- data/lib/raykit/zip.rb +73 -73
- data/lib/raykit.rb +129 -129
- metadata +2 -2
data/lib/raykit/console.rb
CHANGED
@@ -1,310 +1,310 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "optparse"
|
4
|
-
require "slop"
|
5
|
-
require_relative("./logging")
|
6
|
-
|
7
|
-
module Raykit
|
8
|
-
# The implementation for the raykit console application
|
9
|
-
class Console
|
10
|
-
attr_accessor :opts
|
11
|
-
|
12
|
-
def self.get_opts
|
13
|
-
Slop.parse do |o|
|
14
|
-
o.string "-t", "--task", "rake task", default: "default"
|
15
|
-
o.bool "-v", "--verbose", "print detailed output", default: false
|
16
|
-
o.bool "-q", "--quiet", "minimal output", default: false
|
17
|
-
o.bool "-s", "--stop", "stop on error", default: true
|
18
|
-
end
|
19
|
-
end # def self.get_opts
|
20
|
-
|
21
|
-
def initialize(opts = nil)
|
22
|
-
if opts.nil?
|
23
|
-
@opts = Console.get_opts
|
24
|
-
else
|
25
|
-
@opts = opts
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def run
|
30
|
-
verb = "usage"
|
31
|
-
verb = @opts.arguments[0] if @opts.arguments.length.positive?
|
32
|
-
case verb
|
33
|
-
when "usage"
|
34
|
-
usage
|
35
|
-
when "add"
|
36
|
-
add
|
37
|
-
when "remove"
|
38
|
-
remove
|
39
|
-
when "list"
|
40
|
-
list
|
41
|
-
when "show"
|
42
|
-
show
|
43
|
-
when "work"
|
44
|
-
work
|
45
|
-
when "import"
|
46
|
-
import
|
47
|
-
when "clean"
|
48
|
-
clean
|
49
|
-
when "clobber"
|
50
|
-
clobber
|
51
|
-
when "sync_version"
|
52
|
-
sync_version
|
53
|
-
when "copy"
|
54
|
-
copy
|
55
|
-
when "pull"
|
56
|
-
pull
|
57
|
-
else
|
58
|
-
puts "unrecognized command #{verb}"
|
59
|
-
1
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def verb_descriptions
|
64
|
-
{ "add" => "add a git url",
|
65
|
-
"remove" => "remove one or more git urls",
|
66
|
-
"list" => "list summaries of repositories",
|
67
|
-
"show" => "show git urls matching a specific pattern",
|
68
|
-
"work" => "clone and rake a git repository",
|
69
|
-
"import" => "import git urls matching a specific pattern",
|
70
|
-
"clean" => "clean one or more working directories",
|
71
|
-
"clobber" => "clobber one or more working directories",
|
72
|
-
"pull" => "preform git pull on one or more working directories",
|
73
|
-
"sync_version" => "synchronize the version number between two files",
|
74
|
-
"copy" => "copy a file" }
|
75
|
-
end
|
76
|
-
|
77
|
-
def verb_usage
|
78
|
-
{ "add" => "add GIT_URL",
|
79
|
-
"remove" => "remove URL_PATTERN",
|
80
|
-
"show" => "show URL_PATTERN",
|
81
|
-
"work" => "work URL_PATTERN [--task RAKE_TASK]",
|
82
|
-
"import" => "import URL_PATTERN",
|
83
|
-
"clean" => "clean URL_PATTERN",
|
84
|
-
"clobber" => "clobber URL_PATTERN",
|
85
|
-
"pull" => "pull URL_PATTERN",
|
86
|
-
"sync_version" => "sync_version SOURCE_FILENAME DESTINATION_FILENAME",
|
87
|
-
"copy" => "copy SOURCE DESTINATION" }
|
88
|
-
end
|
89
|
-
|
90
|
-
def usage
|
91
|
-
puts "Usage: raykit VERB [GIT_URL|PATTERN] [OPTIONS]"
|
92
|
-
verb_descriptions.each do |k, v|
|
93
|
-
puts "#{k.ljust(15, " ")} - #{v}"
|
94
|
-
end
|
95
|
-
# puts @opts
|
96
|
-
# puts "verbs: " + verbs.to_s
|
97
|
-
0
|
98
|
-
end
|
99
|
-
|
100
|
-
def add
|
101
|
-
if @opts.arguments.length < 2
|
102
|
-
puts "add requires a url"
|
103
|
-
return 1
|
104
|
-
end
|
105
|
-
url = @opts.arguments[1]
|
106
|
-
if REPOSITORIES.include?(url)
|
107
|
-
puts "url #{url} already exists."
|
108
|
-
else
|
109
|
-
REPOSITORIES << url
|
110
|
-
REPOSITORIES.save(REPOSITORIES.filename)
|
111
|
-
puts "url #{url} added."
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
def remove
|
116
|
-
if @opts.arguments.length < 2
|
117
|
-
puts "remove requires a url or pattern"
|
118
|
-
return 1
|
119
|
-
end
|
120
|
-
pattern = ""
|
121
|
-
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
122
|
-
remove_urls = REPOSITORIES.matches(pattern)
|
123
|
-
if remove_urls.length.zero?
|
124
|
-
puts "no matching urls found."
|
125
|
-
else
|
126
|
-
remove_urls.each do |url|
|
127
|
-
REPOSITORIES.delete(url)
|
128
|
-
puts "url #{url} removed."
|
129
|
-
end
|
130
|
-
REPOSITORIES.save(REPOSITORIES.filename)
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
def list
|
135
|
-
pattern = ""
|
136
|
-
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
137
|
-
REPOSITORIES.matches(pattern).each do |url|
|
138
|
-
repo = Raykit::Git::Repository.new(url)
|
139
|
-
puts repo.to_s
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
def show
|
144
|
-
pattern = ""
|
145
|
-
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
146
|
-
REPOSITORIES.matches(pattern).each do |url|
|
147
|
-
puts url
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
|
-
def work
|
152
|
-
pattern = ""
|
153
|
-
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
154
|
-
work_repositories = REPOSITORIES.matches(pattern)
|
155
|
-
errors = []
|
156
|
-
|
157
|
-
work_repositories.each do |url|
|
158
|
-
default_command = "rake default"
|
159
|
-
repo = Raykit::Git::Repository.new(url)
|
160
|
-
cmd = repo.work default_command
|
161
|
-
end
|
162
|
-
0
|
163
|
-
end
|
164
|
-
|
165
|
-
def work_url(url)
|
166
|
-
return 0 if url == "https://gitlab.com/gems-rb/raykit.git"
|
167
|
-
|
168
|
-
puts Rainbow(url).yellow.bright if @opts.verbose?
|
169
|
-
repo = Raykit::Git::Repository.new(url)
|
170
|
-
work = Raykit::Git::Directory.new(repo.get_dev_dir("work"))
|
171
|
-
unless Dir.exist?(work.directory)
|
172
|
-
clone = Command.new("git clone #{url} #{work.directory} --recursive")
|
173
|
-
puts clone.summary unless @opts.quiet?
|
174
|
-
if clone.exitstatus != 0
|
175
|
-
clone.details
|
176
|
-
return clone.exitstatus
|
177
|
-
end
|
178
|
-
end
|
179
|
-
if Dir.exist?(work.directory)
|
180
|
-
Dir.chdir(work.directory) do
|
181
|
-
if File.exist?("rakefile.rb")
|
182
|
-
rake = Raykit::Command.new("rake #{@opts[:task]}")
|
183
|
-
rake.summary(true) if !@opts.quiet? || rake.exitstatus != 0
|
184
|
-
if rake.exitstatus != 0
|
185
|
-
rake.details
|
186
|
-
rake.summary true
|
187
|
-
return rake.exitstatus
|
188
|
-
end
|
189
|
-
else
|
190
|
-
puts("rakefile.rb not found in #{work.directory}") if @opts.verbose?
|
191
|
-
return 0
|
192
|
-
end
|
193
|
-
end
|
194
|
-
end
|
195
|
-
0
|
196
|
-
end
|
197
|
-
|
198
|
-
def pull
|
199
|
-
pattern = ""
|
200
|
-
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
201
|
-
REPOSITORIES.matches(pattern).each do |url|
|
202
|
-
repo = Raykit::Git::Repository.new(url)
|
203
|
-
work = Raykit::Git::Directory.new(repo.get_dev_dir("work"))
|
204
|
-
if Dir.exist?(work.directory) && !work.directory == ".git"
|
205
|
-
Dir.chdir(work.directory) do
|
206
|
-
diff = `git diff`.strip
|
207
|
-
status = `git status`.strip
|
208
|
-
if diff.length.zero? && status.include?("nothing to commit")
|
209
|
-
cmd = Command.new("git pull")
|
210
|
-
cmd.summary if @opts.verbose?
|
211
|
-
|
212
|
-
if cmd.exitstatus != 0
|
213
|
-
cmd.details
|
214
|
-
abort Rainbow(cmd.summary).blue.bright if @opts.quit?
|
215
|
-
end
|
216
|
-
end
|
217
|
-
end
|
218
|
-
end
|
219
|
-
rescue StandardError => e
|
220
|
-
issue = "error occurred for pull of #{url} #{e}"
|
221
|
-
if @opts.quit?
|
222
|
-
abort Rainbow(issue).blue.bright
|
223
|
-
else
|
224
|
-
puts Rainbow(issue).blue.bright
|
225
|
-
end
|
226
|
-
end
|
227
|
-
end
|
228
|
-
|
229
|
-
def import
|
230
|
-
pattern = ""
|
231
|
-
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
232
|
-
puts "scanning..."
|
233
|
-
count = REPOSITORIES.length
|
234
|
-
REPOSITORIES.import(pattern)
|
235
|
-
new_count = REPOSITORIES.length - count
|
236
|
-
puts "imported #{new_count} git repositories"
|
237
|
-
end
|
238
|
-
|
239
|
-
def clean
|
240
|
-
pattern = ""
|
241
|
-
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
242
|
-
REPOSITORIES.matches(pattern).each do |url|
|
243
|
-
repo = Raykit::Git::Repository.new(url)
|
244
|
-
work = Raykit::Git::Directory.new(repo.get_dev_dir("work"))
|
245
|
-
if Dir.exist?(work.directory)
|
246
|
-
puts "cleaning #{work.directory}"
|
247
|
-
Dir.chdir(work.directory) do
|
248
|
-
#puts "git clean -xdf"
|
249
|
-
#puts `git clean -xdf`
|
250
|
-
end
|
251
|
-
else
|
252
|
-
puts "directory #{work.directory} does not exist"
|
253
|
-
end
|
254
|
-
end # REPOSITORIES.matches(pattern).each do |url|
|
255
|
-
Dir::remove_empty_directories(Raykit::Environment.get_dev_dir("work"))
|
256
|
-
end
|
257
|
-
|
258
|
-
def clobber
|
259
|
-
pattern = ""
|
260
|
-
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
261
|
-
REPOSITORIES.matches(pattern).each do |url|
|
262
|
-
repo = Raykit::Git::Repository.new(url)
|
263
|
-
work = Raykit::Git::Directory.new(repo.get_dev_dir("work"))
|
264
|
-
next unless Dir.exist?(work.directory)
|
265
|
-
|
266
|
-
puts "removing #{work.directory}"
|
267
|
-
begin
|
268
|
-
FileUtils.rm_rf(work.directory, secure: true)
|
269
|
-
rescue StandardError
|
270
|
-
puts "error removing #{work.directory}"
|
271
|
-
end
|
272
|
-
end
|
273
|
-
Dir::remove_empty_directories(Raykit::Environment.get_dev_dir("work"))
|
274
|
-
end
|
275
|
-
|
276
|
-
def copy
|
277
|
-
if @opts.arguments.length < 3
|
278
|
-
puts "source and destination arguments are required for copy"
|
279
|
-
return 1
|
280
|
-
end
|
281
|
-
source = @opts.arguments[1]
|
282
|
-
dest = @opts.arguments[2]
|
283
|
-
FileUtils.cp(source, dest)
|
284
|
-
puts "copied #{source} to #{dest}"
|
285
|
-
end
|
286
|
-
|
287
|
-
def rake(hash)
|
288
|
-
REPOSITORIES.each do |remote|
|
289
|
-
next unless remote.include?(hash[:pattern])
|
290
|
-
|
291
|
-
begin
|
292
|
-
puts "remote: #{remote}"
|
293
|
-
cmd = Raykit::Rake.run(remote, "master")
|
294
|
-
elapsed_str = Timer.get_elapsed_str(cmd.elapsed)
|
295
|
-
if cmd.exitstatus.zero?
|
296
|
-
puts "#{elapsed_str} #{Rainbow(SECRETS.hide(cmd.command)).yellow.bright} (#{cmd.directory})"
|
297
|
-
else
|
298
|
-
puts "\r\n#{cmd.command}\r\n"
|
299
|
-
puts "\r\n#{cmd.output}\r\n"
|
300
|
-
puts "\r\n#{cmd.error}\r\n"
|
301
|
-
puts ""
|
302
|
-
puts "#{Rainbow(elapsed_str).red.bright} #{Rainbow(cmd.command).white}"
|
303
|
-
end
|
304
|
-
rescue StandardError
|
305
|
-
puts "rescued..."
|
306
|
-
end
|
307
|
-
end
|
308
|
-
end
|
309
|
-
end
|
310
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "optparse"
|
4
|
+
require "slop"
|
5
|
+
require_relative("./logging")
|
6
|
+
|
7
|
+
module Raykit
|
8
|
+
# The implementation for the raykit console application
|
9
|
+
class Console
|
10
|
+
attr_accessor :opts
|
11
|
+
|
12
|
+
def self.get_opts
|
13
|
+
Slop.parse do |o|
|
14
|
+
o.string "-t", "--task", "rake task", default: "default"
|
15
|
+
o.bool "-v", "--verbose", "print detailed output", default: false
|
16
|
+
o.bool "-q", "--quiet", "minimal output", default: false
|
17
|
+
o.bool "-s", "--stop", "stop on error", default: true
|
18
|
+
end
|
19
|
+
end # def self.get_opts
|
20
|
+
|
21
|
+
def initialize(opts = nil)
|
22
|
+
if opts.nil?
|
23
|
+
@opts = Console.get_opts
|
24
|
+
else
|
25
|
+
@opts = opts
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def run
|
30
|
+
verb = "usage"
|
31
|
+
verb = @opts.arguments[0] if @opts.arguments.length.positive?
|
32
|
+
case verb
|
33
|
+
when "usage"
|
34
|
+
usage
|
35
|
+
when "add"
|
36
|
+
add
|
37
|
+
when "remove"
|
38
|
+
remove
|
39
|
+
when "list"
|
40
|
+
list
|
41
|
+
when "show"
|
42
|
+
show
|
43
|
+
when "work"
|
44
|
+
work
|
45
|
+
when "import"
|
46
|
+
import
|
47
|
+
when "clean"
|
48
|
+
clean
|
49
|
+
when "clobber"
|
50
|
+
clobber
|
51
|
+
when "sync_version"
|
52
|
+
sync_version
|
53
|
+
when "copy"
|
54
|
+
copy
|
55
|
+
when "pull"
|
56
|
+
pull
|
57
|
+
else
|
58
|
+
puts "unrecognized command #{verb}"
|
59
|
+
1
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def verb_descriptions
|
64
|
+
{ "add" => "add a git url",
|
65
|
+
"remove" => "remove one or more git urls",
|
66
|
+
"list" => "list summaries of repositories",
|
67
|
+
"show" => "show git urls matching a specific pattern",
|
68
|
+
"work" => "clone and rake a git repository",
|
69
|
+
"import" => "import git urls matching a specific pattern",
|
70
|
+
"clean" => "clean one or more working directories",
|
71
|
+
"clobber" => "clobber one or more working directories",
|
72
|
+
"pull" => "preform git pull on one or more working directories",
|
73
|
+
"sync_version" => "synchronize the version number between two files",
|
74
|
+
"copy" => "copy a file" }
|
75
|
+
end
|
76
|
+
|
77
|
+
def verb_usage
|
78
|
+
{ "add" => "add GIT_URL",
|
79
|
+
"remove" => "remove URL_PATTERN",
|
80
|
+
"show" => "show URL_PATTERN",
|
81
|
+
"work" => "work URL_PATTERN [--task RAKE_TASK]",
|
82
|
+
"import" => "import URL_PATTERN",
|
83
|
+
"clean" => "clean URL_PATTERN",
|
84
|
+
"clobber" => "clobber URL_PATTERN",
|
85
|
+
"pull" => "pull URL_PATTERN",
|
86
|
+
"sync_version" => "sync_version SOURCE_FILENAME DESTINATION_FILENAME",
|
87
|
+
"copy" => "copy SOURCE DESTINATION" }
|
88
|
+
end
|
89
|
+
|
90
|
+
def usage
|
91
|
+
puts "Usage: raykit VERB [GIT_URL|PATTERN] [OPTIONS]"
|
92
|
+
verb_descriptions.each do |k, v|
|
93
|
+
puts "#{k.ljust(15, " ")} - #{v}"
|
94
|
+
end
|
95
|
+
# puts @opts
|
96
|
+
# puts "verbs: " + verbs.to_s
|
97
|
+
0
|
98
|
+
end
|
99
|
+
|
100
|
+
def add
|
101
|
+
if @opts.arguments.length < 2
|
102
|
+
puts "add requires a url"
|
103
|
+
return 1
|
104
|
+
end
|
105
|
+
url = @opts.arguments[1]
|
106
|
+
if REPOSITORIES.include?(url)
|
107
|
+
puts "url #{url} already exists."
|
108
|
+
else
|
109
|
+
REPOSITORIES << url
|
110
|
+
REPOSITORIES.save(REPOSITORIES.filename)
|
111
|
+
puts "url #{url} added."
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
def remove
|
116
|
+
if @opts.arguments.length < 2
|
117
|
+
puts "remove requires a url or pattern"
|
118
|
+
return 1
|
119
|
+
end
|
120
|
+
pattern = ""
|
121
|
+
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
122
|
+
remove_urls = REPOSITORIES.matches(pattern)
|
123
|
+
if remove_urls.length.zero?
|
124
|
+
puts "no matching urls found."
|
125
|
+
else
|
126
|
+
remove_urls.each do |url|
|
127
|
+
REPOSITORIES.delete(url)
|
128
|
+
puts "url #{url} removed."
|
129
|
+
end
|
130
|
+
REPOSITORIES.save(REPOSITORIES.filename)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def list
|
135
|
+
pattern = ""
|
136
|
+
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
137
|
+
REPOSITORIES.matches(pattern).each do |url|
|
138
|
+
repo = Raykit::Git::Repository.new(url)
|
139
|
+
puts repo.to_s
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def show
|
144
|
+
pattern = ""
|
145
|
+
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
146
|
+
REPOSITORIES.matches(pattern).each do |url|
|
147
|
+
puts url
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
def work
|
152
|
+
pattern = ""
|
153
|
+
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
154
|
+
work_repositories = REPOSITORIES.matches(pattern)
|
155
|
+
errors = []
|
156
|
+
|
157
|
+
work_repositories.each do |url|
|
158
|
+
default_command = "rake default"
|
159
|
+
repo = Raykit::Git::Repository.new(url)
|
160
|
+
cmd = repo.work default_command
|
161
|
+
end
|
162
|
+
0
|
163
|
+
end
|
164
|
+
|
165
|
+
def work_url(url)
|
166
|
+
return 0 if url == "https://gitlab.com/gems-rb/raykit.git"
|
167
|
+
|
168
|
+
puts Rainbow(url).yellow.bright if @opts.verbose?
|
169
|
+
repo = Raykit::Git::Repository.new(url)
|
170
|
+
work = Raykit::Git::Directory.new(repo.get_dev_dir("work"))
|
171
|
+
unless Dir.exist?(work.directory)
|
172
|
+
clone = Command.new("git clone #{url} #{work.directory} --recursive")
|
173
|
+
puts clone.summary unless @opts.quiet?
|
174
|
+
if clone.exitstatus != 0
|
175
|
+
clone.details
|
176
|
+
return clone.exitstatus
|
177
|
+
end
|
178
|
+
end
|
179
|
+
if Dir.exist?(work.directory)
|
180
|
+
Dir.chdir(work.directory) do
|
181
|
+
if File.exist?("rakefile.rb")
|
182
|
+
rake = Raykit::Command.new("rake #{@opts[:task]}")
|
183
|
+
rake.summary(true) if !@opts.quiet? || rake.exitstatus != 0
|
184
|
+
if rake.exitstatus != 0
|
185
|
+
rake.details
|
186
|
+
rake.summary true
|
187
|
+
return rake.exitstatus
|
188
|
+
end
|
189
|
+
else
|
190
|
+
puts("rakefile.rb not found in #{work.directory}") if @opts.verbose?
|
191
|
+
return 0
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
195
|
+
0
|
196
|
+
end
|
197
|
+
|
198
|
+
def pull
|
199
|
+
pattern = ""
|
200
|
+
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
201
|
+
REPOSITORIES.matches(pattern).each do |url|
|
202
|
+
repo = Raykit::Git::Repository.new(url)
|
203
|
+
work = Raykit::Git::Directory.new(repo.get_dev_dir("work"))
|
204
|
+
if Dir.exist?(work.directory) && !work.directory == ".git"
|
205
|
+
Dir.chdir(work.directory) do
|
206
|
+
diff = `git diff`.strip
|
207
|
+
status = `git status`.strip
|
208
|
+
if diff.length.zero? && status.include?("nothing to commit")
|
209
|
+
cmd = Command.new("git pull")
|
210
|
+
cmd.summary if @opts.verbose?
|
211
|
+
|
212
|
+
if cmd.exitstatus != 0
|
213
|
+
cmd.details
|
214
|
+
abort Rainbow(cmd.summary).blue.bright if @opts.quit?
|
215
|
+
end
|
216
|
+
end
|
217
|
+
end
|
218
|
+
end
|
219
|
+
rescue StandardError => e
|
220
|
+
issue = "error occurred for pull of #{url} #{e}"
|
221
|
+
if @opts.quit?
|
222
|
+
abort Rainbow(issue).blue.bright
|
223
|
+
else
|
224
|
+
puts Rainbow(issue).blue.bright
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
def import
|
230
|
+
pattern = ""
|
231
|
+
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
232
|
+
puts "scanning..."
|
233
|
+
count = REPOSITORIES.length
|
234
|
+
REPOSITORIES.import(pattern)
|
235
|
+
new_count = REPOSITORIES.length - count
|
236
|
+
puts "imported #{new_count} git repositories"
|
237
|
+
end
|
238
|
+
|
239
|
+
def clean
|
240
|
+
pattern = ""
|
241
|
+
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
242
|
+
REPOSITORIES.matches(pattern).each do |url|
|
243
|
+
repo = Raykit::Git::Repository.new(url)
|
244
|
+
work = Raykit::Git::Directory.new(repo.get_dev_dir("work"))
|
245
|
+
if Dir.exist?(work.directory)
|
246
|
+
puts "cleaning #{work.directory}"
|
247
|
+
Dir.chdir(work.directory) do
|
248
|
+
#puts "git clean -xdf"
|
249
|
+
#puts `git clean -xdf`
|
250
|
+
end
|
251
|
+
else
|
252
|
+
puts "directory #{work.directory} does not exist"
|
253
|
+
end
|
254
|
+
end # REPOSITORIES.matches(pattern).each do |url|
|
255
|
+
Dir::remove_empty_directories(Raykit::Environment.get_dev_dir("work"))
|
256
|
+
end
|
257
|
+
|
258
|
+
def clobber
|
259
|
+
pattern = ""
|
260
|
+
pattern = @opts.arguments[1] if @opts.arguments.length > 1
|
261
|
+
REPOSITORIES.matches(pattern).each do |url|
|
262
|
+
repo = Raykit::Git::Repository.new(url)
|
263
|
+
work = Raykit::Git::Directory.new(repo.get_dev_dir("work"))
|
264
|
+
next unless Dir.exist?(work.directory)
|
265
|
+
|
266
|
+
puts "removing #{work.directory}"
|
267
|
+
begin
|
268
|
+
FileUtils.rm_rf(work.directory, secure: true)
|
269
|
+
rescue StandardError
|
270
|
+
puts "error removing #{work.directory}"
|
271
|
+
end
|
272
|
+
end
|
273
|
+
Dir::remove_empty_directories(Raykit::Environment.get_dev_dir("work"))
|
274
|
+
end
|
275
|
+
|
276
|
+
def copy
|
277
|
+
if @opts.arguments.length < 3
|
278
|
+
puts "source and destination arguments are required for copy"
|
279
|
+
return 1
|
280
|
+
end
|
281
|
+
source = @opts.arguments[1]
|
282
|
+
dest = @opts.arguments[2]
|
283
|
+
FileUtils.cp(source, dest)
|
284
|
+
puts "copied #{source} to #{dest}"
|
285
|
+
end
|
286
|
+
|
287
|
+
def rake(hash)
|
288
|
+
REPOSITORIES.each do |remote|
|
289
|
+
next unless remote.include?(hash[:pattern])
|
290
|
+
|
291
|
+
begin
|
292
|
+
puts "remote: #{remote}"
|
293
|
+
cmd = Raykit::Rake.run(remote, "master")
|
294
|
+
elapsed_str = Timer.get_elapsed_str(cmd.elapsed)
|
295
|
+
if cmd.exitstatus.zero?
|
296
|
+
puts "#{elapsed_str} #{Rainbow(SECRETS.hide(cmd.command)).yellow.bright} (#{cmd.directory})"
|
297
|
+
else
|
298
|
+
puts "\r\n#{cmd.command}\r\n"
|
299
|
+
puts "\r\n#{cmd.output}\r\n"
|
300
|
+
puts "\r\n#{cmd.error}\r\n"
|
301
|
+
puts ""
|
302
|
+
puts "#{Rainbow(elapsed_str).red.bright} #{Rainbow(cmd.command).white}"
|
303
|
+
end
|
304
|
+
rescue StandardError
|
305
|
+
puts "rescued..."
|
306
|
+
end
|
307
|
+
end
|
308
|
+
end
|
309
|
+
end
|
310
|
+
end
|