package main import ( "encoding/json" "fmt" "log" "os" _ "github.com/mattn/go-sqlite3" "github.com/urfave/cli/v2" ) var version = "v1.0.0" /* TODO - library - platform */ func main() { newDatabase("gadl.db") flags := []cli.Flag{ &cli.StringFlag{ Name: "db", Usage: "database file path", Value: "gadl.db", }, &cli.StringFlag{ Name: "platform", Usage: "platform type", Value: "google-play-books", }, } app := &cli.App{ Name: "gadl", Usage: "Manga Downloader", Version: version, Flags: flags, Commands: cli.Commands{ &cli.Command{ Name: "install", Usage: "install system dependencies for browser", Flags: flags, Action: func(c *cli.Context) error { return installBrowser() }, }, &cli.Command{ Name: "login", Flags: flags, Action: func(c *cli.Context) error { db := newDatabase(c.String("db")) browser := runBrowser(runOptions{db: db, headless: false}) platform := c.String("platform") _, err := browser.loadBrowserContext(platform) if err != nil { log.Fatal(err) } return browser.stop() }, }, &cli.Command{ Name: "view", Flags: flags, Action: func(c *cli.Context) error { db := newDatabase(c.String("db")) library := newLibrary(newLibraryOptions{db}) for _, id := range c.Args().Slice() { b, err := library.get(id) if err != nil { log.Fatal(err) } json, err := json.Marshal(&b) if err != nil { log.Fatal(err) } fmt.Println(string(json)) } return nil }, }, &cli.Command{ Name: "download", Flags: flags, Action: func(c *cli.Context) error { newDatabase(c.String("db")) return nil }, }, }, } if err := app.Run(os.Args); err != nil { log.Fatal(err) } }