raykit 0.0.500 → 0.0.502

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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +21 -21
  3. data/README.md +20 -20
  4. data/bin/raykit +6 -6
  5. data/lib/raykit/auto_setup.rb +69 -69
  6. data/lib/raykit/command.rb +373 -371
  7. data/lib/raykit/conan/buildinfo.rb +69 -69
  8. data/lib/raykit/conanpackage.rb +49 -49
  9. data/lib/raykit/configuration.rb +50 -50
  10. data/lib/raykit/console.rb +308 -281
  11. data/lib/raykit/default_content.rb +227 -227
  12. data/lib/raykit/dir.rb +49 -49
  13. data/lib/raykit/dotnet.rb +174 -174
  14. data/lib/raykit/environment.rb +114 -114
  15. data/lib/raykit/filesystem.rb +34 -34
  16. data/lib/raykit/git/commit.rb +16 -16
  17. data/lib/raykit/git/directory.rb +216 -216
  18. data/lib/raykit/git/files.rb +46 -46
  19. data/lib/raykit/git/repositories.rb +89 -89
  20. data/lib/raykit/git/repository.rb +376 -295
  21. data/lib/raykit/installer.rb +17 -17
  22. data/lib/raykit/log.rb +80 -80
  23. data/lib/raykit/logevent.rb +49 -49
  24. data/lib/raykit/logging.rb +57 -57
  25. data/lib/raykit/markdown.rb +21 -21
  26. data/lib/raykit/msbuild.rb +54 -54
  27. data/lib/raykit/nugetpackage.rb +54 -54
  28. data/lib/raykit/nunit.rb +13 -13
  29. data/lib/raykit/project.rb +343 -343
  30. data/lib/raykit/rake.rb +39 -39
  31. data/lib/raykit/runner.rb +42 -42
  32. data/lib/raykit/secrets.rb +38 -38
  33. data/lib/raykit/sourceImport.rb +76 -74
  34. data/lib/raykit/sourceImports.rb +43 -43
  35. data/lib/raykit/string.rb +18 -18
  36. data/lib/raykit/symbols.rb +16 -0
  37. data/lib/raykit/tasks.rb +99 -99
  38. data/lib/raykit/text.rb +32 -32
  39. data/lib/raykit/timer.rb +31 -31
  40. data/lib/raykit/version.rb +103 -103
  41. data/lib/raykit/vstest.rb +24 -24
  42. data/lib/raykit/wt.rb +28 -28
  43. data/lib/raykit/zip.rb +73 -73
  44. data/lib/raykit.rb +125 -125
  45. metadata +3 -2
@@ -1,295 +1,376 @@
1
- # frozen_string_literal: true
2
- require "uri"
3
-
4
- module Raykit
5
- module Git
6
- # Functionality to manage a remote git repository
7
- class Repository
8
- # The url of the remote repository
9
- attr_accessor :url
10
- attr_accessor :clone_directory, :work_directory
11
-
12
- def initialize(url)
13
- if (url.nil? || url.empty?)
14
- raise "Raykit::Git::Repository::initialize(url), url is nil or empty!"
15
- end
16
- @url = url
17
- @clone_directory = Raykit::Git::Directory.new(get_dev_dir("clone"))
18
- @work_directory = Raykit::Git::Directory.new(get_dev_dir("work"))
19
- end
20
-
21
- def short_name()
22
- @url.split("/").last.gsub(".git", "")
23
- end
24
-
25
- def to_json(*_args)
26
- JSON.generate({ "url" => @url })
27
- end
28
-
29
- def self.parse(json)
30
- hash = JSON.parse(json)
31
- Repository.new(hash["url"])
32
- end
33
-
34
- # The relative path is a valid local path name derived from the url
35
- def relative_path
36
- Repository::get_relative_path(@url)
37
- #@url.gsub("https://", "").gsub(".git", "").gsub("http://", "")
38
- end
39
-
40
- def self.get_relative_path(url)
41
- uri = URI.parse(url)
42
-
43
- # Remove top-level domain (e.g., ".com")
44
- if (uri.host.nil?)
45
- puts "uri.host is nil for #{url}"
46
- end
47
- host = uri.host.split(".")[0]
48
- #host.pop # remove the last element which should be the top-level domain
49
- #host = host.join(".")
50
-
51
- # Remove scheme (e.g., "http" or "https")
52
- path = host + uri.path
53
-
54
- # Remove top-level domain (e.g., ".com")
55
- #path = path.split(".")
56
- #path.pop # remove the last element which should be the top-level domain
57
- #path = path.join(".")
58
-
59
- # Remove trailing ".git" if present
60
- path = path.chomp(".git")
61
-
62
- path
63
- end
64
-
65
- def get_dev_dir(dir)
66
- dev_dir = Environment.get_dev_dir(dir)
67
- Raykit::Environment::normalize_path("#{dev_dir}/#{relative_path}")
68
- end
69
-
70
- # Clone the repository to a specific directory
71
- def clone(directory, depth = 0)
72
- if depth.zero?
73
- PROJECT.run("git clone #{@url} #{directory}")
74
- else
75
- PROJECT.run("git clone #{@url} #{directory} --depth #{depth}")
76
- end
77
- end
78
-
79
- # default branch
80
- def default_branch
81
- update_local_clone_directory
82
- if Dir.exist?(local_clone_directory)
83
- Dir.chdir(local_clone_directory) do
84
- # refs/remotes/origin/master
85
- default_branch = `git symbolic-ref refs/remotes/origin/HEAD`.split("/").last.strip
86
- return default_branch
87
- end
88
- end
89
- "main"
90
- end
91
-
92
- # The branches for the git repository
93
- def branches
94
- results = []
95
- update_local_clone_directory
96
- if Dir.exist?(local_clone_directory)
97
- Dir.chdir(local_clone_directory) do
98
- `git branch`.split('\n').each do |line|
99
- branch = line.gsub("*", "").strip
100
- results.insert(-1, branch) if branch.length.positive?
101
- end
102
- end
103
- end
104
- results
105
- end
106
-
107
- # The latest commit id for a branch of the repostiory
108
- def latest_commit(branch)
109
- if checkout_local_clone_directory_branch(branch)
110
- update_local_clone_directory
111
- Dir.chdir(local_clone_directory) do
112
- text = `git log -n 1`
113
- scan = text.scan(/commit (\w+)\s/)
114
- return scan[0][0].to_s
115
- end
116
- end
117
- ""
118
- end
119
-
120
- # The latest tag for a branch of the repository
121
- def latest_tag(branch)
122
- return `git describe --abbrev=0`.strip if checkout_local_clone_directory_branch(branch)
123
-
124
- ""
125
- end
126
-
127
- private def local_clone_directory
128
- clone_dir = "#{Environment.get_dev_dir("clone")}/#{relative_path}"
129
- end
130
-
131
- public def update_local_clone_directory
132
- if Dir.exist?(local_clone_directory)
133
- Dir.chdir(local_clone_directory) do
134
- pull = Raykit::Command.new("git pull")
135
- pull.run
136
- pull
137
- # t = `git pull`
138
- end
139
- else
140
- PROJECT.run("git clone #{@url} #{local_clone_directory}")
141
- end
142
- end
143
-
144
- private def checkout_local_clone_directory_branch(branch)
145
- update_local_clone_directory
146
- if Dir.exist?(local_clone_directory)
147
- Dir.chdir(local_clone_directory) do
148
- check = `git branch`
149
- t = `git checkout #{branch}` unless check.include?("* #{branch}")
150
- check = `git branch`
151
- return check.include?("* #{branch}")
152
- end
153
- end
154
- false
155
- end
156
-
157
- def clobber
158
- ["work", "clone", "make"].each { |d|
159
- dir = get_dev_dir(d)
160
- if (Dir.exist?(dir))
161
- begin
162
- puts " deleting #{dir}"
163
- FileUtils.rm_rf(dir)
164
- FileUtils.rm(dir) if (Dir.exist?(dir))
165
- rescue
166
- puts " problem while deleting #{dir}"
167
- end
168
- end
169
- }
170
- end
171
-
172
- def pull
173
- Raykit::Git::Repository::work_pull(url)
174
- update_local_clone_directory
175
- end
176
-
177
- def work(command, force = false)
178
- pull if (!Dir.exist?(get_dev_dir("work")))
179
- fcommand = Raykit::FileSystem::replace_invalid_chars(command)
180
- filename = "#{Raykit::Environment::log_dir}/work_#{fcommand}_#{relative_path.gsub("/", "-")}.json"
181
- if (Raykit::Git::Directory.new(get_dev_dir("work")).outstanding_commit? || force)
182
- puts " outstanding commit in #{get_dev_dir("work")}"
183
- work_cmd = Raykit::Git::Repository::work_url(url, command)
184
- work_cmd.save_as(filename)
185
- return work_cmd
186
- else
187
- if (File.exist?(filename))
188
- return Raykit::Command::parse(IO.read(filename))
189
- else
190
- work_cmd = Raykit::Git::Repository::work_url(url, command)
191
- work_cmd.save_as(filename)
192
- end
193
- #
194
- end
195
- end
196
-
197
- def make(command, force = false)
198
- commit_id = "#{latest_commit(default_branch)}"
199
- make_id = "make_#{relative_path.gsub("/", "-")}_#{commit_id}"
200
- fcommand = Raykit::FileSystem::replace_invalid_chars(command)
201
- filename = "#{Raykit::Environment::log_dir}/#{make_id}_#{fcommand}.json"
202
- if (!force && File.exist?(filename))
203
- return Raykit::Command::parse(IO.read(filename))
204
- else
205
- make_cmd = Raykit::Git::Repository::make_url(url, commit_id, "rake default")
206
- make_cmd.save_as(filename)
207
- return make_cmd
208
- end
209
- end
210
-
211
- def self.work_pull(url)
212
- repo = Raykit::Git::Repository.new(url)
213
- work_dir = repo.get_dev_dir("work")
214
- repo.clone(work_dir) if !Dir.exist?(work_dir)
215
- Dir.chdir(work_dir) do
216
- run("git pull")
217
- end
218
- end
219
-
220
- def self.work_integrate(url)
221
- repo = Raykit::Git::Repository.new(url)
222
- work_dir = repo.get_dev_dir("work")
223
- repo.clone(work_dir) if !Dir.exist?(work_dir)
224
- Dir.chdir(work_dir) do
225
- run("git pull")
226
- run("rake integrate")
227
- end
228
- end
229
-
230
- def self.work_url(url, cmd)
231
- repo = Raykit::Git::Repository.new(url)
232
- puts " work #{url} #{cmd}"
233
- work_dir = repo.get_dev_dir("work")
234
- repo.clone(work_dir) if !Dir.exist?(work_dir)
235
- Dir.chdir(work_dir) do
236
- run("git pull")
237
- cmd = Raykit::Command.new(cmd)
238
- cmd = cmd.run().summary()
239
- cmd
240
- end
241
- end
242
-
243
- def self.make_url(url, commit_id, command)
244
- repo = Raykit::Git::Repository.new(url)
245
- puts " make #{url} #{commit_id} #{command}"
246
- make_dir = Raykit::Environment::normalize_path(repo.get_dev_dir("make") + "/" + commit_id)
247
- FileUtils.mkdir_p(repo.get_dev_dir("make")) if !Dir.exist?(repo.get_dev_dir("make"))
248
- if (Dir.exist?(make_dir))
249
- FileUtils.rm_rf(make_dir)
250
- end
251
- run("git clone #{url} #{make_dir}")
252
- cmd = 0
253
- Dir.chdir(make_dir) do
254
- run("git reset --hard #{commit_id}")
255
- FileUtils.rm_rf(".git")
256
- cmd = Raykit::Command.new(command)
257
- cmd = cmd.run().summary()
258
- end
259
- FileUtils.rm_rf(make_dir) if (cmd.exitstatus == 0)
260
- cmd
261
- end
262
-
263
- def self.backup(url, backup_dir)
264
- if (Dir.exist?(backup_dir))
265
- Dir.chdir(backup_dir) do
266
- run("git pull")
267
- end
268
- else
269
- run("git clone #{url} \"#{backup_dir}\"")
270
- end
271
- end # def self.backup
272
-
273
- def to_s
274
- "Name: #{short_name}\nUrl: #{@url}\nRelative Path: #{relative_path}"
275
- end # def to_s
276
-
277
- def to_table
278
- #max_name_width = 10
279
- #max_value_width = 10
280
- #header = " =".ljust(max_name_width + max_value_width + 5, "=")
281
- header = "==Repository=="
282
- table = header
283
- table += "\n" + to_table_row("Name", short_name)
284
- table += "\n" + to_table_row("Url", @url)
285
- table
286
- end # def to_table
287
-
288
- def to_table_row(name, value)
289
- max_name_width = 10
290
- max_value_width = 30
291
- Rainbow(name.rjust(max_name_width, " ")).cyan + " | " + Rainbow(value).white.bold
292
- end
293
- end # class Repository
294
- end # module Git
295
- end # module Raykit
1
+ # frozen_string_literal: true
2
+ require "uri"
3
+
4
+ module Raykit
5
+ module Git
6
+ # Functionality to manage a remote git repository
7
+ class Repository
8
+ # The url of the remote repository
9
+ attr_accessor :url, :latest_commit_id, :latest_commit_exit_status
10
+ attr_accessor :clone_directory, :work_directory
11
+
12
+ def initialize(url)
13
+ if (url.nil? || url.empty?)
14
+ raise "Raykit::Git::Repository::initialize(url), url is nil or empty!"
15
+ end
16
+ @url = url
17
+ @clone_directory = Raykit::Git::Directory.new(get_dev_dir("clone"))
18
+ @work_directory = Raykit::Git::Directory.new(get_dev_dir("work"))
19
+ load
20
+ end
21
+
22
+ def filename
23
+ Environment.get_dev_dir("data") + File::SEPARATOR + "repository" + File::SEPARATOR + Raykit::FileSystem::replace_invalid_chars(relative_path.gsub("/", ".").gsub("\\", ".")) + ".json"
24
+ end
25
+
26
+ def save
27
+ # Create the config directory if it doesn't exist.
28
+ dir = File.dirname(filename)
29
+ FileUtils.mkdir_p(dir) unless Dir.exist?(dir)
30
+
31
+ File.write(filename, {
32
+ latest_commit_id: @latest_commit_id,
33
+ latest_commit_exit_status: @latest_commit_exit_status,
34
+ }.to_json)
35
+ end
36
+
37
+ def load
38
+ if (File.exist?(filename))
39
+ data = JSON.parse(File.read(filename))
40
+ @latest_commit_id = data["latest_commit_id"]
41
+ @latest_commit_exit_status = data["latest_commit_exit_status"]
42
+ end
43
+ end
44
+
45
+ def update
46
+ @latest_commit_id = latest_commit(default_branch)
47
+ if (@latest_commit_id.nil? || @latest_commit_id.empty?)
48
+ cmd = get_make_command(@latest_commit_id, "rake default")
49
+ if (!cmd.nil?)
50
+ @latest_commit_exit_status = cmd.exitstatus
51
+ end
52
+ end
53
+ save
54
+ end
55
+
56
+ def short_name()
57
+ @url.split("/").last.gsub(".git", "")
58
+ end
59
+
60
+ def to_json(*_args)
61
+ JSON.generate({ "url" => @url })
62
+ end
63
+
64
+ def self.parse(json)
65
+ hash = JSON.parse(json)
66
+ Repository.new(hash["url"])
67
+ end
68
+
69
+ # The relative path is a valid local path name derived from the url
70
+ def relative_path
71
+ Repository::get_relative_path(@url)
72
+ #@url.gsub("https://", "").gsub(".git", "").gsub("http://", "")
73
+ end
74
+
75
+ def self.get_relative_path(url)
76
+ uri = URI.parse(url)
77
+
78
+ # Remove top-level domain (e.g., ".com")
79
+ if (uri.host.nil?)
80
+ puts "uri.host is nil for #{url}"
81
+ end
82
+ host = uri.host.split(".")[0]
83
+ #host.pop # remove the last element which should be the top-level domain
84
+ #host = host.join(".")
85
+
86
+ # Remove scheme (e.g., "http" or "https")
87
+ path = host + uri.path
88
+
89
+ # Remove top-level domain (e.g., ".com")
90
+ #path = path.split(".")
91
+ #path.pop # remove the last element which should be the top-level domain
92
+ #path = path.join(".")
93
+
94
+ # Remove trailing ".git" if present
95
+ path = path.chomp(".git")
96
+
97
+ path
98
+ end
99
+
100
+ def get_dev_dir(dir)
101
+ dev_dir = Environment.get_dev_dir(dir)
102
+ Raykit::Environment::normalize_path("#{dev_dir}/#{relative_path}")
103
+ end
104
+
105
+ # Clone the repository to a specific directory
106
+ def clone(directory, depth = 0)
107
+ if depth.zero?
108
+ PROJECT.run("git clone #{@url} #{directory}")
109
+ else
110
+ PROJECT.run("git clone #{@url} #{directory} --depth #{depth}")
111
+ end
112
+ end
113
+
114
+ # default branch
115
+ def default_branch
116
+ update_local_clone_directory
117
+ if Dir.exist?(local_clone_directory)
118
+ Dir.chdir(local_clone_directory) do
119
+ # refs/remotes/origin/master
120
+ default_branch = `git symbolic-ref refs/remotes/origin/HEAD`.split("/").last.strip
121
+ return default_branch
122
+ end
123
+ end
124
+ "main"
125
+ end
126
+
127
+ # The branches for the git repository
128
+ def branches
129
+ results = []
130
+ update_local_clone_directory
131
+ if Dir.exist?(local_clone_directory)
132
+ Dir.chdir(local_clone_directory) do
133
+ `git branch`.split('\n').each do |line|
134
+ branch = line.gsub("*", "").strip
135
+ results.insert(-1, branch) if branch.length.positive?
136
+ end
137
+ end
138
+ end
139
+ results
140
+ end
141
+
142
+ # The latest commit id for a branch of the repostiory
143
+ def latest_commit(branch)
144
+ if checkout_local_clone_directory_branch(branch)
145
+ update_local_clone_directory
146
+ Dir.chdir(local_clone_directory) do
147
+ text = `git log -n 1`
148
+ scan = text.scan(/commit (\w+)\s/)
149
+ return scan[0][0].to_s
150
+ end
151
+ end
152
+ ""
153
+ end
154
+
155
+ def latest_commit_date(branch)
156
+ if checkout_local_clone_directory_branch(branch)
157
+ update_local_clone_directory
158
+ Dir.chdir(local_clone_directory) do
159
+ text = `git log -n 1`
160
+ scan = text.scan(/Date:\s+(.*)/)
161
+ return scan[0][0].to_s
162
+ end # Dir.chdir
163
+ end # if checkout_local_clone_directory_branch
164
+ ""
165
+ end
166
+
167
+ # The latest tag for a branch of the repository
168
+ def latest_tag(branch)
169
+ return `git describe --abbrev=0`.strip if checkout_local_clone_directory_branch(branch)
170
+
171
+ ""
172
+ end
173
+
174
+ private def local_clone_directory
175
+ clone_dir = Environment::normalize_path("#{Environment.get_dev_dir("clone")}/#{relative_path}")
176
+ end
177
+
178
+ public def update_local_clone_directory
179
+ if Dir.exist?(local_clone_directory)
180
+ Dir.chdir(local_clone_directory) do
181
+ pull = Raykit::Command.new("git pull")
182
+ pull.run
183
+ pull
184
+ # t = `git pull`
185
+ end
186
+ else
187
+ PROJECT.run("git clone #{@url} #{local_clone_directory}")
188
+ end
189
+ end
190
+
191
+ private def checkout_local_clone_directory_branch(branch)
192
+ update_local_clone_directory
193
+ if Dir.exist?(local_clone_directory)
194
+ Dir.chdir(local_clone_directory) do
195
+ check = `git branch`
196
+ t = `git checkout #{branch}` unless check.include?("* #{branch}")
197
+ check = `git branch`
198
+ return check.include?("* #{branch}")
199
+ end
200
+ end
201
+ false
202
+ end
203
+
204
+ def clobber
205
+ ["work", "clone", "make"].each { |d|
206
+ dir = get_dev_dir(d)
207
+ if (Dir.exist?(dir))
208
+ begin
209
+ puts " deleting #{dir}"
210
+ FileUtils.rm_rf(dir)
211
+ FileUtils.rm(dir) if (Dir.exist?(dir))
212
+ rescue
213
+ puts " problem while deleting #{dir}"
214
+ end
215
+ end
216
+ }
217
+ end
218
+
219
+ def pull
220
+ #repo = Raykit::Git::Repository.new(url)
221
+ #work_dir = repo.get_dev_dir("work")
222
+ #repo.clone(work_dir) if !Dir.exist?(work_dir)
223
+ Raykit::Git::Repository::work_pull(url)
224
+ update_local_clone_directory
225
+ end
226
+
227
+ def work(command, force = false)
228
+ pull if (!Dir.exist?(get_dev_dir("work")))
229
+ fcommand = Raykit::FileSystem::replace_invalid_chars(command)
230
+ filename = "#{Raykit::Environment::log_dir}/work_#{fcommand}_#{relative_path.gsub("/", "-")}.json"
231
+ if (Raykit::Git::Directory.new(get_dev_dir("work")).outstanding_commit? || force)
232
+ puts " outstanding commit in #{get_dev_dir("work")}"
233
+ work_cmd = Raykit::Git::Repository::work_url(url, command)
234
+ work_cmd.save_as(filename)
235
+ return work_cmd
236
+ else
237
+ if (File.exist?(filename))
238
+ return Raykit::Command::parse(IO.read(filename))
239
+ else
240
+ work_cmd = Raykit::Git::Repository::work_url(url, command)
241
+ work_cmd.save_as(filename)
242
+ update
243
+ end
244
+ #
245
+ end
246
+ end
247
+
248
+ def get_make_command(commit_id, command)
249
+ make_id = "make_#{relative_path.gsub("/", "-")}_#{commit_id}"
250
+ fcommand = Raykit::FileSystem::replace_invalid_chars(command)
251
+ filename = "#{Raykit::Environment::log_dir}/#{make_id}_#{fcommand}.json"
252
+ return Raykit::Command::parse(IO.read(filename)) if (File.exist?(filename))
253
+ nil
254
+ end
255
+
256
+ def make(command, force = false)
257
+ commit_id = "#{latest_commit(default_branch)}"
258
+ make_id = "make_#{relative_path.gsub("/", "-")}_#{commit_id}"
259
+ fcommand = Raykit::FileSystem::replace_invalid_chars(command)
260
+ filename = "#{Raykit::Environment::log_dir}/#{make_id}_#{fcommand}.json"
261
+ if (!force && File.exist?(filename))
262
+ return Raykit::Command::parse(IO.read(filename))
263
+ else
264
+ make_cmd = Raykit::Git::Repository::make_url(url, commit_id, "rake default")
265
+ make_cmd.save_as(filename)
266
+ update
267
+ return make_cmd
268
+ end
269
+ end
270
+
271
+ def self.work_pull(url)
272
+ repo = Raykit::Git::Repository.new(url)
273
+ work_dir = repo.get_dev_dir("work")
274
+ repo.clone(work_dir) if !Dir.exist?(work_dir)
275
+ Dir.chdir(work_dir) do
276
+ run("git pull")
277
+ end
278
+ end
279
+
280
+ def self.work_integrate(url)
281
+ repo = Raykit::Git::Repository.new(url)
282
+ work_dir = repo.get_dev_dir("work")
283
+ repo.clone(work_dir) if !Dir.exist?(work_dir)
284
+ Dir.chdir(work_dir) do
285
+ run("git pull")
286
+ run("rake integrate")
287
+ end
288
+ end
289
+
290
+ def self.work_url(url, cmd)
291
+ repo = Raykit::Git::Repository.new(url)
292
+ puts " work #{url} #{cmd}"
293
+ work_dir = repo.get_dev_dir("work")
294
+ repo.clone(work_dir) if !Dir.exist?(work_dir)
295
+ Dir.chdir(work_dir) do
296
+ run("git pull")
297
+ cmd = Raykit::Command.new(cmd)
298
+ cmd = cmd.run().summary()
299
+ cmd
300
+ end
301
+ end
302
+
303
+ def self.make_url(url, commit_id, command)
304
+ repo = Raykit::Git::Repository.new(url)
305
+ puts " make #{url} #{commit_id} #{command}"
306
+ make_dir = Raykit::Environment::normalize_path(repo.get_dev_dir("make") + "/" + commit_id)
307
+ FileUtils.mkdir_p(repo.get_dev_dir("make")) if !Dir.exist?(repo.get_dev_dir("make"))
308
+ if (Dir.exist?(make_dir))
309
+ FileUtils.rm_rf(make_dir)
310
+ end
311
+ run("git clone #{url} #{make_dir}")
312
+ cmd = 0
313
+ Dir.chdir(make_dir) do
314
+ run("git reset --hard #{commit_id}")
315
+ FileUtils.rm_rf(".git")
316
+ cmd = Raykit::Command.new(command)
317
+ cmd = cmd.run().summary()
318
+ end
319
+ FileUtils.rm_rf(make_dir) if (cmd.exitstatus == 0)
320
+ cmd
321
+ end
322
+
323
+ def self.backup(url, backup_dir)
324
+ if (Dir.exist?(backup_dir))
325
+ Dir.chdir(backup_dir) do
326
+ run("git pull")
327
+ end
328
+ else
329
+ run("git clone #{url} \"#{backup_dir}\"")
330
+ end
331
+ end # def self.backup
332
+
333
+ def to_s
334
+ #short_name
335
+ latest_commit_id = @latest_commit_id.nil? ? "" : @latest_commit_id # latest_commit(default_branch)
336
+ latest_commit_exit_status = @latest_commit_exit_status.nil? ? nil : @latest_commit_exit_status # latest_commit(default_branch)
337
+ symbol = Raykit::Symbols::warning
338
+ symbol = Raykit::Symbols::success if (!latest_commit_exit_status.nil? && latest_commit_exit_status == 0)
339
+ symbol = Raykit::Symbols::success if (!latest_commit_exit_status.nil? && latest_commit_exit_status != 0)
340
+ #latest_make_cmd = get_make_command(latest_commit_id, "rake default")
341
+ #commit = Rainbow(latest_commit(default_branch)[0..8]).cyan
342
+ #if (latest_make_cmd.nil?)
343
+ # symbol = Raykit::Symbols::warning
344
+ #else
345
+ # symbol = latest_make_cmd.exitstatus == 0 ? Raykit::Symbols::success : Raykit::Symbols::error
346
+ #end
347
+ commit = latest_commit_id[0..8]
348
+ "#{symbol} #{commit} #{short_name}"
349
+ end # def to_s
350
+
351
+ def to_table
352
+ #max_name_width = 10
353
+ #max_value_width = 10
354
+ #header = " =".ljust(max_name_width + max_value_width + 5, "=")
355
+ header = "==Repository=="
356
+ table = header
357
+ table += "\n" + to_table_row("Name", short_name)
358
+ table += "\n" + to_table_row("Url", @url)
359
+ table += "\n" + to_table_row("Default Branch", default_branch)
360
+ table += "\n" + to_table_row("Latest Commit", latest_commit(default_branch))
361
+ table += "\n" + to_table_row("Latest Commit Date", latest_commit_date(default_branch))
362
+ table += "\n" + to_table_row("Latest Commit Make", make("rake default").summary(false))
363
+ table += "\n" + to_table_row("Clone Directory", local_clone_directory)
364
+ table += "\n" + to_table_row("Work Directory", get_dev_dir("work"))
365
+ table += "\n" + to_table_row("Latest Tag", latest_tag(default_branch))
366
+ table
367
+ end # def to_table
368
+
369
+ def to_table_row(name, value)
370
+ max_name_width = 20
371
+ max_value_width = 30
372
+ Rainbow(name.rjust(max_name_width, " ")).cyan + " | " + Rainbow(value).white.bold
373
+ end
374
+ end # class Repository
375
+ end # module Git
376
+ end # module Raykit