makit 0.0.157 → 0.0.158

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 (177) 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/azure/blob_storage.rb +257 -257
  7. data/lib/makit/azure/cli.rb +284 -284
  8. data/lib/makit/cli/base.rb +17 -17
  9. data/lib/makit/cli/build_commands.rb +500 -500
  10. data/lib/makit/cli/generators/base_generator.rb +74 -74
  11. data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
  12. data/lib/makit/cli/generators/generator_factory.rb +49 -49
  13. data/lib/makit/cli/generators/node_generator.rb +50 -50
  14. data/lib/makit/cli/generators/ruby_generator.rb +77 -77
  15. data/lib/makit/cli/generators/rust_generator.rb +50 -50
  16. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
  17. data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
  18. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
  19. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +41 -41
  20. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
  21. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
  22. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
  23. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
  24. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
  25. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
  26. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
  27. data/lib/makit/cli/main.rb +78 -78
  28. data/lib/makit/cli/pipeline_commands.rb +311 -311
  29. data/lib/makit/cli/project_commands.rb +868 -868
  30. data/lib/makit/cli/repository_commands.rb +661 -661
  31. data/lib/makit/cli/strategy_commands.rb +207 -207
  32. data/lib/makit/cli/utility_commands.rb +521 -521
  33. data/lib/makit/commands/factory.rb +359 -359
  34. data/lib/makit/commands/middleware/base.rb +73 -73
  35. data/lib/makit/commands/middleware/cache.rb +248 -248
  36. data/lib/makit/commands/middleware/command_logger.rb +312 -312
  37. data/lib/makit/commands/middleware/validator.rb +269 -269
  38. data/lib/makit/commands/request.rb +316 -316
  39. data/lib/makit/commands/result.rb +323 -323
  40. data/lib/makit/commands/runner.rb +386 -386
  41. data/lib/makit/commands/strategies/base.rb +171 -171
  42. data/lib/makit/commands/strategies/child_process.rb +162 -162
  43. data/lib/makit/commands/strategies/factory.rb +136 -136
  44. data/lib/makit/commands/strategies/synchronous.rb +139 -139
  45. data/lib/makit/commands.rb +50 -50
  46. data/lib/makit/configuration/dotnet_project.rb +48 -48
  47. data/lib/makit/configuration/gitlab_helper.rb +61 -61
  48. data/lib/makit/configuration/project.rb +292 -292
  49. data/lib/makit/configuration/rakefile_helper.rb +43 -43
  50. data/lib/makit/configuration/step.rb +34 -34
  51. data/lib/makit/configuration/timeout.rb +74 -74
  52. data/lib/makit/configuration.rb +21 -21
  53. data/lib/makit/content/default_gitignore.rb +7 -7
  54. data/lib/makit/content/default_gitignore.txt +225 -225
  55. data/lib/makit/content/default_rakefile.rb +13 -13
  56. data/lib/makit/content/gem_rakefile.rb +16 -16
  57. data/lib/makit/context.rb +1 -1
  58. data/lib/makit/data.rb +49 -49
  59. data/lib/makit/directories.rb +170 -170
  60. data/lib/makit/directory.rb +262 -262
  61. data/lib/makit/docs/files.rb +89 -89
  62. data/lib/makit/docs/rake.rb +102 -102
  63. data/lib/makit/dotnet/cli.rb +69 -69
  64. data/lib/makit/dotnet/project.rb +217 -217
  65. data/lib/makit/dotnet/solution.rb +38 -38
  66. data/lib/makit/dotnet/solution_classlib.rb +239 -239
  67. data/lib/makit/dotnet/solution_console.rb +264 -264
  68. data/lib/makit/dotnet/solution_maui.rb +354 -354
  69. data/lib/makit/dotnet/solution_wasm.rb +275 -275
  70. data/lib/makit/dotnet/solution_wpf.rb +304 -304
  71. data/lib/makit/dotnet.rb +102 -102
  72. data/lib/makit/email.rb +90 -90
  73. data/lib/makit/environment.rb +142 -142
  74. data/lib/makit/examples/runner.rb +370 -370
  75. data/lib/makit/exceptions.rb +45 -45
  76. data/lib/makit/fileinfo.rb +32 -32
  77. data/lib/makit/files.rb +43 -43
  78. data/lib/makit/gems.rb +40 -40
  79. data/lib/makit/git/cli.rb +78 -54
  80. data/lib/makit/git/repository.rb +100 -100
  81. data/lib/makit/git.rb +104 -104
  82. data/lib/makit/gitlab/pipeline.rb +857 -857
  83. data/lib/makit/gitlab/pipeline_service_impl.rb +1535 -1535
  84. data/lib/makit/gitlab_runner.rb +59 -59
  85. data/lib/makit/humanize.rb +218 -218
  86. data/lib/makit/indexer.rb +47 -47
  87. data/lib/makit/io/filesystem.rb +111 -111
  88. data/lib/makit/io/filesystem_service_impl.rb +337 -337
  89. data/lib/makit/lint.rb +212 -212
  90. data/lib/makit/logging/configuration.rb +309 -309
  91. data/lib/makit/logging/format_registry.rb +84 -84
  92. data/lib/makit/logging/formatters/base.rb +39 -39
  93. data/lib/makit/logging/formatters/console_formatter.rb +140 -140
  94. data/lib/makit/logging/formatters/json_formatter.rb +65 -65
  95. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
  96. data/lib/makit/logging/formatters/text_formatter.rb +64 -64
  97. data/lib/makit/logging/log_request.rb +119 -119
  98. data/lib/makit/logging/logger.rb +199 -199
  99. data/lib/makit/logging/sinks/base.rb +91 -91
  100. data/lib/makit/logging/sinks/console.rb +72 -72
  101. data/lib/makit/logging/sinks/file_sink.rb +92 -92
  102. data/lib/makit/logging/sinks/structured.rb +123 -123
  103. data/lib/makit/logging/sinks/unified_file_sink.rb +296 -296
  104. data/lib/makit/logging.rb +578 -578
  105. data/lib/makit/markdown.rb +75 -75
  106. data/lib/makit/mp/basic_object_mp.rb +17 -17
  107. data/lib/makit/mp/command_mp.rb +13 -13
  108. data/lib/makit/mp/command_request.mp.rb +17 -17
  109. data/lib/makit/mp/project_mp.rb +199 -199
  110. data/lib/makit/mp/string_mp.rb +205 -205
  111. data/lib/makit/nuget.rb +74 -74
  112. data/lib/makit/podman/podman.rb +458 -458
  113. data/lib/makit/podman/podman_service_impl.rb +1081 -1081
  114. data/lib/makit/port.rb +32 -32
  115. data/lib/makit/process.rb +377 -377
  116. data/lib/makit/protoc.rb +112 -112
  117. data/lib/makit/rake/cli.rb +196 -196
  118. data/lib/makit/rake/trace_controller.rb +174 -174
  119. data/lib/makit/rake.rb +81 -81
  120. data/lib/makit/ruby/cli.rb +185 -185
  121. data/lib/makit/ruby.rb +25 -25
  122. data/lib/makit/rubygems.rb +137 -0
  123. data/lib/makit/secrets/azure_key_vault.rb +322 -322
  124. data/lib/makit/secrets/azure_secrets.rb +183 -183
  125. data/lib/makit/secrets/local_secrets.rb +72 -72
  126. data/lib/makit/secrets/secrets_manager.rb +105 -105
  127. data/lib/makit/secrets.rb +16 -16
  128. data/lib/makit/serializer.rb +130 -130
  129. data/lib/makit/services/builder.rb +186 -186
  130. data/lib/makit/services/error_handler.rb +226 -226
  131. data/lib/makit/services/repository_manager.rb +367 -367
  132. data/lib/makit/services/validator.rb +112 -112
  133. data/lib/makit/setup/classlib.rb +101 -101
  134. data/lib/makit/setup/gem.rb +268 -268
  135. data/lib/makit/setup/pages.rb +11 -11
  136. data/lib/makit/setup/razorclasslib.rb +101 -101
  137. data/lib/makit/setup/runner.rb +54 -54
  138. data/lib/makit/setup.rb +5 -5
  139. data/lib/makit/show.rb +110 -110
  140. data/lib/makit/storage.rb +126 -126
  141. data/lib/makit/symbols.rb +175 -175
  142. data/lib/makit/task_info.rb +130 -130
  143. data/lib/makit/tasks/at_exit.rb +15 -15
  144. data/lib/makit/tasks/build.rb +22 -22
  145. data/lib/makit/tasks/bump.rb +7 -7
  146. data/lib/makit/tasks/clean.rb +13 -13
  147. data/lib/makit/tasks/configure.rb +10 -10
  148. data/lib/makit/tasks/format.rb +10 -10
  149. data/lib/makit/tasks/hook_manager.rb +443 -443
  150. data/lib/makit/tasks/info.rb +368 -368
  151. data/lib/makit/tasks/init.rb +49 -49
  152. data/lib/makit/tasks/integrate.rb +60 -56
  153. data/lib/makit/tasks/pull_incoming.rb +13 -13
  154. data/lib/makit/tasks/secrets.rb +7 -7
  155. data/lib/makit/tasks/setup.rb +16 -16
  156. data/lib/makit/tasks/sync.rb +14 -17
  157. data/lib/makit/tasks/tag.rb +27 -27
  158. data/lib/makit/tasks/task_monkey_patch.rb +81 -81
  159. data/lib/makit/tasks/test.rb +22 -22
  160. data/lib/makit/tasks/update.rb +18 -18
  161. data/lib/makit/tasks/version.rb +6 -6
  162. data/lib/makit/tasks.rb +24 -24
  163. data/lib/makit/test_cache.rb +239 -239
  164. data/lib/makit/tree.rb +37 -37
  165. data/lib/makit/v1/configuration/project_service_impl.rb +370 -370
  166. data/lib/makit/v1/git/git_repository_service_impl.rb +295 -295
  167. data/lib/makit/v1/makit.v1_pb.rb +35 -35
  168. data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
  169. data/lib/makit/v1/services/repository_manager_service_impl.rb +572 -572
  170. data/lib/makit/version.rb +661 -503
  171. data/lib/makit/version_util.rb +21 -21
  172. data/lib/makit/wix.rb +95 -95
  173. data/lib/makit/yaml.rb +29 -29
  174. data/lib/makit/zip.rb +17 -17
  175. data/lib/makit copy.rb +44 -44
  176. data/lib/makit.rb +115 -114
  177. metadata +3 -2
@@ -1,45 +1,45 @@
1
- # frozen_string_literal: true
2
-
3
- module Makit
4
- # Base exception class for all Makit errors
5
- class Error < StandardError; end
6
-
7
- # Raised when a directory operation fails
8
- class DirectoryError < Error; end
9
-
10
- # Raised when a git operation fails
11
- class GitError < Error; end
12
-
13
- # Raised when a clone operation fails
14
- class CloneError < GitError; end
15
-
16
- # Raised when a pull operation fails
17
- class PullError < GitError; end
18
-
19
- # Raised when a commit is invalid
20
- class InvalidCommitError < GitError; end
21
-
22
- # Raised when a build operation fails
23
- class BuildError < Error; end
24
-
25
- # Raised when a configuration is invalid
26
- class ConfigurationError < Error; end
27
-
28
- # Raised when a file operation fails
29
- class FileError < Error; end
30
-
31
- # Raised when a network operation fails
32
- class NetworkError < Error; end
33
-
34
- # Raised when a timeout occurs
35
- class TimeoutError < Error; end
36
-
37
- # Raised when a dependency is missing
38
- class DependencyError < Error; end
39
-
40
- # Raised when a command execution fails
41
- class CommandError < Error; end
42
-
43
- # Raised when a validation fails
44
- class ValidationError < Error; end
45
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Makit
4
+ # Base exception class for all Makit errors
5
+ class Error < StandardError; end
6
+
7
+ # Raised when a directory operation fails
8
+ class DirectoryError < Error; end
9
+
10
+ # Raised when a git operation fails
11
+ class GitError < Error; end
12
+
13
+ # Raised when a clone operation fails
14
+ class CloneError < GitError; end
15
+
16
+ # Raised when a pull operation fails
17
+ class PullError < GitError; end
18
+
19
+ # Raised when a commit is invalid
20
+ class InvalidCommitError < GitError; end
21
+
22
+ # Raised when a build operation fails
23
+ class BuildError < Error; end
24
+
25
+ # Raised when a configuration is invalid
26
+ class ConfigurationError < Error; end
27
+
28
+ # Raised when a file operation fails
29
+ class FileError < Error; end
30
+
31
+ # Raised when a network operation fails
32
+ class NetworkError < Error; end
33
+
34
+ # Raised when a timeout occurs
35
+ class TimeoutError < Error; end
36
+
37
+ # Raised when a dependency is missing
38
+ class DependencyError < Error; end
39
+
40
+ # Raised when a command execution fails
41
+ class CommandError < Error; end
42
+
43
+ # Raised when a validation fails
44
+ class ValidationError < Error; end
45
+ end
@@ -1,32 +1,32 @@
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 FileInfo
8
- attr_accessor :name, :mtime, :size
9
-
10
- def initialize(name:, mtime:, size:)
11
- @name = name
12
- @mtime = mtime
13
- @size = size
14
- end
15
-
16
- def to_h
17
- {
18
- name: @name,
19
- mtime: @mtime,
20
- size: @size
21
- }
22
- end
23
-
24
- def self.get_file_infos(filenames)
25
- filenames.map do |filename|
26
- FileInfo.new(name: filename, mtime: File.mtime(filename), size: File.size(filename))
27
- rescue StandardError
28
- next
29
- end
30
- end
31
- end
32
- end
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 FileInfo
8
+ attr_accessor :name, :mtime, :size
9
+
10
+ def initialize(name:, mtime:, size:)
11
+ @name = name
12
+ @mtime = mtime
13
+ @size = size
14
+ end
15
+
16
+ def to_h
17
+ {
18
+ name: @name,
19
+ mtime: @mtime,
20
+ size: @size
21
+ }
22
+ end
23
+
24
+ def self.get_file_infos(filenames)
25
+ filenames.map do |filename|
26
+ FileInfo.new(name: filename, mtime: File.mtime(filename), size: File.size(filename))
27
+ rescue StandardError
28
+ next
29
+ end
30
+ end
31
+ end
32
+ end
data/lib/makit/files.rb CHANGED
@@ -1,43 +1,43 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "directory"
4
- require_relative "environment"
5
- require_relative "protoc"
6
- require_relative "nuget"
7
- require_relative "version"
8
- require "rake"
9
-
10
- # This module provides classes for the Makit gem.
11
- module Makit
12
- # This class provide methods for working with the system Environment.
13
- #
14
- module Files
15
- if Makit::Directories::PROJECT_ROOT.nil?
16
- CSPROJ = [].freeze
17
- else
18
- Dir.chdir(Makit::Directories::PROJECT_ROOT) do
19
- CSPROJ = Dir.glob("**/*.csproj")
20
- end
21
- end
22
-
23
- # show all the files constants in a nicely formatted table format with the name of the constant and the value
24
- def self.show
25
- # Array of constant names (symbols)
26
- constant_names = [:CSPROJ]
27
-
28
- # Find the length of the longest constant name and add 1
29
- max_length = constant_names.map(&:to_s).max_by(&:length).length + 1
30
-
31
- # Iterate through each constant name
32
- constant_names.each do |constant_name|
33
- constant_value = const_get(constant_name) # Fetch the value of the constant
34
- constant_value = constant_value.colorize(:green) if !constant_value.nil? && File.exist?(constant_value)
35
- # Print the constant name right justified to the max_length
36
- puts "#{constant_name.to_s.rjust(max_length)} = #{constant_value}"
37
- rescue NameError
38
- # Handle the case where the constant is not defined
39
- puts "#{constant_name.to_s.rjust(max_length)} = [Constant not defined]"
40
- end
41
- end
42
- end
43
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "directory"
4
+ require_relative "environment"
5
+ require_relative "protoc"
6
+ require_relative "nuget"
7
+ require_relative "version"
8
+ require "rake"
9
+
10
+ # This module provides classes for the Makit gem.
11
+ module Makit
12
+ # This class provide methods for working with the system Environment.
13
+ #
14
+ module Files
15
+ if Makit::Directories::PROJECT_ROOT.nil?
16
+ CSPROJ = [].freeze
17
+ else
18
+ Dir.chdir(Makit::Directories::PROJECT_ROOT) do
19
+ CSPROJ = Dir.glob("**/*.csproj")
20
+ end
21
+ end
22
+
23
+ # show all the files constants in a nicely formatted table format with the name of the constant and the value
24
+ def self.show
25
+ # Array of constant names (symbols)
26
+ constant_names = [:CSPROJ]
27
+
28
+ # Find the length of the longest constant name and add 1
29
+ max_length = constant_names.map(&:to_s).max_by(&:length).length + 1
30
+
31
+ # Iterate through each constant name
32
+ constant_names.each do |constant_name|
33
+ constant_value = const_get(constant_name) # Fetch the value of the constant
34
+ constant_value = constant_value.colorize(:green) if !constant_value.nil? && File.exist?(constant_value)
35
+ # Print the constant name right justified to the max_length
36
+ puts "#{constant_name.to_s.rjust(max_length)} = #{constant_value}"
37
+ rescue NameError
38
+ # Handle the case where the constant is not defined
39
+ puts "#{constant_name.to_s.rjust(max_length)} = [Constant not defined]"
40
+ end
41
+ end
42
+ end
43
+ end
data/lib/makit/gems.rb CHANGED
@@ -1,40 +1,40 @@
1
- # frozen_string_literal: true
2
-
3
- # This module provides classes for the Makit gem.
4
- require "English"
5
-
6
- module Makit
7
- # This class provide methods for working with the system Environment.
8
- #
9
- module Gems
10
- def self.install_latest_gem(gem_name)
11
- if is_gem_installed(gem_name)
12
- latest_version = get_latest_gem_version(gem_name)
13
- installed_version = get_installed_gem_version(gem_name)
14
- if installed_version == latest_version
15
- puts " #{gem_name} gem is up to date".colorize(:green)
16
- else
17
- "gem install #{gem_name}".run
18
- puts " #{gem_name} gem updated to #{latest_version}".colorize(:green)
19
- end
20
- else
21
- "gem install #{gem_name}".run
22
- puts " #{gem_name} gem installed".colorize(:green)
23
- end
24
- end
25
-
26
- def self.is_gem_installed(gem_name)
27
- `gem list #{gem_name}`
28
- $CHILD_STATUS.success?
29
- end
30
-
31
- def self.get_installed_gem_version(gem_name)
32
- versions = `gem list #{gem_name}`.split("(")[1].split(")")[0].split(",")
33
- versions.first.strip
34
- end
35
-
36
- def self.get_latest_gem_version(gem_name)
37
- `gem search #{gem_name} --remote --exact`.split("(")[1].split(")")[0]
38
- end
39
- end
40
- end
1
+ # frozen_string_literal: true
2
+
3
+ # This module provides classes for the Makit gem.
4
+ require "English"
5
+
6
+ module Makit
7
+ # This class provide methods for working with the system Environment.
8
+ #
9
+ module Gems
10
+ def self.install_latest_gem(gem_name)
11
+ if is_gem_installed(gem_name)
12
+ latest_version = get_latest_gem_version(gem_name)
13
+ installed_version = get_installed_gem_version(gem_name)
14
+ if installed_version == latest_version
15
+ puts " #{gem_name} gem is up to date".colorize(:green)
16
+ else
17
+ "gem install #{gem_name}".run
18
+ puts " #{gem_name} gem updated to #{latest_version}".colorize(:green)
19
+ end
20
+ else
21
+ "gem install #{gem_name}".run
22
+ puts " #{gem_name} gem installed".colorize(:green)
23
+ end
24
+ end
25
+
26
+ def self.is_gem_installed(gem_name)
27
+ `gem list #{gem_name}`
28
+ $CHILD_STATUS.success?
29
+ end
30
+
31
+ def self.get_installed_gem_version(gem_name)
32
+ versions = `gem list #{gem_name}`.split("(")[1].split(")")[0].split(",")
33
+ versions.first.strip
34
+ end
35
+
36
+ def self.get_latest_gem_version(gem_name)
37
+ `gem search #{gem_name} --remote --exact`.split("(")[1].split(")")[0]
38
+ end
39
+ end
40
+ end
data/lib/makit/git/cli.rb CHANGED
@@ -1,54 +1,78 @@
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 executing git commands and operations
7
- # that modify repository state.
8
- class CLI
9
- def self.integrate
10
- return unless Repository.git_repo? && !Repository.detached
11
-
12
- ## check for unstaged or untracked files
13
- unstaged_files = `git status --porcelain`.split("\n")
14
- untracked_files = `git ls-files --others --exclude-standard`.split("\n")
15
- return unless unstaged_files.length.positive? || untracked_files.length.positive?
16
-
17
- "git add .".run
18
- "git commit -m \"integrate\"".run unless Repository.clean?
19
- end
20
-
21
- def self.sync
22
- return unless Repository.git_repo? && !Repository.detached
23
-
24
- "git pull".try
25
- "git push origin".try
26
- "git push origin --tags".try
27
- end
28
-
29
- def self.pull
30
- return unless Repository.git_repo? && !Repository.detached
31
-
32
- "git pull".try
33
- end
34
-
35
- def self.zip_source_files(zipfilename)
36
- "git archive --format zip --output #{zipfilename} HEAD".run
37
- end
38
-
39
- def self.tag(version)
40
- # only tag if the repo is not read only
41
- if Repository.read_only?
42
- puts " cannot tag a read only repo".colorize(:red)
43
- return
44
- end
45
- # check if a tag for the current version already exists
46
- if `git tag -l v#{version}`.strip.length.positive?
47
- puts " tag v#{version} already exists".colorize(:red)
48
- else
49
- "git tag -a v#{version} -m \"version #{version}\"".run
50
- end
51
- end
52
- end
53
- end
54
- end
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 executing git commands and operations
7
+ # that modify repository state.
8
+ class CLI
9
+ def self.integrate
10
+ return unless Repository.git_repo? && !Repository.detached
11
+
12
+ ## check for unstaged or untracked files
13
+ unstaged_files = `git status --porcelain`.split("\n")
14
+ untracked_files = `git ls-files --others --exclude-standard`.split("\n")
15
+ return unless unstaged_files.length.positive? || untracked_files.length.positive?
16
+
17
+ "git add .".run
18
+ "git commit -m \"integrate\"".run unless Repository.clean?
19
+ end
20
+
21
+ def self.sync
22
+ return unless Repository.git_repo? && !Repository.detached
23
+
24
+ "git pull".try
25
+ "git push origin".try
26
+
27
+ # Check which tags need to be pushed (exist locally but not remotely)
28
+ local_tags = `git tag -l`.strip.split("\n").reject(&:empty?)
29
+ remote_tags_output = `git ls-remote --tags origin 2>/dev/null`.strip
30
+ remote_tags = if remote_tags_output.empty?
31
+ []
32
+ else
33
+ # Extract tag names, removing refs/tags/ prefix and ^{} suffix, then get unique values
34
+ remote_tags_output.split("\n")
35
+ .map { |line| line.split("\t").last }
36
+ .select { |ref| ref.start_with?('refs/tags/') && !ref.end_with?('^{}') }
37
+ .map { |ref| ref.sub('refs/tags/', '') }
38
+ .uniq
39
+ end
40
+
41
+ tags_to_push = local_tags - remote_tags
42
+
43
+ if tags_to_push.empty?
44
+ Makit::Logging.default_logger.info("All tags already exist on remote, skipping tag push")
45
+ else
46
+ Makit::Logging.default_logger.info("Pushing #{tags_to_push.length} tag(s) to remote: #{tags_to_push.join(', ')}")
47
+ tags_to_push.each do |tag|
48
+ "git push origin #{tag}".try
49
+ end
50
+ end
51
+ end
52
+
53
+ def self.pull
54
+ return unless Repository.git_repo? && !Repository.detached
55
+
56
+ "git pull".try
57
+ end
58
+
59
+ def self.zip_source_files(zipfilename)
60
+ "git archive --format zip --output #{zipfilename} HEAD".run
61
+ end
62
+
63
+ def self.tag(version)
64
+ # only tag if the repo is not read only
65
+ if Repository.read_only?
66
+ puts " cannot tag a read only repo".colorize(:red)
67
+ return
68
+ end
69
+ # check if a tag for the current version already exists
70
+ if `git tag -l v#{version}`.strip.length.positive?
71
+ puts " tag v#{version} already exists".colorize(:red)
72
+ else
73
+ "git tag -a v#{version} -m \"version #{version}\"".run
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -1,100 +1,100 @@
1
- # frozen_string_literal: true
2
-
3
- # Load gRPC service implementation
4
- require_relative "../v1/git/git_repository_service_impl"
5
-
6
- # This module provides classes for the Makit gem.
7
- module Makit
8
- class Git
9
- # This class provides methods for querying git repository state and metadata.
10
- # Refactored to use protobuf messages exclusively.
11
- class Repository
12
- # Get current repository state via gRPC service
13
- def self.get_repository_state
14
- service = Makit::V1::Git::GitRepositoryServiceImpl.new
15
- request = Makit::V1::Git::GetRepositoryStateRequest.new
16
- service.get_repository_state(request, nil)
17
- end
18
-
19
- # Delegate all static methods to gRPC service
20
- def self.git_repo?
21
- get_repository_state.is_git_repo
22
- end
23
-
24
- def self.ci?
25
- get_repository_state.is_ci
26
- end
27
-
28
- def self.detached
29
- get_repository_state.is_detached
30
- end
31
-
32
- def self.read_only?
33
- get_repository_state.is_read_only
34
- end
35
-
36
- def self.clean?
37
- get_repository_state.is_clean
38
- end
39
-
40
- def self.unstaged_files
41
- get_repository_state.unstaged_files.to_a
42
- end
43
-
44
- def self.untracked_files
45
- get_repository_state.untracked_files.to_a
46
- end
47
-
48
- def self.get_file_infos
49
- proto_file_infos = get_repository_state.tracked_file_infos
50
- convert_file_infos_from_proto(proto_file_infos)
51
- end
52
-
53
- def self.get_untracked_file_infos
54
- proto_file_infos = get_repository_state.untracked_file_infos
55
- convert_file_infos_from_proto(proto_file_infos)
56
- end
57
-
58
- def self.branch
59
- get_repository_state.branch
60
- end
61
-
62
- def self.commitsha
63
- get_repository_state.commit_sha
64
- end
65
-
66
- def self.commitmsg
67
- get_repository_state.commit_message
68
- end
69
-
70
- def self.commitdate
71
- get_repository_state.commit_date
72
- end
73
-
74
- def self.commitauthor
75
- get_repository_state.commit_author
76
- end
77
-
78
- def self.commitemail
79
- get_repository_state.commit_email
80
- end
81
-
82
- def self.get_remote_url
83
- get_repository_state.remote_url
84
- end
85
-
86
- private
87
-
88
- # Convert protobuf FileInfo objects to Ruby FileInfo objects
89
- def self.convert_file_infos_from_proto(proto_file_infos)
90
- proto_file_infos.map do |proto_file_info|
91
- Makit::FileInfo.new(
92
- name: proto_file_info.name,
93
- mtime: Time.at(proto_file_info.mtime.seconds, proto_file_info.mtime.nanos, :nsec),
94
- size: proto_file_info.size
95
- )
96
- end
97
- end
98
- end
99
- end
100
- end
1
+ # frozen_string_literal: true
2
+
3
+ # Load gRPC service implementation
4
+ require_relative "../v1/git/git_repository_service_impl"
5
+
6
+ # This module provides classes for the Makit gem.
7
+ module Makit
8
+ class Git
9
+ # This class provides methods for querying git repository state and metadata.
10
+ # Refactored to use protobuf messages exclusively.
11
+ class Repository
12
+ # Get current repository state via gRPC service
13
+ def self.get_repository_state
14
+ service = Makit::V1::Git::GitRepositoryServiceImpl.new
15
+ request = Makit::V1::Git::GetRepositoryStateRequest.new
16
+ service.get_repository_state(request, nil)
17
+ end
18
+
19
+ # Delegate all static methods to gRPC service
20
+ def self.git_repo?
21
+ get_repository_state.is_git_repo
22
+ end
23
+
24
+ def self.ci?
25
+ get_repository_state.is_ci
26
+ end
27
+
28
+ def self.detached
29
+ get_repository_state.is_detached
30
+ end
31
+
32
+ def self.read_only?
33
+ get_repository_state.is_read_only
34
+ end
35
+
36
+ def self.clean?
37
+ get_repository_state.is_clean
38
+ end
39
+
40
+ def self.unstaged_files
41
+ get_repository_state.unstaged_files.to_a
42
+ end
43
+
44
+ def self.untracked_files
45
+ get_repository_state.untracked_files.to_a
46
+ end
47
+
48
+ def self.get_file_infos
49
+ proto_file_infos = get_repository_state.tracked_file_infos
50
+ convert_file_infos_from_proto(proto_file_infos)
51
+ end
52
+
53
+ def self.get_untracked_file_infos
54
+ proto_file_infos = get_repository_state.untracked_file_infos
55
+ convert_file_infos_from_proto(proto_file_infos)
56
+ end
57
+
58
+ def self.branch
59
+ get_repository_state.branch
60
+ end
61
+
62
+ def self.commitsha
63
+ get_repository_state.commit_sha
64
+ end
65
+
66
+ def self.commitmsg
67
+ get_repository_state.commit_message
68
+ end
69
+
70
+ def self.commitdate
71
+ get_repository_state.commit_date
72
+ end
73
+
74
+ def self.commitauthor
75
+ get_repository_state.commit_author
76
+ end
77
+
78
+ def self.commitemail
79
+ get_repository_state.commit_email
80
+ end
81
+
82
+ def self.get_remote_url
83
+ get_repository_state.remote_url
84
+ end
85
+
86
+ private
87
+
88
+ # Convert protobuf FileInfo objects to Ruby FileInfo objects
89
+ def self.convert_file_infos_from_proto(proto_file_infos)
90
+ proto_file_infos.map do |proto_file_info|
91
+ Makit::FileInfo.new(
92
+ name: proto_file_info.name,
93
+ mtime: Time.at(proto_file_info.mtime.seconds, proto_file_info.mtime.nanos, :nsec),
94
+ size: proto_file_info.size
95
+ )
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end