raykit 0.0.543 → 0.0.544
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 +8 -8
- data/lib/raykit/default_content.txt +219 -219
- data/lib/raykit/dir.rb +127 -127
- 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 +279 -279
- 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 +97 -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 +143 -140
- metadata +3 -3
data/lib/raykit/git/commit.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Raykit
|
4
|
-
module Git
|
5
|
-
# Functionality to manage a git commit
|
6
|
-
class Commit
|
7
|
-
attr_accessor :url, :branch, :commit_id
|
8
|
-
|
9
|
-
def initialize(url, branch, commit_id)
|
10
|
-
@url = url
|
11
|
-
@branch = branch
|
12
|
-
@commit_id = commit_id
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Raykit
|
4
|
+
module Git
|
5
|
+
# Functionality to manage a git commit
|
6
|
+
class Commit
|
7
|
+
attr_accessor :url, :branch, :commit_id
|
8
|
+
|
9
|
+
def initialize(url, branch, commit_id)
|
10
|
+
@url = url
|
11
|
+
@branch = branch
|
12
|
+
@commit_id = commit_id
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/raykit/git/directory.rb
CHANGED
@@ -1,279 +1,279 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Raykit
|
4
|
-
module Git
|
5
|
-
# Functionality to manage a local clone of a git repository
|
6
|
-
class Directory
|
7
|
-
# The directory name of the local repository clone
|
8
|
-
attr_accessor :directory
|
9
|
-
|
10
|
-
@repository
|
11
|
-
|
12
|
-
def initialize(directory)
|
13
|
-
@directory = directory
|
14
|
-
end
|
15
|
-
|
16
|
-
def outstanding_commit?
|
17
|
-
Dir.chdir(directory) do
|
18
|
-
return false if !File.exist?(".git")
|
19
|
-
if user_can_commit
|
20
|
-
return !`git status`.include?("nothing to commit,")
|
21
|
-
else
|
22
|
-
return false
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def detached?
|
28
|
-
Dir.chdir(directory) do
|
29
|
-
status = `git status`.strip
|
30
|
-
if status.include?("detached")
|
31
|
-
true
|
32
|
-
else
|
33
|
-
false
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def pull
|
39
|
-
Dir.chdir(directory) do
|
40
|
-
diff = `git diff`.strip
|
41
|
-
status = `git status`.strip
|
42
|
-
PROJECT.run("git pull", false) if diff.length.zero? && status.include?("nothing to commit")
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def rake(task)
|
47
|
-
unless Dir.exist?(@directory)
|
48
|
-
puts "directory not found."
|
49
|
-
return 1
|
50
|
-
end
|
51
|
-
debug = false
|
52
|
-
sub_dir = "work"
|
53
|
-
sub_dir = "make" if @directory.include?("/make/")
|
54
|
-
rake_log = repository.get_dev_dir("log") + "/#{sub_dir}.rake.#{task}.json"
|
55
|
-
|
56
|
-
puts "log filename #{rake_log}" if debug
|
57
|
-
if File.exist?(rake_log) && (File.mtime(rake_log) > last_modified_time)
|
58
|
-
puts "using logged data" if debug
|
59
|
-
cmd = Raykit::Command.parse(File.read(rake_log))
|
60
|
-
cmd.summary
|
61
|
-
return
|
62
|
-
end
|
63
|
-
|
64
|
-
Dir.chdir(@directory) do
|
65
|
-
if File.exist?("rakefile.rb")
|
66
|
-
cmd = Raykit::Command.new("rake #{task}")
|
67
|
-
cmd.summary
|
68
|
-
FileUtils.mkdir_p(File.dirname(rake_log))
|
69
|
-
File.open(rake_log, "w") { |f| f.write(JSON.generate(cmd.to_hash)) }
|
70
|
-
else
|
71
|
-
puts "rakefile.rb not found"
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def last_modified_time
|
77
|
-
Dir.chdir(@directory) do
|
78
|
-
begin
|
79
|
-
# Find the most recently modified file
|
80
|
-
most_recent_file = Dir.glob("**/*.*").select { |f| File.file?(f) }.max_by { |f| File.mtime(f) }
|
81
|
-
|
82
|
-
# Use File.mtime if a file was found, otherwise handle the nil case
|
83
|
-
if most_recent_file
|
84
|
-
last_modified_time = File.mtime(most_recent_file)
|
85
|
-
else
|
86
|
-
# Handle the case where no files are found. This could be setting a default value,
|
87
|
-
# raising a custom error, or any other appropriate action depending on your needs.
|
88
|
-
# For example, setting last_modified_time to Time.now or raising a custom error.
|
89
|
-
last_modified_time = Time.now # Or any other appropriate action
|
90
|
-
end
|
91
|
-
rescue Errno::ENAMETOOLONG => e
|
92
|
-
puts "Error: #{e.message}"
|
93
|
-
last_modified_time = Time.now # Or any other appropriate action
|
94
|
-
end
|
95
|
-
|
96
|
-
#File.mtime(Dir.glob("**/*.*").select { |f| File.file?(f) }.max_by { |f| File.mtime(f) })
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def last_modified_filename
|
101
|
-
Dir.chdir(@directory) do
|
102
|
-
# TODO: consider handling the case where glob can fail because of filename length
|
103
|
-
# Errno::ENAMETOOLONG: File name too long @ dir_s_glob - /Users/username/...
|
104
|
-
#
|
105
|
-
begin
|
106
|
-
# Use Dir.glob to find all files, select the actual files, find the one with the latest modification time, and return its name
|
107
|
-
files = Dir.glob("**/*.*").select { |f| File.file?(f) }
|
108
|
-
|
109
|
-
# Find the file with the latest modification time
|
110
|
-
latest_file = files.max_by { |f| File.mtime(f) }
|
111
|
-
|
112
|
-
return latest_file
|
113
|
-
|
114
|
-
#Dir.glob("**/*.*").select { |f| File.file?(f) }.max_by { |f| File.mtime(f) }
|
115
|
-
rescue Errno::ENAMETOOLONG => e
|
116
|
-
puts "Error: #{e.message}"
|
117
|
-
# return the first src file found
|
118
|
-
src_files.each { |f| return f if File.file?(f) }
|
119
|
-
#return handle_long_filename_error
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
# git ls-tree -r master --name-only
|
125
|
-
def src_files
|
126
|
-
files = Array.new
|
127
|
-
Dir.chdir(@directory) do
|
128
|
-
`git ls-tree -r #{branch} --name-only`.each_line { |line|
|
129
|
-
file = line.strip
|
130
|
-
files << file if file.length > 0 && File.exist?(file)
|
131
|
-
}
|
132
|
-
end
|
133
|
-
files
|
134
|
-
end
|
135
|
-
|
136
|
-
def last_modified_src_time
|
137
|
-
Dir.chdir(@directory) do
|
138
|
-
last_file = self.src_files.select { |f| File.file?(f) }.max_by { |f| File.mtime(f) }
|
139
|
-
last_file ? File.mtime(last_file) : Time.at(0) # Return a default time if no file is found
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
#def last_modified_src_time
|
144
|
-
# #File.mtim(src_files.max_by { |f| File.mtime(f) }#
|
145
|
-
# Dir.chdir(@directory) do
|
146
|
-
# File.mtime(self.src_files.select { |f| File.file?(f) }.max_by { |f| File.mtime(f) })
|
147
|
-
# end
|
148
|
-
#end
|
149
|
-
|
150
|
-
def last_modified_src_file
|
151
|
-
Dir.chdir(@directory) do
|
152
|
-
# Select the source files that are actual files, not directories
|
153
|
-
src_files.select { |f| File.file?(f) }
|
154
|
-
# Find the max by modification time
|
155
|
-
.max_by { |f| File.mtime(f) }
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
|
-
def last_modified_artifact_time
|
160
|
-
self.last_modified_time
|
161
|
-
end
|
162
|
-
|
163
|
-
# The latest tag for a branch of the repository
|
164
|
-
def latest_tag(_branch)
|
165
|
-
Dir.chdir(directory) do
|
166
|
-
return `git describe --abbrev=0`.strip
|
167
|
-
end
|
168
|
-
""
|
169
|
-
end
|
170
|
-
|
171
|
-
def get_tag_commit_id(name)
|
172
|
-
cmd = Raykit::Command.new("git rev-parse \"#{name}\"").run
|
173
|
-
if !cmd.output.include?("fatal") && !cmd.error.include?("fatal")
|
174
|
-
cmd.output.strip
|
175
|
-
else
|
176
|
-
""
|
177
|
-
end
|
178
|
-
end
|
179
|
-
|
180
|
-
def has_tag(name)
|
181
|
-
cmd = Raykit::Command.new("git rev-parse \"#{name}\"").run
|
182
|
-
if !cmd.output.include?("fatal") && !cmd.error.include?("fatal")
|
183
|
-
true
|
184
|
-
else
|
185
|
-
false
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
def get_sha(filename)
|
190
|
-
if File.exist?(filename)
|
191
|
-
Digest::SHA256.file(filename).hexdigest.to_s
|
192
|
-
else
|
193
|
-
"#{filename} not found"
|
194
|
-
end
|
195
|
-
# ''
|
196
|
-
end
|
197
|
-
|
198
|
-
def user_name
|
199
|
-
`git config --get user.name`.strip
|
200
|
-
end
|
201
|
-
|
202
|
-
def user_email
|
203
|
-
`git config --get user.email`.strip
|
204
|
-
end
|
205
|
-
|
206
|
-
def user_can_commit
|
207
|
-
return false if user_name.length.zero?
|
208
|
-
return false if user_email.length.zero?
|
209
|
-
|
210
|
-
true
|
211
|
-
end
|
212
|
-
|
213
|
-
def branch
|
214
|
-
Dir.chdir(directory) do
|
215
|
-
scan = `git branch`.scan(/\*\s([\w.-]+)/)
|
216
|
-
return scan[0][0].to_s if !scan.nil? && scan.length.positive? && scan[0].length.positive?
|
217
|
-
end
|
218
|
-
"master"
|
219
|
-
end
|
220
|
-
|
221
|
-
def repository
|
222
|
-
@repository = Raykit::Git::Repository.new(remote) if @repository.nil?
|
223
|
-
@repository
|
224
|
-
end
|
225
|
-
|
226
|
-
def remote
|
227
|
-
if Dir.exist?(directory)
|
228
|
-
Dir.chdir(directory) do
|
229
|
-
return Command.new("git config --get remote.origin.url").run.output.strip if Dir.exist?(".git")
|
230
|
-
end
|
231
|
-
end
|
232
|
-
""
|
233
|
-
end
|
234
|
-
|
235
|
-
def tag_version(version)
|
236
|
-
if has_tag "v#{version}"
|
237
|
-
puts " git tag v#{version} already exists"
|
238
|
-
else
|
239
|
-
if outstanding_commit?
|
240
|
-
raise "outstanding commit, will not tag"
|
241
|
-
else
|
242
|
-
puts " git tag v#{version} does not exist"
|
243
|
-
run("git tag -a v#{version} -m\"version #{version}\"")
|
244
|
-
end
|
245
|
-
end
|
246
|
-
end
|
247
|
-
|
248
|
-
def get_unique_ruby_constants
|
249
|
-
# Define the regular expression pattern
|
250
|
-
pattern = /\b([A-Z][A-Z0-9_]*)\b\s*=/
|
251
|
-
|
252
|
-
constants = []
|
253
|
-
|
254
|
-
# Loop through each .rb file in the specified directory
|
255
|
-
Dir.glob("#{directory}/**/*.rb").each do |file|
|
256
|
-
# Read the contents of the file
|
257
|
-
content = File.read(file)
|
258
|
-
|
259
|
-
# Scan the content for constants and add the matches to the array.
|
260
|
-
content.scan(pattern) do |match|
|
261
|
-
# Add matched constant name to the constants array.
|
262
|
-
constants << match[0]
|
263
|
-
end
|
264
|
-
# Scan the content for constants and add the matches to the array
|
265
|
-
#constants.concat(content.scan(pattern))
|
266
|
-
end
|
267
|
-
|
268
|
-
# Return unique constants
|
269
|
-
constants.uniq
|
270
|
-
end
|
271
|
-
|
272
|
-
#def setup
|
273
|
-
# DEFAULT_SUBDIRECTORIES.each do |subdirectory|
|
274
|
-
# FileUtils.mkdir_p(subdirectory)
|
275
|
-
# end
|
276
|
-
#end
|
277
|
-
end # class Directory
|
278
|
-
end # module Git
|
279
|
-
end # module Raykit
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Raykit
|
4
|
+
module Git
|
5
|
+
# Functionality to manage a local clone of a git repository
|
6
|
+
class Directory
|
7
|
+
# The directory name of the local repository clone
|
8
|
+
attr_accessor :directory
|
9
|
+
|
10
|
+
@repository
|
11
|
+
|
12
|
+
def initialize(directory)
|
13
|
+
@directory = directory
|
14
|
+
end
|
15
|
+
|
16
|
+
def outstanding_commit?
|
17
|
+
Dir.chdir(directory) do
|
18
|
+
return false if !File.exist?(".git")
|
19
|
+
if user_can_commit
|
20
|
+
return !`git status`.include?("nothing to commit,")
|
21
|
+
else
|
22
|
+
return false
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def detached?
|
28
|
+
Dir.chdir(directory) do
|
29
|
+
status = `git status`.strip
|
30
|
+
if status.include?("detached")
|
31
|
+
true
|
32
|
+
else
|
33
|
+
false
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def pull
|
39
|
+
Dir.chdir(directory) do
|
40
|
+
diff = `git diff`.strip
|
41
|
+
status = `git status`.strip
|
42
|
+
PROJECT.run("git pull", false) if diff.length.zero? && status.include?("nothing to commit")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def rake(task)
|
47
|
+
unless Dir.exist?(@directory)
|
48
|
+
puts "directory not found."
|
49
|
+
return 1
|
50
|
+
end
|
51
|
+
debug = false
|
52
|
+
sub_dir = "work"
|
53
|
+
sub_dir = "make" if @directory.include?("/make/")
|
54
|
+
rake_log = repository.get_dev_dir("log") + "/#{sub_dir}.rake.#{task}.json"
|
55
|
+
|
56
|
+
puts "log filename #{rake_log}" if debug
|
57
|
+
if File.exist?(rake_log) && (File.mtime(rake_log) > last_modified_time)
|
58
|
+
puts "using logged data" if debug
|
59
|
+
cmd = Raykit::Command.parse(File.read(rake_log))
|
60
|
+
cmd.summary
|
61
|
+
return
|
62
|
+
end
|
63
|
+
|
64
|
+
Dir.chdir(@directory) do
|
65
|
+
if File.exist?("rakefile.rb")
|
66
|
+
cmd = Raykit::Command.new("rake #{task}")
|
67
|
+
cmd.summary
|
68
|
+
FileUtils.mkdir_p(File.dirname(rake_log))
|
69
|
+
File.open(rake_log, "w") { |f| f.write(JSON.generate(cmd.to_hash)) }
|
70
|
+
else
|
71
|
+
puts "rakefile.rb not found"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def last_modified_time
|
77
|
+
Dir.chdir(@directory) do
|
78
|
+
begin
|
79
|
+
# Find the most recently modified file
|
80
|
+
most_recent_file = Dir.glob("**/*.*").select { |f| File.file?(f) }.max_by { |f| File.mtime(f) }
|
81
|
+
|
82
|
+
# Use File.mtime if a file was found, otherwise handle the nil case
|
83
|
+
if most_recent_file
|
84
|
+
last_modified_time = File.mtime(most_recent_file)
|
85
|
+
else
|
86
|
+
# Handle the case where no files are found. This could be setting a default value,
|
87
|
+
# raising a custom error, or any other appropriate action depending on your needs.
|
88
|
+
# For example, setting last_modified_time to Time.now or raising a custom error.
|
89
|
+
last_modified_time = Time.now # Or any other appropriate action
|
90
|
+
end
|
91
|
+
rescue Errno::ENAMETOOLONG => e
|
92
|
+
puts "Error: #{e.message}"
|
93
|
+
last_modified_time = Time.now # Or any other appropriate action
|
94
|
+
end
|
95
|
+
|
96
|
+
#File.mtime(Dir.glob("**/*.*").select { |f| File.file?(f) }.max_by { |f| File.mtime(f) })
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def last_modified_filename
|
101
|
+
Dir.chdir(@directory) do
|
102
|
+
# TODO: consider handling the case where glob can fail because of filename length
|
103
|
+
# Errno::ENAMETOOLONG: File name too long @ dir_s_glob - /Users/username/...
|
104
|
+
#
|
105
|
+
begin
|
106
|
+
# Use Dir.glob to find all files, select the actual files, find the one with the latest modification time, and return its name
|
107
|
+
files = Dir.glob("**/*.*").select { |f| File.file?(f) }
|
108
|
+
|
109
|
+
# Find the file with the latest modification time
|
110
|
+
latest_file = files.max_by { |f| File.mtime(f) }
|
111
|
+
|
112
|
+
return latest_file
|
113
|
+
|
114
|
+
#Dir.glob("**/*.*").select { |f| File.file?(f) }.max_by { |f| File.mtime(f) }
|
115
|
+
rescue Errno::ENAMETOOLONG => e
|
116
|
+
puts "Error: #{e.message}"
|
117
|
+
# return the first src file found
|
118
|
+
src_files.each { |f| return f if File.file?(f) }
|
119
|
+
#return handle_long_filename_error
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
# git ls-tree -r master --name-only
|
125
|
+
def src_files
|
126
|
+
files = Array.new
|
127
|
+
Dir.chdir(@directory) do
|
128
|
+
`git ls-tree -r #{branch} --name-only`.each_line { |line|
|
129
|
+
file = line.strip
|
130
|
+
files << file if file.length > 0 && File.exist?(file)
|
131
|
+
}
|
132
|
+
end
|
133
|
+
files
|
134
|
+
end
|
135
|
+
|
136
|
+
def last_modified_src_time
|
137
|
+
Dir.chdir(@directory) do
|
138
|
+
last_file = self.src_files.select { |f| File.file?(f) }.max_by { |f| File.mtime(f) }
|
139
|
+
last_file ? File.mtime(last_file) : Time.at(0) # Return a default time if no file is found
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
#def last_modified_src_time
|
144
|
+
# #File.mtim(src_files.max_by { |f| File.mtime(f) }#
|
145
|
+
# Dir.chdir(@directory) do
|
146
|
+
# File.mtime(self.src_files.select { |f| File.file?(f) }.max_by { |f| File.mtime(f) })
|
147
|
+
# end
|
148
|
+
#end
|
149
|
+
|
150
|
+
def last_modified_src_file
|
151
|
+
Dir.chdir(@directory) do
|
152
|
+
# Select the source files that are actual files, not directories
|
153
|
+
src_files.select { |f| File.file?(f) }
|
154
|
+
# Find the max by modification time
|
155
|
+
.max_by { |f| File.mtime(f) }
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
def last_modified_artifact_time
|
160
|
+
self.last_modified_time
|
161
|
+
end
|
162
|
+
|
163
|
+
# The latest tag for a branch of the repository
|
164
|
+
def latest_tag(_branch)
|
165
|
+
Dir.chdir(directory) do
|
166
|
+
return `git describe --abbrev=0`.strip
|
167
|
+
end
|
168
|
+
""
|
169
|
+
end
|
170
|
+
|
171
|
+
def get_tag_commit_id(name)
|
172
|
+
cmd = Raykit::Command.new("git rev-parse \"#{name}\"").run
|
173
|
+
if !cmd.output.include?("fatal") && !cmd.error.include?("fatal")
|
174
|
+
cmd.output.strip
|
175
|
+
else
|
176
|
+
""
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
def has_tag(name)
|
181
|
+
cmd = Raykit::Command.new("git rev-parse \"#{name}\"").run
|
182
|
+
if !cmd.output.include?("fatal") && !cmd.error.include?("fatal")
|
183
|
+
true
|
184
|
+
else
|
185
|
+
false
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
def get_sha(filename)
|
190
|
+
if File.exist?(filename)
|
191
|
+
Digest::SHA256.file(filename).hexdigest.to_s
|
192
|
+
else
|
193
|
+
"#{filename} not found"
|
194
|
+
end
|
195
|
+
# ''
|
196
|
+
end
|
197
|
+
|
198
|
+
def user_name
|
199
|
+
`git config --get user.name`.strip
|
200
|
+
end
|
201
|
+
|
202
|
+
def user_email
|
203
|
+
`git config --get user.email`.strip
|
204
|
+
end
|
205
|
+
|
206
|
+
def user_can_commit
|
207
|
+
return false if user_name.length.zero?
|
208
|
+
return false if user_email.length.zero?
|
209
|
+
|
210
|
+
true
|
211
|
+
end
|
212
|
+
|
213
|
+
def branch
|
214
|
+
Dir.chdir(directory) do
|
215
|
+
scan = `git branch`.scan(/\*\s([\w.-]+)/)
|
216
|
+
return scan[0][0].to_s if !scan.nil? && scan.length.positive? && scan[0].length.positive?
|
217
|
+
end
|
218
|
+
"master"
|
219
|
+
end
|
220
|
+
|
221
|
+
def repository
|
222
|
+
@repository = Raykit::Git::Repository.new(remote) if @repository.nil?
|
223
|
+
@repository
|
224
|
+
end
|
225
|
+
|
226
|
+
def remote
|
227
|
+
if Dir.exist?(directory)
|
228
|
+
Dir.chdir(directory) do
|
229
|
+
return Command.new("git config --get remote.origin.url").run.output.strip if Dir.exist?(".git")
|
230
|
+
end
|
231
|
+
end
|
232
|
+
""
|
233
|
+
end
|
234
|
+
|
235
|
+
def tag_version(version)
|
236
|
+
if has_tag "v#{version}"
|
237
|
+
puts " git tag v#{version} already exists"
|
238
|
+
else
|
239
|
+
if outstanding_commit?
|
240
|
+
raise "outstanding commit, will not tag"
|
241
|
+
else
|
242
|
+
puts " git tag v#{version} does not exist"
|
243
|
+
run("git tag -a v#{version} -m\"version #{version}\"")
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
def get_unique_ruby_constants
|
249
|
+
# Define the regular expression pattern
|
250
|
+
pattern = /\b([A-Z][A-Z0-9_]*)\b\s*=/
|
251
|
+
|
252
|
+
constants = []
|
253
|
+
|
254
|
+
# Loop through each .rb file in the specified directory
|
255
|
+
Dir.glob("#{directory}/**/*.rb").each do |file|
|
256
|
+
# Read the contents of the file
|
257
|
+
content = File.read(file)
|
258
|
+
|
259
|
+
# Scan the content for constants and add the matches to the array.
|
260
|
+
content.scan(pattern) do |match|
|
261
|
+
# Add matched constant name to the constants array.
|
262
|
+
constants << match[0]
|
263
|
+
end
|
264
|
+
# Scan the content for constants and add the matches to the array
|
265
|
+
#constants.concat(content.scan(pattern))
|
266
|
+
end
|
267
|
+
|
268
|
+
# Return unique constants
|
269
|
+
constants.uniq
|
270
|
+
end
|
271
|
+
|
272
|
+
#def setup
|
273
|
+
# DEFAULT_SUBDIRECTORIES.each do |subdirectory|
|
274
|
+
# FileUtils.mkdir_p(subdirectory)
|
275
|
+
# end
|
276
|
+
#end
|
277
|
+
end # class Directory
|
278
|
+
end # module Git
|
279
|
+
end # module Raykit
|