Use jszip on package script

This commit is contained in:
Shin'ya Ueoka 2019-04-27 12:20:18 +09:00
parent 5613aaffb1
commit 5dd5bbbd3c
3 changed files with 40 additions and 22 deletions

39
script/package Executable file
View file

@ -0,0 +1,39 @@
#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
const manifest = require('../manifest');
const JSZip = require('jszip');
const resources = () => {
return [
'manifest.json',
'resources/disabled_32x32.png',
'resources/enabled_32x32.png',
manifest.options_ui.page,
'build/settings.js',
].concat(
Object.values(manifest.icons),
manifest.background.scripts,
manifest.content_scripts.map(cs => cs.js).reduce((a1, a2) => a1.concat(a2), []),
manifest.web_accessible_resources,
).sort();
};
const output = `vim-vixen-${manifest.version}.zip`
let basedir = path.join(__dirname, '..');
let zip = new JSZip();
for (let r of resources()) {
console.log(` adding: ${r}`)
let data = fs.readFileSync(path.join(basedir, r));
zip.file(r, data);
}
zip
.generateNodeStream({ type: 'nodebuffer', streamFiles: true })
.pipe(fs.createWriteStream(output))
.on('finish', function () {
console.log(`${output} created`);
});

View file

@ -1,21 +0,0 @@
#!/bin/sh
MANIFEST="manifest.json"
version=$(jq -r '.version' $MANIFEST)
icons=$(jq -r '.icons[]' $MANIFEST)
toolbar_icons="resources/disabled_32x32.png resources/enabled_32x32.png"
content_scripts=$(jq -r '.content_scripts[].js[]' $MANIFEST)
background_scripts=$(jq -r '.background.scripts[]' $MANIFEST)
web_accessible_resources=$(jq -r '.web_accessible_resources[]' $MANIFEST)
options_ui=$(jq -r '.options_ui.page' $MANIFEST)
options_scripts=""
for html in $options_ui; do
scripts=$(grep -Po "(?<=src=['\"])[^'\"]*" "$html")
for js in $scripts; do
options_scripts="$options_scripts $(dirname $html)/$js"
done
done
zip ${version}.zip $MANIFEST $icons $toolbar_icons $content_scripts $background_scripts $web_accessible_resources $options_ui $options_scripts