Merge lp:~sergiusens/snapweb/queryPackageNames into lp:~stephen-stewart/snapweb/disabled-install-buttons-for-oem-types

Proposed by Sergio Schvezov on 2015-05-08
Status: Superseded
Proposed branch: lp:~sergiusens/snapweb/queryPackageNames
Merge into: lp:~stephen-stewart/snapweb/disabled-install-buttons-for-oem-types
Diff against target: 111 lines (+30/-15)
2 files modified
snappy/converge.go (+27/-5)
snappy/handlers.go (+3/-10)
To merge this branch: bzr merge lp:~sergiusens/snapweb/queryPackageNames
Reviewer Review Type Date Requested Status
Stephen Stewart 2015-05-08 Pending
Review via email: mp+258639@code.launchpad.net

This proposal has been superseded by a proposal from 2015-05-08.

Commit Message

Add support to query package names (with polish).

To post a comment you must log in.
139. By Sergio Schvezov on 2015-05-08

Don't do useless operations when we have the availability of someone else doing it for us.

Unmerged revisions

139. By Sergio Schvezov on 2015-05-08

Don't do useless operations when we have the availability of someone else doing it for us.

138. By Sergio Schvezov on 2015-05-08

Adding package query support

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'snappy/converge.go'
2--- snappy/converge.go 2015-05-07 16:29:23 +0000
3+++ snappy/converge.go 2015-05-08 14:57:49 +0000
4@@ -54,8 +54,9 @@
5 }
6
7 type listFilter struct {
8- Types []string
9- InstalledOnly bool
10+ types []string
11+ installedOnly bool
12+ query string
13 }
14
15 // for easier stubbing during testing
16@@ -97,19 +98,34 @@
17
18 typeFilter := func(string) bool { return true }
19
20- if len(filter.Types) != 0 {
21- regex, err := regexp.Compile("^(?:" + strings.Join(filter.Types, "|") + ")")
22+ if len(filter.types) != 0 {
23+ regex, err := regexp.Compile("^(?:" + strings.Join(filter.types, "|") + ")")
24 if err != nil {
25 return nil, err
26 }
27 typeFilter = regex.MatchString
28 }
29
30+ queryFilter := func(string) bool { return true }
31+
32+ if filter.query != "" {
33+ regex, err := regexp.Compile("^(?:" + filter.query + ")")
34+ if err != nil {
35+ return nil, err
36+ }
37+ queryFilter = regex.MatchString
38+ }
39+
40 installedSnapQs := make([]snapPkg, 0, len(installedSnaps))
41 for i := range installedSnaps {
42 if !typeFilter(string(installedSnaps[i].Type())) {
43 continue
44 }
45+
46+ if !queryFilter(installedSnaps[i].Name()) {
47+ continue
48+ }
49+
50 installedSnapQs = append(installedSnapQs, h.snapQueryToPayload(installedSnaps[i]))
51 }
52
53@@ -126,18 +142,24 @@
54 if !typeFilter(string(alias.Type())) {
55 continue
56 }
57+ if !queryFilter(alias.Name()) {
58+ continue
59+ }
60 remoteSnapQs = append(remoteSnapQs, h.snapQueryToPayload(alias))
61 } else {
62 for _, part := range remote.Parts {
63 if !typeFilter(string(part.Type())) {
64 continue
65 }
66+ if !queryFilter(part.Name()) {
67+ continue
68+ }
69 remoteSnapQs = append(remoteSnapQs, h.snapQueryToPayload(part))
70 }
71 }
72 }
73
74- return mergeSnaps(installedSnapQs, remoteSnapQs, filter.InstalledOnly), nil
75+ return mergeSnaps(installedSnapQs, remoteSnapQs, filter.installedOnly), nil
76 }
77
78 func (h *Handler) doRemovePackage(progress *webprogress.WebProgress, ID string) {
79
80=== modified file 'snappy/handlers.go'
81--- snappy/handlers.go 2015-05-07 16:29:23 +0000
82+++ snappy/handlers.go 2015-05-08 14:57:49 +0000
83@@ -20,7 +20,6 @@
84 import (
85 "encoding/json"
86 "fmt"
87- "io"
88 "log"
89 "net/http"
90 "strings"
91@@ -54,17 +53,11 @@
92 func (h *Handler) getAll(w http.ResponseWriter, r *http.Request) {
93 w.Header().Set("Content-Type", "application/json")
94 enc := json.NewEncoder(w)
95- dec := json.NewDecoder(r.Body)
96
97 filter := listFilter{
98- InstalledOnly: installedOnly(r.FormValue("installed_only")),
99- Types: types(r.FormValue("types")),
100- }
101-
102- if err := dec.Decode(&filter); err != nil && err != io.EOF {
103- w.WriteHeader(http.StatusInternalServerError)
104- enc.Encode(fmt.Sprintf("Error: %s", err))
105- return
106+ installedOnly: installedOnly(r.FormValue("installed_only")),
107+ types: types(r.FormValue("types")),
108+ query: r.FormValue("q"),
109 }
110
111 payload, err := h.allPackages(&filter)

Subscribers

People subscribed via source and target branches