Skip to content

Commit 5a013b2

Browse files
committed
Merge pull request #88 from moul/fixes-87
Sorting cache search by Levenshtein distance (Fix #87)
2 parents ecb5605 + f117d3f commit 5a013b2

File tree

8 files changed

+388
-36
lines changed

8 files changed

+388
-36
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -1045,6 +1045,7 @@ $ scw inspect myserver | jq '.[0].public_ip.address'
10451045
* Support of `scw _flush-cache` internal command
10461046
* `scw run --gateway ...` or `SCW_GATEWAY="..." scw run ...` now creates a server without public ip address ([#74](https://github.com/scaleway/scaleway-cli/issues/74))
10471047
* `scw inspect TYPE:xxx TYPE:yyy` will only refresh cache for `TYPE`
1048+
* Sorting cache search by Levenshtein distance ([#87](https://github.com/scaleway/scaleway-cli/issues/87))
10481049

10491050
#### Fixes
10501051

api/api.go

+7-5
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"net/http"
1515
"net/url"
1616
"os"
17+
"sort"
1718
"strings"
1819
"text/tabwriter"
1920
"text/template"
@@ -943,7 +944,7 @@ func (s *ScalewayAPI) PutVolume(volumeID string, definition ScalewayVolumePutDef
943944
}
944945

945946
// ResolveServer attempts the find a matching Identifier for the input string
946-
func (s *ScalewayAPI) ResolveServer(needle string) ([]ScalewayResolverResult, error) {
947+
func (s *ScalewayAPI) ResolveServer(needle string) (ScalewayResolverResults, error) {
947948
servers := s.Cache.LookUpServers(needle, true)
948949
if len(servers) == 0 {
949950
_, err := s.GetServers(true, 0)
@@ -956,7 +957,7 @@ func (s *ScalewayAPI) ResolveServer(needle string) ([]ScalewayResolverResult, er
956957
}
957958

958959
// ResolveSnapshot attempts the find a matching Identifier for the input string
959-
func (s *ScalewayAPI) ResolveSnapshot(needle string) ([]ScalewayResolverResult, error) {
960+
func (s *ScalewayAPI) ResolveSnapshot(needle string) (ScalewayResolverResults, error) {
960961
snapshots := s.Cache.LookUpSnapshots(needle, true)
961962
if len(snapshots) == 0 {
962963
_, err := s.GetSnapshots()
@@ -969,7 +970,7 @@ func (s *ScalewayAPI) ResolveSnapshot(needle string) ([]ScalewayResolverResult,
969970
}
970971

971972
// ResolveImage attempts the find a matching Identifier for the input string
972-
func (s *ScalewayAPI) ResolveImage(needle string) ([]ScalewayResolverResult, error) {
973+
func (s *ScalewayAPI) ResolveImage(needle string) (ScalewayResolverResults, error) {
973974
images := s.Cache.LookUpImages(needle, true)
974975
if len(images) == 0 {
975976
_, err := s.GetImages()
@@ -982,7 +983,7 @@ func (s *ScalewayAPI) ResolveImage(needle string) ([]ScalewayResolverResult, err
982983
}
983984

984985
// ResolveBootscript attempts the find a matching Identifier for the input string
985-
func (s *ScalewayAPI) ResolveBootscript(needle string) ([]ScalewayResolverResult, error) {
986+
func (s *ScalewayAPI) ResolveBootscript(needle string) (ScalewayResolverResults, error) {
986987
bootscripts := s.Cache.LookUpBootscripts(needle, true)
987988
if len(bootscripts) == 0 {
988989
_, err := s.GetBootscripts()
@@ -1225,11 +1226,12 @@ func (s *ScalewayAPI) GetServerID(needle string) string {
12251226
return ""
12261227
}
12271228

1228-
func showResolverResults(needle string, results []ScalewayResolverResult) error {
1229+
func showResolverResults(needle string, results ScalewayResolverResults) error {
12291230
log.Errorf("Too many candidates for %s (%d)", needle, len(results))
12301231

12311232
w := tabwriter.NewWriter(os.Stderr, 20, 1, 3, ' ', 0)
12321233
defer w.Flush()
1234+
sort.Sort(results)
12331235
for _, result := range results {
12341236
fmt.Fprintf(w, "- %s\t%s\t%s\n", result.TruncIdentifier(), result.CodeName(), result.Name)
12351237
}

0 commit comments

Comments
 (0)