makit 0.0.111 → 0.0.112

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 (140) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +41 -41
  3. data/exe/makit +5 -5
  4. data/lib/makit/apache.rb +28 -28
  5. data/lib/makit/cli/build_commands.rb +500 -500
  6. data/lib/makit/cli/generators/base_generator.rb +74 -74
  7. data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
  8. data/lib/makit/cli/generators/generator_factory.rb +49 -49
  9. data/lib/makit/cli/generators/node_generator.rb +50 -50
  10. data/lib/makit/cli/generators/ruby_generator.rb +77 -77
  11. data/lib/makit/cli/generators/rust_generator.rb +50 -50
  12. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
  13. data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
  14. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
  15. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +40 -40
  16. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
  17. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
  18. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
  19. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
  20. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
  21. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
  22. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
  23. data/lib/makit/cli/main.rb +62 -62
  24. data/lib/makit/cli/project_commands.rb +868 -868
  25. data/lib/makit/cli/repository_commands.rb +661 -661
  26. data/lib/makit/cli/utility_commands.rb +521 -521
  27. data/lib/makit/commands/factory.rb +359 -359
  28. data/lib/makit/commands/middleware/base.rb +73 -73
  29. data/lib/makit/commands/middleware/cache.rb +248 -248
  30. data/lib/makit/commands/middleware/command_logger.rb +320 -323
  31. data/lib/makit/commands/middleware/unified_logger.rb +243 -243
  32. data/lib/makit/commands/middleware/validator.rb +269 -269
  33. data/lib/makit/commands/request.rb +254 -254
  34. data/lib/makit/commands/result.rb +323 -323
  35. data/lib/makit/commands/runner.rb +337 -317
  36. data/lib/makit/commands/strategies/base.rb +160 -160
  37. data/lib/makit/commands/strategies/synchronous.rb +134 -134
  38. data/lib/makit/commands.rb +51 -42
  39. data/lib/makit/configuration/gitlab_helper.rb +60 -60
  40. data/lib/makit/configuration/project.rb +127 -127
  41. data/lib/makit/configuration/rakefile_helper.rb +43 -43
  42. data/lib/makit/configuration/step.rb +34 -34
  43. data/lib/makit/configuration.rb +14 -14
  44. data/lib/makit/content/default_gitignore.rb +7 -7
  45. data/lib/makit/content/default_rakefile.rb +13 -13
  46. data/lib/makit/content/gem_rakefile.rb +16 -16
  47. data/lib/makit/context.rb +1 -1
  48. data/lib/makit/data.rb +49 -49
  49. data/lib/makit/directories.rb +141 -141
  50. data/lib/makit/directory.rb +262 -262
  51. data/lib/makit/docs/files.rb +89 -89
  52. data/lib/makit/docs/rake.rb +102 -102
  53. data/lib/makit/dotnet/project.rb +153 -153
  54. data/lib/makit/dotnet/solution.rb +38 -38
  55. data/lib/makit/dotnet/solution_classlib.rb +239 -239
  56. data/lib/makit/dotnet/solution_console.rb +264 -264
  57. data/lib/makit/dotnet/solution_maui.rb +354 -354
  58. data/lib/makit/dotnet/solution_wasm.rb +275 -275
  59. data/lib/makit/dotnet/solution_wpf.rb +304 -304
  60. data/lib/makit/dotnet.rb +102 -102
  61. data/lib/makit/email.rb +90 -90
  62. data/lib/makit/environment.rb +142 -142
  63. data/lib/makit/examples/runner.rb +370 -370
  64. data/lib/makit/exceptions.rb +45 -45
  65. data/lib/makit/fileinfo.rb +24 -24
  66. data/lib/makit/files.rb +43 -43
  67. data/lib/makit/gems.rb +40 -40
  68. data/lib/makit/git/cli.rb +54 -54
  69. data/lib/makit/git/repository.rb +90 -90
  70. data/lib/makit/git.rb +98 -98
  71. data/lib/makit/gitlab_runner.rb +59 -59
  72. data/lib/makit/humanize.rb +137 -137
  73. data/lib/makit/indexer.rb +47 -47
  74. data/lib/makit/logging/configuration.rb +305 -305
  75. data/lib/makit/logging/formatters/base.rb +39 -39
  76. data/lib/makit/logging/formatters/console_formatter.rb +140 -127
  77. data/lib/makit/logging/formatters/json_formatter.rb +65 -65
  78. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
  79. data/lib/makit/logging/formatters/text_formatter.rb +64 -64
  80. data/lib/makit/logging/log_request.rb +115 -115
  81. data/lib/makit/logging/logger.rb +163 -159
  82. data/lib/makit/logging/sinks/console.rb +72 -72
  83. data/lib/makit/logging/sinks/file_sink.rb +92 -92
  84. data/lib/makit/logging/sinks/unified_file_sink.rb +303 -303
  85. data/lib/makit/logging.rb +530 -521
  86. data/lib/makit/markdown.rb +75 -75
  87. data/lib/makit/mp/basic_object_mp.rb +17 -17
  88. data/lib/makit/mp/command_mp.rb +13 -13
  89. data/lib/makit/mp/command_request.mp.rb +17 -17
  90. data/lib/makit/mp/project_mp.rb +199 -199
  91. data/lib/makit/mp/string_mp.rb +193 -348
  92. data/lib/makit/nuget.rb +74 -74
  93. data/lib/makit/port.rb +32 -32
  94. data/lib/makit/process.rb +163 -163
  95. data/lib/makit/protoc.rb +107 -107
  96. data/lib/makit/rake/cli.rb +196 -196
  97. data/lib/makit/rake.rb +25 -25
  98. data/lib/makit/ruby/cli.rb +185 -185
  99. data/lib/makit/ruby.rb +25 -25
  100. data/lib/makit/secrets.rb +51 -51
  101. data/lib/makit/serializer.rb +130 -117
  102. data/lib/makit/services/builder.rb +186 -186
  103. data/lib/makit/services/error_handler.rb +226 -226
  104. data/lib/makit/services/repository_manager.rb +229 -229
  105. data/lib/makit/services/validator.rb +112 -112
  106. data/lib/makit/setup/classlib.rb +53 -53
  107. data/lib/makit/setup/gem.rb +30 -17
  108. data/lib/makit/setup/runner.rb +45 -40
  109. data/lib/makit/setup.rb +5 -0
  110. data/lib/makit/show.rb +110 -110
  111. data/lib/makit/storage.rb +126 -126
  112. data/lib/makit/symbols.rb +170 -161
  113. data/lib/makit/task_info.rb +128 -128
  114. data/lib/makit/tasks/at_exit.rb +13 -13
  115. data/lib/makit/tasks/build.rb +19 -18
  116. data/lib/makit/tasks/clean.rb +11 -11
  117. data/lib/makit/tasks/hook_manager.rb +393 -239
  118. data/lib/makit/tasks/init.rb +47 -47
  119. data/lib/makit/tasks/integrate.rb +17 -15
  120. data/lib/makit/tasks/pull_incoming.rb +11 -12
  121. data/lib/makit/tasks/setup.rb +6 -6
  122. data/lib/makit/tasks/sync.rb +12 -11
  123. data/lib/makit/tasks/tag.rb +15 -0
  124. data/lib/makit/tasks/task_monkey_patch.rb +79 -79
  125. data/lib/makit/tasks.rb +10 -0
  126. data/lib/makit/test_cache.rb +239 -239
  127. data/lib/makit/tree.rb +37 -37
  128. data/lib/makit/v1/makit.v1_pb.rb +34 -34
  129. data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
  130. data/lib/makit/version.rb +5 -5
  131. data/lib/makit/version_util.rb +21 -0
  132. data/lib/makit/wix.rb +95 -95
  133. data/lib/makit/yaml.rb +29 -29
  134. data/lib/makit/zip.rb +17 -17
  135. data/lib/makit copy.rb +44 -0
  136. data/lib/makit.rb +40 -8
  137. metadata +50 -7
  138. data/lib/makit/command_runner.rb +0 -463
  139. data/lib/makit/commands/compatibility.rb +0 -365
  140. data/lib/makit/task_hooks.rb +0 -125
@@ -1,13 +1,13 @@
1
- # frozen_string_literal: true
2
-
3
- module Makit
4
- module Content
5
- RAKEFILE = <<~HEREDOC
6
- require "makit"
7
-
8
- task :default do
9
- end
10
-
11
- HEREDOC
12
- end
13
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Makit
4
+ module Content
5
+ RAKEFILE = <<~HEREDOC
6
+ require "makit"
7
+
8
+ task :default do
9
+ end
10
+
11
+ HEREDOC
12
+ end
13
+ end
@@ -1,16 +1,16 @@
1
- # frozen_string_literal: true
2
-
3
- module Makit
4
- module Content
5
- GEM_RAKEFILE = <<~HEREDOC
6
- require "bundler/gem_tasks" # for build, install and release tasks
7
- require "minitest/test_task"
8
- Minitest::TestTask.create
9
- require "makit"
10
-
11
- task :default => [:build, :install] do
12
- end
13
-
14
- HEREDOC
15
- end
16
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Makit
4
+ module Content
5
+ GEM_RAKEFILE = <<~HEREDOC
6
+ require "bundler/gem_tasks" # for build, install and release tasks
7
+ require "minitest/test_task"
8
+ Minitest::TestTask.create
9
+ require "makit"
10
+
11
+ task :default => [:build, :install] do
12
+ end
13
+
14
+ HEREDOC
15
+ end
16
+ end
data/lib/makit/context.rb CHANGED
@@ -1 +1 @@
1
- # frozen_string_literal: true
1
+ # frozen_string_literal: true
data/lib/makit/data.rb CHANGED
@@ -1,49 +1,49 @@
1
- # frozen_string_literal: true
2
-
3
- require "digest"
4
- # This module provides classes for the Makit gem.
5
- module Makit
6
- # This class provide methods for managing persistent data for the makit gem
7
- class Data
8
- attr_accessor :directory, :use_jsonks
9
-
10
- def initialize(attributes = {})
11
- @directory = attributes[:directory] || File.join(Dir.home, ".makit")
12
- @use_json = false
13
- attributes.each do |key, value|
14
- instance_variable_set("@#{key}", value) if self.class.method_defined?("#{key}=")
15
- end
16
- end
17
-
18
- # remove all data
19
- def clear
20
- # remove the data directory
21
- FileUtils.rm_rf(@directory)
22
- end
23
-
24
- def get_content_id(item)
25
- # get the content id for the item
26
- bytes_string = item.to_proto.bytes.pack("C*") # Convert the byte array to a string
27
- Digest::SHA256.hexdigest(bytes_string)
28
- end
29
-
30
- # save the content
31
- # data.save_content(git_version)
32
- def save(item)
33
- content_id = get_content_id(item)
34
- # save the content
35
- return unless @use_json
36
-
37
- # save the content to a json file
38
- File.write(File.join(@directory, "#{content_id}.json"), item.to_json)
39
- end
40
-
41
- def get_content(_content_id)
42
- nil
43
- end
44
-
45
- def self.gem_db_filename
46
- File.join(Dir.home, ".makit", "makit.db")
47
- end
48
- end
49
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "digest"
4
+ # This module provides classes for the Makit gem.
5
+ module Makit
6
+ # This class provide methods for managing persistent data for the makit gem
7
+ class Data
8
+ attr_accessor :directory, :use_jsonks
9
+
10
+ def initialize(attributes = {})
11
+ @directory = attributes[:directory] || File.join(Dir.home, ".makit")
12
+ @use_json = false
13
+ attributes.each do |key, value|
14
+ instance_variable_set("@#{key}", value) if self.class.method_defined?("#{key}=")
15
+ end
16
+ end
17
+
18
+ # remove all data
19
+ def clear
20
+ # remove the data directory
21
+ FileUtils.rm_rf(@directory)
22
+ end
23
+
24
+ def get_content_id(item)
25
+ # get the content id for the item
26
+ bytes_string = item.to_proto.bytes.pack("C*") # Convert the byte array to a string
27
+ Digest::SHA256.hexdigest(bytes_string)
28
+ end
29
+
30
+ # save the content
31
+ # data.save_content(git_version)
32
+ def save(item)
33
+ content_id = get_content_id(item)
34
+ # save the content
35
+ return unless @use_json
36
+
37
+ # save the content to a json file
38
+ File.write(File.join(@directory, "#{content_id}.json"), item.to_json)
39
+ end
40
+
41
+ def get_content(_content_id)
42
+ nil
43
+ end
44
+
45
+ def self.gem_db_filename
46
+ File.join(Dir.home, ".makit", "makit.db")
47
+ end
48
+ end
49
+ end
@@ -1,141 +1,141 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "directory"
4
- require_relative "environment"
5
- require_relative "protoc"
6
- require_relative "nuget"
7
- require_relative "version"
8
- require "rake"
9
-
10
- # This module provides classes for the Makit gem.
11
- module Makit
12
- # This class provide methods for working with the system Environment.
13
- #
14
- module Directories
15
- ROOT = File.join(Dir.home, ".makit")
16
- CLONE = File.join(Dir.home, ".makit", "clone")
17
- MAKE = File.join(Dir.home, ".makit", "make")
18
- LOG = File.join(Dir.home, ".makit", "log")
19
- WORK = File.join(Dir.home, ".makit", "work")
20
- REPOS = File.join(Dir.home, ".makit", "repos")
21
- TEMP = File.join(Dir.home, ".makit", "temp")
22
- INSTALL = File.join(Dir.home, ".makit", "install")
23
- NUGET = File.join(Dir.home, ".makit", "nuget")
24
- HOME = Makit::Directory.normalize(Dir.home)
25
- ONEDRIVE = File.join(Dir.home, "OneDrive")
26
- ONEDRIVE_NUGET_SOURCE = File.join(ONEDRIVE, "code", "artifacts", "nuget")
27
- ONEDRIVE_CONSOLE_SOURCE = File.join(ONEDRIVE, "code", "artifacts", "console")
28
- ONEDRIVE_INSTALLER_SOURCE = File.join(ONEDRIVE, "code", "artifacts", "installer")
29
- CURRENT = Dir.pwd
30
- LOCAL_APPLICATION_DATA = File.join(HOME, "AppData", "Local")
31
- # Rake.application.init
32
- # Rake.application.load_rakefile
33
- RAKEDIR = Dir.pwd # File.dirname(Rake.application.rakefile)
34
-
35
- PROJECT_ROOT = Makit::Directory.find_directory_with_patterns(RAKEDIR, ["Rakefile", "rakefile.rb", ".gitignore"])
36
- # PROJECT_ROOT = Makit::Directory.find_directory_with_pattern(RAKEDIR, "Rakefile")
37
- # PROJECT_ROOT = Makit::Directory.find_directory_with_pattern(RAKEDIR, "rakefile.rb")
38
- # PROJECT_ROOT = Makit::Directory.find_directory_with_pattern(RAKEDIR, ".gitignore")
39
- PROJECT_ARTIFACTS = if PROJECT_ROOT.nil?
40
- nil
41
- else
42
- File.join(PROJECT_ROOT, "artifacts")
43
- end
44
- LOCAL_NUGET_SOURCE = File.join(Dir.home, ".makit", "nuget")
45
- if Makit::Environment.get_os == "Windows"
46
- # NUGET_PACKAGE_CACHE = "#{ENV["USERPROFILE"]}\\.nuget\\packages"
47
- NUGET_PACKAGE_CACHE = File.join(HOME, ".nuget", "packages")
48
- SERVICES = File.join("C:", "Program Files")
49
- else
50
- NUGET_PACKAGE_CACHE = Makit::Directory.normalize("#{Dir.home}/.nuget/packages")
51
- SERVICES = if Makit::Environment.get_os == "macOS"
52
- "/Library/LaunchDaemons"
53
- else
54
- "/etc/systemd/system"
55
- end
56
- end
57
- if Makit::NuGet.get_latest_version("Grpc.Tools").nil?
58
- puts " warning: Grpc.Tools not found in Nuget cache"
59
- else
60
- GRPC_TOOLS_PATH = File.join(NUGET_PACKAGE_CACHE, "grpc.tools", Makit::Protoc.get_latest_grpc_tools_version)
61
- GRPC_CSHARP_PLUGIN_PATH = Makit::Protoc.find_plugin_path("grpc_csharp_plugin")
62
- end
63
-
64
- FileUtils.mkdir_p(ROOT)
65
- FileUtils.mkdir_p(CLONE)
66
- FileUtils.mkdir_p(MAKE)
67
- FileUtils.mkdir_p(LOG)
68
- FileUtils.mkdir_p(WORK)
69
- FileUtils.mkdir_p(REPOS)
70
- FileUtils.mkdir_p(TEMP)
71
- FileUtils.mkdir_p(INSTALL)
72
- unless Dir.exist?(LOCAL_NUGET_SOURCE)
73
- Dir.mkdir(LOCAL_NUGET_SOURCE)
74
- system("dotnet nuget add source #{LOCAL_NUGET_SOURCE} --name local")
75
- end
76
-
77
- def self.get_project_path(relative_path)
78
- File.join(PROJECT_ROOT, relative_path)
79
- end
80
-
81
- def self.get_clone_directory(url)
82
- File.join(CLONE, get_relative_directory(url))
83
- end
84
-
85
- def self.get_work_directory(url)
86
- File.join(WORK, get_relative_directory(url))
87
- end
88
-
89
- def self.get_make_directory(url)
90
- File.join(MAKE, get_relative_directory(url))
91
- end
92
-
93
- def self.get_make_commit_directory(url, commit_id)
94
- File.join(MAKE, get_relative_directory(url), commit_id)
95
- end
96
-
97
- def self.get_log_directory(url)
98
- File.join(LOG, get_relative_directory(url))
99
- end
100
-
101
- def self.get_make_commit_log_filename(url, commit_id)
102
- File.join(LOG, get_relative_directory(url), "#{commit_id}.json")
103
- end
104
-
105
- def self.get_relative_directory(url)
106
- # if url start with Directories::REPOS, then it is a local repository
107
- return url.gsub(REPOS, "") if url.start_with?(REPOS)
108
-
109
- url = url.gsub("https://", "").gsub("http://", "")
110
- url = url.gsub("gitlab.com", "gitlab")
111
- url = url.gsub("github.com", "github")
112
-
113
- # if the url ends with .git, remove it
114
- url = url.gsub(".git", "") if url.end_with?(".git")
115
- url
116
- end
117
-
118
- # show all the directory constants in a nicely formatted table format with the name of the constant and the value
119
- def self.show
120
- # Array of constant names (symbols)
121
- constant_names = %i[ROOT CLONE MAKE LOG WORK REPOS TEMP INSTALL HOME ONEDRIVE
122
- CURRENT RAKEDIR
123
- PROJECT_ROOT PROJECT_ARTIFACTS LOCAL_NUGET_SOURCE NUGET_PACKAGE_CACHE SERVICES
124
- GRPC_TOOLS_PATH GRPC_CSHARP_PLUGIN_PATH]
125
-
126
- # Find the length of the longest constant name and add 1
127
- max_length = constant_names.map(&:to_s).max_by(&:length).length + 1
128
-
129
- # Iterate through each constant name
130
- constant_names.each do |constant_name|
131
- constant_value = const_get(constant_name) # Fetch the value of the constant
132
- constant_value = constant_value.colorize(:green) if !constant_value.nil? && Dir.exist?(constant_value)
133
- # Print the constant name right justified to the max_length
134
- puts "#{constant_name.to_s.rjust(max_length)} = #{constant_value}"
135
- rescue NameError
136
- # Handle the case where the constant is not defined
137
- puts "#{constant_name.to_s.rjust(max_length)} = [Constant not defined]"
138
- end
139
- end
140
- end
141
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "directory"
4
+ require_relative "environment"
5
+ require_relative "protoc"
6
+ require_relative "nuget"
7
+ require_relative "version"
8
+ require "rake"
9
+
10
+ # This module provides classes for the Makit gem.
11
+ module Makit
12
+ # This class provide methods for working with the system Environment.
13
+ #
14
+ module Directories
15
+ ROOT = File.join(Dir.home, ".makit")
16
+ CLONE = File.join(Dir.home, ".makit", "clone")
17
+ MAKE = File.join(Dir.home, ".makit", "make")
18
+ LOG = File.join(Dir.home, ".makit", "log")
19
+ WORK = File.join(Dir.home, ".makit", "work")
20
+ REPOS = File.join(Dir.home, ".makit", "repos")
21
+ TEMP = File.join(Dir.home, ".makit", "temp")
22
+ INSTALL = File.join(Dir.home, ".makit", "install")
23
+ NUGET = File.join(Dir.home, ".makit", "nuget")
24
+ HOME = Makit::Directory.normalize(Dir.home)
25
+ ONEDRIVE = File.join(Dir.home, "OneDrive")
26
+ ONEDRIVE_NUGET_SOURCE = File.join(ONEDRIVE, "code", "artifacts", "nuget")
27
+ ONEDRIVE_CONSOLE_SOURCE = File.join(ONEDRIVE, "code", "artifacts", "console")
28
+ ONEDRIVE_INSTALLER_SOURCE = File.join(ONEDRIVE, "code", "artifacts", "installer")
29
+ CURRENT = Dir.pwd
30
+ LOCAL_APPLICATION_DATA = File.join(HOME, "AppData", "Local")
31
+ # Rake.application.init
32
+ # Rake.application.load_rakefile
33
+ RAKEDIR = Dir.pwd # File.dirname(Rake.application.rakefile)
34
+
35
+ PROJECT_ROOT = Makit::Directory.find_directory_with_patterns(RAKEDIR, ["Rakefile", "rakefile.rb", ".gitignore"])
36
+ # PROJECT_ROOT = Makit::Directory.find_directory_with_pattern(RAKEDIR, "Rakefile")
37
+ # PROJECT_ROOT = Makit::Directory.find_directory_with_pattern(RAKEDIR, "rakefile.rb")
38
+ # PROJECT_ROOT = Makit::Directory.find_directory_with_pattern(RAKEDIR, ".gitignore")
39
+ PROJECT_ARTIFACTS = if PROJECT_ROOT.nil?
40
+ nil
41
+ else
42
+ File.join(PROJECT_ROOT, "artifacts")
43
+ end
44
+ LOCAL_NUGET_SOURCE = File.join(Dir.home, ".makit", "nuget")
45
+ if Makit::Environment.get_os == "Windows"
46
+ # NUGET_PACKAGE_CACHE = "#{ENV["USERPROFILE"]}\\.nuget\\packages"
47
+ NUGET_PACKAGE_CACHE = File.join(HOME, ".nuget", "packages")
48
+ SERVICES = File.join("C:", "Program Files")
49
+ else
50
+ NUGET_PACKAGE_CACHE = Makit::Directory.normalize("#{Dir.home}/.nuget/packages")
51
+ SERVICES = if Makit::Environment.get_os == "macOS"
52
+ "/Library/LaunchDaemons"
53
+ else
54
+ "/etc/systemd/system"
55
+ end
56
+ end
57
+ if Makit::NuGet.get_latest_version("Grpc.Tools").nil?
58
+ puts " warning: Grpc.Tools not found in Nuget cache"
59
+ else
60
+ GRPC_TOOLS_PATH = File.join(NUGET_PACKAGE_CACHE, "grpc.tools", Makit::Protoc.get_latest_grpc_tools_version)
61
+ GRPC_CSHARP_PLUGIN_PATH = Makit::Protoc.find_plugin_path("grpc_csharp_plugin")
62
+ end
63
+
64
+ FileUtils.mkdir_p(ROOT)
65
+ FileUtils.mkdir_p(CLONE)
66
+ FileUtils.mkdir_p(MAKE)
67
+ FileUtils.mkdir_p(LOG)
68
+ FileUtils.mkdir_p(WORK)
69
+ FileUtils.mkdir_p(REPOS)
70
+ FileUtils.mkdir_p(TEMP)
71
+ FileUtils.mkdir_p(INSTALL)
72
+ unless Dir.exist?(LOCAL_NUGET_SOURCE)
73
+ Dir.mkdir(LOCAL_NUGET_SOURCE)
74
+ system("dotnet nuget add source #{LOCAL_NUGET_SOURCE} --name local")
75
+ end
76
+
77
+ def self.get_project_path(relative_path)
78
+ File.join(PROJECT_ROOT, relative_path)
79
+ end
80
+
81
+ def self.get_clone_directory(url)
82
+ File.join(CLONE, get_relative_directory(url))
83
+ end
84
+
85
+ def self.get_work_directory(url)
86
+ File.join(WORK, get_relative_directory(url))
87
+ end
88
+
89
+ def self.get_make_directory(url)
90
+ File.join(MAKE, get_relative_directory(url))
91
+ end
92
+
93
+ def self.get_make_commit_directory(url, commit_id)
94
+ File.join(MAKE, get_relative_directory(url), commit_id)
95
+ end
96
+
97
+ def self.get_log_directory(url)
98
+ File.join(LOG, get_relative_directory(url))
99
+ end
100
+
101
+ def self.get_make_commit_log_filename(url, commit_id)
102
+ File.join(LOG, get_relative_directory(url), "#{commit_id}.json")
103
+ end
104
+
105
+ def self.get_relative_directory(url)
106
+ # if url start with Directories::REPOS, then it is a local repository
107
+ return url.gsub(REPOS, "") if url.start_with?(REPOS)
108
+
109
+ url = url.gsub("https://", "").gsub("http://", "")
110
+ url = url.gsub("gitlab.com", "gitlab")
111
+ url = url.gsub("github.com", "github")
112
+
113
+ # if the url ends with .git, remove it
114
+ url = url.gsub(".git", "") if url.end_with?(".git")
115
+ url
116
+ end
117
+
118
+ # show all the directory constants in a nicely formatted table format with the name of the constant and the value
119
+ def self.show
120
+ # Array of constant names (symbols)
121
+ constant_names = %i[ROOT CLONE MAKE LOG WORK REPOS TEMP INSTALL HOME ONEDRIVE
122
+ CURRENT RAKEDIR
123
+ PROJECT_ROOT PROJECT_ARTIFACTS LOCAL_NUGET_SOURCE NUGET_PACKAGE_CACHE SERVICES
124
+ GRPC_TOOLS_PATH GRPC_CSHARP_PLUGIN_PATH]
125
+
126
+ # Find the length of the longest constant name and add 1
127
+ max_length = constant_names.map(&:to_s).max_by(&:length).length + 1
128
+
129
+ # Iterate through each constant name
130
+ constant_names.each do |constant_name|
131
+ constant_value = const_get(constant_name) # Fetch the value of the constant
132
+ constant_value = constant_value.colorize(:green) if !constant_value.nil? && Dir.exist?(constant_value)
133
+ # Print the constant name right justified to the max_length
134
+ puts "#{constant_name.to_s.rjust(max_length)} = #{constant_value}"
135
+ rescue NameError
136
+ # Handle the case where the constant is not defined
137
+ puts "#{constant_name.to_s.rjust(max_length)} = [Constant not defined]"
138
+ end
139
+ end
140
+ end
141
+ end