makit 0.0.99 → 0.0.112

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +41 -0
  3. data/exe/makit +5 -0
  4. data/lib/makit/apache.rb +28 -32
  5. data/lib/makit/cli/build_commands.rb +500 -0
  6. data/lib/makit/cli/generators/base_generator.rb +74 -0
  7. data/lib/makit/cli/generators/dotnet_generator.rb +50 -0
  8. data/lib/makit/cli/generators/generator_factory.rb +49 -0
  9. data/lib/makit/cli/generators/node_generator.rb +50 -0
  10. data/lib/makit/cli/generators/ruby_generator.rb +77 -0
  11. data/lib/makit/cli/generators/rust_generator.rb +50 -0
  12. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -0
  13. data/lib/makit/cli/generators/templates/node_templates.rb +161 -0
  14. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -0
  15. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +40 -0
  16. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -0
  17. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -0
  18. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -0
  19. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -0
  20. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -0
  21. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -0
  22. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -0
  23. data/lib/makit/cli/main.rb +62 -33
  24. data/lib/makit/cli/project_commands.rb +868 -0
  25. data/lib/makit/cli/repository_commands.rb +661 -0
  26. data/lib/makit/cli/utility_commands.rb +521 -0
  27. data/lib/makit/commands/factory.rb +359 -0
  28. data/lib/makit/commands/middleware/base.rb +73 -0
  29. data/lib/makit/commands/middleware/cache.rb +248 -0
  30. data/lib/makit/commands/middleware/command_logger.rb +320 -0
  31. data/lib/makit/commands/middleware/unified_logger.rb +243 -0
  32. data/lib/makit/commands/middleware/validator.rb +269 -0
  33. data/lib/makit/commands/request.rb +254 -0
  34. data/lib/makit/commands/result.rb +323 -0
  35. data/lib/makit/commands/runner.rb +337 -0
  36. data/lib/makit/commands/strategies/base.rb +160 -0
  37. data/lib/makit/commands/strategies/synchronous.rb +134 -0
  38. data/lib/makit/commands.rb +51 -21
  39. data/lib/makit/configuration/gitlab_helper.rb +60 -0
  40. data/lib/makit/configuration/project.rb +127 -0
  41. data/lib/makit/configuration/rakefile_helper.rb +43 -0
  42. data/lib/makit/configuration/step.rb +34 -0
  43. data/lib/makit/configuration.rb +14 -0
  44. data/lib/makit/content/default_gitignore.rb +7 -5
  45. data/lib/makit/content/default_rakefile.rb +13 -11
  46. data/lib/makit/content/gem_rakefile.rb +16 -14
  47. data/lib/makit/context.rb +1 -0
  48. data/lib/makit/data.rb +49 -50
  49. data/lib/makit/directories.rb +141 -145
  50. data/lib/makit/directory.rb +262 -276
  51. data/lib/makit/docs/files.rb +89 -94
  52. data/lib/makit/docs/rake.rb +102 -106
  53. data/lib/makit/dotnet/cli.rb +65 -0
  54. data/lib/makit/dotnet/project.rb +153 -0
  55. data/lib/makit/dotnet/solution.rb +38 -0
  56. data/lib/makit/dotnet/solution_classlib.rb +239 -0
  57. data/lib/makit/dotnet/solution_console.rb +264 -0
  58. data/lib/makit/dotnet/solution_maui.rb +354 -0
  59. data/lib/makit/dotnet/solution_wasm.rb +275 -0
  60. data/lib/makit/dotnet/solution_wpf.rb +304 -0
  61. data/lib/makit/dotnet.rb +102 -219
  62. data/lib/makit/email.rb +90 -61
  63. data/lib/makit/environment.rb +142 -139
  64. data/lib/makit/examples/runner.rb +370 -0
  65. data/lib/makit/exceptions.rb +45 -0
  66. data/lib/makit/fileinfo.rb +24 -26
  67. data/lib/makit/files.rb +43 -47
  68. data/lib/makit/gems.rb +29 -28
  69. data/lib/makit/git/cli.rb +54 -0
  70. data/lib/makit/git/repository.rb +90 -0
  71. data/lib/makit/git.rb +98 -145
  72. data/lib/makit/gitlab_runner.rb +59 -60
  73. data/lib/makit/humanize.rb +137 -129
  74. data/lib/makit/indexer.rb +47 -56
  75. data/lib/makit/logging/configuration.rb +305 -0
  76. data/lib/makit/logging/format_registry.rb +84 -0
  77. data/lib/makit/logging/formatters/base.rb +39 -0
  78. data/lib/makit/logging/formatters/console_formatter.rb +140 -0
  79. data/lib/makit/logging/formatters/json_formatter.rb +65 -0
  80. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -0
  81. data/lib/makit/logging/formatters/text_formatter.rb +64 -0
  82. data/lib/makit/logging/log_request.rb +115 -0
  83. data/lib/makit/logging/logger.rb +163 -0
  84. data/lib/makit/logging/sinks/base.rb +91 -0
  85. data/lib/makit/logging/sinks/console.rb +72 -0
  86. data/lib/makit/logging/sinks/file_sink.rb +92 -0
  87. data/lib/makit/logging/sinks/structured.rb +129 -0
  88. data/lib/makit/logging/sinks/unified_file_sink.rb +303 -0
  89. data/lib/makit/logging.rb +530 -106
  90. data/lib/makit/markdown.rb +75 -75
  91. data/lib/makit/mp/basic_object_mp.rb +17 -16
  92. data/lib/makit/mp/command_mp.rb +13 -13
  93. data/lib/makit/mp/command_request.mp.rb +17 -16
  94. data/lib/makit/mp/project_mp.rb +199 -210
  95. data/lib/makit/mp/string_mp.rb +193 -176
  96. data/lib/makit/nuget.rb +74 -72
  97. data/lib/makit/port.rb +32 -34
  98. data/lib/makit/process.rb +163 -65
  99. data/lib/makit/protoc.rb +107 -104
  100. data/lib/makit/rake/cli.rb +196 -0
  101. data/lib/makit/rake.rb +25 -25
  102. data/lib/makit/ruby/cli.rb +185 -0
  103. data/lib/makit/ruby.rb +25 -0
  104. data/lib/makit/secrets.rb +51 -51
  105. data/lib/makit/serializer.rb +130 -115
  106. data/lib/makit/services/builder.rb +186 -0
  107. data/lib/makit/services/error_handler.rb +226 -0
  108. data/lib/makit/services/repository_manager.rb +229 -0
  109. data/lib/makit/services/validator.rb +112 -0
  110. data/lib/makit/setup/classlib.rb +53 -0
  111. data/lib/makit/setup/gem.rb +263 -0
  112. data/lib/makit/setup/runner.rb +45 -0
  113. data/lib/makit/setup.rb +5 -0
  114. data/lib/makit/show.rb +110 -110
  115. data/lib/makit/storage.rb +126 -131
  116. data/lib/makit/symbols.rb +170 -149
  117. data/lib/makit/task_info.rb +128 -86
  118. data/lib/makit/tasks/at_exit.rb +13 -0
  119. data/lib/makit/tasks/build.rb +19 -0
  120. data/lib/makit/tasks/clean.rb +11 -0
  121. data/lib/makit/tasks/hook_manager.rb +393 -0
  122. data/lib/makit/tasks/init.rb +47 -0
  123. data/lib/makit/tasks/integrate.rb +17 -0
  124. data/lib/makit/tasks/pull_incoming.rb +11 -0
  125. data/lib/makit/tasks/setup.rb +6 -0
  126. data/lib/makit/tasks/sync.rb +12 -0
  127. data/lib/makit/tasks/tag.rb +15 -0
  128. data/lib/makit/tasks/task_monkey_patch.rb +79 -0
  129. data/lib/makit/tasks.rb +15 -150
  130. data/lib/makit/test_cache.rb +239 -0
  131. data/lib/makit/tree.rb +37 -37
  132. data/lib/makit/v1/makit.v1_pb.rb +3 -4
  133. data/lib/makit/v1/makit.v1_services_pb.rb +27 -25
  134. data/lib/makit/version.rb +5 -61
  135. data/lib/makit/version_util.rb +21 -0
  136. data/lib/makit/wix.rb +95 -95
  137. data/lib/makit/yaml.rb +29 -17
  138. data/lib/makit/zip.rb +17 -17
  139. data/lib/makit copy.rb +44 -0
  140. data/lib/makit.rb +40 -267
  141. metadata +117 -110
  142. data/lib/makit/cli/clean.rb +0 -14
  143. data/lib/makit/cli/clone.rb +0 -59
  144. data/lib/makit/cli/init.rb +0 -38
  145. data/lib/makit/cli/make.rb +0 -54
  146. data/lib/makit/cli/new.rb +0 -37
  147. data/lib/makit/cli/nuget_cache.rb +0 -38
  148. data/lib/makit/cli/pull.rb +0 -31
  149. data/lib/makit/cli/setup.rb +0 -71
  150. data/lib/makit/cli/work.rb +0 -21
  151. data/lib/makit/command_runner.rb +0 -404
  152. data/lib/makit/content/default_gitignore.txt +0 -222
data/lib/makit/email.rb CHANGED
@@ -1,61 +1,90 @@
1
- require 'mail'
2
-
3
- module Makit
4
- class Email
5
- def configure_gmail_defaults
6
- Mail.defaults do
7
- delivery_method :smtp, {
8
- address: 'smtp.gmail.com',
9
- port: 587,
10
- domain: 'gmail.com',
11
- user_name: ENV['SMTP_USERNAME'],
12
- password: ENV['SMTP_PASSWORD'],
13
- authentication: 'plain',
14
- enable_starttls_auto: true
15
- }
16
- end
17
- end
18
-
19
- def send_test_email(to: ENV['MAKIT_EMAIL_RECIPIENT'], subject:, body:)
20
- raise ArgumentError, "Recipient email not set. Please set MAKIT_EMAIL_RECIPIENT environment variable" unless to
21
-
22
- mail = Mail.new do
23
- from ENV['SMTP_USERNAME']
24
- to to
25
- subject subject
26
- body body
27
- end
28
-
29
- begin
30
- mail.deliver!
31
- true
32
- rescue => e
33
- puts "Failed to send email: #{e.message}"
34
- false
35
- end
36
- end
37
-
38
- def send(subject:, body:)
39
- send_to(to: ENV['MAKIT_EMAIL_RECIPIENT'], subject: subject, body: body)
40
- end
41
-
42
- def send_to(to:, subject:, body:)
43
- raise ArgumentError, "Recipient email not set" unless to
44
-
45
- mail = Mail.new do
46
- from ENV['SMTP_USERNAME']
47
- to to
48
- subject subject
49
- body body
50
- end
51
-
52
- begin
53
- mail.deliver!
54
- true
55
- rescue => e
56
- puts "Failed to send email: #{e.message}"
57
- false
58
- end
59
- end
60
- end
61
- 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,139 +1,142 @@
1
- # frozen_string_literal: true
2
-
3
- require "sorted_set"
4
- require_relative "directory"
5
- # This module provides classes for the Makit gem.
6
- module Makit
7
- # This class provide methods for working with the system Environment.
8
- #
9
- class Environment
10
- def self.current_user
11
- if Makit::Environment.is_windows?
12
- `whoami`
13
- else
14
- `whoami`
15
- end
16
- end
17
-
18
- def self.which(name)
19
- return name if File.exist?(name)
20
-
21
- ["", ".exe", ".bat", ".cmd"].each do |ext|
22
- aname = name + ext
23
- return aname if File.exist?(aname)
24
-
25
- ENV["PATH"].split(File::PATH_SEPARATOR).each do |path|
26
- apath = "#{path.gsub("\\", "/")}/#{aname}".gsub("//", "/")
27
- return apath if File.exist?(apath)
28
- end
29
- end
30
- ""
31
- end
32
-
33
- def self.constants_hash
34
- constants = {}
35
- # collect all constants that are all uppercase
36
- Object.constants.each { |c| constants[c] = Object.const_get(c) if c == c.upcase } # puts "#{c} = #{Object.const_get(c)}" }
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
- gem_data_directory = File.join(Dir.home, ".makit")
50
- end
51
-
52
- def self.project_root_directory
53
- if !Makit::Environment.rake_file_name.nil?
54
- File.dirname(Makit::Environment.rake_file_name)
55
- else
56
- Makit::Directory.find_directory_with_pattern(File.dirname(__FILE__), "Rakefile")
57
- # lass Directory
58
- # def self.find_directory_with_pattern(starting_directory, pattern)
59
- # nil
60
- end
61
- end
62
-
63
- def self.get_relative_directory(url)
64
- url = url.gsub("https://", "").gsub("http://", "")
65
- url = url.gsub("gitlab.com", "gitlab")
66
- url
67
- end
68
-
69
- def self.get_code_root
70
- # user home directory + "code"
71
- code_root = File.join(Dir.home, "code")
72
- end
73
-
74
- def self.get_work_directory(url)
75
- raise "invalid url" if !url.include? "https://"
76
- url = url.gsub("https://", "").gsub("http://", "")
77
- #url = url.gsub("gitlab.com","gitlab")
78
- url
79
- end
80
-
81
- def self.is_windows?
82
- RbConfig::CONFIG["host_os"] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/
83
- end
84
-
85
- def self.is_mac?
86
- RbConfig::CONFIG["host_os"] =~ /darwin/
87
- end
88
-
89
- def self.is_linux?
90
- RbConfig::CONFIG["host_os"] =~ /linux/
91
- end
92
-
93
- def self.get_os
94
- case RbConfig::CONFIG["host_os"]
95
- when /linux/
96
- "Linux"
97
- when /darwin/
98
- "macOS"
99
- when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
100
- "Windows"
101
- else
102
- "Unknown"
103
- end
104
- end
105
-
106
- def self.get_runtime_identifier()
107
- os = RbConfig::CONFIG["host_os"]
108
- cpu = RbConfig::CONFIG["host_cpu"]
109
-
110
- case os
111
- when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
112
- os_rid = "win"
113
- when /darwin|mac os/
114
- os_rid = "osx"
115
- when /linux/
116
- os_rid = "linux"
117
- when /solaris|bsd/
118
- os_rid = "unix"
119
- else
120
- raise "Unknown operating system: host_os=#{os}"
121
- end
122
-
123
- case cpu
124
- when /x86_64|amd64|x64/
125
- arch_rid = "x64"
126
- when /i686|i386/
127
- arch_rid = "x86"
128
- #when /arm/
129
- # arch_rid = "arm"
130
- when /aarch64|arm64/
131
- arch_rid = "arm64"
132
- else
133
- raise "Unknown architecture: host_cpu=#{cpu}"
134
- end
135
-
136
- "#{os_rid}-#{arch_rid}"
137
- end
138
- end
139
- 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