Merge pull request #2431 from bas-vk/js-preload
cmd/geth: add JS preload parameter
This commit is contained in:
commit
934f587bd5
@ -27,6 +27,7 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/codegangsta/cli"
|
||||||
"github.com/ethereum/go-ethereum/cmd/utils"
|
"github.com/ethereum/go-ethereum/cmd/utils"
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/common/registrar"
|
"github.com/ethereum/go-ethereum/common/registrar"
|
||||||
@ -331,6 +332,23 @@ func (self *jsre) UnlockAccount(addr []byte) bool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// preloadJSFiles loads JS files that the user has specified with ctx.PreLoadJSFlag into
|
||||||
|
// the JSRE. If not all files could be loaded it will return an error describing the error.
|
||||||
|
func (self *jsre) preloadJSFiles(ctx *cli.Context) error {
|
||||||
|
if ctx.GlobalString(utils.PreLoadJSFlag.Name) != "" {
|
||||||
|
assetPath := ctx.GlobalString(utils.JSpathFlag.Name)
|
||||||
|
jsFiles := strings.Split(ctx.GlobalString(utils.PreLoadJSFlag.Name), ",")
|
||||||
|
for _, file := range jsFiles {
|
||||||
|
filename := common.AbsolutePath(assetPath, strings.TrimSpace(file))
|
||||||
|
if err := self.re.Exec(filename); err != nil {
|
||||||
|
return fmt.Errorf("%s: %v", file, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// exec executes the JS file with the given filename and stops the JSRE
|
||||||
func (self *jsre) exec(filename string) error {
|
func (self *jsre) exec(filename string) error {
|
||||||
if err := self.re.Exec(filename); err != nil {
|
if err := self.re.Exec(filename); err != nil {
|
||||||
self.re.Stop(false)
|
self.re.Stop(false)
|
||||||
|
@ -331,6 +331,7 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso
|
|||||||
utils.IPCApiFlag,
|
utils.IPCApiFlag,
|
||||||
utils.IPCPathFlag,
|
utils.IPCPathFlag,
|
||||||
utils.ExecFlag,
|
utils.ExecFlag,
|
||||||
|
utils.PreLoadJSFlag,
|
||||||
utils.WhisperEnabledFlag,
|
utils.WhisperEnabledFlag,
|
||||||
utils.DevModeFlag,
|
utils.DevModeFlag,
|
||||||
utils.TestNetFlag,
|
utils.TestNetFlag,
|
||||||
@ -427,6 +428,13 @@ func attach(ctx *cli.Context) {
|
|||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// preload user defined JS files into the console
|
||||||
|
err = repl.preloadJSFiles(ctx)
|
||||||
|
if err != nil {
|
||||||
|
utils.Fatalf("unable to preload JS file %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// in case the exec flag holds a JS statement execute it and return
|
||||||
if ctx.GlobalString(utils.ExecFlag.Name) != "" {
|
if ctx.GlobalString(utils.ExecFlag.Name) != "" {
|
||||||
repl.batch(ctx.GlobalString(utils.ExecFlag.Name))
|
repl.batch(ctx.GlobalString(utils.ExecFlag.Name))
|
||||||
} else {
|
} else {
|
||||||
@ -477,6 +485,13 @@ func console(ctx *cli.Context) {
|
|||||||
ctx.GlobalString(utils.RPCCORSDomainFlag.Name),
|
ctx.GlobalString(utils.RPCCORSDomainFlag.Name),
|
||||||
client, true)
|
client, true)
|
||||||
|
|
||||||
|
// preload user defined JS files into the console
|
||||||
|
err = repl.preloadJSFiles(ctx)
|
||||||
|
if err != nil {
|
||||||
|
utils.Fatalf("unable to preload JS file %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// in case the exec flag holds a JS statement execute it and return
|
||||||
if script := ctx.GlobalString(utils.ExecFlag.Name); script != "" {
|
if script := ctx.GlobalString(utils.ExecFlag.Name); script != "" {
|
||||||
repl.batch(script)
|
repl.batch(script)
|
||||||
} else {
|
} else {
|
||||||
|
@ -101,6 +101,7 @@ var AppHelpFlagGroups = []flagGroup{
|
|||||||
utils.RPCCORSDomainFlag,
|
utils.RPCCORSDomainFlag,
|
||||||
utils.JSpathFlag,
|
utils.JSpathFlag,
|
||||||
utils.ExecFlag,
|
utils.ExecFlag,
|
||||||
|
utils.PreLoadJSFlag,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -296,6 +296,10 @@ var (
|
|||||||
Name: "exec",
|
Name: "exec",
|
||||||
Usage: "Execute JavaScript statement (only in combination with console/attach)",
|
Usage: "Execute JavaScript statement (only in combination with console/attach)",
|
||||||
}
|
}
|
||||||
|
PreLoadJSFlag = cli.StringFlag{
|
||||||
|
Name: "preload",
|
||||||
|
Usage: "Comma separated list of JavaScript files to preload into the console",
|
||||||
|
}
|
||||||
|
|
||||||
// Network Settings
|
// Network Settings
|
||||||
MaxPeersFlag = cli.IntFlag{
|
MaxPeersFlag = cli.IntFlag{
|
||||||
|
Loading…
Reference in New Issue
Block a user