raykit 0.0.497 → 0.0.499

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 (44) 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 +371 -341
  7. data/lib/raykit/conan/buildinfo.rb +69 -69
  8. data/lib/raykit/conanpackage.rb +49 -49
  9. data/lib/raykit/configuration.rb +48 -0
  10. data/lib/raykit/console.rb +281 -272
  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 -109
  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 +95 -89
  20. data/lib/raykit/git/repository.rb +278 -244
  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 -339
  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 +74 -74
  34. data/lib/raykit/sourceImports.rb +43 -43
  35. data/lib/raykit/string.rb +18 -18
  36. data/lib/raykit/tasks.rb +99 -99
  37. data/lib/raykit/text.rb +32 -32
  38. data/lib/raykit/timer.rb +31 -31
  39. data/lib/raykit/version.rb +103 -103
  40. data/lib/raykit/vstest.rb +24 -24
  41. data/lib/raykit/wt.rb +28 -28
  42. data/lib/raykit/zip.rb +73 -73
  43. data/lib/raykit.rb +125 -125
  44. metadata +4 -3
@@ -1,244 +1,278 @@
1
- # frozen_string_literal: true
2
-
3
- module Raykit
4
- module Git
5
- # Functionality to manage a remote git repository
6
- class Repository
7
- # The url of the remote repository
8
- attr_accessor :url
9
- attr_accessor :clone_directory, :work_directory
10
-
11
- def initialize(url)
12
- @url = url
13
- @clone_directory = Raykit::Git::Directory.new(get_dev_dir("clone"))
14
- @work_directory = Raykit::Git::Directory.new(get_dev_dir("work"))
15
- end
16
-
17
- def short_name()
18
- @url.split("/").last.gsub(".git", "")
19
- end
20
-
21
- def to_json(*_args)
22
- JSON.generate({ "url" => @url })
23
- end
24
-
25
- def self.parse(json)
26
- hash = JSON.parse(json)
27
- Repository.new(hash["url"])
28
- end
29
-
30
- # The relative path is a valid local path name derived from the url
31
- def relative_path
32
- @url.gsub("https://", "").gsub(".git", "").gsub("http://", "")
33
- end
34
-
35
- def get_dev_dir(dir)
36
- dev_dir = Environment.get_dev_dir(dir)
37
- Raykit::Environment::normalize_path("#{dev_dir}/#{relative_path}")
38
- end
39
-
40
- # Clone the repository to a specific directory
41
- def clone(directory, depth = 0)
42
- if depth.zero?
43
- PROJECT.run("git clone #{@url} #{directory}")
44
- else
45
- PROJECT.run("git clone #{@url} #{directory} --depth #{depth}")
46
- end
47
- end
48
-
49
- # default branch
50
- def default_branch
51
- update_local_clone_directory
52
- if Dir.exist?(local_clone_directory)
53
- Dir.chdir(local_clone_directory) do
54
- # refs/remotes/origin/master
55
- default_branch = `git symbolic-ref refs/remotes/origin/HEAD`.split("/").last.strip
56
- return default_branch
57
- end
58
- end
59
- "main"
60
- end
61
-
62
- # The branches for the git repository
63
- def branches
64
- results = []
65
- update_local_clone_directory
66
- if Dir.exist?(local_clone_directory)
67
- Dir.chdir(local_clone_directory) do
68
- `git branch`.split('\n').each do |line|
69
- branch = line.gsub("*", "").strip
70
- results.insert(-1, branch) if branch.length.positive?
71
- end
72
- end
73
- end
74
- results
75
- end
76
-
77
- # The latest commit id for a branch of the repostiory
78
- def latest_commit(branch)
79
- if checkout_local_clone_directory_branch(branch)
80
- update_local_clone_directory
81
- Dir.chdir(local_clone_directory) do
82
- text = `git log -n 1`
83
- scan = text.scan(/commit (\w+)\s/)
84
- return scan[0][0].to_s
85
- end
86
- end
87
- ""
88
- end
89
-
90
- # The latest tag for a branch of the repository
91
- def latest_tag(branch)
92
- return `git describe --abbrev=0`.strip if checkout_local_clone_directory_branch(branch)
93
-
94
- ""
95
- end
96
-
97
- private def local_clone_directory
98
- clone_dir = "#{Environment.get_dev_dir("clone")}/#{relative_path}"
99
- end
100
-
101
- public def update_local_clone_directory
102
- if Dir.exist?(local_clone_directory)
103
- Dir.chdir(local_clone_directory) do
104
- pull = Raykit::Command.new("git pull")
105
- pull.run
106
- pull
107
- # t = `git pull`
108
- end
109
- else
110
- PROJECT.run("git clone #{@url} #{local_clone_directory}")
111
- end
112
- end
113
-
114
- private def checkout_local_clone_directory_branch(branch)
115
- update_local_clone_directory
116
- if Dir.exist?(local_clone_directory)
117
- Dir.chdir(local_clone_directory) do
118
- check = `git branch`
119
- t = `git checkout #{branch}` unless check.include?("* #{branch}")
120
- check = `git branch`
121
- return check.include?("* #{branch}")
122
- end
123
- end
124
- false
125
- end
126
-
127
- def clobber
128
- ["work", "clone", "make"].each { |d|
129
- dir = get_dev_dir(d)
130
- if (Dir.exist?(dir))
131
- begin
132
- puts " deleting #{dir}"
133
- FileUtils.rm_rf(dir)
134
- FileUtils.rm(dir) if (Dir.exist?(dir))
135
- rescue
136
- puts " problem while deleting #{dir}"
137
- end
138
- end
139
- }
140
- end
141
-
142
- def pull
143
- Raykit::Git::Repository::work_pull(url)
144
- update_local_clone_directory
145
- end
146
-
147
- def work(command, force = false)
148
- pull if (!Dir.exist?(get_dev_dir("work")))
149
- fcommand = Raykit::FileSystem::replace_invalid_chars(command)
150
- filename = "#{Raykit::Environment::log_dir}/work_#{fcommand}_#{relative_path.gsub("/", "-")}.json"
151
- if (Raykit::Git::Directory.new(get_dev_dir("work")).outstanding_commit? || force)
152
- puts " outstanding commit in #{get_dev_dir("work")}"
153
- work_cmd = Raykit::Git::Repository::work_url(url, command)
154
- work_cmd.save_as(filename)
155
- return work_cmd
156
- else
157
- if (File.exist?(filename))
158
- return Raykit::Command::parse(IO.read(filename))
159
- else
160
- work_cmd = Raykit::Git::Repository::work_url(url, command)
161
- work_cmd.save_as(filename)
162
- end
163
- #
164
- end
165
- end
166
-
167
- def make(command, force = false)
168
- commit_id = "#{latest_commit(default_branch)}"
169
- make_id = "make_#{relative_path.gsub("/", "-")}_#{commit_id}"
170
- fcommand = Raykit::FileSystem::replace_invalid_chars(command)
171
- filename = "#{Raykit::Environment::log_dir}/#{make_id}_#{fcommand}.json"
172
- if (!force && File.exist?(filename))
173
- return Raykit::Command::parse(IO.read(filename))
174
- else
175
- make_cmd = Raykit::Git::Repository::make_url(url, commit_id, "rake default")
176
- make_cmd.save_as(filename)
177
- return make_cmd
178
- end
179
- end
180
-
181
- def self.work_pull(url)
182
- repo = Raykit::Git::Repository.new(url)
183
- work_dir = repo.get_dev_dir("work")
184
- repo.clone(work_dir) if !Dir.exist?(work_dir)
185
- Dir.chdir(work_dir) do
186
- run("git pull")
187
- end
188
- end
189
-
190
- def self.work_integrate(url)
191
- repo = Raykit::Git::Repository.new(url)
192
- work_dir = repo.get_dev_dir("work")
193
- repo.clone(work_dir) if !Dir.exist?(work_dir)
194
- Dir.chdir(work_dir) do
195
- run("git pull")
196
- run("rake integrate")
197
- end
198
- end
199
-
200
- def self.work_url(url, cmd)
201
- repo = Raykit::Git::Repository.new(url)
202
- puts " work #{url} #{cmd}"
203
- work_dir = repo.get_dev_dir("work")
204
- repo.clone(work_dir) if !Dir.exist?(work_dir)
205
- Dir.chdir(work_dir) do
206
- run("git pull")
207
- cmd = Raykit::Command.new(cmd)
208
- cmd = cmd.run().summary()
209
- cmd
210
- end
211
- end
212
-
213
- def self.make_url(url, commit_id, command)
214
- repo = Raykit::Git::Repository.new(url)
215
- puts " make #{url} #{commit_id} #{command}"
216
- make_dir = Raykit::Environment::normalize_path(repo.get_dev_dir("make") + "/" + commit_id)
217
- FileUtils.mkdir_p(repo.get_dev_dir("make")) if !Dir.exist?(repo.get_dev_dir("make"))
218
- if (Dir.exist?(make_dir))
219
- FileUtils.rm_rf(make_dir)
220
- end
221
- run("git clone #{url} #{make_dir}")
222
- cmd = 0
223
- Dir.chdir(make_dir) do
224
- run("git reset --hard #{commit_id}")
225
- FileUtils.rm_rf(".git")
226
- cmd = Raykit::Command.new(command)
227
- cmd = cmd.run().summary()
228
- end
229
- FileUtils.rm_rf(make_dir) if (cmd.exitstatus == 0)
230
- cmd
231
- end
232
-
233
- def self.backup(url, backup_dir)
234
- if (Dir.exist?(backup_dir))
235
- Dir.chdir(backup_dir) do
236
- run("git pull")
237
- end
238
- else
239
- run("git clone #{url} \"#{backup_dir}\"")
240
- end
241
- end
242
- end
243
- end
244
- end
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
+ end # class Repository
277
+ end # module Git
278
+ end # module Raykit
@@ -1,17 +1,17 @@
1
- # frozen_string_literal: true
2
-
3
- module Raykit
4
- class Installer
5
- def self.make_msi(wxs_file, source_dir, msi_filename)
6
- name = "#{File.basename(wxs_file, ".wxs")}"
7
- FileUtils.cp(wxs_file, "#{source_dir}/#{File.basename(wxs_file)}")
8
- Dir.chdir(source_dir) do
9
- run("candle #{File.basename(wxs_file)}")
10
- run("light #{name}.wixobj")
11
- FileUtils.cp("#{name}.msi", msi_filename)
12
- raise "#{msi_filename} does not exist" if !File.exist?(msi_filename)
13
- File.delete("#{name}.wixobj")
14
- end
15
- end
16
- end
17
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Raykit
4
+ class Installer
5
+ def self.make_msi(wxs_file, source_dir, msi_filename)
6
+ name = "#{File.basename(wxs_file, ".wxs")}"
7
+ FileUtils.cp(wxs_file, "#{source_dir}/#{File.basename(wxs_file)}")
8
+ Dir.chdir(source_dir) do
9
+ run("candle #{File.basename(wxs_file)}")
10
+ run("light #{name}.wixobj")
11
+ FileUtils.cp("#{name}.msi", msi_filename)
12
+ raise "#{msi_filename} does not exist" if !File.exist?(msi_filename)
13
+ File.delete("#{name}.wixobj")
14
+ end
15
+ end
16
+ end
17
+ end