Command processing
This commit is contained in:
parent
7c630474ef
commit
478b907071
@ -1,18 +1,88 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
|
"ci.itzana.me/itzaname/go-roblox"
|
||||||
"ci.itzana.me/itzaname/rbxcompiler/internal/rbxbuilder"
|
"ci.itzana.me/itzaname/rbxcompiler/internal/rbxbuilder"
|
||||||
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
var isModel = flag.Bool("model", false, "If the target is a model.")
|
||||||
/*fmt.Println(rbxbuilder.NewPlaceDump(&rbxbuilder.DumpSettings{
|
var doUpload = flag.Bool("upload", false, "If the model should be uploaded.")
|
||||||
Source: "surf.rbxlx",
|
var output = flag.String("output", "d", "Output path.")
|
||||||
Output: "source",
|
var input = flag.String("input", "", "Input path.")
|
||||||
}))*/
|
var assetId = flag.Int("asset", 0, "Upload asset ID")
|
||||||
|
var groupId = flag.Int("group", 0, "Group ID")
|
||||||
|
var doGenerate = flag.Bool("generate", false, "If a place file should be dumped")
|
||||||
|
|
||||||
fmt.Println(rbxbuilder.NewPlaceBuilder(&rbxbuilder.BuildSettings{
|
func build() {
|
||||||
Source: "source",
|
settings := &rbxbuilder.BuildSettings{
|
||||||
Output: "build.rbxlx",
|
Source: *input,
|
||||||
}))
|
Output: *output,
|
||||||
|
}
|
||||||
|
buffer := &bytes.Buffer{}
|
||||||
|
if *doUpload {
|
||||||
|
settings.Writer = buffer
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := rbxbuilder.BuildPlace(settings); err != nil {
|
||||||
|
fmt.Println("Failed to start build place.")
|
||||||
|
os.Exit(1)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if *doUpload {
|
||||||
|
rbx, err := roblox.New(os.Getenv("RBXCOOKIE"))
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Failed to start roblox api client.")
|
||||||
|
os.Exit(1)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("Logged in as %s...\n", rbx.Username)
|
||||||
|
fmt.Printf("Uploading file to roblox...\n")
|
||||||
|
|
||||||
|
resp, err := rbx.CreateAsset(&roblox.AssetUploadOptions{
|
||||||
|
AssetID: *assetId,
|
||||||
|
Group: *groupId,
|
||||||
|
}, buffer)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Failed to upload place.")
|
||||||
|
os.Exit(1)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("Uploaded ID %d VERSION %d\n", resp.AssetID, resp.AssetVersionID)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("Complete!")
|
||||||
|
}
|
||||||
|
|
||||||
|
func generate() {
|
||||||
|
if *isModel {
|
||||||
|
fmt.Println("Model not supported for generation.")
|
||||||
|
os.Exit(2)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := rbxbuilder.DumpPlace(&rbxbuilder.DumpSettings{
|
||||||
|
Source: *input,
|
||||||
|
Output: *output,
|
||||||
|
}); err != nil {
|
||||||
|
fmt.Println("Failed to dump place file to disk.")
|
||||||
|
os.Exit(2)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("Complete!")
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
if *doGenerate {
|
||||||
|
generate()
|
||||||
|
} else {
|
||||||
|
build()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
1
go.mod
1
go.mod
@ -3,6 +3,7 @@ module ci.itzana.me/itzaname/rbxcompiler
|
|||||||
go 1.15
|
go 1.15
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
ci.itzana.me/itzaname/go-roblox v0.0.0-20200922163025-9652a2630ec6
|
||||||
ci.itzana.me/itzaname/rbxfile v0.0.0-20200929185118-23ef9783a53e
|
ci.itzana.me/itzaname/rbxfile v0.0.0-20200929185118-23ef9783a53e
|
||||||
github.com/google/uuid v1.1.2
|
github.com/google/uuid v1.1.2
|
||||||
)
|
)
|
||||||
|
2
go.sum
2
go.sum
@ -1,3 +1,5 @@
|
|||||||
|
ci.itzana.me/itzaname/go-roblox v0.0.0-20200922163025-9652a2630ec6 h1:baGWHDYDYo7Q1P6UYIGW+4zm8YKBFILeOY7ExIADQoM=
|
||||||
|
ci.itzana.me/itzaname/go-roblox v0.0.0-20200922163025-9652a2630ec6/go.mod h1:ttaofy5pZVEozl+/s5k4y53dk3uorpHUtLWya0VIpZ0=
|
||||||
ci.itzana.me/itzaname/rbxapi v0.1.0 h1:8tMoEvelXgxGJd71BXGBpGn/K18mWaWQvCsQqY7lnn4=
|
ci.itzana.me/itzaname/rbxapi v0.1.0 h1:8tMoEvelXgxGJd71BXGBpGn/K18mWaWQvCsQqY7lnn4=
|
||||||
ci.itzana.me/itzaname/rbxapi v0.1.0/go.mod h1:CRPbR/U4RqL4rqSGsEaYYr9wld3ctP+vClwgj/wGLsE=
|
ci.itzana.me/itzaname/rbxapi v0.1.0/go.mod h1:CRPbR/U4RqL4rqSGsEaYYr9wld3ctP+vClwgj/wGLsE=
|
||||||
ci.itzana.me/itzaname/rbxfile v0.0.0-20200929185118-23ef9783a53e h1:xLqVw9gkdqKgywmEccJsXIJDM4bDgJ2g86ACe2iA7rA=
|
ci.itzana.me/itzaname/rbxfile v0.0.0-20200929185118-23ef9783a53e h1:xLqVw9gkdqKgywmEccJsXIJDM4bDgJ2g86ACe2iA7rA=
|
||||||
|
@ -146,6 +146,10 @@ func (b PlaceBuilder) Build() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if b.Options.Writer != nil {
|
||||||
|
return xml.Serialize(b.Options.Writer, nil, b.root)
|
||||||
|
}
|
||||||
|
|
||||||
file, err := os.OpenFile(b.Options.Output, os.O_CREATE|os.O_WRONLY, 0644)
|
file, err := os.OpenFile(b.Options.Output, os.O_CREATE|os.O_WRONLY, 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to open output file")
|
return fmt.Errorf("failed to open output file")
|
||||||
|
@ -15,7 +15,7 @@ type DumpSettings struct {
|
|||||||
type BuildSettings struct {
|
type BuildSettings struct {
|
||||||
Source string
|
Source string
|
||||||
Output string
|
Output string
|
||||||
Writer *io.Writer
|
Writer io.Writer
|
||||||
}
|
}
|
||||||
|
|
||||||
type Manifest struct {
|
type Manifest struct {
|
||||||
@ -28,13 +28,13 @@ type Script struct {
|
|||||||
Class string
|
Class string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPlaceDump(options *DumpSettings) error {
|
func DumpPlace(options *DumpSettings) error {
|
||||||
return PlaceDumper{
|
return PlaceDumper{
|
||||||
Options: options,
|
Options: options,
|
||||||
}.Dump()
|
}.Dump()
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPlaceBuilder(options *BuildSettings) error {
|
func BuildPlace(options *BuildSettings) error {
|
||||||
return PlaceBuilder{
|
return PlaceBuilder{
|
||||||
Options: options,
|
Options: options,
|
||||||
}.Build()
|
}.Build()
|
||||||
|
Loading…
Reference in New Issue
Block a user