Documentation
¶
Overview ¶
Package packaging provides NuGet package extraction functionality.
Package packaging provides read and write access to NuGet packages (.nupkg files).
Index ¶
- Constants
- Variables
- func CopySatelliteFilesIfApplicableV2(packageReader *PackageReader, identity *PackageIdentity, ...) (bool, error)
- func CopySatelliteFilesIfApplicableV3(packageReader *PackageReader, identity *PackageIdentity, ...) (bool, error)
- func CopyToFile(stream io.Reader, fileFullPath string) (string, error)
- func CreateFile(path string) (*os.File, error)
- func ExtractPackageV2(ctx context.Context, source string, packageStream io.ReadSeeker, ...) ([]string, error)
- func GenerateNuspecXML(metadata PackageMetadata) ([]byte, error)
- func GenerateRelationshipID() string
- func GetFileExtension(filePath string) string
- func InstallFromSourceV3(ctx context.Context, source string, packageIdentity *PackageIdentity, ...) (bool, error)
- func IsAnalyzerFile(filePath string) bool
- func IsAssembly(filePath string) bool
- func IsBuildFile(filePath string) bool
- func IsContentFile(filePath string) bool
- func IsDllOrExe(filePath string) bool
- func IsLibFile(filePath string) bool
- func IsManifestFile(filePath string) bool
- func IsPackageMetadataFile(filePath string) bool
- func IsRefFile(filePath string) bool
- func IsRuntimesFile(filePath string) bool
- func IsToolsFile(filePath string) bool
- func UpdateFileTimeFromEntry(fileFullPath string, modTime time.Time, logger Logger) error
- func ValidateDependencies(packageID string, packageVersion *version.NuGetVersion, ...) error
- func ValidateFiles(files []PackageFile) error
- func ValidateFrameworkReferences(groups []PackageFrameworkReferenceGroup) error
- func ValidateIcon(metadata PackageMetadata, files []PackageFile) error
- func ValidateLicense(metadata PackageMetadata, files []PackageFile) error
- func ValidatePackageID(id string) error
- func ValidatePackagePath(filePath string) error
- func ValidateReadme(metadata PackageMetadata, files []PackageFile) error
- func WithFileLock(ctx context.Context, targetPath string, fn func() error) error
- func WriteContentTypes(zipWriter *zip.Writer, files []PackageFile) error
- func WriteCoreProperties(zipWriter *zip.Writer, metadata PackageMetadata) (string, error)
- func WriteRelationships(zipWriter *zip.Writer, nuspecFileName string, corePropertiesPath string) error
- type ContentFilesEntry
- type ContentTypeDefault
- type ContentTypeOverride
- type ContentTypesXML
- type CorePropertiesXML
- type DependenciesElement
- type Dependency
- type DependencyGroup
- type FileIOMode
- type FileLock
- type FrameworkAssembly
- type FrameworkReference
- type FrameworkReferenceGroup
- type FrameworkReferencesElement
- type LicenseMetadata
- type Logger
- type NupkgMetadataFile
- type Nuspec
- func (n *Nuspec) GetAuthors() []string
- func (n *Nuspec) GetDependencyGroups() ([]ParsedDependencyGroup, error)
- func (n *Nuspec) GetFrameworkReferenceGroups() ([]ParsedFrameworkReferenceGroup, error)
- func (n *Nuspec) GetOwners() []string
- func (n *Nuspec) GetParsedIdentity() (*PackageIdentity, error)
- func (n *Nuspec) GetTags() []string
- type NuspecFile
- type NuspecMetadata
- type PackageBuilder
- func (b *PackageBuilder) AddDependency(fw *frameworks.NuGetFramework, id string, versionRange *version.Range) *PackageBuilder
- func (b *PackageBuilder) AddDependencyGroup(group PackageDependencyGroup) *PackageBuilder
- func (b *PackageBuilder) AddFile(sourcePath, targetPath string) error
- func (b *PackageBuilder) AddFileFromBytes(targetPath string, content []byte) error
- func (b *PackageBuilder) AddFileFromReader(targetPath string, reader io.Reader) error
- func (b *PackageBuilder) AddFrameworkReferenceGroup(group PackageFrameworkReferenceGroup) *PackageBuilder
- func (b *PackageBuilder) AddPackageType(packageType PackageTypeInfo) *PackageBuilder
- func (b *PackageBuilder) GetFiles() []PackageFile
- func (b *PackageBuilder) GetMetadata() PackageMetadata
- func (b *PackageBuilder) PopulateFromNuspec(nuspec *Nuspec) error
- func (b *PackageBuilder) Save(writer io.Writer) error
- func (b *PackageBuilder) SaveToFile(path string) error
- func (b *PackageBuilder) SetAuthors(authors ...string) *PackageBuilder
- func (b *PackageBuilder) SetCopyright(copyright string) *PackageBuilder
- func (b *PackageBuilder) SetDescription(description string) *PackageBuilder
- func (b *PackageBuilder) SetDevelopmentDependency(isDev bool) *PackageBuilder
- func (b *PackageBuilder) SetID(id string) *PackageBuilder
- func (b *PackageBuilder) SetIcon(icon string) *PackageBuilder
- func (b *PackageBuilder) SetIconURL(urlStr string) error
- func (b *PackageBuilder) SetLanguage(language string) *PackageBuilder
- func (b *PackageBuilder) SetLicenseMetadata(license *LicenseMetadata) *PackageBuilder
- func (b *PackageBuilder) SetLicenseURL(urlStr string) error
- func (b *PackageBuilder) SetMinClientVersion(ver *version.NuGetVersion) *PackageBuilder
- func (b *PackageBuilder) SetOwners(owners ...string) *PackageBuilder
- func (b *PackageBuilder) SetProjectURL(urlStr string) error
- func (b *PackageBuilder) SetReadme(readme string) *PackageBuilder
- func (b *PackageBuilder) SetReleaseNotes(releaseNotes string) *PackageBuilder
- func (b *PackageBuilder) SetRepository(repo *PackageRepositoryMetadata) *PackageBuilder
- func (b *PackageBuilder) SetRequireLicenseAcceptance(required bool) *PackageBuilder
- func (b *PackageBuilder) SetServiceable(serviceable bool) *PackageBuilder
- func (b *PackageBuilder) SetSummary(summary string) *PackageBuilder
- func (b *PackageBuilder) SetTags(tags ...string) *PackageBuilder
- func (b *PackageBuilder) SetTitle(title string) *PackageBuilder
- func (b *PackageBuilder) SetVersion(ver *version.NuGetVersion) *PackageBuilder
- func (b *PackageBuilder) Validate() error
- type PackageDependency
- type PackageDependencyGroup
- type PackageExtractionContext
- type PackageFile
- type PackageFileExtractor
- type PackageFrameworkAssembly
- type PackageFrameworkReferenceGroup
- type PackageIdentity
- type PackageMetadata
- type PackagePathResolver
- func (r *PackagePathResolver) GetInstallPath(identity *PackageIdentity) string
- func (r *PackagePathResolver) GetManifestFileName(identity *PackageIdentity) string
- func (r *PackagePathResolver) GetPackageDirectoryName(identity *PackageIdentity) string
- func (r *PackagePathResolver) GetPackageDownloadMarkerFileName(identity *PackageIdentity) string
- func (r *PackagePathResolver) GetPackageFileName(identity *PackageIdentity) string
- func (r *PackagePathResolver) GetPackageFilePath(identity *PackageIdentity) string
- type PackageReader
- func (r *PackageReader) Close() error
- func (r *PackageReader) CopyFileTo(zipPath string, writer io.Writer) error
- func (r *PackageReader) ExtractFile(zipPath, destPath string) error
- func (r *PackageReader) ExtractFiles(files []*zip.File, destDir string) error
- func (r *PackageReader) Files() []*zip.File
- func (r *PackageReader) GetBuildFiles() []*zip.File
- func (r *PackageReader) GetContentFiles() []*zip.File
- func (r *PackageReader) GetFile(filePath string) (*zip.File, error)
- func (r *PackageReader) GetFiles(prefix string) []*zip.File
- func (r *PackageReader) GetIdentity() (*PackageIdentity, error)
- func (r *PackageReader) GetLibFiles() []*zip.File
- func (r *PackageReader) GetNuspec() (*Nuspec, error)
- func (r *PackageReader) GetNuspecFile() (*zip.File, error)
- func (r *PackageReader) GetPackageFiles() []*zip.File
- func (r *PackageReader) GetPrimarySignature() (*signatures.PrimarySignature, error)
- func (r *PackageReader) GetRefFiles() []*zip.File
- func (r *PackageReader) GetSignatureFile() (*zip.File, error)
- func (r *PackageReader) GetToolsFiles() []*zip.File
- func (r *PackageReader) HasFile(filePath string) bool
- func (r *PackageReader) IsAuthorSigned() (bool, error)
- func (r *PackageReader) IsRepositorySigned() (bool, error)
- func (r *PackageReader) IsSigned() bool
- func (r *PackageReader) OpenNuspec() (io.ReadCloser, error)
- type PackageRepositoryMetadata
- type PackageSaveMode
- type PackageType
- type PackageTypeInfo
- type ParsedDependency
- type ParsedDependencyGroup
- type ParsedFrameworkReferenceGroup
- type PathResolver
- type Reference
- type ReferenceGroup
- type ReferencesElement
- type Relationship
- type RelationshipsXML
- type RepositoryMetadata
- type SignatureVerifier
- type VersionFolderPathResolver
- func (r *VersionFolderPathResolver) GetHashPath(packageID string, ver *version.NuGetVersion) string
- func (r *VersionFolderPathResolver) GetInstallPath(packageID string, ver *version.NuGetVersion) string
- func (r *VersionFolderPathResolver) GetManifestFilePath(packageID string, ver *version.NuGetVersion) string
- func (r *VersionFolderPathResolver) GetNupkgMetadataPath(packageID string, ver *version.NuGetVersion) string
- func (r *VersionFolderPathResolver) GetPackageDirectory(packageID string, ver *version.NuGetVersion) string
- func (r *VersionFolderPathResolver) GetPackageFilePath(packageID string, ver *version.NuGetVersion) string
- func (r *VersionFolderPathResolver) GetVersionListDirectory(packageID string) string
- type XMLDocFileSaveMode
Constants ¶
const ( // DefaultLockTimeout is the maximum time to wait for file lock acquisition DefaultLockTimeout = 2 * time.Minute // LockRetryDelay is the retry delay for lock acquisition LockRetryDelay = 100 * time.Millisecond // LockFileExtension is the lock file extension LockFileExtension = ".lock" )
const ( LibFolder = "lib/" RefFolder = "ref/" RuntimesFolder = "runtimes/" ContentFolder = "content/" ContentFilesFolder = "contentFiles/" BuildFolder = "build/" BuildTransitiveFolder = "buildTransitive/" ToolsFolder = "tools/" NativeFolder = "native/" AnalyzersFolder = "analyzers/" EmbedFolder = "embed/" )
Common package folder constants
const ( ManifestExtension = ".nuspec" SignatureFile = ".signature.p7s" PackageRelationshipFile = "_rels/.rels" ContentTypesFile = "[Content_Types].xml" PSMDCPFile = "package/services/metadata/core-properties/" )
Package metadata files
const ( // NuspecNamespaceV1 - Baseline schema (2010/07) NuspecNamespaceV1 = "http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" // NuspecNamespaceV2 - Added copyrights, references and release notes (2011/08) NuspecNamespaceV2 = "http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd" // NuspecNamespaceV3 - Used if the version is a semantic version (2011/10) NuspecNamespaceV3 = "http://schemas.microsoft.com/packaging/2011/10/nuspec.xsd" // NuspecNamespaceV4 - Added 'targetFramework' attribute for 'dependency' elements (2012/06) // Allow framework folders under 'content' and 'tools' folders NuspecNamespaceV4 = "http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd" // NuspecNamespaceV5 - Added 'targetFramework' attribute for 'references' elements (2013/01) // Added 'minClientVersion' attribute NuspecNamespaceV5 = "http://schemas.microsoft.com/packaging/2013/01/nuspec.xsd" // NuspecNamespaceV6 - Allows XDT transformation (2013/05) - most recent NuspecNamespaceV6 = "http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd" )
Nuspec schema namespaces Reference: ManifestSchemaUtility.cs in NuGet.Client
const ( OPCContentTypesPath = "[Content_Types].xml" OPCRelationshipsPath = "_rels/.rels" OPCCorePropertiesPath = "package/services/metadata/core-properties/" OPCManifestRelType = "http://schemas.microsoft.com/packaging/2010/07/manifest" )
OPC file paths
const ( OPCContentTypesNamespace = "http://schemas.openxmlformats.org/package/2006/content-types" OPCRelationshipsNamespace = "http://schemas.openxmlformats.org/package/2006/relationships" OPCCorePropertiesNamespace = "http://schemas.openxmlformats.org/package/2006/metadata/core-properties" DCNamespace = "http://purl.org/dc/elements/1.1/" DCTermsNamespace = "http://purl.org/dc/terms/" XSINamespace = "http://www.w3.org/2001/XMLSchema-instance" )
OPC namespaces
const ( RelationshipContentType = "application/vnd.openxmlformats-package.relationships+xml" CorePropertiesContentType = "application/vnd.openxmlformats-package.core-properties+xml" DefaultContentType = "application/octet" )
OPC content types
const ( // MaxPackageIDLength is the maximum allowed package ID length // Reference: PackageIdValidator.cs MaxPackageIDLength = 100 )
const SignaturePath = ".signature.p7s"
SignaturePath is the path to the signature file in a signed package. Reference: SigningSpecificationsV1.cs
Variables ¶
var ( // ErrPackageNotSigned indicates the package does not contain a signature ErrPackageNotSigned = errors.New("package is not signed") // ErrInvalidPackage indicates the package structure is invalid ErrInvalidPackage = errors.New("invalid package structure") // ErrNuspecNotFound indicates no .nuspec file was found ErrNuspecNotFound = errors.New("nuspec file not found") // ErrMultipleNuspecs indicates multiple .nuspec files were found ErrMultipleNuspecs = errors.New("multiple nuspec files found") // ErrInvalidPath indicates an invalid file path (e.g., path traversal) ErrInvalidPath = errors.New("invalid file path") )
Functions ¶
func CopySatelliteFilesIfApplicableV2 ¶
func CopySatelliteFilesIfApplicableV2( packageReader *PackageReader, identity *PackageIdentity, pathResolver *PackagePathResolver, saveMode PackageSaveMode, logger Logger, ) (bool, error)
CopySatelliteFilesIfApplicableV2 checks if the package is a satellite package and copies files to runtime package (V2 layout). Returns true if satellite files were copied, false otherwise.
func CopySatelliteFilesIfApplicableV3 ¶
func CopySatelliteFilesIfApplicableV3( packageReader *PackageReader, identity *PackageIdentity, versionResolver *VersionFolderPathResolver, saveMode PackageSaveMode, logger Logger, ) (bool, error)
CopySatelliteFilesIfApplicableV3 checks if the package is a satellite package and copies files to runtime package (V3 layout).
func CopyToFile ¶
CopyToFile copies stream to file with optimizations. Reference: StreamExtensions.CopyToFile in NuGet.Packaging
func CreateFile ¶
CreateFile creates a file with platform-specific permissions. Reference: NuGetExtractionFileIO.CreateFile in NuGet.Packaging
func ExtractPackageV2 ¶
func ExtractPackageV2( ctx context.Context, source string, packageStream io.ReadSeeker, pathResolver *PackagePathResolver, extractionContext *PackageExtractionContext, ) ([]string, error)
ExtractPackageV2 extracts package using V2 (packages.config) directory layout. Reference: PackageExtractor.ExtractPackageAsync (Stream-based) in NuGet.Packaging
func GenerateNuspecXML ¶
func GenerateNuspecXML(metadata PackageMetadata) ([]byte, error)
GenerateNuspecXML generates nuspec XML from package metadata.
func GenerateRelationshipID ¶
func GenerateRelationshipID() string
GenerateRelationshipID generates a unique relationship ID.
func GetFileExtension ¶
GetFileExtension returns the file extension (lowercase, with dot)
func InstallFromSourceV3 ¶
func InstallFromSourceV3( ctx context.Context, source string, packageIdentity *PackageIdentity, copyToAsync func(string) error, versionFolderPathResolver *VersionFolderPathResolver, extractionContext *PackageExtractionContext, ) (bool, error)
InstallFromSourceV3 installs package using V3 (PackageReference) layout with file locking. Reference: PackageExtractor.InstallFromSourceAsync in NuGet.Packaging
func IsAnalyzerFile ¶
IsAnalyzerFile checks if a file is in the analyzers/ folder
func IsAssembly ¶
IsAssembly checks if file is a managed assembly
func IsBuildFile ¶
IsBuildFile checks if a file is in the build/ folder
func IsContentFile ¶
IsContentFile checks if a file is in the content/ folder
func IsManifestFile ¶
IsManifestFile checks if a file is a .nuspec manifest
func IsPackageMetadataFile ¶
IsPackageMetadataFile checks if a file is package metadata
func IsRuntimesFile ¶
IsRuntimesFile checks if a file is in the runtimes/ folder
func IsToolsFile ¶
IsToolsFile checks if a file is in the tools/ folder
func UpdateFileTimeFromEntry ¶
UpdateFileTimeFromEntry updates file timestamp with retry logic. Reference: ZipArchiveExtensions.UpdateFileTimeFromEntry in NuGet.Packaging
func ValidateDependencies ¶
func ValidateDependencies(packageID string, packageVersion *version.NuGetVersion, groups []PackageDependencyGroup) error
ValidateDependencies validates all dependency groups Reference: PackageBuilder.cs ValidateDependencies
func ValidateFiles ¶
func ValidateFiles(files []PackageFile) error
ValidateFiles validates all files in the package
func ValidateFrameworkReferences ¶
func ValidateFrameworkReferences(groups []PackageFrameworkReferenceGroup) error
ValidateFrameworkReferences validates framework reference groups
func ValidateIcon ¶
func ValidateIcon(metadata PackageMetadata, files []PackageFile) error
ValidateIcon validates icon file reference Reference: PackageBuilder.cs ValidateIconFile
func ValidateLicense ¶
func ValidateLicense(metadata PackageMetadata, files []PackageFile) error
ValidateLicense validates license metadata Reference: PackageBuilder.cs ValidateLicenseFile
func ValidatePackageID ¶
ValidatePackageID validates a package ID Reference: PackageIdValidator.cs IsValidPackageId
func ValidatePackagePath ¶
ValidatePackagePath checks for path traversal attacks. Reference: PackageBuilder validation logic
func ValidateReadme ¶
func ValidateReadme(metadata PackageMetadata, files []PackageFile) error
ValidateReadme validates readme file reference Reference: PackageBuilder.cs ValidateReadmeFile
func WithFileLock ¶
WithFileLock executes a function while holding an exclusive file lock. This is a convenience wrapper for acquireFileLock.
func WriteContentTypes ¶
func WriteContentTypes(zipWriter *zip.Writer, files []PackageFile) error
WriteContentTypes writes [Content_Types].xml to the ZIP archive.
func WriteCoreProperties ¶
func WriteCoreProperties(zipWriter *zip.Writer, metadata PackageMetadata) (string, error)
WriteCoreProperties writes core properties to the ZIP archive.
Types ¶
type ContentFilesEntry ¶
type ContentFilesEntry struct {
Include string `xml:"include,attr"`
Exclude string `xml:"exclude,attr"`
BuildAction string `xml:"buildAction,attr"`
CopyToOutput string `xml:"copyToOutput,attr"`
Flatten string `xml:"flatten,attr"`
}
ContentFilesEntry represents content files metadata.
type ContentTypeDefault ¶
type ContentTypeDefault struct {
Extension string `xml:"Extension,attr"`
ContentType string `xml:"ContentType,attr"`
}
ContentTypeDefault maps file extension to content type.
type ContentTypeOverride ¶
type ContentTypeOverride struct {
PartName string `xml:"PartName,attr"`
ContentType string `xml:"ContentType,attr"`
}
ContentTypeOverride maps specific file to content type.
type ContentTypesXML ¶
type ContentTypesXML struct {
XMLName xml.Name `xml:"Types"`
Xmlns string `xml:"xmlns,attr"`
Defaults []ContentTypeDefault `xml:"Default"`
Overrides []ContentTypeOverride `xml:"Override,omitempty"`
}
ContentTypesXML represents [Content_Types].xml structure.
func GenerateContentTypes ¶
func GenerateContentTypes(files []PackageFile) (*ContentTypesXML, error)
GenerateContentTypes generates [Content_Types].xml based on package files.
type CorePropertiesXML ¶
type CorePropertiesXML struct {
XMLName xml.Name `xml:"http://schemas.openxmlformats.org/package/2006/metadata/core-properties coreProperties"`
XmlnsDC string `xml:"xmlns:dc,attr"`
XmlnsDCTerms string `xml:"xmlns:dcterms,attr"`
XmlnsXSI string `xml:"xmlns:xsi,attr"`
Creator string `xml:"http://purl.org/dc/elements/1.1/ creator,omitempty"`
Description string `xml:"http://purl.org/dc/elements/1.1/ description,omitempty"`
Identifier string `xml:"http://purl.org/dc/elements/1.1/ identifier,omitempty"`
Version string `xml:"version,omitempty"`
Keywords string `xml:"keywords,omitempty"`
LastModifiedBy string `xml:"lastModifiedBy,omitempty"`
}
CorePropertiesXML represents package/services/metadata/core-properties/*.psmdcp.
func GenerateCoreProperties ¶
func GenerateCoreProperties(metadata PackageMetadata) *CorePropertiesXML
GenerateCoreProperties generates core properties metadata.
type DependenciesElement ¶
type DependenciesElement struct {
Groups []DependencyGroup `xml:"group"`
// Legacy: dependencies without groups (applies to all frameworks)
Dependencies []Dependency `xml:"dependency"`
}
DependenciesElement represents the dependencies container.
type Dependency ¶
type Dependency struct {
ID string `xml:"id,attr"`
Version string `xml:"version,attr"` // Version range string
Include string `xml:"include,attr"` // Asset include filter
Exclude string `xml:"exclude,attr"` // Asset exclude filter
}
Dependency represents a package dependency.
type DependencyGroup ¶
type DependencyGroup struct {
TargetFramework string `xml:"targetFramework,attr"`
Dependencies []Dependency `xml:"dependency"`
}
DependencyGroup represents dependencies for a specific framework.
type FileIOMode ¶
type FileIOMode uint32
FileIOMode represents Unix file permissions.
const ( // UnixFileMode is the default permission for extracted files (0766 octal = rwxrw-rw-) // Reference: NuGetExtractionFileIO.cs DefaultFileMode // Matches .NET Core 1.x behavior for backward compatibility UnixFileMode FileIOMode = 0766 )
type FileLock ¶
type FileLock struct {
// contains filtered or unexported fields
}
FileLock represents an exclusive file lock for package extraction. This prevents concurrent extractions from corrupting the same package.
Reference: NuGet.Client ConcurrencyUtilities.cs ExecuteWithFileLocked
type FrameworkAssembly ¶
type FrameworkAssembly struct {
AssemblyName string `xml:"assemblyName,attr"`
TargetFramework string `xml:"targetFramework,attr"`
}
FrameworkAssembly represents a legacy framework assembly reference.
type FrameworkReference ¶
type FrameworkReference struct {
Name string `xml:"name,attr"`
}
FrameworkReference represents a reference to a framework assembly.
type FrameworkReferenceGroup ¶
type FrameworkReferenceGroup struct {
TargetFramework string `xml:"targetFramework,attr"`
References []FrameworkReference `xml:"frameworkReference"`
}
FrameworkReferenceGroup represents framework references for a TFM.
type FrameworkReferencesElement ¶
type FrameworkReferencesElement struct {
Groups []FrameworkReferenceGroup `xml:"group"`
}
FrameworkReferencesElement represents framework references container.
type LicenseMetadata ¶
type LicenseMetadata struct {
Type string `xml:"type,attr"` // "expression" or "file"
Version string `xml:"version,attr"` // SPDX license version
Text string `xml:",chardata"` // License expression or file path
}
LicenseMetadata represents license information.
type Logger ¶
type Logger interface {
Info(format string, args ...any)
Warning(format string, args ...any)
Error(format string, args ...any)
}
Logger interface for extraction logging.
type NupkgMetadataFile ¶
type NupkgMetadataFile struct {
Version int `json:"version"` // Format version (currently 2)
ContentHash string `json:"contentHash"` // Base64-encoded SHA512 hash
Source string `json:"source"` // Source URL
}
NupkgMetadataFile represents .nupkg.metadata file content. Reference: NupkgMetadataFile class in NuGet.Packaging
func NewNupkgMetadataFile ¶
func NewNupkgMetadataFile(contentHash, source string) *NupkgMetadataFile
NewNupkgMetadataFile creates metadata with current version.
func ReadNupkgMetadataFile ¶
func ReadNupkgMetadataFile(path string) (*NupkgMetadataFile, error)
ReadNupkgMetadataFile reads metadata from JSON file.
func (*NupkgMetadataFile) WriteToFile ¶
func (m *NupkgMetadataFile) WriteToFile(path string) error
WriteToFile writes metadata as JSON.
type Nuspec ¶
type Nuspec struct {
XMLName xml.Name `xml:"package"`
Xmlns string `xml:"xmlns,attr,omitempty"`
Metadata NuspecMetadata `xml:"metadata"`
Files []NuspecFile `xml:"files>file"`
}
Nuspec represents a parsed .nuspec manifest.
func ParseNuspec ¶
ParseNuspec parses a .nuspec XML document.
func ParseNuspecFile ¶
ParseNuspecFile parses a nuspec from a file path.
func (*Nuspec) GetAuthors ¶
GetAuthors returns the list of authors.
func (*Nuspec) GetDependencyGroups ¶
func (n *Nuspec) GetDependencyGroups() ([]ParsedDependencyGroup, error)
GetDependencyGroups returns all dependency groups with parsed frameworks.
func (*Nuspec) GetFrameworkReferenceGroups ¶
func (n *Nuspec) GetFrameworkReferenceGroups() ([]ParsedFrameworkReferenceGroup, error)
GetFrameworkReferenceGroups returns all framework reference groups.
func (*Nuspec) GetParsedIdentity ¶
func (n *Nuspec) GetParsedIdentity() (*PackageIdentity, error)
GetParsedIdentity returns the package identity from nuspec.
type NuspecFile ¶
type NuspecFile struct {
Source string `xml:"src,attr"`
Target string `xml:"target,attr"`
Exclude string `xml:"exclude,attr"`
}
NuspecFile represents a file entry in the nuspec.
type NuspecMetadata ¶
type NuspecMetadata struct {
// Required fields
ID string `xml:"id"`
Version string `xml:"version"`
Description string `xml:"description"`
Authors string `xml:"authors"`
// Optional fields
Title string `xml:"title"`
Owners string `xml:"owners"`
ProjectURL string `xml:"projectUrl"`
IconURL string `xml:"iconUrl"`
Icon string `xml:"icon"`
LicenseURL string `xml:"licenseUrl"`
License *LicenseMetadata `xml:"license"`
RequireLicenseAcceptance bool `xml:"requireLicenseAcceptance"`
DevelopmentDependency bool `xml:"developmentDependency"`
Summary string `xml:"summary"`
ReleaseNotes string `xml:"releaseNotes"`
Copyright string `xml:"copyright"`
Language string `xml:"language"`
Tags string `xml:"tags"`
Serviceable bool `xml:"serviceable"`
Readme string `xml:"readme"`
// Version constraints
MinClientVersion string `xml:"minClientVersion,attr"`
// Complex elements
Dependencies *DependenciesElement `xml:"dependencies"`
FrameworkReferences *FrameworkReferencesElement `xml:"frameworkReferences"`
FrameworkAssemblies []FrameworkAssembly `xml:"frameworkAssemblies>frameworkAssembly"`
References *ReferencesElement `xml:"references"`
ContentFiles []ContentFilesEntry `xml:"contentFiles>files"`
PackageTypes []PackageType `xml:"packageTypes>packageType"`
Repository *RepositoryMetadata `xml:"repository"`
}
NuspecMetadata represents the metadata section.
type PackageBuilder ¶
type PackageBuilder struct {
// contains filtered or unexported fields
}
PackageBuilder builds .nupkg files.
func NewPackageBuilder ¶
func NewPackageBuilder() *PackageBuilder
NewPackageBuilder creates a new package builder.
func NewPackageBuilderFromNuspec ¶
func NewPackageBuilderFromNuspec(nuspecPath string) (*PackageBuilder, error)
NewPackageBuilderFromNuspec creates a builder from a nuspec file.
func (*PackageBuilder) AddDependency ¶
func (b *PackageBuilder) AddDependency(fw *frameworks.NuGetFramework, id string, versionRange *version.Range) *PackageBuilder
AddDependency adds a dependency to a specific framework (or nil for "any").
func (*PackageBuilder) AddDependencyGroup ¶
func (b *PackageBuilder) AddDependencyGroup(group PackageDependencyGroup) *PackageBuilder
AddDependencyGroup adds a dependency group.
func (*PackageBuilder) AddFile ¶
func (b *PackageBuilder) AddFile(sourcePath, targetPath string) error
AddFile adds a file from disk to the package.
func (*PackageBuilder) AddFileFromBytes ¶
func (b *PackageBuilder) AddFileFromBytes(targetPath string, content []byte) error
AddFileFromBytes adds a file from in-memory bytes.
func (*PackageBuilder) AddFileFromReader ¶
func (b *PackageBuilder) AddFileFromReader(targetPath string, reader io.Reader) error
AddFileFromReader adds a file from an io.Reader.
func (*PackageBuilder) AddFrameworkReferenceGroup ¶
func (b *PackageBuilder) AddFrameworkReferenceGroup(group PackageFrameworkReferenceGroup) *PackageBuilder
AddFrameworkReferenceGroup adds a framework reference group.
func (*PackageBuilder) AddPackageType ¶
func (b *PackageBuilder) AddPackageType(packageType PackageTypeInfo) *PackageBuilder
AddPackageType adds a package type.
func (*PackageBuilder) GetFiles ¶
func (b *PackageBuilder) GetFiles() []PackageFile
GetFiles returns the current file list.
func (*PackageBuilder) GetMetadata ¶
func (b *PackageBuilder) GetMetadata() PackageMetadata
GetMetadata returns the current package metadata.
func (*PackageBuilder) PopulateFromNuspec ¶
func (b *PackageBuilder) PopulateFromNuspec(nuspec *Nuspec) error
PopulateFromNuspec populates builder metadata from a parsed nuspec.
func (*PackageBuilder) Save ¶
func (b *PackageBuilder) Save(writer io.Writer) error
Save writes the package to a stream.
func (*PackageBuilder) SaveToFile ¶
func (b *PackageBuilder) SaveToFile(path string) error
SaveToFile writes the package to a file.
func (*PackageBuilder) SetAuthors ¶
func (b *PackageBuilder) SetAuthors(authors ...string) *PackageBuilder
SetAuthors sets the package authors.
func (*PackageBuilder) SetCopyright ¶
func (b *PackageBuilder) SetCopyright(copyright string) *PackageBuilder
SetCopyright sets the copyright.
func (*PackageBuilder) SetDescription ¶
func (b *PackageBuilder) SetDescription(description string) *PackageBuilder
SetDescription sets the package description.
func (*PackageBuilder) SetDevelopmentDependency ¶
func (b *PackageBuilder) SetDevelopmentDependency(isDev bool) *PackageBuilder
SetDevelopmentDependency sets whether this is a development dependency.
func (*PackageBuilder) SetID ¶
func (b *PackageBuilder) SetID(id string) *PackageBuilder
SetID sets the package ID.
func (*PackageBuilder) SetIcon ¶
func (b *PackageBuilder) SetIcon(icon string) *PackageBuilder
SetIcon sets the icon file path in the package.
func (*PackageBuilder) SetIconURL ¶
func (b *PackageBuilder) SetIconURL(urlStr string) error
SetIconURL sets the icon URL.
func (*PackageBuilder) SetLanguage ¶
func (b *PackageBuilder) SetLanguage(language string) *PackageBuilder
SetLanguage sets the language.
func (*PackageBuilder) SetLicenseMetadata ¶
func (b *PackageBuilder) SetLicenseMetadata(license *LicenseMetadata) *PackageBuilder
SetLicenseMetadata sets license metadata.
func (*PackageBuilder) SetLicenseURL ¶
func (b *PackageBuilder) SetLicenseURL(urlStr string) error
SetLicenseURL sets the license URL.
func (*PackageBuilder) SetMinClientVersion ¶
func (b *PackageBuilder) SetMinClientVersion(ver *version.NuGetVersion) *PackageBuilder
SetMinClientVersion sets the minimum client version.
func (*PackageBuilder) SetOwners ¶
func (b *PackageBuilder) SetOwners(owners ...string) *PackageBuilder
SetOwners sets the package owners.
func (*PackageBuilder) SetProjectURL ¶
func (b *PackageBuilder) SetProjectURL(urlStr string) error
SetProjectURL sets the project URL.
func (*PackageBuilder) SetReadme ¶
func (b *PackageBuilder) SetReadme(readme string) *PackageBuilder
SetReadme sets the readme file path in the package.
func (*PackageBuilder) SetReleaseNotes ¶
func (b *PackageBuilder) SetReleaseNotes(releaseNotes string) *PackageBuilder
SetReleaseNotes sets the release notes.
func (*PackageBuilder) SetRepository ¶
func (b *PackageBuilder) SetRepository(repo *PackageRepositoryMetadata) *PackageBuilder
SetRepository sets repository metadata.
func (*PackageBuilder) SetRequireLicenseAcceptance ¶
func (b *PackageBuilder) SetRequireLicenseAcceptance(required bool) *PackageBuilder
SetRequireLicenseAcceptance sets whether license acceptance is required.
func (*PackageBuilder) SetServiceable ¶
func (b *PackageBuilder) SetServiceable(serviceable bool) *PackageBuilder
SetServiceable sets whether the package is serviceable.
func (*PackageBuilder) SetSummary ¶
func (b *PackageBuilder) SetSummary(summary string) *PackageBuilder
SetSummary sets the summary.
func (*PackageBuilder) SetTags ¶
func (b *PackageBuilder) SetTags(tags ...string) *PackageBuilder
SetTags sets the package tags.
func (*PackageBuilder) SetTitle ¶
func (b *PackageBuilder) SetTitle(title string) *PackageBuilder
SetTitle sets the package title.
func (*PackageBuilder) SetVersion ¶
func (b *PackageBuilder) SetVersion(ver *version.NuGetVersion) *PackageBuilder
SetVersion sets the package version.
func (*PackageBuilder) Validate ¶
func (b *PackageBuilder) Validate() error
Validate performs comprehensive package validation
type PackageDependency ¶
type PackageDependency struct {
ID string
VersionRange *version.Range
Include []string // Asset include filters
Exclude []string // Asset exclude filters
}
PackageDependency represents a single package dependency.
type PackageDependencyGroup ¶
type PackageDependencyGroup struct {
TargetFramework *frameworks.NuGetFramework
Dependencies []PackageDependency
}
PackageDependencyGroup represents dependencies for a target framework.
type PackageExtractionContext ¶
type PackageExtractionContext struct {
// PackageSaveMode controls what files to extract
PackageSaveMode PackageSaveMode
// XMLDocFileSaveMode controls XML documentation handling
XMLDocFileSaveMode XMLDocFileSaveMode
// CopySatelliteFiles enables satellite package file merging
CopySatelliteFiles bool
// SignatureVerifier for signed package validation (optional)
SignatureVerifier SignatureVerifier
// Logger for extraction progress (optional)
Logger Logger
// ParentID for telemetry correlation (optional)
ParentID string
}
PackageExtractionContext configures extraction behavior. Reference: PackageExtractionContext class in NuGet.Packaging
func DefaultExtractionContext ¶
func DefaultExtractionContext() *PackageExtractionContext
DefaultExtractionContext returns context with sensible defaults.
type PackageFile ¶
type PackageFile struct {
SourcePath string // Path on disk (or empty for in-memory)
TargetPath string // Path in .nupkg
Content []byte // In-memory content (if SourcePath is empty)
Reader io.Reader // Stream content (if SourcePath is empty and Content is nil)
}
PackageFile represents a file to be added to the package.
type PackageFileExtractor ¶
type PackageFileExtractor struct {
// contains filtered or unexported fields
}
PackageFileExtractor handles file extraction with XML doc compression. Reference: PackageFileExtractor class in NuGet.Packaging
func NewPackageFileExtractor ¶
func NewPackageFileExtractor(packageFiles []string, saveMode XMLDocFileSaveMode) *PackageFileExtractor
NewPackageFileExtractor creates file extractor.
func (*PackageFileExtractor) ExtractPackageFile ¶
func (e *PackageFileExtractor) ExtractPackageFile( source string, target string, stream io.Reader, ) (string, error)
ExtractPackageFile extracts a single file with special handling. Returns extracted path or empty string if skipped.
type PackageFrameworkAssembly ¶
type PackageFrameworkAssembly struct {
AssemblyName string
TargetFrameworks []*frameworks.NuGetFramework
}
PackageFrameworkAssembly represents a framework assembly reference.
type PackageFrameworkReferenceGroup ¶
type PackageFrameworkReferenceGroup struct {
TargetFramework *frameworks.NuGetFramework
References []string
}
PackageFrameworkReferenceGroup represents framework references for a TFM.
type PackageIdentity ¶
type PackageIdentity struct {
ID string
Version *version.NuGetVersion
}
PackageIdentity represents a package ID and version.
func IsSatellitePackage ¶
func IsSatellitePackage(reader *PackageReader, identity *PackageIdentity) (bool, *PackageIdentity, error)
IsSatellitePackage checks if a package is a satellite package based on NuGet rules: 1. Has a <language> element in .nuspec metadata 2. Package ID ends with ".<language>" suffix (e.g., "MyLib.ja-jp") 3. Has exactly one dependency with exact version match to the runtime package
Reference: NuGet.Client PackageExtractor.cs IsSatellitePackage
func (*PackageIdentity) String ¶
func (p *PackageIdentity) String() string
String returns "ID Version" format.
type PackageMetadata ¶
type PackageMetadata struct {
// Required
ID string
Version *version.NuGetVersion
Description string
Authors []string
// Optional
Title string
Owners []string
ProjectURL *url.URL
IconURL *url.URL
Icon string
LicenseURL *url.URL
LicenseMetadata *LicenseMetadata
RequireLicenseAcceptance bool
DevelopmentDependency bool
Summary string
ReleaseNotes string
Copyright string
Language string
Tags []string
Serviceable bool
Readme string
// Version constraints
MinClientVersion *version.NuGetVersion
// Complex elements
DependencyGroups []PackageDependencyGroup
FrameworkReferenceGroups []PackageFrameworkReferenceGroup
FrameworkAssemblies []PackageFrameworkAssembly
PackageTypes []PackageTypeInfo
Repository *PackageRepositoryMetadata
}
PackageMetadata represents package metadata for building.
type PackagePathResolver ¶
type PackagePathResolver struct {
// contains filtered or unexported fields
}
PackagePathResolver resolves paths for V2 (packages.config) layout. Reference: PackagePathResolver class in NuGet.Packaging
func NewPackagePathResolver ¶
func NewPackagePathResolver(rootDirectory string, useSideBySidePaths bool) *PackagePathResolver
NewPackagePathResolver creates a V2 path resolver.
func (*PackagePathResolver) GetInstallPath ¶
func (r *PackagePathResolver) GetInstallPath(identity *PackageIdentity) string
GetInstallPath returns full installation path. Format: {rootDirectory}/{ID}.{Version} or {rootDirectory}/{ID}
func (*PackagePathResolver) GetManifestFileName ¶
func (r *PackagePathResolver) GetManifestFileName(identity *PackageIdentity) string
GetManifestFileName returns the .nuspec file name. Format: {ID}.nuspec (preserves original casing)
func (*PackagePathResolver) GetPackageDirectoryName ¶
func (r *PackagePathResolver) GetPackageDirectoryName(identity *PackageIdentity) string
GetPackageDirectoryName returns the directory name for a package. Format: {ID}.{Version} (if useSideBySidePaths) or {ID} (otherwise)
func (*PackagePathResolver) GetPackageDownloadMarkerFileName ¶
func (r *PackagePathResolver) GetPackageDownloadMarkerFileName(identity *PackageIdentity) string
GetPackageDownloadMarkerFileName returns download marker filename. Format: {ID}.packagedownload.marker
func (*PackagePathResolver) GetPackageFileName ¶
func (r *PackagePathResolver) GetPackageFileName(identity *PackageIdentity) string
GetPackageFileName returns the .nupkg file name. Format: {ID}.{Version}.nupkg
func (*PackagePathResolver) GetPackageFilePath ¶
func (r *PackagePathResolver) GetPackageFilePath(identity *PackageIdentity) string
GetPackageFilePath returns full path to .nupkg file.
type PackageReader ¶
type PackageReader struct {
// contains filtered or unexported fields
}
PackageReader provides read access to .nupkg files.
func OpenPackage ¶
func OpenPackage(path string) (*PackageReader, error)
OpenPackage opens a .nupkg file from a file path.
func OpenPackageFromReaderAt ¶
func OpenPackageFromReaderAt(r io.ReaderAt, size int64) (*PackageReader, error)
OpenPackageFromReaderAt opens a package from a ReaderAt.
func (*PackageReader) Close ¶
func (r *PackageReader) Close() error
Close closes the package reader.
func (*PackageReader) CopyFileTo ¶
func (r *PackageReader) CopyFileTo(zipPath string, writer io.Writer) error
CopyFileTo copies a file from the package to the provided writer.
func (*PackageReader) ExtractFile ¶
func (r *PackageReader) ExtractFile(zipPath, destPath string) error
ExtractFile extracts a single file from the package to the destination path. The ZIP path is validated to prevent directory traversal attacks.
func (*PackageReader) ExtractFiles ¶
func (r *PackageReader) ExtractFiles(files []*zip.File, destDir string) error
ExtractFiles extracts multiple files to a destination directory. File paths are preserved relative to the package root.
func (*PackageReader) Files ¶
func (r *PackageReader) Files() []*zip.File
Files returns the list of files in the ZIP.
func (*PackageReader) GetBuildFiles ¶
func (r *PackageReader) GetBuildFiles() []*zip.File
GetBuildFiles returns all files in build/ folders.
func (*PackageReader) GetContentFiles ¶
func (r *PackageReader) GetContentFiles() []*zip.File
GetContentFiles returns all files in content/ folders.
func (*PackageReader) GetFile ¶
func (r *PackageReader) GetFile(filePath string) (*zip.File, error)
GetFile finds a file by path (case-insensitive).
func (*PackageReader) GetFiles ¶
func (r *PackageReader) GetFiles(prefix string) []*zip.File
GetFiles returns files matching a path prefix.
func (*PackageReader) GetIdentity ¶
func (r *PackageReader) GetIdentity() (*PackageIdentity, error)
GetIdentity returns the package identity from the nuspec. Reference: PackageArchiveReader.GetIdentity
func (*PackageReader) GetLibFiles ¶
func (r *PackageReader) GetLibFiles() []*zip.File
GetLibFiles returns all files in the lib/ folder.
func (*PackageReader) GetNuspec ¶
func (r *PackageReader) GetNuspec() (*Nuspec, error)
GetNuspec reads and parses the .nuspec file.
func (*PackageReader) GetNuspecFile ¶
func (r *PackageReader) GetNuspecFile() (*zip.File, error)
GetNuspecFile finds and returns the .nuspec file entry. Nuspec should be at the root level with .nuspec extension.
func (*PackageReader) GetPackageFiles ¶
func (r *PackageReader) GetPackageFiles() []*zip.File
GetPackageFiles returns all files excluding package metadata. This filters out .nuspec, signatures, and OPC files.
func (*PackageReader) GetPrimarySignature ¶
func (r *PackageReader) GetPrimarySignature() (*signatures.PrimarySignature, error)
GetPrimarySignature returns the primary signature if package is signed
func (*PackageReader) GetRefFiles ¶
func (r *PackageReader) GetRefFiles() []*zip.File
GetRefFiles returns all files in the ref/ folder.
func (*PackageReader) GetSignatureFile ¶
func (r *PackageReader) GetSignatureFile() (*zip.File, error)
GetSignatureFile returns the signature file if package is signed.
func (*PackageReader) GetToolsFiles ¶
func (r *PackageReader) GetToolsFiles() []*zip.File
GetToolsFiles returns all files in the tools/ folder.
func (*PackageReader) HasFile ¶
func (r *PackageReader) HasFile(filePath string) bool
HasFile checks if a file exists in the package.
func (*PackageReader) IsAuthorSigned ¶
func (r *PackageReader) IsAuthorSigned() (bool, error)
IsAuthorSigned checks if package has an author signature
func (*PackageReader) IsRepositorySigned ¶
func (r *PackageReader) IsRepositorySigned() (bool, error)
IsRepositorySigned checks if package has a repository signature
func (*PackageReader) IsSigned ¶
func (r *PackageReader) IsSigned() bool
IsSigned checks if the package contains a signature file. Reference: PackageArchiveReader.cs
func (*PackageReader) OpenNuspec ¶
func (r *PackageReader) OpenNuspec() (io.ReadCloser, error)
OpenNuspec opens the .nuspec file for reading.
type PackageRepositoryMetadata ¶
PackageRepositoryMetadata represents repository metadata.
type PackageSaveMode ¶
type PackageSaveMode int
PackageSaveMode controls what gets extracted (flags). Reference: PackageSaveMode enum in NuGet.Packaging
const ( // PackageSaveModeNone indicates no save mode. PackageSaveModeNone PackageSaveMode = 0 // PackageSaveModeNuspec extracts .nuspec files. PackageSaveModeNuspec PackageSaveMode = 1 << 0 // PackageSaveModeNupkg saves .nupkg files. PackageSaveModeNupkg PackageSaveMode = 1 << 1 // PackageSaveModeFiles extracts package files. PackageSaveModeFiles PackageSaveMode = 1 << 2 // PackageSaveModeDefaultV2 is the default for packages.config projects (V2). PackageSaveModeDefaultV2 = PackageSaveModeNupkg | PackageSaveModeFiles // PackageSaveModeDefaultV3 is the default for PackageReference projects (V3). PackageSaveModeDefaultV3 = PackageSaveModeNuspec | PackageSaveModeNupkg | PackageSaveModeFiles )
func (PackageSaveMode) HasFlag ¶
func (m PackageSaveMode) HasFlag(flag PackageSaveMode) bool
HasFlag checks if a specific flag is set.
type PackageType ¶
PackageType represents the type of package.
type PackageTypeInfo ¶
type PackageTypeInfo struct {
Name string
Version *version.NuGetVersion
}
PackageTypeInfo represents a package type.
type ParsedDependency ¶
type ParsedDependency struct {
ID string
VersionRange *version.Range
Include []string // Asset include patterns
Exclude []string // Asset exclude patterns
}
ParsedDependency represents a dependency with parsed version range.
func (*ParsedDependency) ToPackageDependency ¶
func (d *ParsedDependency) ToPackageDependency() PackageDependency
ToPackageDependency converts a ParsedDependency to PackageDependency.
type ParsedDependencyGroup ¶
type ParsedDependencyGroup struct {
TargetFramework *frameworks.NuGetFramework
Dependencies []ParsedDependency
}
ParsedDependencyGroup represents a dependency group with parsed framework.
func (*ParsedDependencyGroup) ToPackageDependencyGroup ¶
func (g *ParsedDependencyGroup) ToPackageDependencyGroup() PackageDependencyGroup
ToPackageDependencyGroup converts a ParsedDependencyGroup to PackageDependencyGroup.
type ParsedFrameworkReferenceGroup ¶
type ParsedFrameworkReferenceGroup struct {
TargetFramework *frameworks.NuGetFramework
References []string
}
ParsedFrameworkReferenceGroup represents framework references with parsed TFM.
func (*ParsedFrameworkReferenceGroup) ToPackageFrameworkReferenceGroup ¶
func (g *ParsedFrameworkReferenceGroup) ToPackageFrameworkReferenceGroup() PackageFrameworkReferenceGroup
ToPackageFrameworkReferenceGroup converts to PackageFrameworkReferenceGroup.
type PathResolver ¶
type PathResolver interface {
GetInstallPath(packageID string, ver *version.NuGetVersion) string
}
PathResolver interface for V2/V3 path resolution.
type Reference ¶
type Reference struct {
File string `xml:"file,attr"`
}
Reference represents a reference to an assembly in the package.
type ReferenceGroup ¶
type ReferenceGroup struct {
TargetFramework string `xml:"targetFramework,attr"`
References []Reference `xml:"reference"`
}
ReferenceGroup represents references for a specific framework.
type ReferencesElement ¶
type ReferencesElement struct {
Groups []ReferenceGroup `xml:"group"`
}
ReferencesElement represents package assembly references.
type Relationship ¶
type Relationship struct {
Type string `xml:"Type,attr"`
Target string `xml:"Target,attr"`
ID string `xml:"Id,attr"`
}
Relationship represents a single relationship.
type RelationshipsXML ¶
type RelationshipsXML struct {
XMLName xml.Name `xml:"Relationships"`
Xmlns string `xml:"xmlns,attr"`
Relationships []Relationship `xml:"Relationship"`
}
RelationshipsXML represents _rels/.rels structure.
func GenerateRelationships ¶
func GenerateRelationships(nuspecFileName string, corePropertiesPath string) *RelationshipsXML
GenerateRelationships generates _rels/.rels for the package.
type RepositoryMetadata ¶
type RepositoryMetadata struct {
Type string `xml:"type,attr"`
URL string `xml:"url,attr"`
Branch string `xml:"branch,attr"`
Commit string `xml:"commit,attr"`
}
RepositoryMetadata represents repository information.
type SignatureVerifier ¶
type SignatureVerifier interface {
VerifySignatureAsync(ctx context.Context, reader *PackageReader) error
}
SignatureVerifier interface for package signature verification.
type VersionFolderPathResolver ¶
type VersionFolderPathResolver struct {
// contains filtered or unexported fields
}
VersionFolderPathResolver resolves paths for V3 (PackageReference) layout. Reference: VersionFolderPathResolver class in NuGet.Packaging
func NewVersionFolderPathResolver ¶
func NewVersionFolderPathResolver(rootPath string, isLowercase bool) *VersionFolderPathResolver
NewVersionFolderPathResolver creates a V3 path resolver.
func (*VersionFolderPathResolver) GetHashPath ¶
func (r *VersionFolderPathResolver) GetHashPath(packageID string, ver *version.NuGetVersion) string
GetHashPath returns full path to hash file. Format: {rootPath}/{id}/{version}/{id}.{version}.nupkg.sha512
func (*VersionFolderPathResolver) GetInstallPath ¶
func (r *VersionFolderPathResolver) GetInstallPath(packageID string, ver *version.NuGetVersion) string
GetInstallPath returns full installation path.
func (*VersionFolderPathResolver) GetManifestFilePath ¶
func (r *VersionFolderPathResolver) GetManifestFilePath(packageID string, ver *version.NuGetVersion) string
GetManifestFilePath returns full path to .nuspec file. Format: {rootPath}/{id}/{version}/{id}.nuspec
func (*VersionFolderPathResolver) GetNupkgMetadataPath ¶
func (r *VersionFolderPathResolver) GetNupkgMetadataPath(packageID string, ver *version.NuGetVersion) string
GetNupkgMetadataPath returns full path to metadata file. Format: {rootPath}/{id}/{version}/.nupkg.metadata
func (*VersionFolderPathResolver) GetPackageDirectory ¶
func (r *VersionFolderPathResolver) GetPackageDirectory(packageID string, ver *version.NuGetVersion) string
GetPackageDirectory returns package version folder. Format: {rootPath}/{id}/{version}
func (*VersionFolderPathResolver) GetPackageFilePath ¶
func (r *VersionFolderPathResolver) GetPackageFilePath(packageID string, ver *version.NuGetVersion) string
GetPackageFilePath returns full path to .nupkg file. Format: {rootPath}/{id}/{version}/{id}.{version}.nupkg
func (*VersionFolderPathResolver) GetVersionListDirectory ¶
func (r *VersionFolderPathResolver) GetVersionListDirectory(packageID string) string
GetVersionListDirectory returns package ID folder. Format: {rootPath}/{id} (lowercase if configured)
type XMLDocFileSaveMode ¶
type XMLDocFileSaveMode int
XMLDocFileSaveMode controls XML documentation file handling. Reference: XmlDocFileSaveMode enum in NuGet.Packaging
const ( // XMLDocFileSaveModeNone extracts XML documentation files normally. XMLDocFileSaveModeNone XMLDocFileSaveMode = 0 // XMLDocFileSaveModeSkip skips extracting XML documentation files. XMLDocFileSaveModeSkip XMLDocFileSaveMode = 1 // XMLDocFileSaveModeCompress compresses XML documentation files as .xml.zip. XMLDocFileSaveModeCompress XMLDocFileSaveMode = 2 )
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package assets implements NuGet's pattern-based asset selection engine.
|
Package assets implements NuGet's pattern-based asset selection engine. |
|
Package signatures provides PKCS#7/CMS signature reading and parsing for NuGet packages.
|
Package signatures provides PKCS#7/CMS signature reading and parsing for NuGet packages. |