コマンドラインでaddonsのアップデート その2
結果をtable作成を共通化してあと縞々にしました。
update の 件は 放置中で、plugins を 追加したました。
全コードはこちら
以下差分
diff -r 1b3bb4250281 update-addons.js --- a/update-addons.js Sat Aug 01 01:02:50 2009 +0900 +++ b/update-addons.js Sat Aug 01 18:59:38 2009 +0900 @@ -1,33 +1,57 @@ (function(){ var T={ get extensions() T.extensionManager.getItemList(Ci.nsIUpdateItem.TYPE_EXTENSION,{}) - , subcommand:{ + ,get plugins() T.pluginHost.getPluginTags({}) + ,createTable:function(items,gene_body,gene_head){ + var table = <table class="update-addons"></table>; + if(gene_head){ + let head = <thead></thead>; + head.* += gene_head(); + table.* += head; + } + let body = <tbody></tbody>; + for([,item] in Iterator(items)){ + body.* += gene_body(item); + } + table.* += body; + return <> + <style><![CDATA[ + .update-addons thead td{ + font-weight:bold; + border-bottom: 1px dotted black + } + .update-addons tbody tr:nth-child(odd){ + background-color: #eee; + } + .update-addons td{ + padding: 0 0.5em; + } + ]]></style> + {table} + </>; + }, subcommand:{ list:{ desc: "show addon list" ,action:function(){ const attrs = ["name","version", "minAppVersion","maxAppVersion"]; - let node = <thead> - <td>icon</td> - </thead>; - for(let [,a] in Iterator(attrs)){ - node.* += <td>{a}</td>; - } - var xml = <table> - {node} - <tbody> - </tbody> - </table>; - for(let [,ext] in Iterator(T.extensions)){ - let tr =<tr> - <td>{template.icon({icon:ext.iconURL},"")}</td> - </tr>; - + var xml=T.createTable(T.extensions,function(item){ + var tr = <tr> + <td>{template.icon({icon:item.iconURL},"")}</td> + </tr>; for(let [,a] in Iterator(attrs)){ - tr.* += <td>{ext[a]}</td>; + tr.* += <td>{item[a]}</td>; } - xml.tbody.* += tr; - } + return tr; + },function(){ + let tr = <tr> + <td>icon</td> + </tr>; + for(let [,a] in Iterator(attrs)){ + tr.* += <td>{a}</td>; + } + return tr; + }); liberator.echo(xml); } },check:{ @@ -38,7 +62,14 @@ T.extensionManager.update(exts , exts.length ,Ci.nsIExtensionManager.UPDATE_CHECK_NEWVERSION,{ onUpdateEnded:function(){ - T.showList(checkes); + liberator.echo(T.createTable(T.extensions + ,function(item) <tr> + <td>{template.icon({icon:item.iconURL},"")}</td> + <td>{item.name}</td> + <td>{item.version}</td> + <td>{T.state_msg[checkes[item.id]]}</td> + </tr> + )); },onUpdateStarted:function(){ },onAddonUpdateEnded:function(addon,state){ checkes[addon.id] = state; @@ -52,20 +83,24 @@ if(ext.length > 0) T.extensionManager.addDownloads(ext, ext.length,null); } - } - }, - showList:function(checkes){ - var xml = <table></table>; - for(let [,ext] in Iterator(T.extensions)){ - xml.* += <tr> - <td>{template.icon({icon:ext.iconURL},"")}</td> - <td>{ext.name}</td> - <td>{ext.version}</td> - <td>{T.state_msg[checkes[ext.id]]}</td> - </tr>; + }, plugins:{ + desc:"plugin list" + ,action:function(){ + var chk = { + "false":<input type="checkbox" checked="true"/> + ,"true":<input type="checkbox" disabled="true"/> + }; + var x = T.createTable(T.plugins + ,function(o) <tr> + <td>{chk[o.disabled]}</td> + <td>{o.name}</td> + <td>{o.version}</td> + <td>{o.description}</td> + </tr>); + liberator.echo(x); + } } - liberator.echo(xml); - },names:["updateaddon"] + }, names:["updateaddon"] ,desc: "update addons" ,action:function(args){ var command = T.subcommand[args[0]]; @@ -87,7 +122,7 @@ T.extensionManager = Cc["@mozilla.org/extensions/manager;1"] .getService(Ci.nsIExtensionManager); - plugins.ex = T.extensions; + T.pluginHost = Cc["@mozilla.org/plugin/host;1"].getService(Ci.nsIPluginHost); commands.removeUserCommand(T.names[0]); commands.addUserCommand(T.names, T.desc, T.action,T.option);