summaryrefslogtreecommitdiff
path: root/cmd/dev.go
diff options
context:
space:
mode:
authorPhilipp Tanlak <philipp.tanlak@gmail.com>2023-11-18 22:49:26 +0100
committerGitHub <noreply@github.com>2023-11-18 22:49:26 +0100
commit6aa52bdbe2cefdbc9219abfb4399afa0d492913d (patch)
tree02c743b7d9393dbf024e14adada73c6594bdd34a /cmd/dev.go
parent94da9293f63e46712b0a890e1e0eab4153fdb3f9 (diff)
Support passing config options as CLI arguments (#15)
Diffstat (limited to 'cmd/dev.go')
-rw-r--r--cmd/dev.go55
1 files changed, 55 insertions, 0 deletions
diff --git a/cmd/dev.go b/cmd/dev.go
new file mode 100644
index 0000000..e7edbf8
--- /dev/null
+++ b/cmd/dev.go
@@ -0,0 +1,55 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package cmd
+
+import (
+ "flag"
+ "fmt"
+
+ "github.com/philippta/flyscrape"
+)
+
+type DevCommand struct{}
+
+func (c *DevCommand) Run(args []string) error {
+ fs := flag.NewFlagSet("flyscrape-dev", flag.ContinueOnError)
+ fs.Usage = c.Usage
+
+ if err := fs.Parse(args); err != nil {
+ return err
+ } else if fs.NArg() == 0 || fs.Arg(0) == "" {
+ c.Usage()
+ return flag.ErrHelp
+ }
+
+ cfg, err := parseConfigArgs(fs.Args()[1:])
+ if err != nil {
+ return fmt.Errorf("Error parsing config flags: %w", err)
+ }
+
+ return flyscrape.Dev(fs.Arg(0), cfg)
+}
+
+func (c *DevCommand) Usage() {
+ fmt.Println(`
+The dev command watches the scraping script and re-runs it on any change.
+Recursive scraping is disabled in this mode, only the initial URL will be scraped.
+
+Usage:
+
+ flyscrape dev SCRIPT [config flags]
+
+Examples:
+
+ # Run and watch script.
+ $ flyscrape dev example.js
+
+ # Set the URL as argument.
+ $ flyscrape dev example.js --url "http://other.com"
+
+ # Enable proxy support.
+ $ flyscrape dev example.js --proxies "http://someproxy:8043"
+`[1:])
+}