dagger/dagger · error
can't assign multiple variables: %q
Error message
can't assign multiple variables: %q
What it means
Fires in parseEntry when a dotenv line parses as a shell statement containing more than one assignment (e.g. A=1 B=2). The dotenv parser supports exactly one variable assignment per line, so multi-assignment lines are rejected.
Source
Thrown at core/dotenv/dotenv.go:101
// Use shell parser for complex cases
parser := syntax.NewParser()
file, err := parser.Parse(strings.NewReader(line), "")
if err != nil {
return nil, fmt.Errorf("parse error: %q: %w", line, err)
}
if len(file.Stmts) == 0 {
return nil, nil // blank line
}
stmt := file.Stmts[0]
call, ok := stmt.Cmd.(*syntax.CallExpr)
if !ok || len(call.Assigns) == 0 {
return nil, fmt.Errorf("parse error: %q: not a bare assignment", line)
}
assigns := call.Assigns
if len(assigns) != 1 {
return nil, fmt.Errorf("can't assign multiple variables: %q", line)
}
assign := assigns[0]
if assign.Name == nil {
return nil, fmt.Errorf("missing name in variable assignment: %q", line)
}
return &parsedEntry{
name: assign.Name.Value,
value: assign.Value,
args: call.Args,
}, nil
}
// Lookup gets the expanded value of a variable with memoization
func (g *GraphEvaluator) Lookup(name string) (string, bool, error) {
// Check if already expanded
if value, ok := g.expanded[name]; ok {View on GitHub (pinned to 82ba2681db)
Solutions
- Split the line into one assignment per line in the .env file
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at core/dotenv/dotenv.go:101 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of dagger/dagger@82ba2681db (2026-09-05).
Data as JSON: /api/errors/97da1f82e83e1504.
Report an issue: GitHub.