<pre style='margin:0'>
Zhenfu Shi (i0ntempest) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/be065a85b90881b39f388ecb6efcf896e6e9cc16">https://github.com/macports/macports-ports/commit/be065a85b90881b39f388ecb6efcf896e6e9cc16</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new be065a85b90 filebrowser: add patch fixing command runner
</span>be065a85b90 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit be065a85b90881b39f388ecb6efcf896e6e9cc16
</span>Author: i0ntempest <i0ntempest@i0ntempest.com>
AuthorDate: Thu Jan 23 15:07:44 2025 +0800

<span style='display:block; white-space:pre;color:#404040;'>    filebrowser: add patch fixing command runner
</span>---
 net/filebrowser/Portfile              |  7 +++-
 net/filebrowser/files/patch-3676.diff | 76 +++++++++++++++++++++++++++++++++++
 2 files changed, 82 insertions(+), 1 deletion(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/filebrowser/Portfile b/net/filebrowser/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 3815aafeb50..25085b44d9a 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/net/filebrowser/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/filebrowser/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -6,7 +6,7 @@ PortGroup           golang 1.0
</span> go.setup            github.com/filebrowser/filebrowser 2.31.2 v
 set git-commit      129a4fd
 # This line is for displaying commit in CLI only
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            2
</span> categories          net sysutils
 maintainers         {i0ntempest @i0ntempest} openmaintainer
 license             Apache-2
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -24,6 +24,11 @@ checksums           ${distname}${extract.suffix} \
</span>                         sha256  affa66dfd9de8af359a6f242410d1327ca8acf498dead6b3066f6a766b97679a \
                         size    3828081
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Command runner fix
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/filebrowser/filebrowser/pull/3676
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   patch-3676.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.args          -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> go.vendors          gopkg.in/yaml.v3 \
                         lock    v3.0.1 \
                         rmd160  e85ac1368fb7f9ef945b7fd7bd608a1f0d261c12 \
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/filebrowser/files/patch-3676.diff b/net/filebrowser/files/patch-3676.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..02d835a419b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/filebrowser/files/patch-3676.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,76 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/http/tus_handlers.go b/http/tus_handlers.go
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7a3254ae72..773b3d0d88 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/http/tus_handlers.go
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/http/tus_handlers.go
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -131,6 +131,13 @@ func tusPatchHandler() handleFunc {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          if uploadOffset == 0 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  err = d.RunBeforeHook("upload", r.URL.Path, "", d.user)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  if err != nil {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                          return errToStatus(err), err
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           openFile, err := d.user.Fs.OpenFile(r.URL.Path, os.O_WRONLY|os.O_APPEND, files.PermFile)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           if err != nil {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   return http.StatusInternalServerError, fmt.Errorf("could not open file: %w", err)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -150,6 +157,13 @@ func tusPatchHandler() handleFunc {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           w.Header().Set("Upload-Offset", strconv.FormatInt(uploadOffset+bytesWritten, 10))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          if bytesWritten < int64(d.Settings.Tus.ChunkSize) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  err = d.RunAfterHook("upload", r.URL.Path, "", d.user)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  if err != nil {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                          return errToStatus(err), err
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return http.StatusNoContent, nil
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   })
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/runner/runner.go b/runner/runner.go
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 2dbafa5cd1..829e591020 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/runner/runner.go
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/runner/runner.go
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -17,6 +17,39 @@ type Runner struct {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   *settings.Settings
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RunBeforeHook and RunAfterHook trigger the command runner at their respective times.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++func (r *Runner) RunBeforeHook(evt, path, dst string, user *users.User) error {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  path = user.FullPath(path)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  dst = user.FullPath(dst)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if r.Enabled {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          if val, ok := r.Commands["before_"+evt]; ok {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  for _, command := range val {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                          err := r.exec(command, "before_"+evt, path, dst, user)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                          if err != nil {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                  return err
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                          }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return nil
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++func (r *Runner) RunAfterHook(evt, path, dst string, user *users.User) error {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  path = user.FullPath(path)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  dst = user.FullPath(dst)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if r.Enabled {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          if val, ok := r.Commands["after_"+evt]; ok {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  for _, command := range val {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                          err := r.exec(command, "after_"+evt, path, dst, user)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                          if err != nil {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                  return err
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                          }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return nil
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RunHook runs the hooks for the before and after event.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ func (r *Runner) RunHook(fn func() error, evt, path, dst string, user *users.User) error {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   path = user.FullPath(path)
</span></pre><pre style='margin:0'>

</pre>