Let export/unexport modify environment variables
diff --git a/parser.go b/parser.go
index 5e63fbf..043c8ea 100644
--- a/parser.go
+++ b/parser.go
@@ -442,9 +442,19 @@
return line
}
-func exportDirective(p *parser, line []byte) []byte {
- Warn(p.mk.filename, p.lineno, "export is not properly supported yet")
+func handleExport(p *parser, line []byte, export bool) {
+ for _, n := range splitSpacesBytes(line) {
+ ast := &ExportAST{
+ name: string(n),
+ export: export,
+ }
+ ast.filename = p.mk.filename
+ ast.lineno = p.lineno
+ p.addStatement(ast)
+ }
+}
+func exportDirective(p *parser, line []byte) []byte {
p.defOpt = "export"
line = trimLeftSpaceBytes(line[len("export "):])
defineDirective := map[string]directiveFunc{
@@ -455,6 +465,8 @@
return nil
}
+ handleExport(p, line, true)
+
// e.g., export FOO BAR
if !bytes.Contains(line, []byte{'='}) {
return nil
@@ -466,7 +478,7 @@
}
func unexportDirective(p *parser, line []byte) []byte {
- Warn(p.mk.filename, p.lineno, "unexport is not supported yet, ignored")
+ handleExport(p, line[len("unexport "):], false)
return nil
}