arduino-cli lib search should display nearest names

Created on 5 Jan 2019  Â·  9Comments  Â·  Source: arduino/arduino-cli

Hello,

Currently arduino-cli can find a library when searched name match exactly lib name (lowercased):

$ ./arduino-cli lib search ArduinoJSON
Name: "ArduinoJson"
  Author:  Benoit Blanchon <blog.benoitblanchon.fr>
  Maintainer:  Benoit Blanchon <blog.benoitblanchon.fr>
  Sentence:  An efficient and elegant JSON library for Arduino.
  Paragraph:  ArduinoJson supports ✔ serialization, ✔ deserialization, ✔ MessagePack, ✔ fixed allocation, ✔ zero-copy, ✔ streams, and more. It is the most popular Arduino library on GitHub ❤❤❤❤❤. Check out arduinojson.org for a comprehensive documentation.
  Website:  https://arduinojson.org/?utm_source=meta&utm_medium=library.properties
  Category:  Data Processing
  Architecture:  *
  Types:  Contributed
  Versions:  [4.0.0, 5.0.0, 5.0.1, 5.0.2, 5.0.3, 5.0.4, 5.0.5, 5.0.6, 5.0.7, 5.0.8, 5.1.0-beta.1, 5.1.0-beta.2, 5.1.0, 5.1.1, 5.2.0, 5.3.0, 5.4.0, 5.5.0, 5.5.1, 5.6.0, 5.6.1, 5.6.2, 5.6.3, 5.6.4, 5.6.5, 5.6.6, 5.6.7, 5.7.0, 5.7.1, 5.7.2, 5.7.3, 5.8.0, 5.8.1, 5.8.2, 5.8.3, 5.8.4, 5.9.0, 5.10.0, 5.10.1, 5.11.0, 5.11.1, 5.11.2, 5.12.0, 5.13.0, 5.13.1, 5.13.2, 5.13.3, 5.13.4, 6.0.0-beta, 6.0.1-beta, 6.1.0-beta, 6.2.0-beta, 6.2.1-beta, 6.2.2-beta, 6.2.3-beta, 6.3.0-beta, 6.4.0-beta, 6.5.0-beta, 6.6.0-beta, 6.7.0-beta]

But not when it's slightly different

$ ./arduino-cli lib search ArduinoJason
No library found matching `arduinojason` search query

Maybe Arduino CLI could find nearest library named (or 5 nearest library name)

$ ./arduino-cli lib search ArduinoJason
No library found matching `arduinojason` search query
Did you mean?
ArduinoJson
...

I did something quite similar in https://github.com/scls19fr/arduino_libraries_search/blob/master/utils.py#L110-L127

using a similarity measurement named Sørensen–Dice coefficient

Other metrics / edit distance may be considered
https://en.wikipedia.org/wiki/String_metric

Kind regards

PS : quite similar to this Julia Pkg issue https://github.com/JuliaLang/Pkg.jl/issues/616
PS2 : https://github.com/danieldk/editdistance may help because it implements Levenshtein algorithm in Go

enhancement

All 9 comments

It seems this has been fixed.

@flatsiedatsie which version of arduino-cli are you using? I still get no search results from arduino-cli lib search ArduinoJason using either the tip of the master branch on arduino/arduino-cli or the tip of the daemon branch on cmaglie/arduino-cli.

@per1234 You're right, I get the same result on that query. But I don't get any results for ArduinoJason in the Arduino IDE either? I'm using the latest compiled alpha that I downloaded from Github.

But I don't get any results for ArduinoJason in the Arduino IDE either?

That's correct. Unlike your https://github.com/arduino/arduino-cli/issues/104, which is only asking that the search behavior made to work the same as in the Arduino IDE's Library Manager, this issue is a request for an enhancement of the search behavior beyond what is provided by the Arduino IDE.

This library should ease the implementation of this feature a lot https://github.com/imjasonmiller/godice

Thanks @rsora

Thanks @BigHeadGeorge

Also, please make the search whitespace friendly probably.

Because, if I search with proper whitespace, then the search result is perfect

> arduino-cli lib search painless mesh
Updating index: library_index.json downloaded                                   
Name: "Painless Mesh"
  Author: Coopdis,Scotty Franzyshen,Edwin van Leeuwen,Germán Martín,Maximilian Schwarz,Doanh Doanh
  Maintainer: Edwin van Leeuwen
  Sentence: A painless way to setup a mesh with ESP8266 and ESP32 devices
  Paragraph: A painless way to setup a mesh with ESP8266 and ESP32 devices
  Website: https://gitlab.com/painlessMesh/painlessMesh
  Category: Communication
  Architecture: esp8266, esp32
  Types: Contributed
  Versions: [0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.2.0, 0.2.1, 0.5.0, 0.5.4, 0.6.0, 0.6.1, 0.6.2, 0.6.3, 0.6.5, 0.7.0, 1.0.0, 1.0.2, 1.0.3, 1.1.0, 1.1.1, 1.2.0, 1.2.1, 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.6, 1.2.7, 1.2.8, 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 1.4.7]
  Provides includes: painlessMesh.h
  Dependencies: ArduinoJson, TaskScheduler

But if i forget the whitespace and search for the header file instead

> arduino-cli lib search painlessmesh 
Updating index: library_index.json downloaded                                   
No libraries matching your search.

The header file of that library says painlessMesh.h but still the search has no match

Was this page helpful?
0 / 5 - 0 ratings

Related issues

ArminJo picture ArminJo  Â·  5Comments

nkieffer picture nkieffer  Â·  7Comments

Tatwi picture Tatwi  Â·  8Comments

toogooda picture toogooda  Â·  3Comments

ricms93 picture ricms93  Â·  4Comments