Addeed verification before building
This commit is contained in:
@@ -72,6 +72,45 @@ func runBuild(args []string) {
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 1. Run Validation
|
||||||
|
tree := index.NewProjectTree()
|
||||||
|
for _, file := range files {
|
||||||
|
content, err := os.ReadFile(file)
|
||||||
|
if err != nil {
|
||||||
|
logger.Printf("Error reading %s: %v\n", file, err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
p := parser.NewParser(string(content))
|
||||||
|
config, err := p.Parse()
|
||||||
|
if err != nil {
|
||||||
|
logger.Printf("%s: Grammar error: %v\n", file, err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
tree.AddFile(file, config)
|
||||||
|
}
|
||||||
|
|
||||||
|
v := validator.NewValidator(tree, ".")
|
||||||
|
v.ValidateProject()
|
||||||
|
|
||||||
|
hasErrors := false
|
||||||
|
for _, diag := range v.Diagnostics {
|
||||||
|
level := "ERROR"
|
||||||
|
if diag.Level == validator.LevelWarning {
|
||||||
|
level = "WARNING"
|
||||||
|
} else {
|
||||||
|
hasErrors = true
|
||||||
|
}
|
||||||
|
logger.Printf("%s:%d:%d: %s: %s\n", diag.File, diag.Position.Line, diag.Position.Column, level, diag.Message)
|
||||||
|
}
|
||||||
|
|
||||||
|
if hasErrors {
|
||||||
|
logger.Println("Build failed due to validation errors.")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Perform Build
|
||||||
b := builder.NewBuilder(files, overrides)
|
b := builder.NewBuilder(files, overrides)
|
||||||
|
|
||||||
var out *os.File = os.Stdout
|
var out *os.File = os.Stdout
|
||||||
|
|||||||
Reference in New Issue
Block a user