summaryrefslogtreecommitdiff
path: root/flyscrape.go
diff options
context:
space:
mode:
Diffstat (limited to 'flyscrape.go')
-rw-r--r--flyscrape.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/flyscrape.go b/flyscrape.go
index 797d4c7..d7aa8f8 100644
--- a/flyscrape.go
+++ b/flyscrape.go
@@ -28,11 +28,20 @@ func Run(file string, overrides map[string]any) error {
imports, wait := NewJSLibrary(client)
defer wait()
+ pop, err := pushDir(file)
+ if err != nil {
+ return err
+ }
+
exports, err := Compile(string(src), imports)
if err != nil {
return fmt.Errorf("failed to compile script: %w", err)
}
+ if err := pop(); err != nil {
+ return err
+ }
+
cfg := exports.Config()
cfg = updateCfgMultiple(cfg, overrides)
@@ -63,12 +72,21 @@ func Dev(file string, overrides map[string]any) error {
imports, wait := NewJSLibrary(client)
defer wait()
+ pop, err := pushDir(file)
+ if err != nil {
+ return err
+ }
+
exports, err := Compile(s, imports)
if err != nil {
printCompileErr(file, err)
return nil
}
+ if err := pop(); err != nil {
+ return err
+ }
+
cfg := exports.Config()
cfg = updateCfgMultiple(cfg, overrides)
cfg = updateCfg(cfg, "depth", 0)
@@ -147,3 +165,21 @@ func updateCfgMultiple(cfg Config, updates map[string]any) Config {
return []byte(c)
}
+
+func pushDir(file string) (func() error, error) {
+ cwd, err := os.Getwd()
+ if err != nil {
+ return nil, fmt.Errorf("failed to get current working directory: %w", err)
+ }
+ if err := os.Chdir(filepath.Dir(file)); err != nil {
+ return nil, fmt.Errorf("failed to change working directory: %w", err)
+ }
+ pop := func() error {
+ if err := os.Chdir(cwd); err != nil {
+ return fmt.Errorf("failed to change working directory: %w", err)
+ }
+ return nil
+ }
+ return pop, nil
+
+}