package main import ( "fmt" "os" "time" "gopkg.in/urfave/cli.v1" ) var version string var pathToData string func main() { app := cli.NewApp() app.Name = "linkcrawler" app.Usage = "crawl a site for links, or download a list of sites" app.Version = version app.Compiled = time.Now() app.Action = func(c *cli.Context) error { cli.ShowSubcommandHelp(c) return nil } app.Flags = []cli.Flag{ cli.StringFlag{ Name: "data", Value: "data", Usage: "data folder to use", }, cli.StringFlag{ Name: "olddata", Value: "", Usage: "data folder for migrating", }, cli.StringFlag{ Name: "port,p", Value: "8050", Usage: "port to use", }, cli.BoolFlag{ Name: "debug, d", Usage: "turn on debugging", }, } app.Commands = []cli.Command{ { Name: "serve", Aliases: []string{"s"}, Usage: "start a cowyo server", Action: func(c *cli.Context) error { if !c.GlobalBool("debug") { turnOffDebugger() } pathToData = c.GlobalString("data") os.MkdirAll(pathToData, 0755) fmt.Printf("\nRunning CowYo at http://%s:%s\n\n", GetLocalIP(), c.GlobalString("port")) serve(c.GlobalString("port")) return nil }, }, { Name: "migrate", Aliases: []string{"m"}, Usage: "migrate from the old cowyo", Action: func(c *cli.Context) error { if !c.GlobalBool("debug") { turnOffDebugger() } pathToData = c.GlobalString("data") pathToOldData := c.GlobalString("olddata") if len(pathToOldData) == 0 { fmt.Printf("You need to specify folder with -olddata") return nil } os.MkdirAll(pathToData, 0755) if !exists(pathToOldData) { fmt.Printf("Can not find '%s', does it exist?", pathToOldData) return nil } migrate(pathToOldData, pathToData) return nil }, }, } app.Run(os.Args) }