Luci opkg/packages: Show package size in list of available packages
authorHannu Nyman <hannu.nyman@iki.fi>
Wed, 16 Sep 2015 09:47:48 +0000 (12:47 +0300)
committerHannu Nyman <hannu.nyman@iki.fi>
Wed, 16 Sep 2015 09:47:48 +0000 (12:47 +0300)
Add package *.ipk size information to package listing in Luci,
as opkg was today extended to support listing also the size information.
Visible fields are now: name, version, size, description

That will help users considering installation of a certain package
to assess its size impact on flash.

Note: Opkg data includes the size of the .ipk file, not the expanded size.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
modules/luci-base/luasrc/model/ipkg.lua
modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm

index 41633c4..2ed92ca 100644 (file)
@@ -127,15 +127,15 @@ local function _list(action, pat, cb)
                (pat and (" '%s'" % pat:gsub("'", "")) or ""))
 
        if fd then
                (pat and (" '%s'" % pat:gsub("'", "")) or ""))
 
        if fd then
-               local name, version, desc
+               local name, version, sz, desc
                while true do
                        local line = fd:read("*l")
                        if not line then break end
 
                while true do
                        local line = fd:read("*l")
                        if not line then break end
 
-                       name, version, desc = line:match("^(.-) %- (.-) %- (.+)")
+                       name, version, sz, desc = line:match("^(.-) %- (.-) %- (.-) %- (.+)")
 
                        if not name then
 
                        if not name then
-                               name, version = line:match("^(.-) %- (.+)")
+                               name, version, sz = line:match("^(.-) %- (.-) %- (.+)")
                                desc = ""
                        end
 
                                desc = ""
                        end
 
@@ -143,10 +143,11 @@ local function _list(action, pat, cb)
                                version = version:sub(1,21) .. ".." .. version:sub(-3,-1)
                        end
 
                                version = version:sub(1,21) .. ".." .. version:sub(-3,-1)
                        end
 
-                       cb(name, version, desc)
+                       cb(name, version, sz, desc)
 
                        name    = nil
                        version = nil
 
                        name    = nil
                        version = nil
+                       sz      = nil
                        desc    = nil
                end
 
                        desc    = nil
                end
 
@@ -155,15 +156,15 @@ local function _list(action, pat, cb)
 end
 
 function list_all(pat, cb)
 end
 
 function list_all(pat, cb)
-       _list("list", pat, cb)
+       _list("list --size", pat, cb)
 end
 
 function list_installed(pat, cb)
 end
 
 function list_installed(pat, cb)
-       _list("list_installed", pat, cb)
+       _list("list_installed --size", pat, cb)
 end
 
 function find(pat, cb)
 end
 
 function find(pat, cb)
-       _list("find", pat, cb)
+       _list("find --size", pat, cb)
 end
 
 
 end
 
 
index 1ceda47..fe2fe04 100644 (file)
@@ -132,7 +132,7 @@ end
                                                <th class="cbi-section-table-cell" style="text-align:left"><%:Package name%></th>
                                                <th class="cbi-section-table-cell" style="text-align:left"><%:Version%></th>
                                        </tr>
                                                <th class="cbi-section-table-cell" style="text-align:left"><%:Package name%></th>
                                                <th class="cbi-section-table-cell" style="text-align:left"><%:Version%></th>
                                        </tr>
-                                       <% local empty = true; luci.model.ipkg.list_installed(querypat, function(n, v, d) empty = false; filter[n] = true %>
+                                       <% local empty = true; luci.model.ipkg.list_installed(querypat, function(n, v, s, d) empty = false; filter[n] = true %>
                                        <tr class="cbi-section-table-row cbi-rowstyle-<%=rowstyle()%>">
                                                <td style="text-align:left; width:10%"><a onclick="return window.confirm('<%:Remove%> &quot;<%=luci.util.pcdata(n)%>&quot; ?')" href="<%=REQUEST_URI%>?submit=1&amp;remove=<%=luci.util.pcdata(n)%>"><%:Remove%></a></td>
                                                <td style="text-align:left"><%=luci.util.pcdata(n)%></td>
                                        <tr class="cbi-section-table-row cbi-rowstyle-<%=rowstyle()%>">
                                                <td style="text-align:left; width:10%"><a onclick="return window.confirm('<%:Remove%> &quot;<%=luci.util.pcdata(n)%>&quot; ?')" href="<%=REQUEST_URI%>?submit=1&amp;remove=<%=luci.util.pcdata(n)%>"><%:Remove%></a></td>
                                                <td style="text-align:left"><%=luci.util.pcdata(n)%></td>
@@ -164,13 +164,15 @@ end
                                                <th class="cbi-section-table-cell" style="text-align:left">&#160;</th>
                                                <th class="cbi-section-table-cell" style="text-align:left"><%:Package name%></th>
                                                <th class="cbi-section-table-cell" style="text-align:left"><%:Version%></th>
                                                <th class="cbi-section-table-cell" style="text-align:left">&#160;</th>
                                                <th class="cbi-section-table-cell" style="text-align:left"><%:Package name%></th>
                                                <th class="cbi-section-table-cell" style="text-align:left"><%:Version%></th>
+                                               <th class="cbi-section-table-cell" style="text-align:right"><%:Size (.ipk)%></th>
                                                <th class="cbi-section-table-cell" style="text-align:left"><%:Description%></th>
                                        </tr>
                                                <th class="cbi-section-table-cell" style="text-align:left"><%:Description%></th>
                                        </tr>
-                                       <% local empty = true; opkg_list(querypat or letterpat, function(n, v, d) if filter[n] then return end; empty = false %>
+                                       <% local empty = true; opkg_list(querypat or letterpat, function(n, v, s, d) if filter[n] then return end; empty = false %>
                                        <tr class="cbi-section-table-row cbi-rowstyle-<%=rowstyle()%>">
                                                <td style="text-align:left; width:10%"><a onclick="return window.confirm('<%:Install%> &quot;<%=luci.util.pcdata(n)%>&quot; ?')" href="<%=REQUEST_URI%>?submit=1&amp;install=<%=luci.util.pcdata(n)%>"><%:Install%></a></td>
                                                <td style="text-align:left"><%=luci.util.pcdata(n)%></td>
                                                <td style="text-align:left"><%=luci.util.pcdata(v)%></td>
                                        <tr class="cbi-section-table-row cbi-rowstyle-<%=rowstyle()%>">
                                                <td style="text-align:left; width:10%"><a onclick="return window.confirm('<%:Install%> &quot;<%=luci.util.pcdata(n)%>&quot; ?')" href="<%=REQUEST_URI%>?submit=1&amp;install=<%=luci.util.pcdata(n)%>"><%:Install%></a></td>
                                                <td style="text-align:left"><%=luci.util.pcdata(n)%></td>
                                                <td style="text-align:left"><%=luci.util.pcdata(v)%></td>
+                                               <td style="text-align:right"><%=luci.util.pcdata(s)%></td>
                                                <td style="text-align:left"><%=luci.util.pcdata(d)%></td>
                                        </tr>
                                        <% end) %>
                                                <td style="text-align:left"><%=luci.util.pcdata(d)%></td>
                                        </tr>
                                        <% end) %>
@@ -179,6 +181,7 @@ end
                                                <td style="text-align:left">&#160;</td>
                                                <td style="text-align:left"><em><%:none%></em></td>
                                                <td style="text-align:left"><em><%:none%></em></td>
                                                <td style="text-align:left">&#160;</td>
                                                <td style="text-align:left"><em><%:none%></em></td>
                                                <td style="text-align:left"><em><%:none%></em></td>
+                                               <td style="text-align:right"><em><%:none%></em></td>
                                                <td style="text-align:left"><em><%:none%></em></td>
                                        </tr>
                                        <% end %>
                                                <td style="text-align:left"><em><%:none%></em></td>
                                        </tr>
                                        <% end %>