From efeb89103ac87b26dbe4f810344b1a27f10c1acd Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Wed, 3 Jan 2018 19:37:11 +0900 Subject: install adm-zip --- package-lock.json | 6 ++++++ package.json | 1 + 2 files changed, 7 insertions(+) diff --git a/package-lock.json b/package-lock.json index 7e88990..0d5ffd8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -199,6 +199,12 @@ } } }, + "adm-zip": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", + "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=", + "dev": true + }, "after": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", diff --git a/package.json b/package.json index 47ec787..c8416e6 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ }, "homepage": "https://github.com/ueokande/vim-vixen", "devDependencies": { + "adm-zip": "^0.4.7", "babel-cli": "^6.24.1", "babel-eslint": "^8.0.2", "babel-loader": "^7.1.1", -- cgit v1.2.3 From 0e5f677b4826ad45a6ff6fd4ded5ea3a9748c539 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Wed, 3 Jan 2018 20:09:10 +0900 Subject: add package script --- script/package.js | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 script/package.js diff --git a/script/package.js b/script/package.js new file mode 100644 index 0000000..0879ec8 --- /dev/null +++ b/script/package.js @@ -0,0 +1,55 @@ +let path = require('path'); +let fs = require('fs'); +let AdmZip = require('adm-zip'); +let manifest = require('../manifest'); + +manifest.iconFiles = function() { + return Object.values(this.icons); +}; + +manifest.contentScriptFiles = function() { + let files = this.content_scripts.map(entry => entry.js); + return [].concat.apply([], files); +}; + +manifest.backgroundScriptFiles = function() { + return this.background.scripts; + +}; + +manifest.webAccessibleResourceFiles = function() { + return this.web_accessible_resources; +}; + +manifest.optionFiles = function() { + let uiFile = this.options_ui.page; + let dir = path.dirname(uiFile); + let html = fs.readFileSync(uiFile, 'utf-8'); + + let files = [uiFile]; + let regex = /<\s*script\s+src\s*=\s*'(.*)'\s*>/g; + let match = regex.exec(html); + while (match) { + files.push(path.join(dir, match[1])); + match = regex.exec(html); + } + return files; +}; + +let files = [] + .concat('manifest.json') + .concat(manifest.iconFiles()) + .concat(manifest.contentScriptFiles()) + .concat(manifest.backgroundScriptFiles()) + .concat(manifest.webAccessibleResourceFiles()) + .concat(manifest.optionFiles()); +let zip = new AdmZip(); +let output = `${manifest.version}.zip`; +console.log(output); +for (let f of files) { + let dir = path.dirname(f); + zip.addLocalFile(f, dir); + console.log('=>', path.join(dir, f)); +} + +zip.writeZip(output); -- cgit v1.2.3 From a6c39af39da15489971af370421108f38a38ec2f Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Wed, 3 Jan 2018 20:20:48 +0900 Subject: use new package script --- package.json | 2 +- package.sh | 20 -------------------- 2 files changed, 1 insertion(+), 21 deletions(-) delete mode 100755 package.sh diff --git a/package.json b/package.json index c8416e6..05e3ff5 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "scripts": { "start": "webpack -w --debug --devtool inline-source-map", "build": "NODE_ENV=production webpack --progress --display-error-details", - "package": "npm run build && ./package.sh", + "package": "npm run build && node script/package.js", "lint": "eslint --ext .jsx,.js src", "test": "karma start" }, diff --git a/package.sh b/package.sh deleted file mode 100755 index 34535ba..0000000 --- a/package.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -MANIFEST="manifest.json" - -version=$(jq -r '.version' $MANIFEST) - -icons=$(jq -r '.icons[]' $MANIFEST) -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 $content_scripts $background_scripts $web_accessible_resources $options_ui $options_scripts -- cgit v1.2.3 From 049ab1234c324ec78a608a5db9253a064390a056 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Wed, 3 Jan 2018 21:46:16 +0900 Subject: support node6 --- script/package.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/package.js b/script/package.js index 0879ec8..0128f0f 100644 --- a/script/package.js +++ b/script/package.js @@ -4,7 +4,7 @@ let AdmZip = require('adm-zip'); let manifest = require('../manifest'); manifest.iconFiles = function() { - return Object.values(this.icons); + return Object.keys(this.icons).map(key => this.icons[key]); }; manifest.contentScriptFiles = function() { -- cgit v1.2.3