makit 0.0.112 → 0.0.126

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 +90 -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
@@ -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