parser

package
v0.0.0-...-6ca7723 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 17, 2025 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Parser

type Parser struct {
	// RecursiveResolve 是否递归解析引用的文件
	// 当设置为true时,解析器会自动解析-r/--requirement引用的文件
	RecursiveResolve bool

	// ProcessEnvVars 是否处理环境变量
	// 当设置为true时,环境变量如${ENV_VAR}会被替换为其实际值
	ProcessEnvVars bool
}

Parser 提供解析requirements.txt文件的功能

Parser结构体是解析Python requirements.txt文件的核心组件,负责将文本内容 解析为结构化的Requirement对象数组。它支持多种解析选项,包括递归解析引用文件和 环境变量替换。

使用示例:

// 创建默认解析器
p := parser.New()

// 解析文件
requirements, err := p.ParseFile("requirements.txt")
if err != nil {
    // 处理错误
}

// 处理解析结果
for _, req := range requirements {
    fmt.Printf("包名: %s, 版本: %s\n", req.Name, req.Version)
}

func New

func New() *Parser

New 创建一个新的Parser实例,使用默认设置

默认设置: - RecursiveResolve: false(不递归解析引用文件) - ProcessEnvVars: true(处理环境变量替换)

返回:

  • *Parser: 新创建的Parser实例

示例:

// 创建默认解析器
p := parser.New()

// 解析字符串内容
reqs, _ := p.ParseString("flask==2.0.1\nrequests>=2.25.0")

func NewWithOptions

func NewWithOptions(recursiveResolve bool, processEnvVars bool) *Parser

NewWithOptions 创建一个新的Parser实例,可自定义选项

参数:

  • recursiveResolve: 是否递归解析引用的文件
  • processEnvVars: 是否处理环境变量替换

返回:

  • *Parser: 根据指定选项配置的Parser实例

示例:

// 创建不递归解析引用文件且不处理环境变量的解析器
p := parser.NewWithOptions(false, false)

// 创建递归解析引用文件但不处理环境变量的解析器
p := parser.NewWithOptions(true, false)

func NewWithRecursiveResolve

func NewWithRecursiveResolve() *Parser

NewWithRecursiveResolve 创建一个新的Parser实例,启用递归解析

创建一个配置为递归解析引用文件的解析器,这对于处理包含-r/--requirement行的 requirements.txt文件很有用。

返回:

  • *Parser: 配置为递归解析的Parser实例

示例:

// 创建支持递归解析的解析器
p := parser.NewWithRecursiveResolve()

// 处理包含引用的文件
// 例如文件内容: "flask==2.0.1\n-r other-requirements.txt"
reqs, _ := p.ParseFile("requirements.txt")
// reqs将包含requirements.txt和other-requirements.txt中的所有依赖

func (*Parser) Parse

func (p *Parser) Parse(reader io.Reader) ([]*models.Requirement, error)

Parse 从一个io.Reader解析requirements.txt文件内容

此方法读取io.Reader提供的内容,按行解析,并处理特殊格式如行继续符和环境变量。 它是其他解析方法(如ParseString和ParseFile)的基础方法。

参数:

  • reader: 提供requirements.txt内容的io.Reader接口

返回:

  • []*models.Requirement: 解析出的依赖项数组
  • error: 解析过程中遇到的错误

示例:

file, _ := os.Open("requirements.txt")
defer file.Close()

p := parser.New()
reqs, err := p.Parse(file)
if err != nil {
    // 处理错误
}

func (*Parser) ParseFile

func (p *Parser) ParseFile(filePath string) ([]*models.Requirement, error)

ParseFile 从文件路径解析requirements.txt内容

此方法打开指定路径的文件并解析其内容。如果启用了递归解析,还会处理文件中引用的其他文件。

参数:

  • filePath: 要解析的requirements.txt文件路径

返回:

  • []*models.Requirement: 解析出的依赖项数组
  • error: 解析过程中遇到的错误,如文件无法打开

示例:

p := parser.New()
reqs, err := p.ParseFile("requirements.txt")
if err != nil {
    // 处理错误,如文件不存在
}

// 使用递归解析处理引用文件
p := parser.NewWithRecursiveResolve()
reqs, err := p.ParseFile("requirements.txt")
// reqs将包括所有引用文件中的依赖项

func (*Parser) ParseString

func (p *Parser) ParseString(content string) ([]*models.Requirement, error)

ParseString 从字符串解析requirements.txt内容

此方法是Parse的便捷包装,允许直接从字符串内容解析依赖项。

参数:

  • content: 要解析的requirements.txt格式的字符串内容

返回:

  • []*models.Requirement: 解析出的依赖项数组
  • error: 解析过程中遇到的错误

示例:

content := `
flask==2.0.1
requests>=2.25.0,<3.0.0
# 这是一个注释
-r other-requirements.txt
`

p := parser.New()
reqs, err := p.ParseString(content)
if err != nil {
    // 处理错误
}

// reqs包含4个项目: flask依赖、requests依赖、注释行和文件引用

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL