Improved lsp + builder + using logger

This commit is contained in:
Martino Ferrari
2026-01-21 14:35:30 +01:00
parent d4d857bf05
commit f3c13fca55
21 changed files with 891 additions and 170 deletions

View File

@@ -2,12 +2,12 @@ package main
import (
"bytes"
"fmt"
"os"
"github.com/marte-dev/marte-dev-tools/internal/builder"
"github.com/marte-dev/marte-dev-tools/internal/formatter"
"github.com/marte-dev/marte-dev-tools/internal/index"
"github.com/marte-dev/marte-dev-tools/internal/logger"
"github.com/marte-dev/marte-dev-tools/internal/lsp"
"github.com/marte-dev/marte-dev-tools/internal/parser"
"github.com/marte-dev/marte-dev-tools/internal/validator"
@@ -15,8 +15,8 @@ import (
func main() {
if len(os.Args) < 2 {
fmt.Println("Usage: mdt <command> [arguments]")
fmt.Println("Commands: lsp, build, check, fmt")
logger.Println("Usage: mdt <command> [arguments]")
logger.Println("Commands: lsp, build, check, fmt")
os.Exit(1)
}
@@ -31,7 +31,7 @@ func main() {
case "fmt":
runFmt(os.Args[2:])
default:
fmt.Printf("Unknown command: %s\n", command)
logger.Printf("Unknown command: %s\n", command)
os.Exit(1)
}
}
@@ -42,28 +42,21 @@ func runLSP() {
func runBuild(args []string) {
if len(args) < 1 {
fmt.Println("Usage: mdt build <input_files...>")
logger.Println("Usage: mdt build <input_files...>")
os.Exit(1)
}
outputDir := "build"
if err := os.MkdirAll(outputDir, 0755); err != nil {
fmt.Printf("Build failed: %v\n", err)
b := builder.NewBuilder(args)
err := b.Build(os.Stdout)
if err != nil {
logger.Printf("Build failed: %v\n", err)
os.Exit(1)
} else {
b := builder.NewBuilder(args)
err = b.Build(outputDir)
if err != nil {
fmt.Printf("Build failed: %v\n", err)
os.Exit(1)
}
fmt.Println("Build successful. Output in", outputDir)
}
}
func runCheck(args []string) {
if len(args) < 1 {
fmt.Println("Usage: mdt check <input_files...>")
logger.Println("Usage: mdt check <input_files...>")
os.Exit(1)
}
@@ -73,14 +66,14 @@ func runCheck(args []string) {
for _, file := range args {
content, err := os.ReadFile(file)
if err != nil {
fmt.Printf("Error reading %s: %v\n", file, err)
logger.Printf("Error reading %s: %v\n", file, err)
continue
}
p := parser.NewParser(string(content))
config, err := p.Parse()
if err != nil {
fmt.Printf("%s: Grammar error: %v\n", file, err)
logger.Printf("%s: Grammar error: %v\n", file, err)
continue
}
@@ -100,33 +93,33 @@ func runCheck(args []string) {
if diag.Level == validator.LevelWarning {
level = "WARNING"
}
fmt.Printf("%s:%d:%d: %s: %s\n", diag.File, diag.Position.Line, diag.Position.Column, level, diag.Message)
logger.Printf("%s:%d:%d: %s: %s\n", diag.File, diag.Position.Line, diag.Position.Column, level, diag.Message)
}
if len(v.Diagnostics) > 0 {
fmt.Printf("\nFound %d issues.\n", len(v.Diagnostics))
logger.Printf("\nFound %d issues.\n", len(v.Diagnostics))
} else {
fmt.Println("No issues found.")
logger.Println("No issues found.")
}
}
func runFmt(args []string) {
if len(args) < 1 {
fmt.Println("Usage: mdt fmt <input_files...>")
logger.Println("Usage: mdt fmt <input_files...>")
os.Exit(1)
}
for _, file := range args {
content, err := os.ReadFile(file)
if err != nil {
fmt.Printf("Error reading %s: %v\n", file, err)
logger.Printf("Error reading %s: %v\n", file, err)
continue
}
p := parser.NewParser(string(content))
config, err := p.Parse()
if err != nil {
fmt.Printf("Error parsing %s: %v\n", file, err)
logger.Printf("Error parsing %s: %v\n", file, err)
continue
}
@@ -135,9 +128,9 @@ func runFmt(args []string) {
err = os.WriteFile(file, buf.Bytes(), 0644)
if err != nil {
fmt.Printf("Error writing %s: %v\n", file, err)
logger.Printf("Error writing %s: %v\n", file, err)
continue
}
fmt.Printf("Formatted %s\n", file)
logger.Printf("Formatted %s\n", file)
}
}