| | 150 | |
| | 151 | -- List helper |
| | 152 | function _list(action, pat, cb) |
| | 153 | local fd = io.popen(ipkg .. " " .. action .. (pat and " '*" .. pat:gsub("'", "") .. "*'" or "")) |
| | 154 | if fd then |
| | 155 | local name, version, desc |
| | 156 | while true do |
| | 157 | local line = fd:read("*l") |
| | 158 | if not line then break end |
| | 159 | |
| | 160 | if line:sub(1,1) ~= " " then |
| | 161 | name, version, desc = line:match("^(.-) %- (.-) %- (.+)") |
| | 162 | |
| | 163 | if not name then |
| | 164 | name, version = line:match("^(.-) %- (.+)") |
| | 165 | desc = "" |
| | 166 | end |
| | 167 | |
| | 168 | cb(name, version, desc) |
| | 169 | |
| | 170 | name = nil |
| | 171 | version = nil |
| | 172 | desc = nil |
| | 173 | end |
| | 174 | end |
| | 175 | |
| | 176 | fd:close() |
| | 177 | end |
| | 178 | end |
| | 179 | |
| | 180 | --- List all packages known to opkg. |
| | 181 | -- @param pat Only find packages matching this pattern, nil lists all packages |
| | 182 | -- @param cb Callback function invoked for each package, receives name, version and description as arguments |
| | 183 | -- @return nothing |
| | 184 | function list_all(pat, cb) |
| | 185 | _list("list", pat, cb) |
| | 186 | end |
| | 187 | |
| | 188 | --- List installed packages. |
| | 189 | -- @param pat Only find packages matching this pattern, nil lists all packages |
| | 190 | -- @param cb Callback function invoked for each package, receives name, version and description as arguments |
| | 191 | -- @return nothing |
| | 192 | function list_installed(pat, cb) |
| | 193 | _list("list_installed", pat, cb) |
| | 194 | end |