diff options
| author | Philipp Tanlak <philipp.tanlak@gmail.com> | 2023-12-04 18:30:19 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-04 18:30:19 +0100 |
| commit | 0f9e334a19e7224ee08b611107029b4cd86c0267 (patch) | |
| tree | 9740c7edc47f8e81d6a1352c94160d584bfb9f26 /flyscrape.go | |
| parent | 8c68e0ed414bfb323d6e94db55c95db13797ef8e (diff) | |
Support file imports for .txt and .json (#25)v0.6.0
Diffstat (limited to 'flyscrape.go')
| -rw-r--r-- | flyscrape.go | 36 |
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 + +} |