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,193 +1,191 @@
1
- # frozen_string_literal: true
2
-
3
- require "json"
4
- require "fileutils"
5
- # monkey patch String class with command execution methods
6
-
7
- class String
8
- def run(args = nil)
9
- command = self
10
- if args.nil?
11
- request = Makit::Commands::Request.from_string(command)
12
- Makit::Commands::Runner.default.execute(request)
13
- else
14
- # Parse initial request
15
- base_request = Makit::Commands::Request.from_string(command)
16
-
17
- if args.is_a?(Hash)
18
- # Create new request with combined options
19
- request_options = {
20
- command: base_request.command,
21
- arguments: base_request.arguments || [],
22
- directory: base_request.directory,
23
- timeout: base_request.timeout,
24
- environment: base_request.environment || {},
25
- metadata: base_request.metadata || {},
26
- }
27
-
28
- # Apply args to the request options
29
- args.each do |key, value|
30
- case key.to_s
31
- when "arguments"
32
- # Append additional arguments
33
- request_options[:arguments] = (request_options[:arguments] + Array(value)).flatten
34
- when "directory"
35
- request_options[:directory] = value
36
- when "timeout"
37
- request_options[:timeout] = value
38
- when "environment"
39
- request_options[:environment] = (request_options[:environment] || {}).merge(value)
40
- when "metadata"
41
- request_options[:metadata] = (request_options[:metadata] || {}).merge(value)
42
- else
43
- # Add unknown keys to metadata
44
- request_options[:metadata] = (request_options[:metadata] || {}).merge(key.to_s => value)
45
- end
46
- end
47
-
48
- # Create new request with combined options
49
- request = Makit::Commands::Request.new(**request_options)
50
- Makit::Commands::Runner.default.execute(request)
51
- else
52
- # args is an array of additional arguments
53
- request = Makit::Commands::Request.new(
54
- command: base_request.command,
55
- arguments: (base_request.arguments || []) + Array(args),
56
- directory: base_request.directory,
57
- timeout: base_request.timeout,
58
- environment: base_request.environment || {},
59
- metadata: base_request.metadata || {},
60
- )
61
- Makit::Commands::Runner.default.execute(request)
62
- end
63
- end
64
- end
65
-
66
- def cache_run(timestamp = nil)
67
- puts "cache_run: #{self}"
68
- command = self
69
- request = Makit::Commands::Request.from_string(command)
70
- if timestamp
71
- # Add timestamp to metadata for cache key generation
72
- request = Makit::Commands::Request.new(
73
- command: request.command,
74
- arguments: request.arguments,
75
- directory: request.directory,
76
- timeout: request.timeout,
77
- environment: request.environment || {},
78
- metadata: (request.metadata || {}).merge(timestamp: timestamp),
79
- )
80
- puts "timestamp: #{timestamp}"
81
- else
82
- puts "no timestamp"
83
- end
84
- Makit::Commands::Runner.default.execute(request)
85
- end
86
-
87
- def try
88
- command = self
89
- request = Makit::Commands::Request.from_string(command)
90
- Makit::Commands::Runner.default.execute(request)
91
- end
92
-
93
- def show
94
- command = self
95
- request = Makit::Commands::Request.from_string(command)
96
- Makit::Commands::Runner.default.execute(request)
97
- end
98
-
99
- def log
100
- command = self
101
- request = Makit::Commands::Request.from_string(command)
102
- result = Makit::Commands::Runner.default.execute(request)
103
-
104
- # Log the command execution result
105
- if result.success?
106
- Makit::Logging.info("Command completed successfully: #{command}")
107
- else
108
- Makit::Logging.error("Command failed: #{command} (exit code: #{result.exit_code})")
109
- end
110
-
111
- result
112
- end
113
-
114
- def cache_try(timestamp = nil)
115
- command = self
116
- request = Makit::Commands::Request.from_string(command)
117
- if timestamp
118
- # Add timestamp to metadata for cache key generation
119
- request = Makit::Commands::Request.new(
120
- command: request.command,
121
- arguments: request.arguments,
122
- directory: request.directory,
123
- timeout: request.timeout,
124
- environment: request.environment || {},
125
- metadata: (request.metadata || {}).merge(timestamp: timestamp),
126
- )
127
- end
128
- Makit::Commands::Runner.default.execute(request)
129
- end
130
-
131
- def show_command(cmd)
132
- if cmd.success?
133
- puts " #{cmd.command} #{cmd.arguments&.join(" ")}".colorize(:green)
134
- else
135
- puts " #{cmd.command} #{cmd.arguments&.join(" ")}".colorize(:red)
136
- puts " Exit code: #{cmd.exit_code}".colorize(:red)
137
- puts " Error: #{cmd.stderr}".colorize(:red) if cmd.stderr && !cmd.stderr.empty?
138
- end
139
- end
140
-
141
- def to_markdown
142
- command = self
143
- request = Makit::Commands::Request.from_string(command)
144
- result = Makit::Commands::Runner.default.execute(request)
145
-
146
- if result.success?
147
- "```\n#{result.stdout}\n```"
148
- else
149
- "```\nError: #{result.stderr}\n```"
150
- end
151
- end
152
-
153
- def cache_run_with_timestamp(timestamp)
154
- command = self
155
- request = Makit::Commands::Request.from_string(command)
156
- request = Makit::Commands::Request.new(
157
- command: request.command,
158
- arguments: request.arguments,
159
- directory: request.directory,
160
- timeout: request.timeout,
161
- environment: request.environment || {},
162
- metadata: (request.metadata || {}).merge(timestamp: timestamp),
163
- )
164
- Makit::Commands::Runner.default.execute(request)
165
- end
166
-
167
- def cache_try_with_timestamp(timestamp)
168
- command = self
169
- request = Makit::Commands::Request.from_string(command)
170
- request = Makit::Commands::Request.new(
171
- command: request.command,
172
- arguments: request.arguments,
173
- directory: request.directory,
174
- timeout: request.timeout,
175
- environment: request.environment || {},
176
- metadata: (request.metadata || {}).merge(timestamp: timestamp),
177
- )
178
- Makit::Commands::Runner.default.execute(request)
179
- end
180
-
181
- def cache_log(log_file)
182
- command = self
183
- request = Makit::Commands::Request.from_string(command)
184
- result = Makit::Commands::Runner.default.execute(request)
185
-
186
- # Write output to log file
187
- FileUtils.mkdir_p(File.dirname(log_file))
188
- File.write(log_file, result.stdout) if result.stdout && !result.stdout.empty?
189
- File.write(log_file, result.stderr, mode: "a") if result.stderr && !result.stderr.empty?
190
-
191
- result
192
- end
193
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+ require "fileutils"
5
+ # monkey patch String class with command execution methods
6
+
7
+ class String
8
+ def run(args = nil)
9
+ command = self
10
+ if args.nil?
11
+ request = Makit::Commands::Request.from_string(command)
12
+ else
13
+ # Parse initial request
14
+ base_request = Makit::Commands::Request.from_string(command)
15
+
16
+ if args.is_a?(Hash)
17
+ # Create new request with combined options
18
+ request_options = {
19
+ command: base_request.command,
20
+ arguments: base_request.arguments || [],
21
+ directory: base_request.directory,
22
+ timeout: base_request.timeout,
23
+ environment: base_request.environment || {},
24
+ metadata: base_request.metadata || {},
25
+ }
26
+
27
+ # Apply args to the request options
28
+ args.each do |key, value|
29
+ case key.to_s
30
+ when "arguments"
31
+ # Append additional arguments
32
+ request_options[:arguments] = (request_options[:arguments] + Array(value)).flatten
33
+ when "directory"
34
+ request_options[:directory] = value
35
+ when "timeout"
36
+ request_options[:timeout] = value
37
+ when "environment"
38
+ request_options[:environment] = (request_options[:environment] || {}).merge(value)
39
+ when "metadata"
40
+ request_options[:metadata] = (request_options[:metadata] || {}).merge(value)
41
+ else
42
+ # Add unknown keys to metadata
43
+ request_options[:metadata] = (request_options[:metadata] || {}).merge(key.to_s => value)
44
+ end
45
+ end
46
+
47
+ # Create new request with combined options
48
+ request = Makit::Commands::Request.new(**request_options)
49
+ else
50
+ # args is an array of additional arguments
51
+ request = Makit::Commands::Request.new(
52
+ command: base_request.command,
53
+ arguments: (base_request.arguments || []) + Array(args),
54
+ directory: base_request.directory,
55
+ timeout: base_request.timeout,
56
+ environment: base_request.environment || {},
57
+ metadata: base_request.metadata || {},
58
+ )
59
+ end
60
+ end
61
+ Makit::Commands::Runner.default.execute(request)
62
+ end
63
+
64
+ def cache_run(timestamp = nil)
65
+ puts "cache_run: #{self}"
66
+ command = self
67
+ request = Makit::Commands::Request.from_string(command)
68
+ if timestamp
69
+ # Add timestamp to metadata for cache key generation
70
+ request = Makit::Commands::Request.new(
71
+ command: request.command,
72
+ arguments: request.arguments,
73
+ directory: request.directory,
74
+ timeout: request.timeout,
75
+ environment: request.environment || {},
76
+ metadata: (request.metadata || {}).merge(timestamp: timestamp),
77
+ )
78
+ puts "timestamp: #{timestamp}"
79
+ else
80
+ puts "no timestamp"
81
+ end
82
+ Makit::Commands::Runner.default.execute(request)
83
+ end
84
+
85
+ def try
86
+ command = self
87
+ request = Makit::Commands::Request.from_string(command).exit_on_failure(false)
88
+ Makit::Commands::Runner.default.execute(request)
89
+ end
90
+
91
+ def show
92
+ command = self
93
+ request = Makit::Commands::Request.from_string(command)
94
+ Makit::Commands::Runner.default.execute(request)
95
+ end
96
+
97
+ def log
98
+ command = self
99
+ request = Makit::Commands::Request.from_string(command)
100
+ result = Makit::Commands::Runner.default.execute(request)
101
+
102
+ # Log the command execution result
103
+ if result.success?
104
+ Makit::Logging.info("Command completed successfully: #{command}")
105
+ else
106
+ Makit::Logging.error("Command failed: #{command} (exit code: #{result.exit_code})")
107
+ end
108
+
109
+ result
110
+ end
111
+
112
+ def cache_try(timestamp = nil)
113
+ command = self
114
+ request = Makit::Commands::Request.from_string(command)
115
+ if timestamp
116
+ # Add timestamp to metadata for cache key generation
117
+ request = Makit::Commands::Request.new(
118
+ command: request.command,
119
+ arguments: request.arguments,
120
+ directory: request.directory,
121
+ timeout: request.timeout,
122
+ environment: request.environment || {},
123
+ metadata: (request.metadata || {}).merge(timestamp: timestamp),
124
+ )
125
+ end
126
+ Makit::Commands::Runner.default.execute(request)
127
+ end
128
+
129
+ def show_command(cmd)
130
+ if cmd.success?
131
+ puts "✅ #{cmd.command} #{cmd.arguments&.join(" ")}".colorize(:green)
132
+ else
133
+ puts " #{cmd.command} #{cmd.arguments&.join(" ")}".colorize(:red)
134
+ puts " Exit code: #{cmd.exit_code}".colorize(:red)
135
+ puts " Error: #{cmd.stderr}".colorize(:red) if cmd.stderr && !cmd.stderr.empty?
136
+ end
137
+ end
138
+
139
+ def to_markdown
140
+ command = self
141
+ request = Makit::Commands::Request.from_string(command)
142
+ result = Makit::Commands::Runner.default.execute(request)
143
+
144
+ if result.success?
145
+ "```\n#{result.stdout}\n```"
146
+ else
147
+ "```\nError: #{result.stderr}\n```"
148
+ end
149
+ end
150
+
151
+ def cache_run_with_timestamp(timestamp)
152
+ command = self
153
+ request = Makit::Commands::Request.from_string(command)
154
+ request = Makit::Commands::Request.new(
155
+ command: request.command,
156
+ arguments: request.arguments,
157
+ directory: request.directory,
158
+ timeout: request.timeout,
159
+ environment: request.environment || {},
160
+ metadata: (request.metadata || {}).merge(timestamp: timestamp),
161
+ )
162
+ Makit::Commands::Runner.default.execute(request)
163
+ end
164
+
165
+ def cache_try_with_timestamp(timestamp)
166
+ command = self
167
+ request = Makit::Commands::Request.from_string(command)
168
+ request = Makit::Commands::Request.new(
169
+ command: request.command,
170
+ arguments: request.arguments,
171
+ directory: request.directory,
172
+ timeout: request.timeout,
173
+ environment: request.environment || {},
174
+ metadata: (request.metadata || {}).merge(timestamp: timestamp),
175
+ )
176
+ Makit::Commands::Runner.default.execute(request)
177
+ end
178
+
179
+ def cache_log(log_file)
180
+ command = self
181
+ request = Makit::Commands::Request.from_string(command)
182
+ result = Makit::Commands::Runner.default.execute(request)
183
+
184
+ # Write output to log file
185
+ FileUtils.mkdir_p(File.dirname(log_file))
186
+ File.write(log_file, result.stdout) if result.stdout && !result.stdout.empty?
187
+ File.write(log_file, result.stderr, mode: "a") if result.stderr && !result.stderr.empty?
188
+
189
+ result
190
+ end
191
+ end
data/lib/makit/nuget.rb CHANGED
@@ -1,74 +1,74 @@
1
- # frozen_string_literal: true
2
-
3
- require "tmpdir"
4
- # This module provides classes for the Makit gem.
5
- module Makit
6
- # This class provide methods for working with the Nuget package cache
7
- #
8
- # Example:
9
- #
10
- # Makit::Directory.cache("Google.Protobuf", "3.27.2")
11
- #
12
- # dotnet nuget locals all --list
13
- # dotnet nuget locals all --clear
14
- #
15
- class NuGet
16
- def self.get_cache_dir(package, version)
17
- File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package, version)
18
- end
19
-
20
- def self.cache(package, version)
21
- # if the package is already cached, there is nothing to do
22
- return if Dir.exist?(get_cache_dir(package, version))
23
-
24
- Dir.mktmpdir do |dir|
25
- # Use the temp directory here
26
- Dir.chdir(dir) do
27
- system("dotnet new classlib -n ClassLib")
28
- Dir.chdir("ClassLib") do
29
- # display a list of directories in the current directory
30
- puts Dir.entries(Dir.pwd)
31
- # display a list of files in the current directory
32
- puts Dir.entries(Dir.pwd)
33
- puts "dotnet add ClassLib.csproj package #{package} --version #{version}"
34
- system("dotnet add ClassLib.csproj package #{package} --version #{version}")
35
- end
36
- end
37
- # The directory and its contents will be removed automatically after the block
38
- end
39
- end
40
-
41
- def self.clear_cache(package, version)
42
- return unless Dir.exist?(get_cache_dir(package, version))
43
-
44
- FileUtils.rm_rf(get_cache_dir(package, version))
45
- end
46
-
47
- # get the latest version of the package
48
- def self.get_latest_version(package)
49
- dir = File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package)
50
- if Dir.exist?(dir)
51
- versions = Dir.entries(dir).select do |entry|
52
- File.directory?(File.join(dir, entry)) && ![".", ".."].include?(entry)
53
- end
54
- highest_version = Makit::Version.get_highest_version(versions)
55
- return highest_version
56
- end
57
- nil
58
- end
59
-
60
- # publish a package to a nuget directory feed
61
- def self.add_package(_package, path)
62
- system("dotnet nuget push #{path} --source #{path}")
63
- end
64
-
65
- def self.publish_to_directory(nuget_package_path, directory, package_name, version)
66
- target_package_path = "#{directory}/#{package_name}/#{version}/#{package_name}.#{version}.nupkg".downcase
67
- if File.exist?(target_package_path)
68
- puts " #{target_package_path} already exists".colorize(:grey)
69
- else
70
- "dotnet nuget push #{nuget_package_path} --source #{directory}".run
71
- end
72
- end
73
- end
74
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "tmpdir"
4
+ # This module provides classes for the Makit gem.
5
+ module Makit
6
+ # This class provide methods for working with the Nuget package cache
7
+ #
8
+ # Example:
9
+ #
10
+ # Makit::Directory.cache("Google.Protobuf", "3.27.2")
11
+ #
12
+ # dotnet nuget locals all --list
13
+ # dotnet nuget locals all --clear
14
+ #
15
+ class NuGet
16
+ def self.get_cache_dir(package, version)
17
+ File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package, version)
18
+ end
19
+
20
+ def self.cache(package, version)
21
+ # if the package is already cached, there is nothing to do
22
+ return if Dir.exist?(get_cache_dir(package, version))
23
+
24
+ Dir.mktmpdir do |dir|
25
+ # Use the temp directory here
26
+ Dir.chdir(dir) do
27
+ system("dotnet new classlib -n ClassLib")
28
+ Dir.chdir("ClassLib") do
29
+ # display a list of directories in the current directory
30
+ puts Dir.entries(Dir.pwd)
31
+ # display a list of files in the current directory
32
+ puts Dir.entries(Dir.pwd)
33
+ puts "dotnet add ClassLib.csproj package #{package} --version #{version}"
34
+ system("dotnet add ClassLib.csproj package #{package} --version #{version}")
35
+ end
36
+ end
37
+ # The directory and its contents will be removed automatically after the block
38
+ end
39
+ end
40
+
41
+ def self.clear_cache(package, version)
42
+ return unless Dir.exist?(get_cache_dir(package, version))
43
+
44
+ FileUtils.rm_rf(get_cache_dir(package, version))
45
+ end
46
+
47
+ # get the latest version of the package
48
+ def self.get_latest_version(package)
49
+ dir = File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package)
50
+ if Dir.exist?(dir)
51
+ versions = Dir.entries(dir).select do |entry|
52
+ File.directory?(File.join(dir, entry)) && ![".", ".."].include?(entry)
53
+ end
54
+ highest_version = Makit::Version.get_highest_version(versions)
55
+ return highest_version
56
+ end
57
+ nil
58
+ end
59
+
60
+ # publish a package to a nuget directory feed
61
+ def self.add_package(_package, path)
62
+ system("dotnet nuget push #{path} --source #{path}")
63
+ end
64
+
65
+ def self.publish_to_directory(nuget_package_path, directory, package_name, version)
66
+ target_package_path = "#{directory}/#{package_name}/#{version}/#{package_name}.#{version}.nupkg".downcase
67
+ if File.exist?(target_package_path)
68
+ puts " #{target_package_path} already exists".colorize(:grey)
69
+ else
70
+ "dotnet nuget push #{nuget_package_path} --source #{directory}".run
71
+ end
72
+ end
73
+ end
74
+ end
data/lib/makit/port.rb CHANGED
@@ -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 ports
6
- #
7
- class Port
8
- def self.is_port_available?(port)
9
- socket = Socket.new(:INET, :STREAM)
10
- socket.bind(Socket.sockaddr_in(port, ""))
11
- socket.close
12
- true # Port is available for use
13
- rescue Errno::EADDRINUSE, Errno::EACCES
14
- false # Port is not available for use
15
- end
16
-
17
- def self.get_available_port(start_port = 1024, end_port = 65_535)
18
- (start_port..end_port).each do |port|
19
- return port if is_port_available?(port)
20
- end
21
- nil # No available port found in the range
22
- end
23
-
24
- def self.get_random_port
25
- rand(1024..65_535)
26
- end
27
-
28
- def self.get_random_available_port
29
- get_available_port(get_random_port)
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 ports
6
+ #
7
+ class Port
8
+ def self.is_port_available?(port)
9
+ socket = Socket.new(:INET, :STREAM)
10
+ socket.bind(Socket.sockaddr_in(port, ""))
11
+ socket.close
12
+ true # Port is available for use
13
+ rescue Errno::EADDRINUSE, Errno::EACCES
14
+ false # Port is not available for use
15
+ end
16
+
17
+ def self.get_available_port(start_port = 1024, end_port = 65_535)
18
+ (start_port..end_port).each do |port|
19
+ return port if is_port_available?(port)
20
+ end
21
+ nil # No available port found in the range
22
+ end
23
+
24
+ def self.get_random_port
25
+ rand(1024..65_535)
26
+ end
27
+
28
+ def self.get_random_available_port
29
+ get_available_port(get_random_port)
30
+ end
31
+ end
32
+ end