makit 0.0.140 → 0.0.142

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