diff options
| author | Shulhan <ms@kilabit.info> | 2023-12-22 02:04:11 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2023-12-22 03:07:52 +0700 |
| commit | c0d336ca456093b2b7c0b585dbe08f62cbc8ca83 (patch) | |
| tree | cb313f0352a91562cc99ad115d62bad1447dc2b9 /awwan.go | |
| parent | 66a18a789edaa35dfa4446846eeeffabfee0b269 (diff) | |
| download | awwan-c0d336ca456093b2b7c0b585dbe08f62cbc8ca83.tar.xz | |
all: add [context.Context] to Local and Play
Passing context allow the command Local or Play to be cancelled when
running in asynchronous mode, in this case when awwan run with WUI.
Diffstat (limited to 'awwan.go')
| -rw-r--r-- | awwan.go | 41 |
1 files changed, 27 insertions, 14 deletions
@@ -4,6 +4,7 @@ package awwan import ( + "context" "fmt" "log" "os" @@ -284,7 +285,7 @@ func (aww *Awwan) EnvSet(key, val, file string) (err error) { } // Local execute the script in the local machine using shell. -func (aww *Awwan) Local(req *ExecRequest) (err error) { +func (aww *Awwan) Local(ctx context.Context, req *ExecRequest) (err error) { var ( logp = `Local` sessionDir = filepath.Dir(req.scriptPath) @@ -320,14 +321,20 @@ func (aww *Awwan) Local(req *ExecRequest) (err error) { req.mlog.Outf(`=== BEGIN: %s %s %s`, req.Mode, req.Script, req.LineRange) for _, pos = range req.lineRange.list { - err = ses.executeRequires(req, pos) - if err != nil { + select { + case <-ctx.Done(): + err = ctx.Err() goto out - } + default: + err = ses.executeRequires(ctx, req, pos) + if err != nil { + goto out + } - err = ses.executeScriptOnLocal(req, pos) - if err != nil { - goto out + err = ses.executeScriptOnLocal(ctx, req, pos) + if err != nil { + goto out + } } } req.mlog.Outf(`=== END: %s %s %s`, req.Mode, req.Script, req.LineRange) @@ -341,7 +348,7 @@ out: } // Play execute the script in the remote machine using SSH. -func (aww *Awwan) Play(req *ExecRequest) (err error) { +func (aww *Awwan) Play(ctx context.Context, req *ExecRequest) (err error) { var ( logp = `Play` sessionDir = filepath.Dir(req.scriptPath) @@ -391,14 +398,20 @@ func (aww *Awwan) Play(req *ExecRequest) (err error) { req.mlog.Outf(`=== BEGIN: %s %s %s`, req.Mode, req.Script, req.LineRange) for _, pos = range req.lineRange.list { - err = ses.executeRequires(req, pos) - if err != nil { + select { + case <-ctx.Done(): + err = ctx.Err() goto out - } + default: + err = ses.executeRequires(ctx, req, pos) + if err != nil { + goto out + } - err = ses.executeScriptOnRemote(req, pos) - if err != nil { - goto out + err = ses.executeScriptOnRemote(ctx, req, pos) + if err != nil { + goto out + } } } req.mlog.Outf(`=== END: %s %s %s`, req.Mode, req.Script, req.LineRange) |
