runner fixes

This commit is contained in:
nvms 2024-10-14 09:04:20 -04:00
parent 76d0188dc4
commit 94d84f51f1
3 changed files with 90 additions and 46 deletions

View File

@ -120,8 +120,7 @@ func InitProject() {
"compilerOptions": { "compilerOptions": {
"module": "ES2022", "module": "ES2022",
"target": "ESNext", "target": "ESNext",
"experimentalDecorators": true, "allowSyntheticDefaultImports": true
"emitDecoratorMetadata": true
} }
}`), 0644); err != nil { }`), 0644); err != nil {
Die("failed to write tsconfig.json: %v", err) Die("failed to write tsconfig.json: %v", err)

View File

@ -96,46 +96,73 @@ func ModeOptions(config *config.Config, mode ModeType, entryPoint, tempFilePath
fmt.Printf("Unknown JSX: %s, using default\n", config.JSX) fmt.Printf("Unknown JSX: %s, using default\n", config.JSX)
} }
var loaders = map[string]api.Loader{
".js": api.LoaderJS,
".mjs": api.LoaderJS,
".cjs": api.LoaderJS,
".jsx": api.LoaderJSX,
".ts": api.LoaderTS,
".tsx": api.LoaderTSX,
".mts": api.LoaderTS,
".css": api.LoaderCSS,
".json": api.LoaderJSON,
".txt": api.LoaderText,
".html": api.LoaderText,
".md": api.LoaderText,
".svg": api.LoaderDataURL,
".png": api.LoaderDataURL,
".webp": api.LoaderDataURL,
".gif": api.LoaderDataURL,
".ttf": api.LoaderDataURL,
".eot": api.LoaderDataURL,
".woff": api.LoaderDataURL,
".woff2": api.LoaderDataURL,
}
buildOptions.Loader = loaders
// Apply loader // Apply loader
buildOptions.Loader = make(map[string]api.Loader) // buildOptions.Loader = make(map[string]api.Loader)
for k, v := range config.Loader { // for k, v := range config.Loader {
switch v { // switch v {
case "file": // case ".woff2":
buildOptions.Loader[k] = api.LoaderFile // buildOptions.Loader[k] = api.LoaderDataURL
case "dataurl": // case "file":
buildOptions.Loader[k] = api.LoaderDataURL // buildOptions.Loader[k] = api.LoaderFile
case "binary": // case "dataurl":
buildOptions.Loader[k] = api.LoaderBinary // buildOptions.Loader[k] = api.LoaderDataURL
case "base64": // case "binary":
buildOptions.Loader[k] = api.LoaderBase64 // buildOptions.Loader[k] = api.LoaderBinary
case "copy": // case "base64":
buildOptions.Loader[k] = api.LoaderCopy // buildOptions.Loader[k] = api.LoaderBase64
case "text": // case "copy":
buildOptions.Loader[k] = api.LoaderText // buildOptions.Loader[k] = api.LoaderCopy
case "js": // case "text":
buildOptions.Loader[k] = api.LoaderJS // buildOptions.Loader[k] = api.LoaderText
case "jsx": // case "js":
buildOptions.Loader[k] = api.LoaderJSX // buildOptions.Loader[k] = api.LoaderJS
case "tsx": // case "jsx":
buildOptions.Loader[k] = api.LoaderTSX // buildOptions.Loader[k] = api.LoaderJSX
case "ts": // case "tsx":
buildOptions.Loader[k] = api.LoaderTS // buildOptions.Loader[k] = api.LoaderTSX
case "json": // case "ts":
buildOptions.Loader[k] = api.LoaderJSON // buildOptions.Loader[k] = api.LoaderTS
case "css": // case "json":
buildOptions.Loader[k] = api.LoaderCSS // buildOptions.Loader[k] = api.LoaderJSON
case "globalcss": // case "css":
buildOptions.Loader[k] = api.LoaderGlobalCSS // buildOptions.Loader[k] = api.LoaderCSS
case "localcss": // case "globalcss":
buildOptions.Loader[k] = api.LoaderLocalCSS // buildOptions.Loader[k] = api.LoaderGlobalCSS
case "empty": // case "localcss":
buildOptions.Loader[k] = api.LoaderEmpty // buildOptions.Loader[k] = api.LoaderLocalCSS
case "default": // case "empty":
buildOptions.Loader[k] = api.LoaderDefault // buildOptions.Loader[k] = api.LoaderEmpty
default: // case "default":
buildOptions.Loader[k] = api.LoaderNone // buildOptions.Loader[k] = api.LoaderDefault
} // default:
} // buildOptions.Loader[k] = api.LoaderNone
// }
// }
return &buildOptions return &buildOptions
} }

View File

@ -6,6 +6,7 @@ import (
"os" "os"
"os/exec" "os/exec"
"path/filepath" "path/filepath"
"sync"
"syscall" "syscall"
"time" "time"
) )
@ -22,14 +23,18 @@ func NewRunner(c *config.Config, b *Builder, e string) *Runner {
Config: c, Config: c,
EntryPoint: e, EntryPoint: e,
Builder: b, Builder: b,
TempFilePath: newTempFilePath(), TempFilePath: newTempFilePath(e),
} }
} }
func newTempFilePath() string { func newTempFilePath(entry string) string {
timestamp := time.Now().UnixNano() timestamp := time.Now().UnixNano()
tempDir := os.TempDir() // tempDir := os.TempDir()
return filepath.Join(tempDir, fmt.Sprintf("esr-%d.mjs", timestamp)) // return filepath.Join(tempDir, fmt.Sprintf("esr-%d.mjs", timestamp))
return filepath.Join(
filepath.Dir(entry),
fmt.Sprintf("esr-%d.mjs", timestamp),
)
} }
func (r *Runner) Run(entryPoint string) { func (r *Runner) Run(entryPoint string) {
@ -44,18 +49,31 @@ func (r *Runner) Run(entryPoint string) {
cmd := exec.Command(r.Config.Run.Runtime, r.TempFilePath) cmd := exec.Command(r.Config.Run.Runtime, r.TempFilePath)
cmd.Stderr = os.Stderr cmd.Stderr = os.Stderr
cmd.Stdout = os.Stdout cmd.Stdout = os.Stdout
if err := cmd.Start(); err != nil { if err := cmd.Start(); err != nil {
fmt.Println("Error starting process:", err) fmt.Println("Error starting process:", err)
os.Exit(1) os.Exit(1)
} }
var wg sync.WaitGroup
wg.Add(1)
go func() { go func() {
defer wg.Done()
if err := cmd.Wait(); err != nil { if err := cmd.Wait(); err != nil {
fmt.Printf("Process finished with error: %v\n", err) fmt.Printf("Process finished with error: %v\n", err)
} else { } else {
fmt.Println("Process finished successfully") fmt.Println("Process finished successfully")
} }
}() }()
wg.Wait()
// Finally, remove the temp file we created
if err := os.Remove(r.TempFilePath); err != nil {
fmt.Printf("Failed to remove temp file: %v\n", err)
}
} }
func (r *Runner) Stop(cmd *exec.Cmd) error { func (r *Runner) Stop(cmd *exec.Cmd) error {