This repository was archived by the owner on Mar 1, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathserver.js
executable file
·115 lines (90 loc) · 2.95 KB
/
server.js
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
var glob = require("glob")
var _ = require("underscore");
var express = require('express');
var app = express.createServer();
var http = require('http');
var fs = require('fs-extra');
var AdmZip = require('./adm-zip');
var ChromeExtension = require("./crx")
app.configure(function() {
app.use(express.methodOverride());
app.use(express.bodyParser());
app.use(express.static(__dirname + '/public'));
app.use(app.router);
});
app.get("/", function(req, res) {
res.send({});
});
app.post('/', function(req, res) {
var request = require("request");
console.log('starting request');
//request('http://github.com/cdnjs/cdnjs/zipball/master', function() {
console.log('finished request');
var resources2;
fs.removeSync('extension/cdnjs');
fs.removeSync('scratch');
fs.mkdirSync('extension');
fs.mkdirSync('scratch');
var zip = new AdmZip("./cdnjs.zip");
zip.extractAllTo('scratch', false);
var cdnjsFolderZipName = fs.readdirSync('scratch')[0];
fs.renameSync('scratch/' + cdnjsFolderZipName, 'extension/cdnjs');
options = {};
glob("extension/cdnjs/ajax/**/*.js", options, function(er, files) {
resources2 = '[';
_.each(files, function(filename) {
resources2 += '"' + filename.replace('extension/', '') + '",';
});
resources2 = resources2.substr(0, resources2.length - 1);
resources2 += ']';
fs.readFile('extension/manifest.json', 'ascii', function(err, data) {
if (err) {
console.error("Could not open file: %s", err);
process.exit(1);
}
var manifest = JSON.parse(data);
console.log(manifest);
manifest.version = manifest.version*1 + 0.01;
manifest.web_accessible_resources = files;
console.log(manifest);
fs.writeFile("extension/manifest.json", JSON.stringify(manifest), function(err) {
if (err) {
console.log(err);
} else {
fs.copy('cdnjs.js', 'extension/cdnjs.js', function() {
var crx = new ChromeExtension({
privateKey: fs.readFileSync("key.pem"),
rootDirectory: "extension",
codebase: 'http://github.com/cdnjs/browser-extension'
})
console.log('compile crx');
crx.load(function(err) {
console.log(arguments, 'asd')
if (err) throw err
console.log(arguments, 'asd2')
this.pack(function(err, data) {
console.log(arguments);
if (err) throw err
var updateXML = this.generateUpdateXML()
fs.writeFile("public/update.xml", updateXML);
fs.writeFile("public/cdnjs-local-loader.crx", data)
console.log('done');
//fs.removeSync('cdnjs.zip');
//fs.removeSync('extension');
this.destroy()
res.send({});
})
})
});
}
});
});
});
//}).pipe(fs.createWriteStream('cdnjs.zip'))
});
app.listen(8000);
//console.log(files);
// files is an array of filenames.
// If the `nonull` option is set, and nothing
// was found, then files is ["**/*.js"]
// er is an error object or null.