forked from kanasimi/work_crawler
-
Notifications
You must be signed in to change notification settings - Fork 0
/
work_crawler.updater.js
97 lines (81 loc) · 2.79 KB
/
work_crawler.updater.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
/**
* CeJS 線上小說漫畫下載工具 命令行介面自動更新工具。
*
* @since 2018/8/27
*/
'use strict';
var update_script_url = 'https://raw.githubusercontent.com/kanasimi/gh-updater/master/GitHub.updater.node.js';
// ----------------------------------------------------------------------------
// const
var node_https = require('https'), node_fs = require('fs');
download_update_tool(update_script_url, update_components);
function show_info(message) {
process.title = message;
console.info('\x1b[35;46m' + message + '\x1b[0m');
}
function download_update_tool(update_script_url, callback) {
show_info('下載 GitHub 更新工具...');
node_https.get(update_script_url, function(response) {
var buffer_array = [], sum_size = 0;
response.on('data', function(data) {
sum_size += data.length;
buffer_array.push(data);
});
response.on('end', function(e) {
var contents = Buffer.concat(buffer_array, sum_size).toString(),
//
update_script_name = update_script_url.match(/[^\\\/]+$/)[0];
console.info(update_script_name + ': ' + sum_size + ' bytes.');
node_fs.writeFileSync(update_script_name, contents);
if (typeof callback === 'function')
callback(update_script_name);
});
})
//
.on('error', function(e) {
// network error?
// console.error(e);
throw e;
});
}
function install_npm(package_name, message) {
try {
require(package_name);
} catch (e) {
// e.code: 'MODULE_NOT_FOUND'
// console.error(e);
show_info(message || ('安裝需要用到的組件 [' + package_name + ']...'));
if (!node_fs.existsSync('node_modules'))
node_fs.mkdirSync('node_modules');
require('child_process').execSync(
'npm i -D ' + package_name + '@latest', {
stdio : 'inherit'
});
}
}
function update_components(update_script_name) {
var executing_at_tool_directory = node_fs
.existsSync('work_crawler_loder.js'), updater = require('./'
+ update_script_name);
show_info('下載/更新 CeJS 線上小說漫畫下載工具...');
updater.update('kanasimi/work_crawler', executing_at_tool_directory
// 解開到當前目錄下。
? '.' : '', function() {
if (executing_at_tool_directory) {
// console.log('似乎在 CeJS 線上小說漫畫下載工具的工作目錄下,直接執行升級工具。');
// console.log(process.cwd());
} else {
process.chdir('work_crawler-master');
}
show_info('下載/更新 Colorless echo JavaScript kit 組件...');
updater.update(null, null, function() {
// @see "dependencies" @ package.json
install_npm('gh-updater');
// 配置圖形使用者介面。
install_npm('electron', '下載/更新圖形介面需要用到的組件 electron...');
// install_npm('electron-builder');
install_npm('electron-updater');
show_info('CeJS 線上小說漫畫下載工具 更新完畢.');
});
});
}