package modfile

Import Path
	golang.org/x/mod/modfile (on go.dev)

Dependency Relation
	imports 13 packages, and imported by 3 packages

Involved Source Files print.go read.go Package modfile implements a parser and formatter for go.mod files. The go.mod syntax is described in https://golang.org/cmd/go/#hdr-The_go_mod_file. The Parse and ParseLax functions both parse a go.mod file and return an abstract syntax tree. ParseLax ignores unknown statements and may be used to parse go.mod files that may have been developed with newer versions of Go. The File struct returned by Parse and ParseLax represent an abstract go.mod file. File has several methods like AddNewRequire and DropReplace that can be used to programmatically edit a file. The Format function formats a File back to a byte slice which can be written to a file.
Package-Level Type Names (total 25, in which 21 are exported)
/* sort exporteds by: | */
A Comment represents a single // comment. Start Position // an end of line (not whole line) comment // without trailing newline
A CommentBlock represents a top-level block of comments separate from any rule. Comments Comments For top-level expressions only, After lists whole-line comments following the expression. // whole-line comments before this expression // end-of-line comments after this expression Start Position Comment returns the receiver. This isn't useful by itself, but a Comments struct is embedded into all the expression implementation types, and this gives each of those a Comment method to satisfy the Expr interface. (*T) Span() (start, end Position) *T : Expr
Comments collects the comments associated with an expression. For top-level expressions only, After lists whole-line comments following the expression. // whole-line comments before this expression // end-of-line comments after this expression Comment returns the receiver. This isn't useful by itself, but a Comments struct is embedded into all the expression implementation types, and this gives each of those a Comment method to satisfy the Expr interface. func (*Comments).Comment() *Comments func Expr.Comment() *Comments
Err error Filename string ModPath string Pos Position Verb string (*T) Error() string (*T) Unwrap() error *T : golang.org/x/xerrors.Wrapper *T : error
( T) Error() string T : error
An Exclude is a single exclude statement. Mod module.Version Syntax *Line
An Expr represents an input element. Comment returns the comments attached to the expression. This method would normally be named 'Comments' but that would interfere with embedding a type of the same name. Span returns the start and end position of the expression, excluding leading or trailing comments. *CommentBlock *FileSyntax *Line *LineBlock *LParen *RParen
A File is the parsed, interpreted form of a go.mod file. Exclude []*Exclude Go *Go Module *Module Replace []*Replace Require []*Require Retract []*Retract Syntax *FileSyntax (*T) AddComment(text string) (*T) AddExclude(path, vers string) error (*T) AddGoStmt(version string) error (*T) AddModuleStmt(path string) error (*T) AddNewRequire(path, vers string, indirect bool) (*T) AddReplace(oldPath, oldVers, newPath, newVers string) error (*T) AddRequire(path, vers string) error (*T) AddRetract(vi VersionInterval, rationale string) error Cleanup cleans up the file f after any edit operations. To avoid quadratic behavior, modifications like DropRequire clear the entry but do not remove it from the slice. Cleanup cleans out all the cleared entries. (*T) DropExclude(path, vers string) error (*T) DropReplace(oldPath, oldVers string) error (*T) DropRequire(path string) error (*T) DropRetract(vi VersionInterval) error (*T) Format() ([]byte, error) (*T) SetRequire(req []*Require) (*T) SortBlocks() func Parse(file string, data []byte, fix VersionFixer) (*File, error) func ParseLax(file string, data []byte, fix VersionFixer) (*File, error)
A FileSyntax represents an entire go.mod file. Comments Comments For top-level expressions only, After lists whole-line comments following the expression. // whole-line comments before this expression // end-of-line comments after this expression // file path Stmt []Expr Cleanup cleans up the file syntax x after any edit operations. To avoid quadratic behavior, removeLine marks the line as dead by setting line.Token = nil but does not remove it from the slice in which it appears. After edits have all been indicated, calling Cleanup cleans out the dead lines. Comment returns the receiver. This isn't useful by itself, but a Comments struct is embedded into all the expression implementation types, and this gives each of those a Comment method to satisfy the Expr interface. (*T) Span() (start, end Position) *T : Expr func Format(f *FileSyntax) []byte
A Go is the go statement. Syntax *Line // "1.23"
A Line is a single line of tokens. Comments Comments For top-level expressions only, After lists whole-line comments following the expression. // whole-line comments before this expression // end-of-line comments after this expression End Position InBlock bool Start Position Token []string Comment returns the receiver. This isn't useful by itself, but a Comments struct is embedded into all the expression implementation types, and this gives each of those a Comment method to satisfy the Expr interface. (*T) Span() (start, end Position) *T : Expr
A LineBlock is a factored block of lines, like require ( "x" "y" ) Comments Comments For top-level expressions only, After lists whole-line comments following the expression. // whole-line comments before this expression // end-of-line comments after this expression LParen LParen Line []*Line RParen RParen Start Position Token []string Comment returns the receiver. This isn't useful by itself, but a Comments struct is embedded into all the expression implementation types, and this gives each of those a Comment method to satisfy the Expr interface. (*T) Span() (start, end Position) *T : Expr
An LParen represents the beginning of a parenthesized line block. It is a place to store suffix comments. Comments Comments For top-level expressions only, After lists whole-line comments following the expression. // whole-line comments before this expression // end-of-line comments after this expression Pos Position Comment returns the receiver. This isn't useful by itself, but a Comments struct is embedded into all the expression implementation types, and this gives each of those a Comment method to satisfy the Expr interface. (*T) Span() (start, end Position) *T : Expr
A Module is the module statement. Mod module.Version Syntax *Line
A Position describes an arbitrary source position in a file, including the file, line, column, and byte offset. // byte in input (starting at 0) // line in input (starting at 1) // rune in line (starting at 1) func (*CommentBlock).Span() (start, end Position) func Expr.Span() (start, end Position) func (*FileSyntax).Span() (start, end Position) func (*Line).Span() (start, end Position) func (*LineBlock).Span() (start, end Position) func (*LParen).Span() (start, end Position) func (*RParen).Span() (start, end Position)
A Replace is a single replace statement. New module.Version Old module.Version Syntax *Line
A Require is a single require statement. // has "// indirect" comment Mod module.Version Syntax *Line func (*File).SetRequire(req []*Require)
A Retract is a single retract statement. Rationale string Syntax *Line VersionInterval VersionInterval VersionInterval.High string VersionInterval.Low string
An RParen represents the end of a parenthesized line block. It is a place to store whole-line (before) comments. Comments Comments For top-level expressions only, After lists whole-line comments following the expression. // whole-line comments before this expression // end-of-line comments after this expression Pos Position Comment returns the receiver. This isn't useful by itself, but a Comments struct is embedded into all the expression implementation types, and this gives each of those a Comment method to satisfy the Expr interface. (*T) Span() (start, end Position) *T : Expr
func Parse(file string, data []byte, fix VersionFixer) (*File, error) func ParseLax(file string, data []byte, fix VersionFixer) (*File, error)
A VersionInterval represents a range of versions with upper and lower bounds. Intervals are closed: both bounds are included. When Low is equal to High, the interval may refer to a single version ('v1.2.3') or an interval ('[v1.2.3, v1.2.3]'); both have the same representation. High string Low string func (*File).AddRetract(vi VersionInterval, rationale string) error func (*File).DropRetract(vi VersionInterval) error
Package-Level Functions (total 23, in which 7 are exported)
AutoQuote returns s or, if quoting is required for s to appear in a go.mod, the quotation of s.
Format returns a go.mod file as a byte slice, formatted in standard style.
IsDirectoryPath reports whether the given path should be interpreted as a directory path. Just like on the go command line, relative paths and rooted paths are directory paths; the rest are module paths.
ModulePath returns the module path from the gomod file text. If it cannot find a module path, it returns an empty string. It is tolerant of unrelated problems in the go.mod file.
MustQuote reports whether s must be quoted in order to appear as a single token in a go.mod line.
Parse parses the data, reported in errors as being from file, into a File struct. It applies fix, if non-nil, to canonicalize all module versions found.
ParseLax is like Parse but ignores unknown statements. It is used when parsing go.mod files other than the main module, under the theory that most statement types we add in the future will only apply in the main module, like exclude and replace, and so we get better gradual deployments if old go commands simply ignore those statements when found in go.mod files in dependencies.
Package-Level Variables (total 3, in which 1 are exported)
Package-Level Constants (total 5, none are exported)