makit 0.0.140 → 0.0.142

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 (153) 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/cli/build_commands.rb +500 -500
  7. data/lib/makit/cli/generators/base_generator.rb +74 -74
  8. data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
  9. data/lib/makit/cli/generators/generator_factory.rb +49 -49
  10. data/lib/makit/cli/generators/node_generator.rb +50 -50
  11. data/lib/makit/cli/generators/ruby_generator.rb +77 -77
  12. data/lib/makit/cli/generators/rust_generator.rb +50 -50
  13. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
  14. data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
  15. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
  16. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +40 -40
  17. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
  18. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
  19. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
  20. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
  21. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
  22. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
  23. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
  24. data/lib/makit/cli/main.rb +69 -69
  25. data/lib/makit/cli/project_commands.rb +868 -868
  26. data/lib/makit/cli/repository_commands.rb +661 -661
  27. data/lib/makit/cli/strategy_commands.rb +203 -203
  28. data/lib/makit/cli/utility_commands.rb +521 -521
  29. data/lib/makit/commands/factory.rb +359 -359
  30. data/lib/makit/commands/middleware/base.rb +73 -73
  31. data/lib/makit/commands/middleware/cache.rb +248 -248
  32. data/lib/makit/commands/middleware/command_logger.rb +312 -312
  33. data/lib/makit/commands/middleware/validator.rb +269 -269
  34. data/lib/makit/commands/request.rb +316 -316
  35. data/lib/makit/commands/result.rb +323 -323
  36. data/lib/makit/commands/runner.rb +388 -385
  37. data/lib/makit/commands/strategies/base.rb +171 -171
  38. data/lib/makit/commands/strategies/child_process.rb +165 -165
  39. data/lib/makit/commands/strategies/factory.rb +136 -136
  40. data/lib/makit/commands/strategies/synchronous.rb +139 -139
  41. data/lib/makit/commands.rb +50 -50
  42. data/lib/makit/configuration/dotnet_project.rb +12 -12
  43. data/lib/makit/configuration/gitlab_helper.rb +58 -58
  44. data/lib/makit/configuration/project.rb +168 -168
  45. data/lib/makit/configuration/rakefile_helper.rb +43 -43
  46. data/lib/makit/configuration/step.rb +34 -34
  47. data/lib/makit/configuration/timeout.rb +74 -74
  48. data/lib/makit/configuration.rb +15 -15
  49. data/lib/makit/content/default_gitignore.rb +7 -7
  50. data/lib/makit/content/default_gitignore.txt +225 -225
  51. data/lib/makit/content/default_rakefile.rb +13 -13
  52. data/lib/makit/content/gem_rakefile.rb +16 -16
  53. data/lib/makit/context.rb +1 -1
  54. data/lib/makit/data.rb +49 -49
  55. data/lib/makit/directories.rb +140 -140
  56. data/lib/makit/directory.rb +262 -262
  57. data/lib/makit/docs/files.rb +89 -89
  58. data/lib/makit/docs/rake.rb +102 -102
  59. data/lib/makit/dotnet/cli.rb +69 -69
  60. data/lib/makit/dotnet/project.rb +217 -217
  61. data/lib/makit/dotnet/solution.rb +38 -38
  62. data/lib/makit/dotnet/solution_classlib.rb +239 -239
  63. data/lib/makit/dotnet/solution_console.rb +264 -264
  64. data/lib/makit/dotnet/solution_maui.rb +354 -354
  65. data/lib/makit/dotnet/solution_wasm.rb +275 -275
  66. data/lib/makit/dotnet/solution_wpf.rb +304 -304
  67. data/lib/makit/dotnet.rb +102 -102
  68. data/lib/makit/email.rb +90 -90
  69. data/lib/makit/environment.rb +142 -142
  70. data/lib/makit/examples/runner.rb +370 -370
  71. data/lib/makit/exceptions.rb +45 -45
  72. data/lib/makit/fileinfo.rb +24 -24
  73. data/lib/makit/files.rb +43 -43
  74. data/lib/makit/gems.rb +40 -40
  75. data/lib/makit/git/cli.rb +54 -54
  76. data/lib/makit/git/repository.rb +90 -90
  77. data/lib/makit/git.rb +98 -98
  78. data/lib/makit/gitlab_runner.rb +59 -59
  79. data/lib/makit/humanize.rb +137 -137
  80. data/lib/makit/indexer.rb +47 -47
  81. data/lib/makit/logging/configuration.rb +308 -308
  82. data/lib/makit/logging/format_registry.rb +84 -84
  83. data/lib/makit/logging/formatters/base.rb +39 -39
  84. data/lib/makit/logging/formatters/console_formatter.rb +140 -140
  85. data/lib/makit/logging/formatters/json_formatter.rb +65 -65
  86. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
  87. data/lib/makit/logging/formatters/text_formatter.rb +64 -64
  88. data/lib/makit/logging/log_request.rb +119 -119
  89. data/lib/makit/logging/logger.rb +199 -199
  90. data/lib/makit/logging/sinks/base.rb +91 -91
  91. data/lib/makit/logging/sinks/console.rb +72 -72
  92. data/lib/makit/logging/sinks/file_sink.rb +92 -92
  93. data/lib/makit/logging/sinks/structured.rb +123 -123
  94. data/lib/makit/logging/sinks/unified_file_sink.rb +296 -296
  95. data/lib/makit/logging.rb +565 -565
  96. data/lib/makit/markdown.rb +75 -75
  97. data/lib/makit/mp/basic_object_mp.rb +17 -17
  98. data/lib/makit/mp/command_mp.rb +13 -13
  99. data/lib/makit/mp/command_request.mp.rb +17 -17
  100. data/lib/makit/mp/project_mp.rb +199 -199
  101. data/lib/makit/mp/string_mp.rb +199 -191
  102. data/lib/makit/nuget.rb +74 -74
  103. data/lib/makit/port.rb +32 -32
  104. data/lib/makit/process.rb +163 -163
  105. data/lib/makit/protoc.rb +107 -107
  106. data/lib/makit/rake/cli.rb +196 -196
  107. data/lib/makit/rake/trace_controller.rb +173 -173
  108. data/lib/makit/rake.rb +80 -80
  109. data/lib/makit/ruby/cli.rb +185 -185
  110. data/lib/makit/ruby.rb +25 -25
  111. data/lib/makit/secrets.rb +51 -51
  112. data/lib/makit/serializer.rb +130 -130
  113. data/lib/makit/services/builder.rb +186 -186
  114. data/lib/makit/services/error_handler.rb +226 -226
  115. data/lib/makit/services/repository_manager.rb +231 -231
  116. data/lib/makit/services/validator.rb +112 -112
  117. data/lib/makit/setup/classlib.rb +101 -101
  118. data/lib/makit/setup/gem.rb +268 -268
  119. data/lib/makit/setup/razorclasslib.rb +101 -101
  120. data/lib/makit/setup/runner.rb +54 -54
  121. data/lib/makit/setup.rb +5 -5
  122. data/lib/makit/show.rb +110 -110
  123. data/lib/makit/storage.rb +126 -126
  124. data/lib/makit/symbols.rb +170 -170
  125. data/lib/makit/task_info.rb +130 -130
  126. data/lib/makit/tasks/at_exit.rb +15 -15
  127. data/lib/makit/tasks/build.rb +22 -22
  128. data/lib/makit/tasks/clean.rb +13 -13
  129. data/lib/makit/tasks/configure.rb +10 -10
  130. data/lib/makit/tasks/format.rb +10 -10
  131. data/lib/makit/tasks/hook_manager.rb +443 -443
  132. data/lib/makit/tasks/init.rb +49 -49
  133. data/lib/makit/tasks/integrate.rb +29 -29
  134. data/lib/makit/tasks/pull_incoming.rb +13 -13
  135. data/lib/makit/tasks/setup.rb +13 -13
  136. data/lib/makit/tasks/sync.rb +17 -17
  137. data/lib/makit/tasks/tag.rb +16 -16
  138. data/lib/makit/tasks/task_monkey_patch.rb +81 -81
  139. data/lib/makit/tasks/test.rb +22 -22
  140. data/lib/makit/tasks/update.rb +18 -18
  141. data/lib/makit/tasks.rb +20 -20
  142. data/lib/makit/test_cache.rb +239 -239
  143. data/lib/makit/tree.rb +37 -37
  144. data/lib/makit/v1/makit.v1_pb.rb +35 -35
  145. data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
  146. data/lib/makit/version.rb +99 -99
  147. data/lib/makit/version_util.rb +21 -21
  148. data/lib/makit/wix.rb +95 -95
  149. data/lib/makit/yaml.rb +29 -29
  150. data/lib/makit/zip.rb +17 -17
  151. data/lib/makit copy.rb +44 -44
  152. data/lib/makit.rb +43 -42
  153. metadata +2 -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