type Archive … type File … // Info returns a FileInfo about the file, for use with tar.FileInfoHeader // and zip.FileInfoHeader. func (f *File) Info() fs.FileInfo { … } type fileInfo … func (i fileInfo) Name() string { … } func (i fileInfo) ModTime() time.Time { … } func (i fileInfo) Mode() fs.FileMode { … } func (i fileInfo) IsDir() bool { … } func (i fileInfo) Size() int64 { … } func (i fileInfo) Sys() any { … } func (i fileInfo) String() string { … } // NewArchive returns a new Archive containing all the files in the directory dir. // The archive can be amended afterward using methods like Add and Filter. func NewArchive(dir string) (*Archive, error) { … } // Add adds a file with the given name and info to the archive. // The content of the file comes from the operating system file src. // After a sequence of one or more calls to Add, // the caller should invoke Sort to re-sort the archive's files. func (a *Archive) Add(name, src string, info fs.FileInfo) { … } func nameLess(x, y string) bool { … } // Sort sorts the files in the archive. // It is only necessary to call Sort after calling Add or RenameGoMod. // NewArchive returns a sorted archive, and the other methods // preserve the sorting of the archive. func (a *Archive) Sort() { … } // Clone returns a copy of the Archive. // Method calls like Add and Filter invoked on the copy do not affect the original, // nor do calls on the original affect the copy. func (a *Archive) Clone() *Archive { … } // AddPrefix adds a prefix to all file names in the archive. func (a *Archive) AddPrefix(prefix string) { … } // Filter removes files from the archive for which keep(name) returns false. func (a *Archive) Filter(keep func(name string) bool) { … } // SetMode changes the mode of every file in the archive // to be mode(name, m), where m is the file's current mode. func (a *Archive) SetMode(mode func(name string, m fs.FileMode) fs.FileMode) { … } // Remove removes files matching any of the patterns from the archive. // The patterns use the syntax of path.Match, with an extension of allowing // a leading **/ or trailing /**, which match any number of path elements // (including no path elements) before or after the main match. func (a *Archive) Remove(patterns ...string) { … } // SetTime sets the modification time of all files in the archive to t. func (a *Archive) SetTime(t time.Time) { … } // RenameGoMod renames the go.mod files in the archive to _go.mod, // for use with the module form, which cannot contain other go.mod files. func (a *Archive) RenameGoMod() { … } func amatch(pattern, name string) (bool, error) { … }