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
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This module provides classes for the Makit gem.
4
+ module Makit
5
+ class Git
6
+ # This class provides methods for querying git repository state and metadata.
7
+ class Repository
8
+ def self.git_repo?
9
+ Dir.exist? ".git"
10
+ end
11
+
12
+ def self.ci?
13
+ ENV["CI"] == "true"
14
+ end
15
+
16
+ def self.detached
17
+ `git status`.include?("detached")
18
+ end
19
+
20
+ def self.read_only?
21
+ !git_repo? || detached
22
+ end
23
+
24
+ def self.clean?
25
+ `git status --porcelain`.empty?
26
+ end
27
+
28
+ def self.unstaged_files
29
+ `git status --porcelain`.split("\n")
30
+ end
31
+
32
+ def self.untracked_files
33
+ `git ls-files --others --exclude-standard`.split("\n")
34
+ end
35
+
36
+ def self.get_file_infos
37
+ file_infos = []
38
+ file_list = `git ls-files`.split("\n")
39
+ # iterate over the filelist and get the file infos
40
+ file_list.each do |file|
41
+ file_infos << FileInfo.new(name: file, mtime: File.mtime(file), size: File.size(file))
42
+ rescue StandardError
43
+ next
44
+ end
45
+ file_infos.sort_by!(&:mtime).reverse!
46
+ file_infos
47
+ end
48
+
49
+ def self.get_untracked_file_infos
50
+ file_infos = []
51
+ file_list = `git ls-files --others --exclude-standard`.split("\n")
52
+ file_list.each do |file|
53
+ file_infos << FileInfo.new(name: file, mtime: File.mtime(file), size: File.size(file))
54
+ rescue StandardError
55
+ next
56
+ end
57
+ file_infos.sort_by!(&:mtime).reverse!
58
+ file_infos
59
+ end
60
+
61
+ def self.branch
62
+ `git branch --show-current`.strip
63
+ end
64
+
65
+ def self.commitsha
66
+ `git rev-parse HEAD`.strip
67
+ end
68
+
69
+ def self.commitmsg
70
+ `git log -1 --pretty=%B`.strip
71
+ end
72
+
73
+ def self.commitdate
74
+ `git log -1 --pretty=%cd`.strip
75
+ end
76
+
77
+ def self.commitauthor
78
+ `git log -1 --pretty=%an`.strip
79
+ end
80
+
81
+ def self.commitemail
82
+ `git log -1 --pretty=%ae`.strip
83
+ end
84
+
85
+ def self.get_remote_url
86
+ `git remote get-url origin`.strip
87
+ end
88
+ end
89
+ end
90
+ end
data/lib/makit/git.rb CHANGED
@@ -1,145 +1,98 @@
1
- # frozen_string_literal: true
2
-
3
- # This module provides classes for the Makit gem.
4
- module Makit
5
- # This class provide methods for working with the system Environment.
6
- #
7
- class Git
8
- def self.is_git_repo
9
- Dir.exist? ".git"
10
- end
11
-
12
- def self.is_ci
13
- ENV["CI"] == "true"
14
- end
15
-
16
- def self.detached
17
- `git status`.include?("detached")
18
- end
19
-
20
- def self.is_read_only
21
- !is_git_repo || detached
22
- end
23
-
24
- def self.is_clean
25
- `git status --porcelain`.empty?
26
- end
27
-
28
- def self.unstaged_files
29
- `git status --porcelain`.split("\n")
30
- end
31
-
32
- def self.untracked_files
33
- `git ls-files --others --exclude-standard`.split("\n")
34
- end
35
-
36
- def self.integrate
37
- if is_git_repo && !detached
38
- ## check for unstaged or untracked files
39
- unstaged_files = `git status --porcelain`.split("\n")
40
- untracked_files = `git ls-files --others --exclude-standard`.split("\n")
41
- if unstaged_files.length > 0 || untracked_files.length > 0
42
- "git add .".run
43
- "git commit -m \"integrate\"".run unless is_clean
44
- end
45
- end
46
- end
47
-
48
- def self.sync
49
- if is_git_repo && !detached
50
- "git pull".try
51
- "git push origin".try
52
- "git push origin --tags".try
53
- end
54
- end
55
-
56
- def self.pull
57
- if is_git_repo && !detached
58
- "git pull".try
59
- end
60
- end
61
-
62
- def self.zip_source_files(zipfilename)
63
- "git archive --format zip --output #{zipfilename} HEAD".run
64
- end
65
-
66
- def self.get_file_infos
67
- file_infos = []
68
- file_list = `git ls-files`.split("\n")
69
- # iterate over the filelist and get the file infos
70
- file_list.each do |file|
71
- begin
72
- file_infos << FileInfo.new(name: file, mtime: File.mtime(file), size: File.size(file))
73
- rescue
74
- next
75
- end
76
- end
77
- file_infos.sort_by! { |info| info.mtime }.reverse!
78
- file_infos
79
- end
80
-
81
- def self.get_untracked_file_infos
82
- #Makit::FileInfo::get_file_infos(`git ls-files --others --exclude=standard`.split("\n")).sort_by! { |info| info.mtime }.reverse!
83
- file_infos = []
84
- file_list = `git ls-files --others --exclude=standard`.split("\n")
85
- file_list.each do |file|
86
- begin
87
- file_infos << FileInfo.new(name: file, mtime: File.mtime(file), size: File.size(file))
88
- rescue
89
- next
90
- end
91
- end
92
- file_infos.sort_by! { |info| info.mtime }.reverse!
93
- file_infos
94
- # file_infos << FileInfo.new(name: path, mtime: File.mtime(path), size: File.size(path))
95
- # rescue
96
- # next
97
- end
98
- #end
99
- #file_infos.sort_by! { |info| info.mtime }.reverse!
100
- #file_infos
101
- end
102
-
103
- def self.branch
104
- `git branch --show-current`.strip
105
- end
106
-
107
- def self.commitsha
108
- `git rev-parse HEAD`.strip
109
- end
110
-
111
- def self.commitmsg
112
- `git log -1 --pretty=%B`.strip
113
- end
114
-
115
- def self.commitdate
116
- `git log -1 --pretty=%cd`.strip
117
- end
118
-
119
- def self.commitauthor
120
- `git log -1 --pretty=%an`.strip
121
- end
122
-
123
- def self.commitemail
124
- `git log -1 --pretty=%ae`.strip
125
- end
126
-
127
- def self.get_remote_url
128
- `git remote get-url origin`.strip
129
- end
130
-
131
- def self.tag(version)
132
- # only tag if the repo is not read only
133
- if is_read_only
134
- puts " cannot tag a read only repo".colorize(:red)
135
- return
136
- end
137
- # check if a tag for the current version already exists
138
- if (`git tag -l v#{version}`.strip.length > 0)
139
- puts " tag v#{version} already exists".colorize(:red)
140
- else
141
- "git tag -a v#{version} -m \"version #{version}\"".run
142
- end
143
- end
144
- end
145
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "git/repository"
4
+ require_relative "git/cli"
5
+
6
+ # This module provides classes for the Makit gem.
7
+ module Makit
8
+ # This class provides a unified interface for git operations.
9
+ # Methods have been organized into Repository (state/metadata) and CLI (commands) classes.
10
+ #
11
+ class Git
12
+ # Delegate repository state and metadata methods to Repository class
13
+ def self.git_repo?
14
+ Repository.git_repo?
15
+ end
16
+
17
+ def self.ci?
18
+ Repository.ci?
19
+ end
20
+
21
+ def self.detached
22
+ Repository.detached
23
+ end
24
+
25
+ def self.read_only?
26
+ Repository.read_only?
27
+ end
28
+
29
+ def self.clean?
30
+ Repository.clean?
31
+ end
32
+
33
+ def self.unstaged_files
34
+ Repository.unstaged_files
35
+ end
36
+
37
+ def self.untracked_files
38
+ Repository.untracked_files
39
+ end
40
+
41
+ def self.get_file_infos
42
+ Repository.get_file_infos
43
+ end
44
+
45
+ def self.get_untracked_file_infos
46
+ Repository.get_untracked_file_infos
47
+ end
48
+
49
+ def self.branch
50
+ Repository.branch
51
+ end
52
+
53
+ def self.commitsha
54
+ Repository.commitsha
55
+ end
56
+
57
+ def self.commitmsg
58
+ Repository.commitmsg
59
+ end
60
+
61
+ def self.commitdate
62
+ Repository.commitdate
63
+ end
64
+
65
+ def self.commitauthor
66
+ Repository.commitauthor
67
+ end
68
+
69
+ def self.commitemail
70
+ Repository.commitemail
71
+ end
72
+
73
+ def self.get_remote_url
74
+ Repository.get_remote_url
75
+ end
76
+
77
+ # Delegate command execution methods to CLI class
78
+ def self.integrate
79
+ CLI.integrate
80
+ end
81
+
82
+ def self.sync
83
+ CLI.sync
84
+ end
85
+
86
+ def self.pull
87
+ CLI.pull
88
+ end
89
+
90
+ def self.zip_source_files(zipfilename)
91
+ CLI.zip_source_files(zipfilename)
92
+ end
93
+
94
+ def self.tag(version)
95
+ CLI.tag(version)
96
+ end
97
+ end
98
+ end
@@ -1,60 +1,59 @@
1
- # frozen_string_literal: true
2
-
3
- require "yaml"
4
- require "fileutils"
5
-
6
- # This module provides classes for the Makit gem.
7
- module Makit
8
- # This class provide methods for working with Directories/
9
- #
10
- # Example:
11
- #
12
- # Makit::Directory.find_directory_with_pattern("/home/user", "*.rb")
13
- #
14
- class GitLabRunner
15
-
16
- # Parse the .gitlab-ci.yml file
17
- def parse_gitlab_ci_file(file_path)
18
- YAML.load_file(file_path)
19
- end
20
-
21
- # Extract the script for a specified job
22
- def extract_script(ci_config, job_name)
23
- job = ci_config[job_name]
24
- job ? job["script"] : nil
25
- end
26
-
27
- # Write the script to a temporary file
28
- def write_script_to_file(script, file_path)
29
- File.open(file_path, "w") do |file|
30
- script.each { |line| file.puts(line) }
31
- end
32
- end
33
-
34
- # Run the script in a Docker container
35
- def run_script_in_docker(image, script_file)
36
- system("docker run --rm -v #{Dir.pwd}:/workspace -w /workspace #{image} /bin/sh #{script_file}")
37
- end
38
-
39
- # Main function to execute the process
40
- def run_job(ci_file_path, job_name, docker_image)
41
- ci_config = parse_gitlab_ci_file(ci_file_path)
42
- script = extract_script(ci_config, job_name)
43
-
44
- unless script
45
- puts "Job '#{job_name}' not found in #{ci_file_path}"
46
- return
47
- end
48
-
49
- script_file = "temp_script.sh"
50
- write_script_to_file(script, script_file)
51
- FileUtils.chmod("+x", script_file)
52
-
53
- puts "Running script in Docker container..."
54
- run_script_in_docker(docker_image, script_file)
55
-
56
- # Clean up the temporary script file
57
- FileUtils.rm(script_file)
58
- end
59
- end
60
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "yaml"
4
+ require "fileutils"
5
+
6
+ # This module provides classes for the Makit gem.
7
+ module Makit
8
+ # This class provide methods for working with Directories/
9
+ #
10
+ # Example:
11
+ #
12
+ # Makit::Directory.find_directory_with_pattern("/home/user", "*.rb")
13
+ #
14
+ class GitLabRunner
15
+ # Parse the .gitlab-ci.yml file
16
+ def parse_gitlab_ci_file(file_path)
17
+ YAML.load_file(file_path)
18
+ end
19
+
20
+ # Extract the script for a specified job
21
+ def extract_script(ci_config, job_name)
22
+ job = ci_config[job_name]
23
+ job ? job["script"] : nil
24
+ end
25
+
26
+ # Write the script to a temporary file
27
+ def write_script_to_file(script, file_path)
28
+ File.open(file_path, "w") do |file|
29
+ script.each { |line| file.puts(line) }
30
+ end
31
+ end
32
+
33
+ # Run the script in a Docker container
34
+ def run_script_in_docker(image, script_file)
35
+ system("docker run --rm -v #{Dir.pwd}:/workspace -w /workspace #{image} /bin/sh #{script_file}")
36
+ end
37
+
38
+ # Main function to execute the process
39
+ def run_job(ci_file_path, job_name, docker_image)
40
+ ci_config = parse_gitlab_ci_file(ci_file_path)
41
+ script = extract_script(ci_config, job_name)
42
+
43
+ unless script
44
+ puts "Job '#{job_name}' not found in #{ci_file_path}"
45
+ return
46
+ end
47
+
48
+ script_file = "temp_script.sh"
49
+ write_script_to_file(script, script_file)
50
+ FileUtils.chmod("+x", script_file)
51
+
52
+ puts "Running script in Docker container..."
53
+ run_script_in_docker(docker_image, script_file)
54
+
55
+ # Clean up the temporary script file
56
+ FileUtils.rm(script_file)
57
+ end
58
+ end
59
+ end