summaryrefslogtreecommitdiff
path: root/cmd/run.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/run.go
parent94da9293f63e46712b0a890e1e0eab4153fdb3f9 (diff)
Support passing config options as CLI arguments (#15)
Diffstat (limited to 'cmd/run.go')
-rw-r--r--cmd/run.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/cmd/run.go b/cmd/run.go
new file mode 100644
index 0000000..8c1a39d
--- /dev/null
+++ b/cmd/run.go
@@ -0,0 +1,57 @@
+// 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 RunCommand struct{}
+
+func (c *RunCommand) Run(args []string) error {
+ fs := flag.NewFlagSet("flyscrape-run", 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.Run(fs.Arg(0), cfg)
+}
+
+func (c *RunCommand) Usage() {
+ fmt.Println(`
+The run command runs the scraping script.
+
+Usage:
+
+ flyscrape run SCRIPT [config flags]
+
+Examples:
+
+ # Run the script.
+ $ flyscrape run example.js
+
+ # Set the URL as argument.
+ $ flyscrape run example.js --url "http://other.com"
+
+ # Enable proxy support.
+ $ flyscrape run example.js --proxies "http://someproxy:8043"
+
+ # Follow paginated links.
+ $ flyscrape run example.js --depth 5 --follow ".next-button > a"
+`[1:])
+}