go-fds/cmd/fdslist.go

80 lines
1.3 KiB
Go

package main
import (
"fmt"
"os"
//"encoding/binary"
//"bufio"
//"bytes"
//"io"
"path/filepath"
"github.com/alexflint/go-arg"
"git.zorchenhimer.com/go-fds"
)
type Arguments struct {
Input string `arg:"positional,required"`
}
func main() {
args := &Arguments{}
arg.MustParse(args)
err := run(args)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
func run(args *Arguments) error {
file, err := os.Open(args.Input)
if err != nil {
return err
}
defer file.Close()
//reader := bufio.NewReader(file)
//magic, err := reader.Peek(4)
//if err != nil {
// return fmt.Errorf("Unable to peek header: %w", err)
//}
//header := &fds.FdsHeader{}
//// "FDS" + EOF. header may be omitted.
//if bytes.Equal(magic, []byte{0x46, 0x44, 0x53, 0x1A}) {
// err = binary.Read(reader, binary.LittleEndian, header)
// if err != nil {
// return fmt.Errorf("Error reading header: %w", err)
// }
//}
//if header != nil {
// fmt.Println("Header found. sides:", header.Sides)
//} else {
// fmt.Println("No header")
//}
//blocks, err := fds.ReadBlocks(reader, true)
//if err != nil {
// return err
//}
rom, err := fds.ReadRom(file, filepath.Ext(args.Input) == ".fds")
if err != nil {
return err
}
for _, block := range rom.Blocks {
fmt.Println(block)
}
return nil
}