doodle/cmd/doodad/commands/install_script.go

62 lines
1.3 KiB
Go
Raw Normal View History

package commands
import (
"fmt"
"io/ioutil"
2022-09-24 22:17:25 +00:00
"git.kirsle.net/SketchyMaze/doodle/pkg/doodads"
"git.kirsle.net/SketchyMaze/doodle/pkg/log"
2020-11-15 23:20:15 +00:00
"github.com/urfave/cli/v2"
)
// InstallScript to add the script to a doodad file.
2020-06-05 06:11:03 +00:00
var InstallScript *cli.Command
func init() {
2020-06-05 06:11:03 +00:00
InstallScript = &cli.Command{
Name: "install-script",
Usage: "install the JavaScript source to a doodad",
ArgsUsage: "<index.js> <filename.doodad>",
Flags: []cli.Flag{
2020-06-05 06:11:03 +00:00
&cli.StringFlag{
Name: "key",
Usage: "chroma key color for transparency on input image files",
Value: "#ffffff",
},
},
Action: func(c *cli.Context) error {
if c.NArg() != 2 {
2021-09-04 04:35:12 +00:00
return cli.Exit(
"Usage: doodad install-script <script.js> <filename.doodad>",
1,
)
}
var (
args = c.Args()
2020-06-05 06:11:03 +00:00
scriptFile = args.Get(0)
doodadFile = args.Get(1)
)
// Read the JavaScript source.
javascript, err := ioutil.ReadFile(scriptFile)
if err != nil {
2021-09-04 04:35:12 +00:00
return cli.Exit(err.Error(), 1)
}
doodad, err := doodads.LoadJSON(doodadFile)
if err != nil {
2021-09-04 04:35:12 +00:00
return cli.Exit(
fmt.Sprintf("Failed to read doodad file: %s", err),
1,
)
}
doodad.Script = string(javascript)
doodad.WriteJSON(doodadFile)
log.Info("Installed script successfully")
return nil
},
}
}