makit 0.0.99 → 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 (152) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +41 -0
  3. data/exe/makit +5 -0
  4. data/lib/makit/apache.rb +28 -32
  5. data/lib/makit/cli/build_commands.rb +500 -0
  6. data/lib/makit/cli/generators/base_generator.rb +74 -0
  7. data/lib/makit/cli/generators/dotnet_generator.rb +50 -0
  8. data/lib/makit/cli/generators/generator_factory.rb +49 -0
  9. data/lib/makit/cli/generators/node_generator.rb +50 -0
  10. data/lib/makit/cli/generators/ruby_generator.rb +77 -0
  11. data/lib/makit/cli/generators/rust_generator.rb +50 -0
  12. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -0
  13. data/lib/makit/cli/generators/templates/node_templates.rb +161 -0
  14. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -0
  15. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +40 -0
  16. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -0
  17. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -0
  18. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -0
  19. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -0
  20. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -0
  21. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -0
  22. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -0
  23. data/lib/makit/cli/main.rb +62 -33
  24. data/lib/makit/cli/project_commands.rb +868 -0
  25. data/lib/makit/cli/repository_commands.rb +661 -0
  26. data/lib/makit/cli/utility_commands.rb +521 -0
  27. data/lib/makit/commands/factory.rb +359 -0
  28. data/lib/makit/commands/middleware/base.rb +73 -0
  29. data/lib/makit/commands/middleware/cache.rb +248 -0
  30. data/lib/makit/commands/middleware/command_logger.rb +320 -0
  31. data/lib/makit/commands/middleware/unified_logger.rb +243 -0
  32. data/lib/makit/commands/middleware/validator.rb +269 -0
  33. data/lib/makit/commands/request.rb +254 -0
  34. data/lib/makit/commands/result.rb +323 -0
  35. data/lib/makit/commands/runner.rb +337 -0
  36. data/lib/makit/commands/strategies/base.rb +160 -0
  37. data/lib/makit/commands/strategies/synchronous.rb +134 -0
  38. data/lib/makit/commands.rb +51 -21
  39. data/lib/makit/configuration/gitlab_helper.rb +60 -0
  40. data/lib/makit/configuration/project.rb +127 -0
  41. data/lib/makit/configuration/rakefile_helper.rb +43 -0
  42. data/lib/makit/configuration/step.rb +34 -0
  43. data/lib/makit/configuration.rb +14 -0
  44. data/lib/makit/content/default_gitignore.rb +7 -5
  45. data/lib/makit/content/default_rakefile.rb +13 -11
  46. data/lib/makit/content/gem_rakefile.rb +16 -14
  47. data/lib/makit/context.rb +1 -0
  48. data/lib/makit/data.rb +49 -50
  49. data/lib/makit/directories.rb +141 -145
  50. data/lib/makit/directory.rb +262 -276
  51. data/lib/makit/docs/files.rb +89 -94
  52. data/lib/makit/docs/rake.rb +102 -106
  53. data/lib/makit/dotnet/cli.rb +65 -0
  54. data/lib/makit/dotnet/project.rb +153 -0
  55. data/lib/makit/dotnet/solution.rb +38 -0
  56. data/lib/makit/dotnet/solution_classlib.rb +239 -0
  57. data/lib/makit/dotnet/solution_console.rb +264 -0
  58. data/lib/makit/dotnet/solution_maui.rb +354 -0
  59. data/lib/makit/dotnet/solution_wasm.rb +275 -0
  60. data/lib/makit/dotnet/solution_wpf.rb +304 -0
  61. data/lib/makit/dotnet.rb +102 -219
  62. data/lib/makit/email.rb +90 -61
  63. data/lib/makit/environment.rb +142 -139
  64. data/lib/makit/examples/runner.rb +370 -0
  65. data/lib/makit/exceptions.rb +45 -0
  66. data/lib/makit/fileinfo.rb +24 -26
  67. data/lib/makit/files.rb +43 -47
  68. data/lib/makit/gems.rb +29 -28
  69. data/lib/makit/git/cli.rb +54 -0
  70. data/lib/makit/git/repository.rb +90 -0
  71. data/lib/makit/git.rb +98 -145
  72. data/lib/makit/gitlab_runner.rb +59 -60
  73. data/lib/makit/humanize.rb +137 -129
  74. data/lib/makit/indexer.rb +47 -56
  75. data/lib/makit/logging/configuration.rb +305 -0
  76. data/lib/makit/logging/format_registry.rb +84 -0
  77. data/lib/makit/logging/formatters/base.rb +39 -0
  78. data/lib/makit/logging/formatters/console_formatter.rb +140 -0
  79. data/lib/makit/logging/formatters/json_formatter.rb +65 -0
  80. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -0
  81. data/lib/makit/logging/formatters/text_formatter.rb +64 -0
  82. data/lib/makit/logging/log_request.rb +115 -0
  83. data/lib/makit/logging/logger.rb +163 -0
  84. data/lib/makit/logging/sinks/base.rb +91 -0
  85. data/lib/makit/logging/sinks/console.rb +72 -0
  86. data/lib/makit/logging/sinks/file_sink.rb +92 -0
  87. data/lib/makit/logging/sinks/structured.rb +129 -0
  88. data/lib/makit/logging/sinks/unified_file_sink.rb +303 -0
  89. data/lib/makit/logging.rb +530 -106
  90. data/lib/makit/markdown.rb +75 -75
  91. data/lib/makit/mp/basic_object_mp.rb +17 -16
  92. data/lib/makit/mp/command_mp.rb +13 -13
  93. data/lib/makit/mp/command_request.mp.rb +17 -16
  94. data/lib/makit/mp/project_mp.rb +199 -210
  95. data/lib/makit/mp/string_mp.rb +193 -176
  96. data/lib/makit/nuget.rb +74 -72
  97. data/lib/makit/port.rb +32 -34
  98. data/lib/makit/process.rb +163 -65
  99. data/lib/makit/protoc.rb +107 -104
  100. data/lib/makit/rake/cli.rb +196 -0
  101. data/lib/makit/rake.rb +25 -25
  102. data/lib/makit/ruby/cli.rb +185 -0
  103. data/lib/makit/ruby.rb +25 -0
  104. data/lib/makit/secrets.rb +51 -51
  105. data/lib/makit/serializer.rb +130 -115
  106. data/lib/makit/services/builder.rb +186 -0
  107. data/lib/makit/services/error_handler.rb +226 -0
  108. data/lib/makit/services/repository_manager.rb +229 -0
  109. data/lib/makit/services/validator.rb +112 -0
  110. data/lib/makit/setup/classlib.rb +53 -0
  111. data/lib/makit/setup/gem.rb +263 -0
  112. data/lib/makit/setup/runner.rb +45 -0
  113. data/lib/makit/setup.rb +5 -0
  114. data/lib/makit/show.rb +110 -110
  115. data/lib/makit/storage.rb +126 -131
  116. data/lib/makit/symbols.rb +170 -149
  117. data/lib/makit/task_info.rb +128 -86
  118. data/lib/makit/tasks/at_exit.rb +13 -0
  119. data/lib/makit/tasks/build.rb +19 -0
  120. data/lib/makit/tasks/clean.rb +11 -0
  121. data/lib/makit/tasks/hook_manager.rb +393 -0
  122. data/lib/makit/tasks/init.rb +47 -0
  123. data/lib/makit/tasks/integrate.rb +17 -0
  124. data/lib/makit/tasks/pull_incoming.rb +11 -0
  125. data/lib/makit/tasks/setup.rb +6 -0
  126. data/lib/makit/tasks/sync.rb +12 -0
  127. data/lib/makit/tasks/tag.rb +15 -0
  128. data/lib/makit/tasks/task_monkey_patch.rb +79 -0
  129. data/lib/makit/tasks.rb +15 -150
  130. data/lib/makit/test_cache.rb +239 -0
  131. data/lib/makit/tree.rb +37 -37
  132. data/lib/makit/v1/makit.v1_pb.rb +3 -4
  133. data/lib/makit/v1/makit.v1_services_pb.rb +27 -25
  134. data/lib/makit/version.rb +5 -61
  135. data/lib/makit/version_util.rb +21 -0
  136. data/lib/makit/wix.rb +95 -95
  137. data/lib/makit/yaml.rb +29 -17
  138. data/lib/makit/zip.rb +17 -17
  139. data/lib/makit copy.rb +44 -0
  140. data/lib/makit.rb +40 -267
  141. metadata +117 -110
  142. data/lib/makit/cli/clean.rb +0 -14
  143. data/lib/makit/cli/clone.rb +0 -59
  144. data/lib/makit/cli/init.rb +0 -38
  145. data/lib/makit/cli/make.rb +0 -54
  146. data/lib/makit/cli/new.rb +0 -37
  147. data/lib/makit/cli/nuget_cache.rb +0 -38
  148. data/lib/makit/cli/pull.rb +0 -31
  149. data/lib/makit/cli/setup.rb +0 -71
  150. data/lib/makit/cli/work.rb +0 -21
  151. data/lib/makit/command_runner.rb +0 -404
  152. data/lib/makit/content/default_gitignore.txt +0 -222
@@ -1,14 +1,16 @@
1
- module Makit
2
- module Content
3
- GEM_RAKEFILE = <<~HEREDOC
4
- require "bundler/gem_tasks" # for build, install and release tasks
5
- require "minitest/test_task"
6
- Minitest::TestTask.create
7
- require "makit"
8
-
9
- task :default => [:build, :install] do
10
- end
11
-
12
- HEREDOC
13
- end # module Content
14
- end # module Makit
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
@@ -0,0 +1 @@
1
+ # frozen_string_literal: true
data/lib/makit/data.rb CHANGED
@@ -1,50 +1,49 @@
1
- # frozen_string_literal: true
2
- require "digest"
3
- # This module provides classes for the Makit gem.
4
- module Makit
5
- # This class provide methods for managing persistent data for the makit gem
6
- class Data
7
- attr_accessor :directory, :use_jsonks
8
-
9
- def initialize(attributes = {})
10
- @directory = attributes[:directory] || File.join(Dir.home, ".makit")
11
- @use_json = false
12
- attributes.each do |key, value|
13
- instance_variable_set("@#{key}", value) if self.class.method_defined?("#{key}=")
14
- end
15
- end
16
-
17
- # remove all data
18
- def clear
19
- # remove the data directory
20
- FileUtils.rm_rf(@directory) if Dir.exist?(@directory)
21
- end
22
-
23
- def get_content_id(item)
24
- # get the content id for the item
25
- bytes_string = item.to_proto.bytes.pack("C*") # Convert the byte array to a string
26
- Digest::SHA256.hexdigest(bytes_string)
27
- end
28
-
29
- # save the content
30
- # data.save_content(git_version)
31
- def save(item)
32
- content_id = get_content_id(item)
33
- # save the content
34
- if @use_json
35
- # save the content to a json file
36
- File.open(File.join(@directory, "#{content_id}.json"), "w") do |file|
37
- file.write(item.to_json)
38
- end
39
- end
40
- end
41
-
42
- def get_content(content_id)
43
- nil
44
- end
45
-
46
- def self.gem_db_filename
47
- gem_data_directory = File.join(Dir.home, ".makit", "makit.db")
48
- end
49
- end
50
- 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,145 +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
- if (PROJECT_ROOT.nil?)
40
- PROJECT_ARTIFACTS = nil
41
- else
42
- PROJECT_ARTIFACTS = 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("#{ENV["HOME"]}/.nuget/packages")
51
- if Makit::Environment::get_os == "macOS"
52
- SERVICES = "/Library/LaunchDaemons"
53
- else
54
- SERVICES = "/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
- Dir.mkdir(ROOT) unless Dir.exist?(ROOT)
65
- Dir.mkdir(CLONE) unless Dir.exist?(CLONE)
66
- Dir.mkdir(MAKE) unless Dir.exist?(MAKE)
67
- Dir.mkdir(LOG) unless Dir.exist?(LOG)
68
- Dir.mkdir(WORK) unless Dir.exist?(WORK)
69
- Dir.mkdir(REPOS) unless Dir.exist?(REPOS)
70
- Dir.mkdir(TEMP) unless Dir.exist?(TEMP)
71
- Dir.mkdir(INSTALL) unless Dir.exist?(INSTALL)
72
- if (!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
- def self.get_make_commit_log_filename(url, commit_id)
101
- File.join(LOG, get_relative_directory(url), commit_id + ".json")
102
- end
103
-
104
- def self.get_relative_directory(url)
105
- # if url start with Directories::REPOS, then it is a local repository
106
- if url.start_with?(REPOS)
107
- return url.gsub(REPOS, "")
108
- end
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 = [: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
- begin
132
- constant_value = const_get(constant_name) # Fetch the value of the constant
133
- if (constant_value != nil && Dir.exist?(constant_value))
134
- constant_value = constant_value.colorize(:green)
135
- end
136
- # Print the constant name right justified to the max_length
137
- puts "#{constant_name.to_s.rjust(max_length)} = #{constant_value}"
138
- rescue NameError
139
- # Handle the case where the constant is not defined
140
- puts "#{constant_name.to_s.rjust(max_length)} = [Constant not defined]"
141
- end
142
- end
143
- end
144
- end # end module Directories
145
- end # end module Makit
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