Module: Makit::NugetCache
- Defined in:
- lib/makit/nuget_cache.rb
Defined Under Namespace
Classes: Error
Class Method Summary collapse
-
.purge(package_id:, version: nil, dotnet: "dotnet", dry_run: false) ⇒ Object
Purges a package (and optionally a version) from the NuGet global packages cache.
Class Method Details
.purge(package_id:, version: nil, dotnet: "dotnet", dry_run: false) ⇒ Object
Purges a package (and optionally a version) from the NuGet global packages cache.
Examples:
Makit::NugetCache.purge(package_id: "Newtonsoft.Json")
Makit::NugetCache.purge(package_id: "Newtonsoft.Json", version: "13.0.3")
Returns a Hash with keys:
:global_packages_dir, :package_dir, :target_dir, :purged, :reason (if not purged)
19 20 21 22 23 24 25 26 27 28 29 30 31 32 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 |
# File 'lib/makit/nuget_cache.rb', line 19 def self.purge(package_id:, version: nil, dotnet: "dotnet", dry_run: false) raise ArgumentError, "package_id is required" if package_id.to_s.strip.empty? global_dir = resolve_global_packages_dir(dotnet: dotnet) package_dir = File.join(global_dir, normalize_package_id(package_id)) target_dir = if version && !version.to_s.strip.empty? File.join(package_dir, version.to_s.strip) else package_dir end result = { global_packages_dir: global_dir, package_dir: package_dir, target_dir: target_dir, purged: false } unless Dir.exist?(target_dir) result[:reason] = "Target directory does not exist" return result end if dry_run result[:reason] = "dry_run" return result end assert_within!(target_dir, global_dir) FileUtils.rm_rf(target_dir) result[:purged] = true result rescue Error, ArgumentError => e result ||= {} result[:purged] = false result[:reason] = e. result end |