| Index: automation/publish.js | 
| diff --git a/options.js b/automation/publish.js | 
| similarity index 50% | 
| copy from options.js | 
| copy to automation/publish.js | 
| index 9b3b21b8a5e8d63941b67ad7d4d4a21bad966f5e..45951b6ff61bf88ea878752e3707c8496e4031f3 100644 | 
| --- a/options.js | 
| +++ b/automation/publish.js | 
| @@ -17,20 +17,28 @@ | 
|  | 
| "use strict"; | 
|  | 
| -let iframe = document.getElementById("content"); | 
| +const {ArgumentParser} = require("argparse"); | 
| +const fs = require("fs"); | 
| +const path = require("path"); | 
|  | 
| -iframe.onload = () => | 
| -{ | 
| -  document.title = iframe.contentDocument.title; | 
| -}; | 
| +let platforms = {}; | 
|  | 
| -browser.runtime.sendMessage({ | 
| -  type: "app.get", | 
| -  what: "application" | 
| -}, | 
| -application => | 
| -{ | 
| -  // Load the mobile version of the options page on Firefox for Android. | 
| -  iframe.src = iframe.getAttribute("data-src-" + application) || | 
| -               iframe.getAttribute("data-src"); | 
| +let parser = new ArgumentParser({ | 
| +  help: "Deploy an Adblock Plus development build." | 
| +}); | 
| +let subParser = parser.addSubparsers({ | 
| +  title: "Platforms", | 
| +  dest: "platform_name" | 
| }); | 
| + | 
| +for (let file of fs.readdirSync(path.resolve("automation/target/"))) | 
| +{ | 
| +  let target = path.basename(file, ".js"); | 
| +  let platformSubParser = subParser.addParser(target, {addHelp: true}); | 
| +  let module = require(path.resolve(`automation/target/${file}`)); | 
| +  module.addArguments(platformSubParser); | 
| +  platforms[target] = module; | 
| +} | 
| + | 
| +let args = parser.parseArgs(); | 
| +platforms[args.platform_name].run(args); | 
|  |