makit 0.0.161 → 0.0.162
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.
- checksums.yaml +4 -4
- data/README.md +41 -41
- data/exe/makit +5 -5
- data/lib/makit/apache.rb +28 -28
- data/lib/makit/auto.rb +48 -48
- data/lib/makit/azure/blob_storage.rb +257 -257
- data/lib/makit/azure/cli.rb +284 -284
- data/lib/makit/cli/base.rb +17 -17
- data/lib/makit/cli/build_commands.rb +500 -500
- data/lib/makit/cli/generators/base_generator.rb +74 -74
- data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
- data/lib/makit/cli/generators/generator_factory.rb +49 -49
- data/lib/makit/cli/generators/node_generator.rb +50 -50
- data/lib/makit/cli/generators/ruby_generator.rb +77 -77
- data/lib/makit/cli/generators/rust_generator.rb +50 -50
- data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
- data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
- data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
- data/lib/makit/cli/generators/templates/ruby/gemspec.rb +41 -41
- data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
- data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
- data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
- data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
- data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
- data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
- data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
- data/lib/makit/cli/main.rb +78 -78
- data/lib/makit/cli/pipeline_commands.rb +311 -311
- data/lib/makit/cli/project_commands.rb +868 -868
- data/lib/makit/cli/repository_commands.rb +661 -661
- data/lib/makit/cli/strategy_commands.rb +207 -207
- data/lib/makit/cli/utility_commands.rb +521 -521
- data/lib/makit/commands/factory.rb +359 -359
- data/lib/makit/commands/middleware/base.rb +73 -73
- data/lib/makit/commands/middleware/cache.rb +248 -248
- data/lib/makit/commands/middleware/command_logger.rb +312 -312
- data/lib/makit/commands/middleware/validator.rb +269 -269
- data/lib/makit/commands/request.rb +316 -316
- data/lib/makit/commands/result.rb +323 -323
- data/lib/makit/commands/runner.rb +386 -386
- data/lib/makit/commands/strategies/base.rb +171 -171
- data/lib/makit/commands/strategies/child_process.rb +162 -162
- data/lib/makit/commands/strategies/factory.rb +136 -136
- data/lib/makit/commands/strategies/synchronous.rb +139 -139
- data/lib/makit/commands.rb +50 -50
- data/lib/makit/configuration/dotnet_project.rb +48 -48
- data/lib/makit/configuration/gitlab_helper.rb +61 -61
- data/lib/makit/configuration/project.rb +292 -292
- data/lib/makit/configuration/rakefile_helper.rb +43 -43
- data/lib/makit/configuration/step.rb +34 -34
- data/lib/makit/configuration/timeout.rb +74 -74
- data/lib/makit/configuration.rb +21 -21
- data/lib/makit/content/default_gitignore.rb +7 -7
- data/lib/makit/content/default_gitignore.txt +225 -225
- data/lib/makit/content/default_rakefile.rb +13 -13
- data/lib/makit/content/gem_rakefile.rb +16 -16
- data/lib/makit/context.rb +1 -1
- data/lib/makit/data.rb +49 -49
- data/lib/makit/directories.rb +170 -170
- data/lib/makit/directory.rb +262 -262
- data/lib/makit/docs/files.rb +89 -89
- data/lib/makit/docs/rake.rb +102 -102
- data/lib/makit/dotnet/cli.rb +69 -69
- data/lib/makit/dotnet/project.rb +217 -217
- data/lib/makit/dotnet/solution.rb +38 -38
- data/lib/makit/dotnet/solution_classlib.rb +239 -239
- data/lib/makit/dotnet/solution_console.rb +264 -264
- data/lib/makit/dotnet/solution_maui.rb +354 -354
- data/lib/makit/dotnet/solution_wasm.rb +275 -275
- data/lib/makit/dotnet/solution_wpf.rb +304 -304
- data/lib/makit/dotnet.rb +102 -102
- data/lib/makit/email.rb +90 -90
- data/lib/makit/environment.rb +142 -142
- data/lib/makit/examples/runner.rb +370 -370
- data/lib/makit/exceptions.rb +45 -45
- data/lib/makit/fileinfo.rb +32 -32
- data/lib/makit/files.rb +43 -43
- data/lib/makit/gems.rb +49 -40
- data/lib/makit/git/cli.rb +103 -103
- data/lib/makit/git/repository.rb +100 -100
- data/lib/makit/git.rb +104 -104
- data/lib/makit/gitlab/pipeline.rb +857 -857
- data/lib/makit/gitlab/pipeline_service_impl.rb +1535 -1535
- data/lib/makit/gitlab_runner.rb +59 -59
- data/lib/makit/humanize.rb +218 -218
- data/lib/makit/indexer.rb +47 -47
- data/lib/makit/io/filesystem.rb +111 -111
- data/lib/makit/io/filesystem_service_impl.rb +337 -337
- data/lib/makit/lint.rb +212 -212
- data/lib/makit/logging/configuration.rb +309 -309
- data/lib/makit/logging/format_registry.rb +84 -84
- data/lib/makit/logging/formatters/base.rb +39 -39
- data/lib/makit/logging/formatters/console_formatter.rb +140 -140
- data/lib/makit/logging/formatters/json_formatter.rb +65 -65
- data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
- data/lib/makit/logging/formatters/text_formatter.rb +64 -64
- data/lib/makit/logging/log_request.rb +119 -119
- data/lib/makit/logging/logger.rb +199 -199
- data/lib/makit/logging/sinks/base.rb +91 -91
- data/lib/makit/logging/sinks/console.rb +72 -72
- data/lib/makit/logging/sinks/file_sink.rb +92 -92
- data/lib/makit/logging/sinks/structured.rb +123 -123
- data/lib/makit/logging/sinks/unified_file_sink.rb +296 -296
- data/lib/makit/logging.rb +578 -578
- data/lib/makit/markdown.rb +75 -75
- data/lib/makit/mp/basic_object_mp.rb +17 -17
- data/lib/makit/mp/command_mp.rb +13 -13
- data/lib/makit/mp/command_request.mp.rb +17 -17
- data/lib/makit/mp/project_mp.rb +199 -199
- data/lib/makit/mp/string_mp.rb +205 -205
- data/lib/makit/nuget.rb +243 -74
- data/lib/makit/podman/podman.rb +458 -458
- data/lib/makit/podman/podman_service_impl.rb +1081 -1081
- data/lib/makit/port.rb +32 -32
- data/lib/makit/process.rb +377 -377
- data/lib/makit/protoc.rb +112 -112
- data/lib/makit/rake/cli.rb +196 -196
- data/lib/makit/rake/trace_controller.rb +174 -174
- data/lib/makit/rake.rb +81 -81
- data/lib/makit/ruby/cli.rb +185 -185
- data/lib/makit/ruby.rb +25 -25
- data/lib/makit/rubygems.rb +137 -137
- data/lib/makit/secrets/azure_key_vault.rb +322 -322
- data/lib/makit/secrets/azure_secrets.rb +183 -183
- data/lib/makit/secrets/local_secrets.rb +72 -72
- data/lib/makit/secrets/secrets_manager.rb +105 -105
- data/lib/makit/secrets.rb +16 -16
- data/lib/makit/serializer.rb +130 -130
- data/lib/makit/services/builder.rb +186 -186
- data/lib/makit/services/error_handler.rb +226 -226
- data/lib/makit/services/repository_manager.rb +367 -367
- data/lib/makit/services/validator.rb +112 -112
- data/lib/makit/setup/classlib.rb +101 -101
- data/lib/makit/setup/gem.rb +268 -268
- data/lib/makit/setup/pages.rb +11 -11
- data/lib/makit/setup/razorclasslib.rb +101 -101
- data/lib/makit/setup/runner.rb +54 -54
- data/lib/makit/setup.rb +5 -5
- data/lib/makit/show.rb +110 -110
- data/lib/makit/storage.rb +126 -126
- data/lib/makit/symbols.rb +175 -175
- data/lib/makit/task_info.rb +130 -130
- data/lib/makit/tasks/at_exit.rb +15 -15
- data/lib/makit/tasks/build.rb +22 -22
- data/lib/makit/tasks/bump.rb +7 -7
- data/lib/makit/tasks/clean.rb +13 -13
- data/lib/makit/tasks/configure.rb +10 -10
- data/lib/makit/tasks/format.rb +10 -10
- data/lib/makit/tasks/hook_manager.rb +443 -443
- data/lib/makit/tasks/info.rb +368 -368
- data/lib/makit/tasks/init.rb +49 -49
- data/lib/makit/tasks/integrate.rb +60 -60
- data/lib/makit/tasks/pull_incoming.rb +13 -13
- data/lib/makit/tasks/secrets.rb +7 -7
- data/lib/makit/tasks/setup.rb +16 -16
- data/lib/makit/tasks/sync.rb +14 -14
- data/lib/makit/tasks/tag.rb +27 -27
- data/lib/makit/tasks/task_monkey_patch.rb +81 -81
- data/lib/makit/tasks/test.rb +22 -22
- data/lib/makit/tasks/update.rb +21 -21
- data/lib/makit/tasks/version.rb +6 -6
- data/lib/makit/tasks.rb +24 -24
- data/lib/makit/test_cache.rb +239 -239
- data/lib/makit/tree.rb +37 -37
- data/lib/makit/v1/configuration/project_service_impl.rb +370 -370
- data/lib/makit/v1/git/git_repository_service_impl.rb +295 -295
- data/lib/makit/v1/makit.v1_pb.rb +35 -35
- data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
- data/lib/makit/v1/services/repository_manager_service_impl.rb +572 -572
- data/lib/makit/version.rb +661 -661
- data/lib/makit/version_util.rb +21 -21
- data/lib/makit/wix.rb +95 -95
- data/lib/makit/yaml.rb +29 -29
- data/lib/makit/zip.rb +17 -17
- data/lib/makit copy.rb +44 -44
- data/lib/makit.rb +119 -118
- metadata +2 -2
data/lib/makit/nuget.rb
CHANGED
|
@@ -1,74 +1,243 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "tmpdir"
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
Dir.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
# display a list of
|
|
32
|
-
puts Dir.entries(Dir.pwd)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "tmpdir"
|
|
4
|
+
require "open3"
|
|
5
|
+
require "fileutils"
|
|
6
|
+
# This module provides classes for the Makit gem.
|
|
7
|
+
module Makit
|
|
8
|
+
# This class provide methods for working with the Nuget package cache
|
|
9
|
+
#
|
|
10
|
+
# Example:
|
|
11
|
+
#
|
|
12
|
+
# Makit::Directory.cache("Google.Protobuf", "3.27.2")
|
|
13
|
+
#
|
|
14
|
+
# dotnet nuget locals all --list
|
|
15
|
+
# dotnet nuget locals all --clear
|
|
16
|
+
#
|
|
17
|
+
class NuGet
|
|
18
|
+
def self.get_cache_dir(package, version)
|
|
19
|
+
File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package, version)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.cache(package, version)
|
|
23
|
+
# if the package is already cached, there is nothing to do
|
|
24
|
+
return if Dir.exist?(get_cache_dir(package, version))
|
|
25
|
+
|
|
26
|
+
Dir.mktmpdir do |dir|
|
|
27
|
+
# Use the temp directory here
|
|
28
|
+
Dir.chdir(dir) do
|
|
29
|
+
system("dotnet new classlib -n ClassLib")
|
|
30
|
+
Dir.chdir("ClassLib") do
|
|
31
|
+
# display a list of directories in the current directory
|
|
32
|
+
puts Dir.entries(Dir.pwd)
|
|
33
|
+
# display a list of files in the current directory
|
|
34
|
+
puts Dir.entries(Dir.pwd)
|
|
35
|
+
puts "dotnet add ClassLib.csproj package #{package} --version #{version}"
|
|
36
|
+
system("dotnet add ClassLib.csproj package #{package} --version #{version}")
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
# The directory and its contents will be removed automatically after the block
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def self.clear_cache(package, version)
|
|
44
|
+
return unless Dir.exist?(get_cache_dir(package, version))
|
|
45
|
+
|
|
46
|
+
FileUtils.rm_rf(get_cache_dir(package, version))
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# get the latest version of the package
|
|
50
|
+
def self.get_latest_version(package)
|
|
51
|
+
dir = File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package)
|
|
52
|
+
if Dir.exist?(dir)
|
|
53
|
+
versions = Dir.entries(dir).select do |entry|
|
|
54
|
+
File.directory?(File.join(dir, entry)) && ![".", ".."].include?(entry)
|
|
55
|
+
end
|
|
56
|
+
highest_version = Makit::Version.get_highest_version(versions)
|
|
57
|
+
return highest_version
|
|
58
|
+
end
|
|
59
|
+
nil
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# publish a package to a nuget directory feed
|
|
63
|
+
def self.add_package(_package, path)
|
|
64
|
+
system("dotnet nuget push #{path} --source #{path}")
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def self.publish_to_directory(nuget_package_path, directory, package_name, version)
|
|
68
|
+
target_package_path = "#{directory}/#{package_name}/#{version}/#{package_name}.#{version}.nupkg".downcase
|
|
69
|
+
if File.exist?(target_package_path)
|
|
70
|
+
puts " #{target_package_path} already exists".colorize(:grey)
|
|
71
|
+
else
|
|
72
|
+
"dotnet nuget push #{nuget_package_path} --source #{directory}".run
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# -----------------------
|
|
77
|
+
# NuGet Source Management
|
|
78
|
+
# -----------------------
|
|
79
|
+
|
|
80
|
+
# Lists all configured NuGet sources
|
|
81
|
+
#
|
|
82
|
+
# @return [Array<Hash>] Array of source hashes with keys: :name, :url, :enabled
|
|
83
|
+
def self.list_sources
|
|
84
|
+
stdout, stderr, status = Open3.capture3("dotnet", "nuget", "list", "source")
|
|
85
|
+
|
|
86
|
+
unless status.success?
|
|
87
|
+
Makit::Logging.default_logger.warn("Failed to list NuGet sources: #{stderr}")
|
|
88
|
+
return []
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
sources = []
|
|
92
|
+
current_source = nil
|
|
93
|
+
lines = stdout.lines
|
|
94
|
+
|
|
95
|
+
lines.each_with_index do |line, index|
|
|
96
|
+
line_stripped = line.strip
|
|
97
|
+
next if line_stripped.empty?
|
|
98
|
+
|
|
99
|
+
# Skip header lines
|
|
100
|
+
next if line_stripped.start_with?("Registered") || line_stripped.start_with?("---")
|
|
101
|
+
|
|
102
|
+
# Parse numbered source lines like:
|
|
103
|
+
# " 11. nuget.org [Enabled]"
|
|
104
|
+
# " 1. nuget.org [Disabled]"
|
|
105
|
+
match = line_stripped.match(/^\s*\d+\.\s+(.+?)(?:\s+\[(Enabled|Disabled)\])?$/)
|
|
106
|
+
if match
|
|
107
|
+
name_part = match[1]
|
|
108
|
+
enabled_str = match[2]
|
|
109
|
+
|
|
110
|
+
next if name_part.nil? || name_part.strip.empty?
|
|
111
|
+
|
|
112
|
+
name = name_part.strip
|
|
113
|
+
|
|
114
|
+
# Default to enabled if not specified
|
|
115
|
+
enabled = enabled_str.nil? ? true : (enabled_str == "Enabled")
|
|
116
|
+
|
|
117
|
+
# Create new source entry
|
|
118
|
+
current_source = { name: name, url: nil, enabled: enabled }
|
|
119
|
+
sources << current_source
|
|
120
|
+
|
|
121
|
+
# Check next line for URL or path (indented line)
|
|
122
|
+
if index + 1 < lines.length
|
|
123
|
+
next_line = lines[index + 1]
|
|
124
|
+
next_line_stripped = next_line.strip
|
|
125
|
+
|
|
126
|
+
# Check if next line is indented (starts with whitespace) and contains URL or path
|
|
127
|
+
if next_line.match?(/^\s+/) && !next_line_stripped.empty?
|
|
128
|
+
# Check if it's a URL
|
|
129
|
+
if next_line_stripped.match?(/^https?:\/\//)
|
|
130
|
+
current_source[:url] = next_line_stripped
|
|
131
|
+
# Check if it's a file path (Windows drive letter, UNC path, or Unix path)
|
|
132
|
+
elsif next_line_stripped.match?(/^[A-Z]:[\\\/]/) || next_line_stripped.match?(/^\\\\/) || next_line_stripped.match?(/^\/[^\/]/)
|
|
133
|
+
# For local sources, use the path as the "URL" for comparison purposes
|
|
134
|
+
current_source[:url] = next_line_stripped
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
sources
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# Checks if a NuGet source with the given name exists
|
|
145
|
+
#
|
|
146
|
+
# @param name [String] The source name to check
|
|
147
|
+
# @return [Boolean] true if the source exists, false otherwise
|
|
148
|
+
def self.has_source?(name)
|
|
149
|
+
sources = list_sources
|
|
150
|
+
sources.any? { |source| source[:name] == name }
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
# Adds a NuGet source
|
|
154
|
+
#
|
|
155
|
+
# @param name [String] The source name
|
|
156
|
+
# @param url [String] The source URL
|
|
157
|
+
# @param username [String, nil] Optional username for authenticated sources
|
|
158
|
+
# @param password [String, nil] Optional password for authenticated sources
|
|
159
|
+
# @param store_password_in_clear_text [Boolean] Whether to store password in clear text (default: false)
|
|
160
|
+
# @return [Boolean] true if successful, false otherwise
|
|
161
|
+
def self.add_source(name, url, username: nil, password: nil, store_password_in_clear_text: false)
|
|
162
|
+
raise ArgumentError, "name is required" if name.nil? || name.strip.empty?
|
|
163
|
+
raise ArgumentError, "url is required" if url.nil? || url.strip.empty?
|
|
164
|
+
|
|
165
|
+
# Check if source already exists
|
|
166
|
+
if has_source?(name)
|
|
167
|
+
Makit::Logging.default_logger.info("NuGet source '#{name}' already exists")
|
|
168
|
+
return false
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
args = ["dotnet", "nuget", "add", "source", url, "--name", name]
|
|
172
|
+
args << "--username" << username if username
|
|
173
|
+
args << "--password" << password if password
|
|
174
|
+
args << "--store-password-in-clear-text" if store_password_in_clear_text
|
|
175
|
+
|
|
176
|
+
stdout, stderr, status = Open3.capture3(*args)
|
|
177
|
+
|
|
178
|
+
if status.success?
|
|
179
|
+
Makit::Logging.default_logger.info("Added NuGet source '#{name}' (#{url})")
|
|
180
|
+
true
|
|
181
|
+
else
|
|
182
|
+
Makit::Logging.default_logger.error("Failed to add NuGet source '#{name}': #{stderr}")
|
|
183
|
+
false
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# Removes a NuGet source
|
|
188
|
+
#
|
|
189
|
+
# @param name [String] The source name to remove
|
|
190
|
+
# @return [Boolean] true if successful, false otherwise
|
|
191
|
+
def self.remove_source(name)
|
|
192
|
+
raise ArgumentError, "name is required" if name.nil? || name.strip.empty?
|
|
193
|
+
|
|
194
|
+
unless has_source?(name)
|
|
195
|
+
Makit::Logging.default_logger.info("NuGet source '#{name}' does not exist")
|
|
196
|
+
return false
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
stdout, stderr, status = Open3.capture3("dotnet", "nuget", "remove", "source", name)
|
|
200
|
+
|
|
201
|
+
if status.success?
|
|
202
|
+
Makit::Logging.default_logger.info("Removed NuGet source '#{name}'")
|
|
203
|
+
true
|
|
204
|
+
else
|
|
205
|
+
Makit::Logging.default_logger.error("Failed to remove NuGet source '#{name}': #{stderr}")
|
|
206
|
+
false
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
# Configures a NuGet source (adds if it doesn't exist, updates if URL differs, no-op if already configured)
|
|
211
|
+
#
|
|
212
|
+
# @param name [String] The source name
|
|
213
|
+
# @param url [String] The source URL
|
|
214
|
+
# @param username [String, nil] Optional username for authenticated sources
|
|
215
|
+
# @param password [String, nil] Optional password for authenticated sources
|
|
216
|
+
# @param store_password_in_clear_text [Boolean] Whether to store password in clear text (default: false)
|
|
217
|
+
# @return [Boolean] true if successful or already configured, false otherwise
|
|
218
|
+
def self.configure_source(name, url, username: nil, password: nil, store_password_in_clear_text: false)
|
|
219
|
+
raise ArgumentError, "name is required" if name.nil? || name.strip.empty?
|
|
220
|
+
raise ArgumentError, "url is required" if url.nil? || url.strip.empty?
|
|
221
|
+
|
|
222
|
+
# Check if source already exists
|
|
223
|
+
if has_source?(name)
|
|
224
|
+
# Get existing source details
|
|
225
|
+
sources = list_sources
|
|
226
|
+
existing_source = sources.find { |s| s[:name] == name }
|
|
227
|
+
|
|
228
|
+
# If source exists with the same URL, it's already configured correctly (no-op)
|
|
229
|
+
if existing_source && existing_source[:url] == url
|
|
230
|
+
Makit::Logging.default_logger.info("NuGet source '#{name}' already exists with URL '#{url}', skipping configuration")
|
|
231
|
+
return true
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
# Source exists but URL is different, update it
|
|
235
|
+
Makit::Logging.default_logger.info("NuGet source '#{name}' already exists with different URL, updating...")
|
|
236
|
+
remove_source(name)
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
# Add the source
|
|
240
|
+
add_source(name, url, username: username, password: password, store_password_in_clear_text: store_password_in_clear_text)
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
end
|