fix rewrite omitting trailing slash, error msg update

This commit is contained in:
yusing 2025-01-09 13:32:12 +08:00
parent adb41a80c5
commit 4aee44fe11
3 changed files with 9 additions and 4 deletions

View file

@ -109,7 +109,7 @@ func (p *Provider) startRoute(parent task.Parent, r *R.Route) E.Error {
return nil return nil
} }
// Start implements*task.TaskStarter. // Start implements task.TaskStarter.
func (p *Provider) Start(parent task.Parent) E.Error { func (p *Provider) Start(parent task.Parent) E.Error {
t := parent.Subtask("provider."+p.name, false) t := parent.Subtask("provider."+p.name, false)

View file

@ -54,10 +54,14 @@ func validateURLPath(args []string) (any, E.Error) {
return nil, ErrExpectOneArg return nil, ErrExpectOneArg
} }
p := args[0] p := args[0]
trailingSlash := len(p) > 1 && p[len(p)-1] == '/'
p, _, _ = strings.Cut(p, "#") p, _, _ = strings.Cut(p, "#")
p = path.Clean(p) p = path.Clean(p)
if len(p) == 0 { if len(p) == 0 {
return "/", nil return nil, ErrInvalidArguments.Withf("empty path")
}
if trailingSlash {
p += "/"
} }
if p[0] != '/' { if p[0] != '/' {
return nil, ErrInvalidArguments.Withf("must start with /") return nil, ErrInvalidArguments.Withf("must start with /")

View file

@ -180,7 +180,7 @@ func Deserialize(src SerializedObject, dst any) E.Error {
} }
return errs.Error() return errs.Error()
default: default:
return ErrUnsupportedConversion.Subject("deserialize to " + dstT.String()) return ErrUnsupportedConversion.Subject("mapping to " + dstT.String())
} }
} }
@ -346,10 +346,11 @@ func ConvertString(src string, dst reflect.Value) (convertible bool, convErr E.E
return true, E.From(parser.Parse(src)) return true, E.From(parser.Parse(src))
} }
// yaml like // yaml like
isMultiline := strings.ContainsRune(src, '\n')
var tmp any var tmp any
switch dst.Kind() { switch dst.Kind() {
case reflect.Slice: case reflect.Slice:
src = strings.TrimSpace(src)
isMultiline := strings.ContainsRune(src, '\n')
// one liner is comma separated list // one liner is comma separated list
if !isMultiline { if !isMultiline {
values := strutils.CommaSeperatedList(src) values := strutils.CommaSeperatedList(src)