makit 0.0.99 → 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 (152) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +41 -0
  3. data/exe/makit +5 -0
  4. data/lib/makit/apache.rb +28 -32
  5. data/lib/makit/cli/build_commands.rb +500 -0
  6. data/lib/makit/cli/generators/base_generator.rb +74 -0
  7. data/lib/makit/cli/generators/dotnet_generator.rb +50 -0
  8. data/lib/makit/cli/generators/generator_factory.rb +49 -0
  9. data/lib/makit/cli/generators/node_generator.rb +50 -0
  10. data/lib/makit/cli/generators/ruby_generator.rb +77 -0
  11. data/lib/makit/cli/generators/rust_generator.rb +50 -0
  12. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -0
  13. data/lib/makit/cli/generators/templates/node_templates.rb +161 -0
  14. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -0
  15. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +40 -0
  16. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -0
  17. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -0
  18. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -0
  19. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -0
  20. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -0
  21. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -0
  22. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -0
  23. data/lib/makit/cli/main.rb +62 -33
  24. data/lib/makit/cli/project_commands.rb +868 -0
  25. data/lib/makit/cli/repository_commands.rb +661 -0
  26. data/lib/makit/cli/utility_commands.rb +521 -0
  27. data/lib/makit/commands/factory.rb +359 -0
  28. data/lib/makit/commands/middleware/base.rb +73 -0
  29. data/lib/makit/commands/middleware/cache.rb +248 -0
  30. data/lib/makit/commands/middleware/command_logger.rb +320 -0
  31. data/lib/makit/commands/middleware/unified_logger.rb +243 -0
  32. data/lib/makit/commands/middleware/validator.rb +269 -0
  33. data/lib/makit/commands/request.rb +254 -0
  34. data/lib/makit/commands/result.rb +323 -0
  35. data/lib/makit/commands/runner.rb +337 -0
  36. data/lib/makit/commands/strategies/base.rb +160 -0
  37. data/lib/makit/commands/strategies/synchronous.rb +134 -0
  38. data/lib/makit/commands.rb +51 -21
  39. data/lib/makit/configuration/gitlab_helper.rb +60 -0
  40. data/lib/makit/configuration/project.rb +127 -0
  41. data/lib/makit/configuration/rakefile_helper.rb +43 -0
  42. data/lib/makit/configuration/step.rb +34 -0
  43. data/lib/makit/configuration.rb +14 -0
  44. data/lib/makit/content/default_gitignore.rb +7 -5
  45. data/lib/makit/content/default_rakefile.rb +13 -11
  46. data/lib/makit/content/gem_rakefile.rb +16 -14
  47. data/lib/makit/context.rb +1 -0
  48. data/lib/makit/data.rb +49 -50
  49. data/lib/makit/directories.rb +141 -145
  50. data/lib/makit/directory.rb +262 -276
  51. data/lib/makit/docs/files.rb +89 -94
  52. data/lib/makit/docs/rake.rb +102 -106
  53. data/lib/makit/dotnet/cli.rb +65 -0
  54. data/lib/makit/dotnet/project.rb +153 -0
  55. data/lib/makit/dotnet/solution.rb +38 -0
  56. data/lib/makit/dotnet/solution_classlib.rb +239 -0
  57. data/lib/makit/dotnet/solution_console.rb +264 -0
  58. data/lib/makit/dotnet/solution_maui.rb +354 -0
  59. data/lib/makit/dotnet/solution_wasm.rb +275 -0
  60. data/lib/makit/dotnet/solution_wpf.rb +304 -0
  61. data/lib/makit/dotnet.rb +102 -219
  62. data/lib/makit/email.rb +90 -61
  63. data/lib/makit/environment.rb +142 -139
  64. data/lib/makit/examples/runner.rb +370 -0
  65. data/lib/makit/exceptions.rb +45 -0
  66. data/lib/makit/fileinfo.rb +24 -26
  67. data/lib/makit/files.rb +43 -47
  68. data/lib/makit/gems.rb +29 -28
  69. data/lib/makit/git/cli.rb +54 -0
  70. data/lib/makit/git/repository.rb +90 -0
  71. data/lib/makit/git.rb +98 -145
  72. data/lib/makit/gitlab_runner.rb +59 -60
  73. data/lib/makit/humanize.rb +137 -129
  74. data/lib/makit/indexer.rb +47 -56
  75. data/lib/makit/logging/configuration.rb +305 -0
  76. data/lib/makit/logging/format_registry.rb +84 -0
  77. data/lib/makit/logging/formatters/base.rb +39 -0
  78. data/lib/makit/logging/formatters/console_formatter.rb +140 -0
  79. data/lib/makit/logging/formatters/json_formatter.rb +65 -0
  80. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -0
  81. data/lib/makit/logging/formatters/text_formatter.rb +64 -0
  82. data/lib/makit/logging/log_request.rb +115 -0
  83. data/lib/makit/logging/logger.rb +163 -0
  84. data/lib/makit/logging/sinks/base.rb +91 -0
  85. data/lib/makit/logging/sinks/console.rb +72 -0
  86. data/lib/makit/logging/sinks/file_sink.rb +92 -0
  87. data/lib/makit/logging/sinks/structured.rb +129 -0
  88. data/lib/makit/logging/sinks/unified_file_sink.rb +303 -0
  89. data/lib/makit/logging.rb +530 -106
  90. data/lib/makit/markdown.rb +75 -75
  91. data/lib/makit/mp/basic_object_mp.rb +17 -16
  92. data/lib/makit/mp/command_mp.rb +13 -13
  93. data/lib/makit/mp/command_request.mp.rb +17 -16
  94. data/lib/makit/mp/project_mp.rb +199 -210
  95. data/lib/makit/mp/string_mp.rb +193 -176
  96. data/lib/makit/nuget.rb +74 -72
  97. data/lib/makit/port.rb +32 -34
  98. data/lib/makit/process.rb +163 -65
  99. data/lib/makit/protoc.rb +107 -104
  100. data/lib/makit/rake/cli.rb +196 -0
  101. data/lib/makit/rake.rb +25 -25
  102. data/lib/makit/ruby/cli.rb +185 -0
  103. data/lib/makit/ruby.rb +25 -0
  104. data/lib/makit/secrets.rb +51 -51
  105. data/lib/makit/serializer.rb +130 -115
  106. data/lib/makit/services/builder.rb +186 -0
  107. data/lib/makit/services/error_handler.rb +226 -0
  108. data/lib/makit/services/repository_manager.rb +229 -0
  109. data/lib/makit/services/validator.rb +112 -0
  110. data/lib/makit/setup/classlib.rb +53 -0
  111. data/lib/makit/setup/gem.rb +263 -0
  112. data/lib/makit/setup/runner.rb +45 -0
  113. data/lib/makit/setup.rb +5 -0
  114. data/lib/makit/show.rb +110 -110
  115. data/lib/makit/storage.rb +126 -131
  116. data/lib/makit/symbols.rb +170 -149
  117. data/lib/makit/task_info.rb +128 -86
  118. data/lib/makit/tasks/at_exit.rb +13 -0
  119. data/lib/makit/tasks/build.rb +19 -0
  120. data/lib/makit/tasks/clean.rb +11 -0
  121. data/lib/makit/tasks/hook_manager.rb +393 -0
  122. data/lib/makit/tasks/init.rb +47 -0
  123. data/lib/makit/tasks/integrate.rb +17 -0
  124. data/lib/makit/tasks/pull_incoming.rb +11 -0
  125. data/lib/makit/tasks/setup.rb +6 -0
  126. data/lib/makit/tasks/sync.rb +12 -0
  127. data/lib/makit/tasks/tag.rb +15 -0
  128. data/lib/makit/tasks/task_monkey_patch.rb +79 -0
  129. data/lib/makit/tasks.rb +15 -150
  130. data/lib/makit/test_cache.rb +239 -0
  131. data/lib/makit/tree.rb +37 -37
  132. data/lib/makit/v1/makit.v1_pb.rb +3 -4
  133. data/lib/makit/v1/makit.v1_services_pb.rb +27 -25
  134. data/lib/makit/version.rb +5 -61
  135. data/lib/makit/version_util.rb +21 -0
  136. data/lib/makit/wix.rb +95 -95
  137. data/lib/makit/yaml.rb +29 -17
  138. data/lib/makit/zip.rb +17 -17
  139. data/lib/makit copy.rb +44 -0
  140. data/lib/makit.rb +40 -267
  141. metadata +117 -110
  142. data/lib/makit/cli/clean.rb +0 -14
  143. data/lib/makit/cli/clone.rb +0 -59
  144. data/lib/makit/cli/init.rb +0 -38
  145. data/lib/makit/cli/make.rb +0 -54
  146. data/lib/makit/cli/new.rb +0 -37
  147. data/lib/makit/cli/nuget_cache.rb +0 -38
  148. data/lib/makit/cli/pull.rb +0 -31
  149. data/lib/makit/cli/setup.rb +0 -71
  150. data/lib/makit/cli/work.rb +0 -21
  151. data/lib/makit/command_runner.rb +0 -404
  152. data/lib/makit/content/default_gitignore.txt +0 -222
@@ -1,176 +1,193 @@
1
- # frozen_string_literal: true
2
- require "json"
3
- # monkey patch String class with a run method
4
-
5
- class String
6
- def run(args = nil)
7
- if args.nil?
8
- command = self
9
- Makit::RUNNER.run(Makit::RUNNER::parse_command_request(command))
10
- else
11
- command = self
12
- request = Makit::RUNNER.parse_args(command)
13
- if args.is_a?(Hash)
14
- args.each do |key, value|
15
- request.send("#{key}=", value)
16
- end
17
- end
18
- Makit::RUNNER.run(request)
19
- end
20
- end
21
-
22
- def cache_run()
23
- command = self
24
- Makit::RUNNER.cache_run(Makit::RUNNER::parse_command_request(command))
25
- end
26
-
27
- def cache_run(timestamp = nil)
28
- if timestamp.nil?
29
- timestamp = Makit::GIT_FILE_INFOS.first.mtime #GIT_FILE_INFOS. Makit::Directory.get_newest_git_file_timestamp(Makit::Directories::PROJECT_ROOT)
30
- #timestamp = Makit::Timestamp.now
31
- end
32
-
33
- command = self
34
- Makit::RUNNER.cache_run(Makit::RUNNER::parse_command_request(command), timestamp)
35
- end
36
-
37
- def try(args = nil)
38
- if args.nil?
39
- command = self
40
- Makit::RUNNER.try(command)
41
- else
42
- command = self
43
- request = Makit::RUNNER.parse_args(command)
44
- if args.is_a?(Hash)
45
- args.each do |key, value|
46
- request.send("#{key}=", value)
47
- end
48
- end
49
- Makit::RUNNER.try(request)
50
- end
51
- end
52
-
53
- def show(args = nil)
54
- if args.nil?
55
- command = self
56
- Makit::RUNNER.show(command)
57
- else
58
- command = self
59
- request = Makit::RUNNER.parse_args(command)
60
- if args.is_a?(Hash)
61
- args.each do |key, value|
62
- request.send("#{key}=", value)
63
- end
64
- end
65
- Makit::RUNNER.show(request)
66
- end
67
- end
68
- def log(filename)
69
- #puts "Logging to file: #{filename}"
70
- # does the filename have a directory?
71
- if filename.include?("/")
72
- # get the directory
73
- directory = File.dirname(filename)
74
- # create the directory
75
- #puts "Creating directory: #{directory}"
76
- FileUtils.mkdir_p(directory)
77
- end
78
- command = self
79
-
80
- cmd = Makit::RUNNER.run(Makit::RUNNER::parse_command_request(command))
81
- # write the cmd output and error to the file
82
- #puts "Writing to file: #{filename}"
83
- File.write(filename, cmd.output + cmd.error)
84
-
85
- # display the summary of the command
86
- #puts "Command: #{command}"
87
- #puts "Output: #{cmd.output}"
88
- #puts "Error: #{cmd.error}"
89
- Makit::RUNNER.show_command(cmd)
90
- end
91
-
92
- def cache_try()
93
- command = self
94
- Makit::RUNNER.cache_try(Makit::RUNNER::parse_command_request(command))
95
- end
96
-
97
- def cache_try(timestamp = nil)
98
- if timestamp.nil?
99
- timestamp = Makit::GIT_FILE_INFOS.first.mtime #GIT_FILE_INFOS. Makit::Directory.get_newest_git_file_timestamp(Makit::Directories::PROJECT_ROOT)
100
- #timestamp = Makit::Timestamp.now
101
- end
102
-
103
- command = self
104
- Makit::RUNNER.cache_try(Makit::RUNNER::parse_command_request(command), timestamp)
105
- end
106
-
107
- # Read a value from a JSON file
108
- # key is a string with the key to read, e.g. "AzureAd.Authority"
109
- def get_json_value(key)
110
- json = File.read(self)
111
- data = JSON.parse(json)
112
-
113
- # key delimiter is '.' so we can access nested keys
114
- key.split(".").each do |k|
115
- data = data[k]
116
- end
117
- data
118
- end
119
-
120
- alias_method :retrieve, :get_json_value
121
-
122
- # Set a value in a JSON file
123
- # key is a string with the key to set, e.g. "AzureAd.Authority"
124
- def set_json_value(key, value)
125
- file = File.read(self)
126
- data = JSON.parse(file)
127
- keys = key.split(".")
128
- current = data
129
-
130
- # Traverse and create any missing keys
131
- keys[0..-2].each do |k|
132
- current[k] ||= {} # Create a new hash if the key doesn't exist
133
- current = current[k]
134
- end
135
-
136
- # Set the value for the final key
137
- current[keys[-1]] = value
138
-
139
- # Write the JSON back to the file
140
- File.write(self, JSON.pretty_generate(data))
141
- end
142
-
143
- # Alias for set_json_value
144
- alias_method :assign, :set_json_value
145
-
146
- def strip_color_codes
147
- # Regular expression to remove ANSI color codes
148
- cleaned_content = self.gsub(/\e\[[\d;]+m/, "")
149
- cleaned_content
150
- end
151
-
152
- def to_lines(max_length = 80, indent_length = 5)
153
- if (self.length <= max_length)
154
- return self
155
- else
156
- indent = " " * indent_length
157
- words = self.split(" ")
158
- lines = []
159
- line = ""
160
- words.each do |word|
161
- if ((line + word).length > max_length)
162
- lines << line
163
- line = indent + word
164
- else
165
- if (line.length == 0)
166
- line = word
167
- else
168
- line += " " + word
169
- end
170
- end
171
- end
172
- lines << line
173
- return lines.join("\n")
174
- end
175
- end
176
- 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
+ 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
data/lib/makit/nuget.rb CHANGED
@@ -1,72 +1,74 @@
1
- require "tmpdir"
2
- # This module provides classes for the Makit gem.
3
- module Makit
4
- # This class provide methods for working with the Nuget package cache
5
- #
6
- # Example:
7
- #
8
- # Makit::Directory.cache("Google.Protobuf", "3.27.2")
9
- #
10
- # dotnet nuget locals all --list
11
- # dotnet nuget locals all --clear
12
- #
13
- class NuGet
14
- def self.get_cache_dir(package, version)
15
- File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package, version)
16
- end
17
-
18
- def self.cache(package, version)
19
- # if the package is already cached, there is nothing to do
20
- if (!Dir.exist?(get_cache_dir(package, version)))
21
- Dir.mktmpdir do |dir|
22
- # Use the temp directory here
23
- Dir.chdir(dir) do
24
- system("dotnet new classlib -n ClassLib")
25
- Dir.chdir("ClassLib") do
26
-
27
- # display a list of directories in the current directory
28
- puts Dir.entries(Dir.pwd)
29
- # display a list of files in the current directory
30
- puts Dir.entries(Dir.pwd)
31
- puts "dotnet add ClassLib.csproj package #{package} --version #{version}"
32
- system("dotnet add ClassLib.csproj package #{package} --version #{version}")
33
- end
34
- end
35
- # The directory and its contents will be removed automatically after the block
36
- end
37
- end
38
- end
39
-
40
- def self.clear_cache(package, version)
41
- if (Dir.exist?(get_cache_dir(package, version)))
42
- FileUtils.rm_rf(get_cache_dir(package, version))
43
- end
44
- end
45
-
46
- # get the latest version of the package
47
- def self.get_latest_version(package)
48
- dir = File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package)
49
- if (Dir.exist?(dir))
50
- versions = Dir.entries(dir).select { |entry| File.directory?(File.join(dir, entry)) && !(entry == "." || entry == "..") }
51
- highest_version = Makit::Version::get_highest_version(versions)
52
- return highest_version
53
- end
54
- nil
55
- end
56
-
57
- # publish a package to a nuget directory feed
58
- def self.add_package(package, path)
59
- system("dotnet nuget push #{path} --source #{path}")
60
- end
61
-
62
- def self.publish_to_directory(nuget_package_path,directory,package_name,version)
63
- target_package_path = "#{directory}/#{package_name}/#{version}/#{package_name}.#{version}.nupkg".downcase
64
- if (File.exist?(target_package_path))
65
- puts " #{target_package_path} already exists".colorize(:grey)
66
- else
67
- "dotnet nuget push #{nuget_package_path} --source #{directory}".run
68
- end
69
- end
70
-
71
- end
72
- 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,34 +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
- begin
10
- socket = Socket.new(:INET, :STREAM)
11
- socket.bind(Socket.sockaddr_in(port, ''))
12
- socket.close
13
- return true # Port is available for use
14
- rescue Errno::EADDRINUSE, Errno::EACCES
15
- return false # Port is not available for use
16
- end
17
- end
18
-
19
- def self.get_available_port(start_port = 1024, end_port = 65535)
20
- (start_port..end_port).each do |port|
21
- return port if is_port_available?(port)
22
- end
23
- nil # No available port found in the range
24
- end
25
-
26
- def self.get_random_port
27
- rand(1024..65535)
28
- end
29
-
30
- def self.get_random_available_port
31
- get_available_port(get_random_port)
32
- end
33
- end # class Port
34
- end # module Makit
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