Skip to content

Commit 4b874a0

Browse files
authored
Added dependencies, license and provides_includes fields in 'lib search' (#599)
* Added 'license' and 'provides_includes' fields in lib search * Added 'dependencies' field in lib search * Do not output empty field in 'lib search' Fields 'license', 'provided includes' and 'dependencies' are printed only if populated.
1 parent 561618a commit 4b874a0

File tree

6 files changed

+267
-142
lines changed

6 files changed

+267
-142
lines changed

Diff for: arduino/libraries/librariesindex/index.go

+13-11
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,19 @@ type Library struct {
4141

4242
// Release is a release of a library available for download
4343
type Release struct {
44-
Author string
45-
Version *semver.Version
46-
Dependencies []semver.Dependency
47-
Maintainer string
48-
Sentence string
49-
Paragraph string
50-
Website string
51-
Category string
52-
Architectures []string
53-
Types []string
54-
Resource *resources.DownloadResource
44+
Author string
45+
Version *semver.Version
46+
Dependencies []semver.Dependency
47+
Maintainer string
48+
Sentence string
49+
Paragraph string
50+
Website string
51+
Category string
52+
Architectures []string
53+
Types []string
54+
Resource *resources.DownloadResource
55+
License string
56+
ProvidesIncludes []string
5557

5658
Library *Library `json:"-"`
5759
}

Diff for: arduino/libraries/librariesindex/json.go

+21-17
Original file line numberDiff line numberDiff line change
@@ -29,21 +29,23 @@ type indexJSON struct {
2929
}
3030

3131
type indexRelease struct {
32-
Name string `json:"name,required"`
33-
Version *semver.Version `json:"version,required"`
34-
Author string `json:"author"`
35-
Maintainer string `json:"maintainer"`
36-
Sentence string `json:"sentence"`
37-
Paragraph string `json:"paragraph"`
38-
Website string `json:"website"`
39-
Category string `json:"category"`
40-
Architectures []string `json:"architectures"`
41-
Types []string `json:"types"`
42-
URL string `json:"url"`
43-
ArchiveFileName string `json:"archiveFileName"`
44-
Size int64 `json:"size"`
45-
Checksum string `json:"checksum"`
46-
Dependencies []*indexDependency `json:"dependencies,omitempty"`
32+
Name string `json:"name,required"`
33+
Version *semver.Version `json:"version,required"`
34+
Author string `json:"author"`
35+
Maintainer string `json:"maintainer"`
36+
Sentence string `json:"sentence"`
37+
Paragraph string `json:"paragraph"`
38+
Website string `json:"website"`
39+
Category string `json:"category"`
40+
Architectures []string `json:"architectures"`
41+
Types []string `json:"types"`
42+
URL string `json:"url"`
43+
ArchiveFileName string `json:"archiveFileName"`
44+
Size int64 `json:"size"`
45+
Checksum string `json:"checksum"`
46+
Dependencies []*indexDependency `json:"dependencies,omitempty"`
47+
License string `json:"license"`
48+
ProvidesIncludes []string `json:"providesIncludes"`
4749
}
4850

4951
type indexDependency struct {
@@ -107,8 +109,10 @@ func (indexLib *indexRelease) extractReleaseIn(library *Library) {
107109
Checksum: indexLib.Checksum,
108110
CachePath: "libraries",
109111
},
110-
Library: library,
111-
Dependencies: indexLib.extractDependencies(),
112+
Library: library,
113+
Dependencies: indexLib.extractDependencies(),
114+
License: indexLib.License,
115+
ProvidesIncludes: indexLib.ProvidesIncludes,
112116
}
113117
library.Releases[indexLib.Version.String()] = release
114118
if library.Latest == nil || library.Latest.Version.LessThan(release.Version) {

Diff for: cli/lib/search.go

+31-11
Original file line numberDiff line numberDiff line change
@@ -113,21 +113,41 @@ func (res result) String() string {
113113

114114
var out strings.Builder
115115

116-
for _, lsr := range results {
117-
out.WriteString(fmt.Sprintf("Name: \"%s\"\n", lsr.Name))
116+
for _, lib := range results {
117+
out.WriteString(fmt.Sprintf("Name: \"%s\"\n", lib.Name))
118118
if res.namesOnly {
119119
continue
120120
}
121121

122-
out.WriteString(fmt.Sprintf(" Author: %s\n", lsr.GetLatest().Author))
123-
out.WriteString(fmt.Sprintf(" Maintainer: %s\n", lsr.GetLatest().Maintainer))
124-
out.WriteString(fmt.Sprintf(" Sentence: %s\n", lsr.GetLatest().Sentence))
125-
out.WriteString(fmt.Sprintf(" Paragraph: %s\n", lsr.GetLatest().Paragraph))
126-
out.WriteString(fmt.Sprintf(" Website: %s\n", lsr.GetLatest().Website))
127-
out.WriteString(fmt.Sprintf(" Category: %s\n", lsr.GetLatest().Category))
128-
out.WriteString(fmt.Sprintf(" Architecture: %s\n", strings.Join(lsr.GetLatest().Architectures, ", ")))
129-
out.WriteString(fmt.Sprintf(" Types: %s\n", strings.Join(lsr.GetLatest().Types, ", ")))
130-
out.WriteString(fmt.Sprintf(" Versions: %s\n", strings.Replace(fmt.Sprint(versionsFromSearchedLibrary(lsr)), " ", ", ", -1)))
122+
latest := lib.GetLatest()
123+
124+
deps := []string{}
125+
for _, dep := range latest.GetDependencies() {
126+
if dep.GetVersionConstraint() == "" {
127+
deps = append(deps, dep.GetName())
128+
} else {
129+
deps = append(deps, dep.GetName()+" ("+dep.GetVersionConstraint()+")")
130+
}
131+
}
132+
133+
out.WriteString(fmt.Sprintf(" Author: %s\n", latest.Author))
134+
out.WriteString(fmt.Sprintf(" Maintainer: %s\n", latest.Maintainer))
135+
out.WriteString(fmt.Sprintf(" Sentence: %s\n", latest.Sentence))
136+
out.WriteString(fmt.Sprintf(" Paragraph: %s\n", latest.Paragraph))
137+
out.WriteString(fmt.Sprintf(" Website: %s\n", latest.Website))
138+
if latest.License != "" {
139+
out.WriteString(fmt.Sprintf(" License: %s\n", latest.License))
140+
}
141+
out.WriteString(fmt.Sprintf(" Category: %s\n", latest.Category))
142+
out.WriteString(fmt.Sprintf(" Architecture: %s\n", strings.Join(latest.Architectures, ", ")))
143+
out.WriteString(fmt.Sprintf(" Types: %s\n", strings.Join(latest.Types, ", ")))
144+
out.WriteString(fmt.Sprintf(" Versions: %s\n", strings.Replace(fmt.Sprint(versionsFromSearchedLibrary(lib)), " ", ", ", -1)))
145+
if len(latest.ProvidesIncludes) > 0 {
146+
out.WriteString(fmt.Sprintf(" Provides includes: %s\n", strings.Join(latest.ProvidesIncludes, ", ")))
147+
}
148+
if len(latest.Dependencies) > 0 {
149+
out.WriteString(fmt.Sprintf(" Dependencies: %s\n", strings.Join(deps, ", ")))
150+
}
131151
}
132152

133153
return fmt.Sprintf("%s", out.String())

Diff for: commands/lib/search.go

+24-9
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/arduino/arduino-cli/arduino/libraries/librariesindex"
2424
"github.com/arduino/arduino-cli/commands"
2525
rpc "github.com/arduino/arduino-cli/rpc/commands"
26+
semver "go.bug.st/relaxed-semver"
2627
)
2728

2829
// LibrarySearch FIXMEDOC
@@ -60,15 +61,18 @@ func LibrarySearch(ctx context.Context, req *rpc.LibrarySearchReq) (*rpc.Library
6061
// GetLibraryParameters FIXMEDOC
6162
func GetLibraryParameters(rel *librariesindex.Release) *rpc.LibraryRelease {
6263
return &rpc.LibraryRelease{
63-
Author: rel.Author,
64-
Version: rel.Version.String(),
65-
Maintainer: rel.Maintainer,
66-
Sentence: rel.Sentence,
67-
Paragraph: rel.Paragraph,
68-
Website: rel.Website,
69-
Category: rel.Category,
70-
Architectures: rel.Architectures,
71-
Types: rel.Types,
64+
Author: rel.Author,
65+
Version: rel.Version.String(),
66+
Maintainer: rel.Maintainer,
67+
Sentence: rel.Sentence,
68+
Paragraph: rel.Paragraph,
69+
Website: rel.Website,
70+
Category: rel.Category,
71+
Architectures: rel.Architectures,
72+
Types: rel.Types,
73+
License: rel.License,
74+
ProvidesIncludes: rel.ProvidesIncludes,
75+
Dependencies: getLibraryDependenciesParameter(rel.GetDependencies()),
7276
Resources: &rpc.DownloadResource{
7377
Url: rel.Resource.URL,
7478
Archivefilename: rel.Resource.ArchiveFileName,
@@ -78,3 +82,14 @@ func GetLibraryParameters(rel *librariesindex.Release) *rpc.LibraryRelease {
7882
},
7983
}
8084
}
85+
86+
func getLibraryDependenciesParameter(deps []semver.Dependency) []*rpc.LibraryDependency {
87+
res := []*rpc.LibraryDependency{}
88+
for _, dep := range deps {
89+
res = append(res, &rpc.LibraryDependency{
90+
Name: dep.GetName(),
91+
VersionConstraint: dep.GetConstraint().String(),
92+
})
93+
}
94+
return res
95+
}

0 commit comments

Comments
 (0)