makit 0.0.112 → 0.0.128

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