makit 0.0.157 → 0.0.158

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 (177) 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/auto.rb +48 -48
  6. data/lib/makit/azure/blob_storage.rb +257 -257
  7. data/lib/makit/azure/cli.rb +284 -284
  8. data/lib/makit/cli/base.rb +17 -17
  9. data/lib/makit/cli/build_commands.rb +500 -500
  10. data/lib/makit/cli/generators/base_generator.rb +74 -74
  11. data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
  12. data/lib/makit/cli/generators/generator_factory.rb +49 -49
  13. data/lib/makit/cli/generators/node_generator.rb +50 -50
  14. data/lib/makit/cli/generators/ruby_generator.rb +77 -77
  15. data/lib/makit/cli/generators/rust_generator.rb +50 -50
  16. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
  17. data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
  18. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
  19. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +41 -41
  20. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
  21. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
  22. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
  23. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
  24. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
  25. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
  26. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
  27. data/lib/makit/cli/main.rb +78 -78
  28. data/lib/makit/cli/pipeline_commands.rb +311 -311
  29. data/lib/makit/cli/project_commands.rb +868 -868
  30. data/lib/makit/cli/repository_commands.rb +661 -661
  31. data/lib/makit/cli/strategy_commands.rb +207 -207
  32. data/lib/makit/cli/utility_commands.rb +521 -521
  33. data/lib/makit/commands/factory.rb +359 -359
  34. data/lib/makit/commands/middleware/base.rb +73 -73
  35. data/lib/makit/commands/middleware/cache.rb +248 -248
  36. data/lib/makit/commands/middleware/command_logger.rb +312 -312
  37. data/lib/makit/commands/middleware/validator.rb +269 -269
  38. data/lib/makit/commands/request.rb +316 -316
  39. data/lib/makit/commands/result.rb +323 -323
  40. data/lib/makit/commands/runner.rb +386 -386
  41. data/lib/makit/commands/strategies/base.rb +171 -171
  42. data/lib/makit/commands/strategies/child_process.rb +162 -162
  43. data/lib/makit/commands/strategies/factory.rb +136 -136
  44. data/lib/makit/commands/strategies/synchronous.rb +139 -139
  45. data/lib/makit/commands.rb +50 -50
  46. data/lib/makit/configuration/dotnet_project.rb +48 -48
  47. data/lib/makit/configuration/gitlab_helper.rb +61 -61
  48. data/lib/makit/configuration/project.rb +292 -292
  49. data/lib/makit/configuration/rakefile_helper.rb +43 -43
  50. data/lib/makit/configuration/step.rb +34 -34
  51. data/lib/makit/configuration/timeout.rb +74 -74
  52. data/lib/makit/configuration.rb +21 -21
  53. data/lib/makit/content/default_gitignore.rb +7 -7
  54. data/lib/makit/content/default_gitignore.txt +225 -225
  55. data/lib/makit/content/default_rakefile.rb +13 -13
  56. data/lib/makit/content/gem_rakefile.rb +16 -16
  57. data/lib/makit/context.rb +1 -1
  58. data/lib/makit/data.rb +49 -49
  59. data/lib/makit/directories.rb +170 -170
  60. data/lib/makit/directory.rb +262 -262
  61. data/lib/makit/docs/files.rb +89 -89
  62. data/lib/makit/docs/rake.rb +102 -102
  63. data/lib/makit/dotnet/cli.rb +69 -69
  64. data/lib/makit/dotnet/project.rb +217 -217
  65. data/lib/makit/dotnet/solution.rb +38 -38
  66. data/lib/makit/dotnet/solution_classlib.rb +239 -239
  67. data/lib/makit/dotnet/solution_console.rb +264 -264
  68. data/lib/makit/dotnet/solution_maui.rb +354 -354
  69. data/lib/makit/dotnet/solution_wasm.rb +275 -275
  70. data/lib/makit/dotnet/solution_wpf.rb +304 -304
  71. data/lib/makit/dotnet.rb +102 -102
  72. data/lib/makit/email.rb +90 -90
  73. data/lib/makit/environment.rb +142 -142
  74. data/lib/makit/examples/runner.rb +370 -370
  75. data/lib/makit/exceptions.rb +45 -45
  76. data/lib/makit/fileinfo.rb +32 -32
  77. data/lib/makit/files.rb +43 -43
  78. data/lib/makit/gems.rb +40 -40
  79. data/lib/makit/git/cli.rb +78 -54
  80. data/lib/makit/git/repository.rb +100 -100
  81. data/lib/makit/git.rb +104 -104
  82. data/lib/makit/gitlab/pipeline.rb +857 -857
  83. data/lib/makit/gitlab/pipeline_service_impl.rb +1535 -1535
  84. data/lib/makit/gitlab_runner.rb +59 -59
  85. data/lib/makit/humanize.rb +218 -218
  86. data/lib/makit/indexer.rb +47 -47
  87. data/lib/makit/io/filesystem.rb +111 -111
  88. data/lib/makit/io/filesystem_service_impl.rb +337 -337
  89. data/lib/makit/lint.rb +212 -212
  90. data/lib/makit/logging/configuration.rb +309 -309
  91. data/lib/makit/logging/format_registry.rb +84 -84
  92. data/lib/makit/logging/formatters/base.rb +39 -39
  93. data/lib/makit/logging/formatters/console_formatter.rb +140 -140
  94. data/lib/makit/logging/formatters/json_formatter.rb +65 -65
  95. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
  96. data/lib/makit/logging/formatters/text_formatter.rb +64 -64
  97. data/lib/makit/logging/log_request.rb +119 -119
  98. data/lib/makit/logging/logger.rb +199 -199
  99. data/lib/makit/logging/sinks/base.rb +91 -91
  100. data/lib/makit/logging/sinks/console.rb +72 -72
  101. data/lib/makit/logging/sinks/file_sink.rb +92 -92
  102. data/lib/makit/logging/sinks/structured.rb +123 -123
  103. data/lib/makit/logging/sinks/unified_file_sink.rb +296 -296
  104. data/lib/makit/logging.rb +578 -578
  105. data/lib/makit/markdown.rb +75 -75
  106. data/lib/makit/mp/basic_object_mp.rb +17 -17
  107. data/lib/makit/mp/command_mp.rb +13 -13
  108. data/lib/makit/mp/command_request.mp.rb +17 -17
  109. data/lib/makit/mp/project_mp.rb +199 -199
  110. data/lib/makit/mp/string_mp.rb +205 -205
  111. data/lib/makit/nuget.rb +74 -74
  112. data/lib/makit/podman/podman.rb +458 -458
  113. data/lib/makit/podman/podman_service_impl.rb +1081 -1081
  114. data/lib/makit/port.rb +32 -32
  115. data/lib/makit/process.rb +377 -377
  116. data/lib/makit/protoc.rb +112 -112
  117. data/lib/makit/rake/cli.rb +196 -196
  118. data/lib/makit/rake/trace_controller.rb +174 -174
  119. data/lib/makit/rake.rb +81 -81
  120. data/lib/makit/ruby/cli.rb +185 -185
  121. data/lib/makit/ruby.rb +25 -25
  122. data/lib/makit/rubygems.rb +137 -0
  123. data/lib/makit/secrets/azure_key_vault.rb +322 -322
  124. data/lib/makit/secrets/azure_secrets.rb +183 -183
  125. data/lib/makit/secrets/local_secrets.rb +72 -72
  126. data/lib/makit/secrets/secrets_manager.rb +105 -105
  127. data/lib/makit/secrets.rb +16 -16
  128. data/lib/makit/serializer.rb +130 -130
  129. data/lib/makit/services/builder.rb +186 -186
  130. data/lib/makit/services/error_handler.rb +226 -226
  131. data/lib/makit/services/repository_manager.rb +367 -367
  132. data/lib/makit/services/validator.rb +112 -112
  133. data/lib/makit/setup/classlib.rb +101 -101
  134. data/lib/makit/setup/gem.rb +268 -268
  135. data/lib/makit/setup/pages.rb +11 -11
  136. data/lib/makit/setup/razorclasslib.rb +101 -101
  137. data/lib/makit/setup/runner.rb +54 -54
  138. data/lib/makit/setup.rb +5 -5
  139. data/lib/makit/show.rb +110 -110
  140. data/lib/makit/storage.rb +126 -126
  141. data/lib/makit/symbols.rb +175 -175
  142. data/lib/makit/task_info.rb +130 -130
  143. data/lib/makit/tasks/at_exit.rb +15 -15
  144. data/lib/makit/tasks/build.rb +22 -22
  145. data/lib/makit/tasks/bump.rb +7 -7
  146. data/lib/makit/tasks/clean.rb +13 -13
  147. data/lib/makit/tasks/configure.rb +10 -10
  148. data/lib/makit/tasks/format.rb +10 -10
  149. data/lib/makit/tasks/hook_manager.rb +443 -443
  150. data/lib/makit/tasks/info.rb +368 -368
  151. data/lib/makit/tasks/init.rb +49 -49
  152. data/lib/makit/tasks/integrate.rb +60 -56
  153. data/lib/makit/tasks/pull_incoming.rb +13 -13
  154. data/lib/makit/tasks/secrets.rb +7 -7
  155. data/lib/makit/tasks/setup.rb +16 -16
  156. data/lib/makit/tasks/sync.rb +14 -17
  157. data/lib/makit/tasks/tag.rb +27 -27
  158. data/lib/makit/tasks/task_monkey_patch.rb +81 -81
  159. data/lib/makit/tasks/test.rb +22 -22
  160. data/lib/makit/tasks/update.rb +18 -18
  161. data/lib/makit/tasks/version.rb +6 -6
  162. data/lib/makit/tasks.rb +24 -24
  163. data/lib/makit/test_cache.rb +239 -239
  164. data/lib/makit/tree.rb +37 -37
  165. data/lib/makit/v1/configuration/project_service_impl.rb +370 -370
  166. data/lib/makit/v1/git/git_repository_service_impl.rb +295 -295
  167. data/lib/makit/v1/makit.v1_pb.rb +35 -35
  168. data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
  169. data/lib/makit/v1/services/repository_manager_service_impl.rb +572 -572
  170. data/lib/makit/version.rb +661 -503
  171. data/lib/makit/version_util.rb +21 -21
  172. data/lib/makit/wix.rb +95 -95
  173. data/lib/makit/yaml.rb +29 -29
  174. data/lib/makit/zip.rb +17 -17
  175. data/lib/makit copy.rb +44 -44
  176. data/lib/makit.rb +115 -114
  177. metadata +3 -2
data/lib/makit/dotnet.rb CHANGED
@@ -1,102 +1,102 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "dotnet/solution"
4
- require_relative "dotnet/project"
5
- require_relative "dotnet/cli"
6
-
7
- module Makit
8
- # Main interface for .NET operations, providing a unified API for project management,
9
- # solution handling, and CLI operations.
10
- #
11
- # This class serves as a backward-compatible facade that delegates to the organized
12
- # DotNet::Project, DotNet::Solution, and DotNet::CLI classes while maintaining
13
- # the existing public API.
14
- #
15
- # @example Basic usage
16
- # Makit::DotNet.new_project("console", "MyApp", "src")
17
- # Makit::DotNet.build("src/MyApp.csproj")
18
- #
19
- class DotNet
20
- # Backward compatibility methods - delegate to appropriate classes
21
- # These methods maintain the existing API while using the new organized structure
22
-
23
- # Project-related methods
24
- def self.installed?
25
- Project.installed?
26
- end
27
-
28
- # Backward compatibility - deprecated method name
29
- def self.is_installed?
30
- installed?
31
- end
32
-
33
- def self.version
34
- Project.version
35
- end
36
-
37
- def self.project_short_name(project_path)
38
- Project.project_short_name(project_path)
39
- end
40
-
41
- def self.new_project(template, name, output, args = "")
42
- Project.new_project(template, name, output, args)
43
- end
44
-
45
- def self.set_project_target_framework(project_hint, target_framework)
46
- Project.set_project_target_framework(project_hint, target_framework)
47
- end
48
-
49
- def self.find_project(project_hint)
50
- Project.find_project(project_hint)
51
- end
52
-
53
- def self.add_package(project_path, package_name)
54
- Project.add_package(project_path, package_name)
55
- end
56
-
57
- def self.add_packages(project_path, packages)
58
- Project.add_packages(project_path, packages)
59
- end
60
-
61
- def self.add_reference(project_path, reference_path)
62
- Project.add_reference(project_path, reference_path)
63
- end
64
-
65
- def self.add_references(project_path, references)
66
- Project.add_references(project_path, references)
67
- end
68
-
69
- def self.build(project_path, configuration = "Release", output = "artifacts")
70
- Project.build(project_path, configuration, output)
71
- end
72
-
73
- def self.publish(project_path, configuration = "Release", output = "artifacts")
74
- Project.publish(project_path, configuration, output)
75
- end
76
-
77
- def self.test(project_path, configuration = "Release", output = "artifacts")
78
- Project.test(project_path, configuration, output)
79
- end
80
-
81
- def self.format_project(project_path)
82
- Project.format_project(project_path)
83
- end
84
-
85
- def self.upgrade_project(project_path)
86
- Project.upgrade_project(project_path)
87
- end
88
-
89
- # CLI-related methods
90
- def self.new_solution(name)
91
- CLI.new_solution(name)
92
- end
93
-
94
- def self.sln_add_projects(sln_name)
95
- CLI.sln_add_projects(sln_name)
96
- end
97
-
98
- def self.generate_docs
99
- CLI.generate_docs
100
- end
101
- end
102
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "dotnet/solution"
4
+ require_relative "dotnet/project"
5
+ require_relative "dotnet/cli"
6
+
7
+ module Makit
8
+ # Main interface for .NET operations, providing a unified API for project management,
9
+ # solution handling, and CLI operations.
10
+ #
11
+ # This class serves as a backward-compatible facade that delegates to the organized
12
+ # DotNet::Project, DotNet::Solution, and DotNet::CLI classes while maintaining
13
+ # the existing public API.
14
+ #
15
+ # @example Basic usage
16
+ # Makit::DotNet.new_project("console", "MyApp", "src")
17
+ # Makit::DotNet.build("src/MyApp.csproj")
18
+ #
19
+ class DotNet
20
+ # Backward compatibility methods - delegate to appropriate classes
21
+ # These methods maintain the existing API while using the new organized structure
22
+
23
+ # Project-related methods
24
+ def self.installed?
25
+ Project.installed?
26
+ end
27
+
28
+ # Backward compatibility - deprecated method name
29
+ def self.is_installed?
30
+ installed?
31
+ end
32
+
33
+ def self.version
34
+ Project.version
35
+ end
36
+
37
+ def self.project_short_name(project_path)
38
+ Project.project_short_name(project_path)
39
+ end
40
+
41
+ def self.new_project(template, name, output, args = "")
42
+ Project.new_project(template, name, output, args)
43
+ end
44
+
45
+ def self.set_project_target_framework(project_hint, target_framework)
46
+ Project.set_project_target_framework(project_hint, target_framework)
47
+ end
48
+
49
+ def self.find_project(project_hint)
50
+ Project.find_project(project_hint)
51
+ end
52
+
53
+ def self.add_package(project_path, package_name)
54
+ Project.add_package(project_path, package_name)
55
+ end
56
+
57
+ def self.add_packages(project_path, packages)
58
+ Project.add_packages(project_path, packages)
59
+ end
60
+
61
+ def self.add_reference(project_path, reference_path)
62
+ Project.add_reference(project_path, reference_path)
63
+ end
64
+
65
+ def self.add_references(project_path, references)
66
+ Project.add_references(project_path, references)
67
+ end
68
+
69
+ def self.build(project_path, configuration = "Release", output = "artifacts")
70
+ Project.build(project_path, configuration, output)
71
+ end
72
+
73
+ def self.publish(project_path, configuration = "Release", output = "artifacts")
74
+ Project.publish(project_path, configuration, output)
75
+ end
76
+
77
+ def self.test(project_path, configuration = "Release", output = "artifacts")
78
+ Project.test(project_path, configuration, output)
79
+ end
80
+
81
+ def self.format_project(project_path)
82
+ Project.format_project(project_path)
83
+ end
84
+
85
+ def self.upgrade_project(project_path)
86
+ Project.upgrade_project(project_path)
87
+ end
88
+
89
+ # CLI-related methods
90
+ def self.new_solution(name)
91
+ CLI.new_solution(name)
92
+ end
93
+
94
+ def self.sln_add_projects(sln_name)
95
+ CLI.sln_add_projects(sln_name)
96
+ end
97
+
98
+ def self.generate_docs
99
+ CLI.generate_docs
100
+ end
101
+ end
102
+ end
data/lib/makit/email.rb CHANGED
@@ -1,90 +1,90 @@
1
- # frozen_string_literal: true
2
-
3
- module Makit
4
- # Provides email functionality for sending notifications and reports.
5
- #
6
- # This class handles SMTP configuration and email delivery, with built-in support
7
- # for Gmail SMTP and graceful handling when the mail gem is not available.
8
- #
9
- # @example Basic usage
10
- # email = Makit::Email.new
11
- # email.configure_gmail_defaults
12
- # email.send(subject: "Build Complete", body: "Your build finished successfully")
13
- #
14
- class Email
15
- begin
16
- require "mail"
17
- MAIL_AVAILABLE = true
18
- rescue LoadError
19
- MAIL_AVAILABLE = false
20
- end
21
-
22
- def configure_gmail_defaults
23
- unless MAIL_AVAILABLE
24
- raise LoadError, "Mail gem is not available. Add 'mail' to your Gemfile to use email functionality."
25
- end
26
-
27
- Mail.defaults do
28
- delivery_method :smtp, {
29
- address: "smtp.gmail.com",
30
- port: 587,
31
- domain: "gmail.com",
32
- user_name: ENV.fetch("SMTP_USERNAME", nil),
33
- password: ENV.fetch("SMTP_PASSWORD", nil),
34
- authentication: "plain",
35
- enable_starttls_auto: true,
36
- }
37
- end
38
- end
39
-
40
- def send_test_email(subject:, body:, to: ENV.fetch("MAKIT_EMAIL_RECIPIENT", nil))
41
- unless MAIL_AVAILABLE
42
- raise LoadError, "Mail gem is not available. Add 'mail' to your Gemfile to use email functionality."
43
- end
44
-
45
- raise ArgumentError, "Recipient email not set. Please set MAKIT_EMAIL_RECIPIENT environment variable" unless to
46
-
47
- mail = Mail.new do
48
- from ENV.fetch("SMTP_USERNAME", nil)
49
- to to
50
- subject subject
51
- body body
52
- end
53
-
54
- begin
55
- mail.deliver!
56
- true
57
- rescue StandardError => e
58
- puts "Failed to send email: #{e.message}"
59
- false
60
- end
61
- end
62
-
63
- def send(subject:, body:)
64
- send_to(to: ENV.fetch("MAKIT_EMAIL_RECIPIENT", nil), subject: subject, body: body)
65
- end
66
-
67
- def send_to(to:, subject:, body:)
68
- unless MAIL_AVAILABLE
69
- raise LoadError, "Mail gem is not available. Add 'mail' to your Gemfile to use email functionality."
70
- end
71
-
72
- raise ArgumentError, "Recipient email not set" unless to
73
-
74
- mail = Mail.new do
75
- from ENV.fetch("SMTP_USERNAME", nil)
76
- to to
77
- subject subject
78
- body body
79
- end
80
-
81
- begin
82
- mail.deliver!
83
- true
84
- rescue StandardError => e
85
- puts "Failed to send email: #{e.message}"
86
- false
87
- end
88
- end
89
- end
90
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Makit
4
+ # Provides email functionality for sending notifications and reports.
5
+ #
6
+ # This class handles SMTP configuration and email delivery, with built-in support
7
+ # for Gmail SMTP and graceful handling when the mail gem is not available.
8
+ #
9
+ # @example Basic usage
10
+ # email = Makit::Email.new
11
+ # email.configure_gmail_defaults
12
+ # email.send(subject: "Build Complete", body: "Your build finished successfully")
13
+ #
14
+ class Email
15
+ begin
16
+ require "mail"
17
+ MAIL_AVAILABLE = true
18
+ rescue LoadError
19
+ MAIL_AVAILABLE = false
20
+ end
21
+
22
+ def configure_gmail_defaults
23
+ unless MAIL_AVAILABLE
24
+ raise LoadError, "Mail gem is not available. Add 'mail' to your Gemfile to use email functionality."
25
+ end
26
+
27
+ Mail.defaults do
28
+ delivery_method :smtp, {
29
+ address: "smtp.gmail.com",
30
+ port: 587,
31
+ domain: "gmail.com",
32
+ user_name: ENV.fetch("SMTP_USERNAME", nil),
33
+ password: ENV.fetch("SMTP_PASSWORD", nil),
34
+ authentication: "plain",
35
+ enable_starttls_auto: true,
36
+ }
37
+ end
38
+ end
39
+
40
+ def send_test_email(subject:, body:, to: ENV.fetch("MAKIT_EMAIL_RECIPIENT", nil))
41
+ unless MAIL_AVAILABLE
42
+ raise LoadError, "Mail gem is not available. Add 'mail' to your Gemfile to use email functionality."
43
+ end
44
+
45
+ raise ArgumentError, "Recipient email not set. Please set MAKIT_EMAIL_RECIPIENT environment variable" unless to
46
+
47
+ mail = Mail.new do
48
+ from ENV.fetch("SMTP_USERNAME", nil)
49
+ to to
50
+ subject subject
51
+ body body
52
+ end
53
+
54
+ begin
55
+ mail.deliver!
56
+ true
57
+ rescue StandardError => e
58
+ puts "Failed to send email: #{e.message}"
59
+ false
60
+ end
61
+ end
62
+
63
+ def send(subject:, body:)
64
+ send_to(to: ENV.fetch("MAKIT_EMAIL_RECIPIENT", nil), subject: subject, body: body)
65
+ end
66
+
67
+ def send_to(to:, subject:, body:)
68
+ unless MAIL_AVAILABLE
69
+ raise LoadError, "Mail gem is not available. Add 'mail' to your Gemfile to use email functionality."
70
+ end
71
+
72
+ raise ArgumentError, "Recipient email not set" unless to
73
+
74
+ mail = Mail.new do
75
+ from ENV.fetch("SMTP_USERNAME", nil)
76
+ to to
77
+ subject subject
78
+ body body
79
+ end
80
+
81
+ begin
82
+ mail.deliver!
83
+ true
84
+ rescue StandardError => e
85
+ puts "Failed to send email: #{e.message}"
86
+ false
87
+ end
88
+ end
89
+ end
90
+ end
@@ -1,142 +1,142 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "directory"
4
- # This module provides classes for the Makit gem.
5
- module Makit
6
- # This class provide methods for working with the system Environment.
7
- #
8
- class Environment
9
- def self.current_user
10
- if Makit::Environment.is_windows?
11
- end
12
- `whoami`
13
- end
14
-
15
- def self.which(name)
16
- return name if File.exist?(name)
17
-
18
- ["", ".exe", ".bat", ".cmd"].each do |ext|
19
- aname = name + ext
20
- return aname if File.exist?(aname)
21
-
22
- ENV["PATH"].split(File::PATH_SEPARATOR).each do |path|
23
- apath = "#{path.gsub("\\", "/")}/#{aname}".gsub("//", "/")
24
- return apath if File.exist?(apath)
25
- end
26
- end
27
- ""
28
- end
29
-
30
- def self.constants_hash
31
- constants = {}
32
- # collect all constants that are all uppercase
33
- Object.constants.each do |c|
34
- # puts "#{c} = #{Object.const_get(c)}" }
35
- constants[c] = Object.const_get(c) if c == c.upcase
36
- end
37
- # Object.constants.each { |c| constants[c] = Object.const_get(c)}# puts "#{c} = #{Object.const_get(c)}" }
38
- constants
39
- end
40
-
41
- def self.rake_file_name
42
- caller_locations.each do |location|
43
- return location.absolute_path if location.absolute_path&.end_with?("Rakefile")
44
- end
45
- nil
46
- end
47
-
48
- def self.gem_data_directory
49
- File.join(Dir.home, ".makit")
50
- end
51
-
52
- def self.project_root_directory
53
- if Makit::Environment.rake_file_name.nil?
54
- Makit::Directory.find_directory_with_pattern(File.dirname(__FILE__), "Rakefile")
55
- # lass Directory
56
- # def self.find_directory_with_pattern(starting_directory, pattern)
57
- # nil
58
- else
59
- File.dirname(Makit::Environment.rake_file_name)
60
- end
61
- end
62
-
63
- def self.get_relative_directory(url)
64
- url = url.gsub("https://", "").gsub("http://", "")
65
- url.gsub("gitlab.com", "gitlab")
66
- end
67
-
68
- def self.get_code_root
69
- # user home directory + "code"
70
- File.join(Dir.home, "code")
71
- end
72
-
73
- def self.get_work_directory(url)
74
- raise "invalid url" unless url.include? "https://"
75
-
76
- url.gsub("https://", "").gsub("http://", "")
77
- # url = url.gsub("gitlab.com","gitlab")
78
- end
79
-
80
- def self.get_work_base_directory
81
- File.join(Dir.home, ".makit", "work")
82
- end
83
-
84
- def self.is_windows?
85
- RbConfig::CONFIG["host_os"] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/
86
- end
87
-
88
- def self.is_mac?
89
- RbConfig::CONFIG["host_os"] =~ /darwin/
90
- end
91
-
92
- def self.is_linux?
93
- RbConfig::CONFIG["host_os"] =~ /linux/
94
- end
95
-
96
- def self.get_os
97
- case RbConfig::CONFIG["host_os"]
98
- when /linux/
99
- "Linux"
100
- when /darwin/
101
- "macOS"
102
- when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
103
- "Windows"
104
- else
105
- "Unknown"
106
- end
107
- end
108
-
109
- def self.get_runtime_identifier
110
- os = RbConfig::CONFIG["host_os"]
111
- cpu = RbConfig::CONFIG["host_cpu"]
112
-
113
- case os
114
- when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
115
- os_rid = "win"
116
- when /darwin|mac os/
117
- os_rid = "osx"
118
- when /linux/
119
- os_rid = "linux"
120
- when /solaris|bsd/
121
- os_rid = "unix"
122
- else
123
- raise "Unknown operating system: host_os=#{os}"
124
- end
125
-
126
- case cpu
127
- when /x86_64|amd64|x64/
128
- arch_rid = "x64"
129
- when /i686|i386/
130
- arch_rid = "x86"
131
- # when /arm/
132
- # arch_rid = "arm"
133
- when /aarch64|arm64/
134
- arch_rid = "arm64"
135
- else
136
- raise "Unknown architecture: host_cpu=#{cpu}"
137
- end
138
-
139
- "#{os_rid}-#{arch_rid}"
140
- end
141
- end
142
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "directory"
4
+ # This module provides classes for the Makit gem.
5
+ module Makit
6
+ # This class provide methods for working with the system Environment.
7
+ #
8
+ class Environment
9
+ def self.current_user
10
+ if Makit::Environment.is_windows?
11
+ end
12
+ `whoami`
13
+ end
14
+
15
+ def self.which(name)
16
+ return name if File.exist?(name)
17
+
18
+ ["", ".exe", ".bat", ".cmd"].each do |ext|
19
+ aname = name + ext
20
+ return aname if File.exist?(aname)
21
+
22
+ ENV["PATH"].split(File::PATH_SEPARATOR).each do |path|
23
+ apath = "#{path.gsub("\\", "/")}/#{aname}".gsub("//", "/")
24
+ return apath if File.exist?(apath)
25
+ end
26
+ end
27
+ ""
28
+ end
29
+
30
+ def self.constants_hash
31
+ constants = {}
32
+ # collect all constants that are all uppercase
33
+ Object.constants.each do |c|
34
+ # puts "#{c} = #{Object.const_get(c)}" }
35
+ constants[c] = Object.const_get(c) if c == c.upcase
36
+ end
37
+ # Object.constants.each { |c| constants[c] = Object.const_get(c)}# puts "#{c} = #{Object.const_get(c)}" }
38
+ constants
39
+ end
40
+
41
+ def self.rake_file_name
42
+ caller_locations.each do |location|
43
+ return location.absolute_path if location.absolute_path&.end_with?("Rakefile")
44
+ end
45
+ nil
46
+ end
47
+
48
+ def self.gem_data_directory
49
+ File.join(Dir.home, ".makit")
50
+ end
51
+
52
+ def self.project_root_directory
53
+ if Makit::Environment.rake_file_name.nil?
54
+ Makit::Directory.find_directory_with_pattern(File.dirname(__FILE__), "Rakefile")
55
+ # lass Directory
56
+ # def self.find_directory_with_pattern(starting_directory, pattern)
57
+ # nil
58
+ else
59
+ File.dirname(Makit::Environment.rake_file_name)
60
+ end
61
+ end
62
+
63
+ def self.get_relative_directory(url)
64
+ url = url.gsub("https://", "").gsub("http://", "")
65
+ url.gsub("gitlab.com", "gitlab")
66
+ end
67
+
68
+ def self.get_code_root
69
+ # user home directory + "code"
70
+ File.join(Dir.home, "code")
71
+ end
72
+
73
+ def self.get_work_directory(url)
74
+ raise "invalid url" unless url.include? "https://"
75
+
76
+ url.gsub("https://", "").gsub("http://", "")
77
+ # url = url.gsub("gitlab.com","gitlab")
78
+ end
79
+
80
+ def self.get_work_base_directory
81
+ File.join(Dir.home, ".makit", "work")
82
+ end
83
+
84
+ def self.is_windows?
85
+ RbConfig::CONFIG["host_os"] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/
86
+ end
87
+
88
+ def self.is_mac?
89
+ RbConfig::CONFIG["host_os"] =~ /darwin/
90
+ end
91
+
92
+ def self.is_linux?
93
+ RbConfig::CONFIG["host_os"] =~ /linux/
94
+ end
95
+
96
+ def self.get_os
97
+ case RbConfig::CONFIG["host_os"]
98
+ when /linux/
99
+ "Linux"
100
+ when /darwin/
101
+ "macOS"
102
+ when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
103
+ "Windows"
104
+ else
105
+ "Unknown"
106
+ end
107
+ end
108
+
109
+ def self.get_runtime_identifier
110
+ os = RbConfig::CONFIG["host_os"]
111
+ cpu = RbConfig::CONFIG["host_cpu"]
112
+
113
+ case os
114
+ when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
115
+ os_rid = "win"
116
+ when /darwin|mac os/
117
+ os_rid = "osx"
118
+ when /linux/
119
+ os_rid = "linux"
120
+ when /solaris|bsd/
121
+ os_rid = "unix"
122
+ else
123
+ raise "Unknown operating system: host_os=#{os}"
124
+ end
125
+
126
+ case cpu
127
+ when /x86_64|amd64|x64/
128
+ arch_rid = "x64"
129
+ when /i686|i386/
130
+ arch_rid = "x86"
131
+ # when /arm/
132
+ # arch_rid = "arm"
133
+ when /aarch64|arm64/
134
+ arch_rid = "arm64"
135
+ else
136
+ raise "Unknown architecture: host_cpu=#{cpu}"
137
+ end
138
+
139
+ "#{os_rid}-#{arch_rid}"
140
+ end
141
+ end
142
+ end