notes-server/versions/max_file_size.go

39 lines
776 B
Go

package versions
import (
"fmt"
"gitea.inhome.blapointe.com/local/notes-server/config"
"strings"
)
func getScript() string {
maxSizeMB := config.MaxSizeMB
if maxSizeMB == 0 {
maxSizeMB = 1
}
return strings.ReplaceAll(script, "{{{MAXSIZE}}}", fmt.Sprint(maxSizeMB<<20))
}
const script = `#!/bin/bash
function main() {
local maxsize={{{MAXSIZE}}}
if [[ "$maxsize" == 0 ]]; then
return
fi
(
git diff --name-only --cached
git diff --name-only
git ls-files --others --exclude-standard
) 2>&1 \
| sort -u \
| while read -r file; do
local size="$(du -sk "$file" | awk '{print $1}')000"
if [ "$size" -gt "$maxsize" ]; then
echo "file=$file, size=$size, max=$maxsize" >&2
git reset HEAD -- "$file"
fi
done
}
main
`