makit 0.0.111 → 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 (140) 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 +320 -323
  31. data/lib/makit/commands/middleware/unified_logger.rb +243 -243
  32. data/lib/makit/commands/middleware/validator.rb +269 -269
  33. data/lib/makit/commands/request.rb +254 -254
  34. data/lib/makit/commands/result.rb +323 -323
  35. data/lib/makit/commands/runner.rb +337 -317
  36. data/lib/makit/commands/strategies/base.rb +160 -160
  37. data/lib/makit/commands/strategies/synchronous.rb +134 -134
  38. data/lib/makit/commands.rb +51 -42
  39. data/lib/makit/configuration/gitlab_helper.rb +60 -60
  40. data/lib/makit/configuration/project.rb +127 -127
  41. data/lib/makit/configuration/rakefile_helper.rb +43 -43
  42. data/lib/makit/configuration/step.rb +34 -34
  43. data/lib/makit/configuration.rb +14 -14
  44. data/lib/makit/content/default_gitignore.rb +7 -7
  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 +141 -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/project.rb +153 -153
  54. data/lib/makit/dotnet/solution.rb +38 -38
  55. data/lib/makit/dotnet/solution_classlib.rb +239 -239
  56. data/lib/makit/dotnet/solution_console.rb +264 -264
  57. data/lib/makit/dotnet/solution_maui.rb +354 -354
  58. data/lib/makit/dotnet/solution_wasm.rb +275 -275
  59. data/lib/makit/dotnet/solution_wpf.rb +304 -304
  60. data/lib/makit/dotnet.rb +102 -102
  61. data/lib/makit/email.rb +90 -90
  62. data/lib/makit/environment.rb +142 -142
  63. data/lib/makit/examples/runner.rb +370 -370
  64. data/lib/makit/exceptions.rb +45 -45
  65. data/lib/makit/fileinfo.rb +24 -24
  66. data/lib/makit/files.rb +43 -43
  67. data/lib/makit/gems.rb +40 -40
  68. data/lib/makit/git/cli.rb +54 -54
  69. data/lib/makit/git/repository.rb +90 -90
  70. data/lib/makit/git.rb +98 -98
  71. data/lib/makit/gitlab_runner.rb +59 -59
  72. data/lib/makit/humanize.rb +137 -137
  73. data/lib/makit/indexer.rb +47 -47
  74. data/lib/makit/logging/configuration.rb +305 -305
  75. data/lib/makit/logging/formatters/base.rb +39 -39
  76. data/lib/makit/logging/formatters/console_formatter.rb +140 -127
  77. data/lib/makit/logging/formatters/json_formatter.rb +65 -65
  78. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
  79. data/lib/makit/logging/formatters/text_formatter.rb +64 -64
  80. data/lib/makit/logging/log_request.rb +115 -115
  81. data/lib/makit/logging/logger.rb +163 -159
  82. data/lib/makit/logging/sinks/console.rb +72 -72
  83. data/lib/makit/logging/sinks/file_sink.rb +92 -92
  84. data/lib/makit/logging/sinks/unified_file_sink.rb +303 -303
  85. data/lib/makit/logging.rb +530 -521
  86. data/lib/makit/markdown.rb +75 -75
  87. data/lib/makit/mp/basic_object_mp.rb +17 -17
  88. data/lib/makit/mp/command_mp.rb +13 -13
  89. data/lib/makit/mp/command_request.mp.rb +17 -17
  90. data/lib/makit/mp/project_mp.rb +199 -199
  91. data/lib/makit/mp/string_mp.rb +193 -348
  92. data/lib/makit/nuget.rb +74 -74
  93. data/lib/makit/port.rb +32 -32
  94. data/lib/makit/process.rb +163 -163
  95. data/lib/makit/protoc.rb +107 -107
  96. data/lib/makit/rake/cli.rb +196 -196
  97. data/lib/makit/rake.rb +25 -25
  98. data/lib/makit/ruby/cli.rb +185 -185
  99. data/lib/makit/ruby.rb +25 -25
  100. data/lib/makit/secrets.rb +51 -51
  101. data/lib/makit/serializer.rb +130 -117
  102. data/lib/makit/services/builder.rb +186 -186
  103. data/lib/makit/services/error_handler.rb +226 -226
  104. data/lib/makit/services/repository_manager.rb +229 -229
  105. data/lib/makit/services/validator.rb +112 -112
  106. data/lib/makit/setup/classlib.rb +53 -53
  107. data/lib/makit/setup/gem.rb +30 -17
  108. data/lib/makit/setup/runner.rb +45 -40
  109. data/lib/makit/setup.rb +5 -0
  110. data/lib/makit/show.rb +110 -110
  111. data/lib/makit/storage.rb +126 -126
  112. data/lib/makit/symbols.rb +170 -161
  113. data/lib/makit/task_info.rb +128 -128
  114. data/lib/makit/tasks/at_exit.rb +13 -13
  115. data/lib/makit/tasks/build.rb +19 -18
  116. data/lib/makit/tasks/clean.rb +11 -11
  117. data/lib/makit/tasks/hook_manager.rb +393 -239
  118. data/lib/makit/tasks/init.rb +47 -47
  119. data/lib/makit/tasks/integrate.rb +17 -15
  120. data/lib/makit/tasks/pull_incoming.rb +11 -12
  121. data/lib/makit/tasks/setup.rb +6 -6
  122. data/lib/makit/tasks/sync.rb +12 -11
  123. data/lib/makit/tasks/tag.rb +15 -0
  124. data/lib/makit/tasks/task_monkey_patch.rb +79 -79
  125. data/lib/makit/tasks.rb +10 -0
  126. data/lib/makit/test_cache.rb +239 -239
  127. data/lib/makit/tree.rb +37 -37
  128. data/lib/makit/v1/makit.v1_pb.rb +34 -34
  129. data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
  130. data/lib/makit/version.rb +5 -5
  131. data/lib/makit/version_util.rb +21 -0
  132. data/lib/makit/wix.rb +95 -95
  133. data/lib/makit/yaml.rb +29 -29
  134. data/lib/makit/zip.rb +17 -17
  135. data/lib/makit copy.rb +44 -0
  136. data/lib/makit.rb +40 -8
  137. metadata +50 -7
  138. data/lib/makit/command_runner.rb +0 -463
  139. data/lib/makit/commands/compatibility.rb +0 -365
  140. data/lib/makit/task_hooks.rb +0 -125
@@ -1,229 +1,229 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "validator"
4
-
5
- module Makit
6
- module Services
7
- # Service class responsible for git repository management operations
8
- # Handles cloning, pulling, logging, and working directory setup
9
- class RepositoryManager
10
- class << self
11
- # Initialize a new git repository in the specified directory
12
- #
13
- # @param directory [String] the directory path to initialize
14
- # @return [Makit::V1::Command] the git init command result
15
- # @raise [Makit::DirectoryError] if the directory cannot be created
16
- # @raise [Makit::GitError] if git initialization fails
17
- def initialize_repository(directory)
18
- Validator.validate_directory_parameter(directory)
19
- FileUtils.mkdir_p(directory)
20
-
21
- raise Makit::DirectoryError, "directory does not exist: #{directory}" unless Dir.exist?(directory)
22
-
23
- Dir.chdir(directory) do
24
- File.write(".gitignore", Makit::Content::GITIGNORE) unless File.exist?(".gitignore")
25
- init_command = Makit::RUNNER.execute("git init")
26
-
27
- if init_command.exit_code != 0
28
- raise Makit::GitError, "failed to initialize local repository: #{directory}\\n#{Makit::Humanize.get_command_summary(init_command)}"
29
- end
30
-
31
- init_command
32
- end
33
- end
34
-
35
- # Clone a git repository to a local directory
36
- #
37
- # @param git_repository [String] the git repository URL
38
- # @return [Array<Makit::V1::Command>] array of command results
39
- def clone_repository(git_repository)
40
- Validator.validate_url_parameter(git_repository)
41
- commands = []
42
-
43
- clone_dir = Directories.get_clone_directory(git_repository)
44
- commands << Makit::RUNNER.execute("git clone #{git_repository} #{clone_dir}") unless Dir.exist?(clone_dir)
45
-
46
- commands
47
- end
48
-
49
- # Pull the latest changes from the remote repository
50
- #
51
- # @param git_repository [String] the git repository URL
52
- # @return [Makit::V1::Command] the git pull command result
53
- def pull_repository(git_repository)
54
- Validator.validate_url_parameter(git_repository)
55
- clone_dir = Directories.get_clone_directory(git_repository)
56
-
57
- Validator.validate_directory_exists(clone_dir, "clone directory")
58
-
59
- Dir.chdir(clone_dir) do
60
- execute_git_pull(clone_dir)
61
- end
62
- end
63
-
64
- # Clone repository if it doesn't exist, otherwise pull latest changes
65
- #
66
- # @param git_repository [String] the git repository URL
67
- # @return [Array<Makit::V1::Command>] array of command results
68
- def clone_or_pull_repository(git_repository)
69
- commands = []
70
- clone_dir = Directories.get_clone_directory(git_repository)
71
-
72
- commands << if Dir.exist?(clone_dir)
73
- pull_repository(git_repository)
74
- else
75
- clone_repository(git_repository)
76
- end
77
- commands
78
- end
79
-
80
- # Get git log information for a repository
81
- #
82
- # @param git_repository [String] the git repository URL
83
- # @param limit [Integer] maximum number of commits to retrieve
84
- # @param skip [Integer] number of commits to skip
85
- # @return [Array<Makit::V1::GitLogEntry>] array of log entries
86
- def get_repository_log(git_repository, limit, skip)
87
- Validator.validate_url_parameter(git_repository)
88
- Validator.validate_pagination_parameters(limit, skip)
89
-
90
- clone_dir = Directories.get_clone_directory(git_repository)
91
- Validator.validate_directory_exists(clone_dir, "clone directory")
92
-
93
- Dir.chdir(clone_dir) do
94
- log_command = Makit::RUNNER.execute("git log -n #{limit} --skip #{skip} --date=iso")
95
- parse_git_log_output(log_command)
96
- end
97
- end
98
-
99
- # Set up a work directory for a repository
100
- #
101
- # @param repository [String] the git repository URL
102
- # @return [nil] always returns nil
103
- def setup_work_directory(repository)
104
- Validator.validate_url_parameter(repository)
105
- clone_or_pull_repository(repository)
106
- create_work_directory(repository)
107
- nil
108
- end
109
-
110
- # Get the latest commit hash from a repository
111
- #
112
- # @param clone_dir [String] the local clone directory
113
- # @param commands [Array] array to append command results to
114
- # @return [String] the latest commit hash
115
- def get_latest_commit(clone_dir, commands)
116
- Dir.chdir(clone_dir) do
117
- git_log = Makit::RUNNER.execute("git log -n 1 --date=iso")
118
- commands << git_log
119
-
120
- commit = git_log.output.match(/^commit ([0-9a-f]{#{Validator::COMMIT_HASH_LENGTH}})$/i)&.captures&.first
121
-
122
- if commit.nil? || commit.empty? || !commit.match?(/\\A[0-9a-f]{#{Validator::COMMIT_HASH_LENGTH}}\\z/i)
123
- raise Makit::InvalidCommitError, "invalid commit: #{commit}"
124
- end
125
-
126
- commit
127
- end
128
- end
129
-
130
- # Validate that a clone directory exists for the given repository
131
- #
132
- # @param url [String] the git repository URL
133
- # @return [String] the clone directory path
134
- def validate_clone_directory(url)
135
- clone_dir = Directories.get_clone_directory(url)
136
- Validator.validate_directory_exists(clone_dir, "clone directory")
137
- clone_dir
138
- end
139
-
140
- private
141
-
142
- # Execute git pull command with proper error handling
143
- def execute_git_pull(clone_dir)
144
- request = Makit::V1::CommandRequest.new(
145
- name: "git",
146
- arguments: ["pull"],
147
- directory: clone_dir,
148
- )
149
- pull_command = Makit::RUNNER.execute(request)
150
-
151
- raise Makit::PullError, Makit::Humanize.get_command_details(pull_command) if pull_command.exit_code != 0
152
-
153
- pull_command
154
- end
155
-
156
- # Create work directory for development
157
- def create_work_directory(repository)
158
- work_dir = Makit::Directories.get_work_directory(repository)
159
- clone_dir = Makit::Directories.get_clone_directory(repository)
160
-
161
- unless Dir.exist?(work_dir)
162
- FileUtils.mkdir_p(File.dirname(work_dir))
163
- Makit::RUNNER.execute("git clone #{clone_dir} #{work_dir}")
164
- end
165
-
166
- Dir.chdir(work_dir) do
167
- File.write(".gitignore", Makit::Content::GITIGNORE) unless File.exist?(".gitignore")
168
- end
169
- end
170
-
171
- # Parse git log output into structured log entries
172
- def parse_git_log_output(log_command)
173
- entries = []
174
- return entries if log_command.exit_code != 0
175
-
176
- lines = log_command.output.split("\\n")
177
- current_entry = nil
178
-
179
- lines.each do |line|
180
- current_entry = process_git_log_line(line, current_entry, entries)
181
- end
182
-
183
- entries
184
- end
185
-
186
- # Process a single line from git log output
187
- def process_git_log_line(line, current_entry, entries)
188
- case line
189
- when /^commit/
190
- create_new_log_entry(line, entries)
191
- when /^Author:/
192
- current_entry ? update_entry_author(line, current_entry) : current_entry
193
- when /^Date:/
194
- current_entry ? update_entry_date(line, current_entry) : current_entry
195
- when /^ /
196
- current_entry ? update_entry_message(line, current_entry) : current_entry
197
- else
198
- current_entry
199
- end
200
- end
201
-
202
- # Create new git log entry from commit line
203
- def create_new_log_entry(line, entries)
204
- current_entry = GitLogEntry.new(line.split[1])
205
- entries << current_entry
206
- current_entry
207
- end
208
-
209
- # Update log entry with author information
210
- def update_entry_author(line, current_entry)
211
- current_entry.author = line.split[1..].join(" ")
212
- current_entry
213
- end
214
-
215
- # Update log entry with date information
216
- def update_entry_date(line, current_entry)
217
- current_entry.date = line.split[1..].join(" ")
218
- current_entry
219
- end
220
-
221
- # Update log entry with commit message
222
- def update_entry_message(line, current_entry)
223
- current_entry.message += line[4..]
224
- current_entry
225
- end
226
- end
227
- end
228
- end
229
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "validator"
4
+
5
+ module Makit
6
+ module Services
7
+ # Service class responsible for git repository management operations
8
+ # Handles cloning, pulling, logging, and working directory setup
9
+ class RepositoryManager
10
+ class << self
11
+ # Initialize a new git repository in the specified directory
12
+ #
13
+ # @param directory [String] the directory path to initialize
14
+ # @return [Makit::V1::Command] the git init command result
15
+ # @raise [Makit::DirectoryError] if the directory cannot be created
16
+ # @raise [Makit::GitError] if git initialization fails
17
+ def initialize_repository(directory)
18
+ Validator.validate_directory_parameter(directory)
19
+ FileUtils.mkdir_p(directory)
20
+
21
+ raise Makit::DirectoryError, "directory does not exist: #{directory}" unless Dir.exist?(directory)
22
+
23
+ Dir.chdir(directory) do
24
+ File.write(".gitignore", Makit::Content::GITIGNORE) unless File.exist?(".gitignore")
25
+ init_command = Makit::Commands::Runner.default.execute("git init")
26
+
27
+ if init_command.exit_code != 0
28
+ raise Makit::GitError, "failed to initialize local repository: #{directory}\\n#{Makit::Humanize.get_command_summary(init_command)}"
29
+ end
30
+
31
+ init_command
32
+ end
33
+ end
34
+
35
+ # Clone a git repository to a local directory
36
+ #
37
+ # @param git_repository [String] the git repository URL
38
+ # @return [Array<Makit::V1::Command>] array of command results
39
+ def clone_repository(git_repository)
40
+ Validator.validate_url_parameter(git_repository)
41
+ commands = []
42
+
43
+ clone_dir = Directories.get_clone_directory(git_repository)
44
+ commands << Makit::Commands::Runner.default.execute("git clone #{git_repository} #{clone_dir}") unless Dir.exist?(clone_dir)
45
+
46
+ commands
47
+ end
48
+
49
+ # Pull the latest changes from the remote repository
50
+ #
51
+ # @param git_repository [String] the git repository URL
52
+ # @return [Makit::V1::Command] the git pull command result
53
+ def pull_repository(git_repository)
54
+ Validator.validate_url_parameter(git_repository)
55
+ clone_dir = Directories.get_clone_directory(git_repository)
56
+
57
+ Validator.validate_directory_exists(clone_dir, "clone directory")
58
+
59
+ Dir.chdir(clone_dir) do
60
+ execute_git_pull(clone_dir)
61
+ end
62
+ end
63
+
64
+ # Clone repository if it doesn't exist, otherwise pull latest changes
65
+ #
66
+ # @param git_repository [String] the git repository URL
67
+ # @return [Array<Makit::V1::Command>] array of command results
68
+ def clone_or_pull_repository(git_repository)
69
+ commands = []
70
+ clone_dir = Directories.get_clone_directory(git_repository)
71
+
72
+ commands << if Dir.exist?(clone_dir)
73
+ pull_repository(git_repository)
74
+ else
75
+ clone_repository(git_repository)
76
+ end
77
+ commands
78
+ end
79
+
80
+ # Get git log information for a repository
81
+ #
82
+ # @param git_repository [String] the git repository URL
83
+ # @param limit [Integer] maximum number of commits to retrieve
84
+ # @param skip [Integer] number of commits to skip
85
+ # @return [Array<Makit::V1::GitLogEntry>] array of log entries
86
+ def get_repository_log(git_repository, limit, skip)
87
+ Validator.validate_url_parameter(git_repository)
88
+ Validator.validate_pagination_parameters(limit, skip)
89
+
90
+ clone_dir = Directories.get_clone_directory(git_repository)
91
+ Validator.validate_directory_exists(clone_dir, "clone directory")
92
+
93
+ Dir.chdir(clone_dir) do
94
+ log_command = Makit::Commands::Runner.default.execute("git log -n #{limit} --skip #{skip} --date=iso")
95
+ parse_git_log_output(log_command)
96
+ end
97
+ end
98
+
99
+ # Set up a work directory for a repository
100
+ #
101
+ # @param repository [String] the git repository URL
102
+ # @return [nil] always returns nil
103
+ def setup_work_directory(repository)
104
+ Validator.validate_url_parameter(repository)
105
+ clone_or_pull_repository(repository)
106
+ create_work_directory(repository)
107
+ nil
108
+ end
109
+
110
+ # Get the latest commit hash from a repository
111
+ #
112
+ # @param clone_dir [String] the local clone directory
113
+ # @param commands [Array] array to append command results to
114
+ # @return [String] the latest commit hash
115
+ def get_latest_commit(clone_dir, commands)
116
+ Dir.chdir(clone_dir) do
117
+ git_log = Makit::Commands::Runner.default.execute("git log -n 1 --date=iso")
118
+ commands << git_log
119
+
120
+ commit = git_log.output.match(/^commit ([0-9a-f]{#{Validator::COMMIT_HASH_LENGTH}})$/i)&.captures&.first
121
+
122
+ if commit.nil? || commit.empty? || !commit.match?(/\\A[0-9a-f]{#{Validator::COMMIT_HASH_LENGTH}}\\z/i)
123
+ raise Makit::InvalidCommitError, "invalid commit: #{commit}"
124
+ end
125
+
126
+ commit
127
+ end
128
+ end
129
+
130
+ # Validate that a clone directory exists for the given repository
131
+ #
132
+ # @param url [String] the git repository URL
133
+ # @return [String] the clone directory path
134
+ def validate_clone_directory(url)
135
+ clone_dir = Directories.get_clone_directory(url)
136
+ Validator.validate_directory_exists(clone_dir, "clone directory")
137
+ clone_dir
138
+ end
139
+
140
+ private
141
+
142
+ # Execute git pull command with proper error handling
143
+ def execute_git_pull(clone_dir)
144
+ request = Makit::V1::CommandRequest.new(
145
+ name: "git",
146
+ arguments: ["pull"],
147
+ directory: clone_dir,
148
+ )
149
+ pull_command = Makit::Commands::Runner.default.execute(request)
150
+
151
+ raise Makit::PullError, Makit::Humanize.get_command_details(pull_command) if pull_command.exit_code != 0
152
+
153
+ pull_command
154
+ end
155
+
156
+ # Create work directory for development
157
+ def create_work_directory(repository)
158
+ work_dir = Makit::Directories.get_work_directory(repository)
159
+ clone_dir = Makit::Directories.get_clone_directory(repository)
160
+
161
+ unless Dir.exist?(work_dir)
162
+ FileUtils.mkdir_p(File.dirname(work_dir))
163
+ Makit::Commands::Runner.default.execute("git clone #{clone_dir} #{work_dir}")
164
+ end
165
+
166
+ Dir.chdir(work_dir) do
167
+ File.write(".gitignore", Makit::Content::GITIGNORE) unless File.exist?(".gitignore")
168
+ end
169
+ end
170
+
171
+ # Parse git log output into structured log entries
172
+ def parse_git_log_output(log_command)
173
+ entries = []
174
+ return entries if log_command.exit_code != 0
175
+
176
+ lines = log_command.output.split("\\n")
177
+ current_entry = nil
178
+
179
+ lines.each do |line|
180
+ current_entry = process_git_log_line(line, current_entry, entries)
181
+ end
182
+
183
+ entries
184
+ end
185
+
186
+ # Process a single line from git log output
187
+ def process_git_log_line(line, current_entry, entries)
188
+ case line
189
+ when /^commit/
190
+ create_new_log_entry(line, entries)
191
+ when /^Author:/
192
+ current_entry ? update_entry_author(line, current_entry) : current_entry
193
+ when /^Date:/
194
+ current_entry ? update_entry_date(line, current_entry) : current_entry
195
+ when /^ /
196
+ current_entry ? update_entry_message(line, current_entry) : current_entry
197
+ else
198
+ current_entry
199
+ end
200
+ end
201
+
202
+ # Create new git log entry from commit line
203
+ def create_new_log_entry(line, entries)
204
+ current_entry = GitLogEntry.new(line.split[1])
205
+ entries << current_entry
206
+ current_entry
207
+ end
208
+
209
+ # Update log entry with author information
210
+ def update_entry_author(line, current_entry)
211
+ current_entry.author = line.split[1..].join(" ")
212
+ current_entry
213
+ end
214
+
215
+ # Update log entry with date information
216
+ def update_entry_date(line, current_entry)
217
+ current_entry.date = line.split[1..].join(" ")
218
+ current_entry
219
+ end
220
+
221
+ # Update log entry with commit message
222
+ def update_entry_message(line, current_entry)
223
+ current_entry.message += line[4..]
224
+ current_entry
225
+ end
226
+ end
227
+ end
228
+ end
229
+ end