diff --git a/go.mod b/go.mod index 65319834..23d32690 100644 --- a/go.mod +++ b/go.mod @@ -87,6 +87,7 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/kr/fs v0.1.0 // indirect github.com/leodido/go-urn v1.2.1 // indirect + github.com/maruel/natural v1.1.0 // indirect github.com/mattn/go-isatty v0.0.16 // indirect github.com/mattn/go-sqlite3 v1.14.15 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect diff --git a/go.sum b/go.sum index 363b0c81..636df198 100644 --- a/go.sum +++ b/go.sum @@ -209,6 +209,8 @@ github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.2 h1:AqzbZs4ZoCBp+GtejcpCpcxM3zlSMx29dXbUSeVtJb8= github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/maruel/natural v1.1.0 h1:2z1NgP/Vae+gYrtC0VuvrTJ6U35OuyUqDdfluLqMWuQ= +github.com/maruel/natural v1.1.0/go.mod h1:eFVhYCcUOfZFxXoDZam8Ktya72wa79fNC3lc/leA0DQ= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= diff --git a/internal/model/obj.go b/internal/model/obj.go index 84af9251..54fbb497 100644 --- a/internal/model/obj.go +++ b/internal/model/obj.go @@ -3,8 +3,9 @@ package model import ( "io" "sort" - "strings" "time" + + "github.com/maruel/natural" ) type Obj interface { @@ -45,11 +46,11 @@ func SortFiles(objs []Obj, orderBy, orderDirection string) { switch orderBy { case "name": { - c := strings.Compare(objs[i].GetName(), objs[j].GetName()) + c := natural.Less(objs[i].GetName(), objs[j].GetName()) if orderDirection == "desc" { - return c >= 0 + return !c } - return c <= 0 + return c } case "size": {