aboutsummaryrefslogtreecommitdiff
path: root/widgets/pkg.lua
diff options
context:
space:
mode:
authorAdrian C. (anrxc) <anrxc@sysphere.org>2010-03-14 01:55:33 +0100
committerAdrian C. (anrxc) <anrxc@sysphere.org>2010-03-14 01:55:33 +0100
commit237470c8f45190b213e3a173ce6ae1a74b3e11fe (patch)
tree7f53c8144761947d4bde20715bcad34f4be0d6c0 /widgets/pkg.lua
parent9a82d4113a8271b7dfc7506f2b07379e3ede89a8 (diff)
downloadvicious-legacy-237470c8f45190b213e3a173ce6ae1a74b3e11fe.tar.xz
API: transform widgets namespace table to a directory
Diffstat (limited to 'widgets/pkg.lua')
-rw-r--r--widgets/pkg.lua41
1 files changed, 41 insertions, 0 deletions
diff --git a/widgets/pkg.lua b/widgets/pkg.lua
new file mode 100644
index 0000000..fa2375b
--- /dev/null
+++ b/widgets/pkg.lua
@@ -0,0 +1,41 @@
+---------------------------------------------------
+-- Licensed under the GNU General Public License v2
+-- * (c) 2010, Adrian C. <anrxc@sysphere.org>
+---------------------------------------------------
+
+-- {{{ Grab environment
+local io = { popen = io.popen }
+local math = { max = math.max }
+local setmetatable = setmetatable
+-- }}}
+
+
+-- Pkg: provides number of pending updates on GNU/Linux
+module("vicious.widgets.pkg")
+
+
+-- {{{ Packages widget type
+local function worker(format, dist)
+ -- Initialise counters
+ local updates = 0
+ local manager = {
+ ["Arch"] = { cmd = "pacman -Qu" },
+ ["Arch S"] = { cmd = "yes | pacman -Sup", sub = 2 },
+ ["Debian"] = { cmd = "apt-show-versions -u -b" },
+ ["Fedora"] = { cmd = "yum list updates", sub = 3 }
+ }
+
+ -- Check if updates are available
+ local pkg = manager[dist]
+ local f = io.popen(pkg.cmd)
+
+ for line in f:lines() do
+ updates = updates + 1
+ end
+ f:close()
+
+ return {pkg.sub and math.max(updates-pkg.sub, 0) or updates}
+end
+-- }}}
+
+setmetatable(_M, { __call = function(_, ...) return worker(...) end })