1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
# frozen_string_literal: true
namespace :ext do
rootdir = Pathname("extensions")
desc "Build Chrome Extension"
task chrome: "chrome:build"
namespace :chrome do
dist = Pathname("dist/crx")
extdir = rootdir.join(dist)
manifest_json = rootdir.join("chrome/manifest.json")
directory extdir
task build: [ extdir, "lib:templates" ] do
cd rootdir do
cp_r [ "img/", "tmp/lib/" ], dist
`cd chrome && git ls-files`.split("\n").each do |src|
dest = dist.join(src)
mkdir_p dest.dirname
cp Pathname("chrome").join(src), dest
end
end
end
# Generate a .crx file.
task crx: [ :build, :npm ] do
out = "crx-web-console-#{JSON.parse(File.read(manifest_json))["version"]}.crx"
cd(extdir) { sh "node \"$(npm bin)/crx\" pack ./ -p ../crx-web-console.pem -o ../#{out}" }
end
# Generate a .zip file for Chrome Web Store.
task zip: [ :build ] do
version = JSON.parse(File.read(manifest_json))["version"]
cd(extdir) { sh "zip -r ../crx-web-console-#{version}.zip ./" }
end
desc "Launch a browser with the chrome extension."
task run: [ :build ] do
cd(rootdir) { sh "sh ./script/run_chrome.sh --load-extension=#{dist}" }
end
end
task :npm do
cd(rootdir) { sh "npm install --silent" }
end
namespace :lib do
templates = Pathname("lib/web_console/templates")
tmplib = rootdir.join("tmp/lib/")
js_erb = FileList.new(templates.join("**/*.js.erb"))
dirs = js_erb.pathmap("%{^#{templates},#{tmplib}}d")
task templates: dirs + js_erb.pathmap("%{^#{templates},#{tmplib}}X")
dirs.each { |d| directory d }
rule ".js" => [ "%{^#{tmplib},#{templates}}X.js.erb" ] do |t|
File.write(t.name, WebConsole::Testing::ERBPrecompiler.new(t.source).build)
end
end
end
|