makit 0.0.138 → 0.0.140

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