1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-28 16:20:57 -05:00
denoland-deno/main.go

75 lines
1.5 KiB
Go
Raw Normal View History

2018-05-13 23:32:01 -04:00
package main
import (
2018-05-19 05:38:51 -04:00
"flag"
2018-05-13 23:32:01 -04:00
"github.com/ry/v8worker2"
2018-05-14 00:31:48 -04:00
"os"
2018-05-22 11:42:56 -04:00
"runtime/pprof"
2018-05-13 23:32:01 -04:00
)
2018-05-19 05:38:51 -04:00
var flagReload = flag.Bool("reload", false, "Reload cached remote source code.")
var flagV8Options = flag.Bool("v8-options", false, "Print V8 command line options.")
var flagDebug = flag.Bool("debug", false, "Enable debug output.")
2018-05-22 11:42:56 -04:00
var flagGoProf = flag.String("goprof", "", "Write golang cpu profile to file.")
2018-05-19 05:38:51 -04:00
2018-05-21 17:33:33 -04:00
func stringAsset(path string) string {
data, err := Asset("dist/" + path)
check(err)
return string(data)
}
2018-05-24 10:25:38 -04:00
func FlagsParse() []string {
2018-05-19 05:38:51 -04:00
flag.Parse()
args := flag.Args()
if *flagV8Options {
args = append(args, "--help")
}
2018-05-27 03:46:18 -04:00
args = append(args, "--abort-on-uncaught-exception")
2018-05-19 05:38:51 -04:00
args = v8worker2.SetFlags(args)
2018-05-24 10:25:38 -04:00
return args
}
func main() {
args := FlagsParse()
2018-05-23 13:23:29 -04:00
2018-05-22 11:42:56 -04:00
// Maybe start Golang CPU profiler.
// Use --prof for profiling JS.
if *flagGoProf != "" {
f, err := os.Create(*flagGoProf)
if err != nil {
2018-05-25 12:25:55 -04:00
panic(err)
2018-05-22 11:42:56 -04:00
}
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
}
createDirs()
2018-05-21 22:07:40 -04:00
createWorker()
2018-05-21 23:00:36 -04:00
InitOS()
2018-05-23 16:45:01 -04:00
InitEcho()
2018-05-21 23:00:36 -04:00
InitTimers()
2018-05-27 03:46:18 -04:00
InitFetch()
2018-05-21 17:33:33 -04:00
main_js := stringAsset("main.js")
2018-05-23 11:27:56 -04:00
err := worker.Load("/main.js", main_js)
exitOnError(err)
2018-05-21 17:33:33 -04:00
main_map := stringAsset("main.map")
2018-05-14 13:02:47 -04:00
cwd, err := os.Getwd()
check(err)
var command = Msg_START // TODO use proto3
2018-05-23 17:23:50 -04:00
PubMsg("start", &Msg{
2018-05-25 15:30:09 -04:00
Command: command,
StartCwd: cwd,
StartArgv: args,
2018-05-25 15:30:09 -04:00
StartDebugFlag: *flagDebug,
StartMainJs: main_js,
StartMainMap: main_map,
2018-05-14 13:02:47 -04:00
})
2018-05-18 11:49:28 -04:00
2018-05-21 22:07:40 -04:00
DispatchLoop()
2018-05-13 23:32:01 -04:00
}