代码拉取完成,页面将自动刷新
"use strict"
const http = require('http');
const fs = require('fs');
const path = require('path');
const util = require('./src/util.js');
const pkg = require('./package.json');
const Config = require('./config.json');
exports.name = pkg.name;
exports.desc = pkg.description;
exports.options = {
// '-h' : 'print this help message',
'--fetch': pkg.description,
'--fetch @<a tag name>': '按标签分类拉取配置,如:@audit',
'--view <a media name>': '查看指定 RD 哥哥的开发机配置',
'--scan <a media name>': '模糊查找开发机配置',
'--visit <a media name>': '访问指定 RD 哥哥的开发机页面',
'--set-url <http link url>': '设置获取配置的接口地址'
};
// 拉取接口数据(返回 json 为 string)
const fetchData = (url) => {
return new Promise((resolve, reject) => {
let chunk = '';
http.get(url, res => {
res.on('data', (rs) => {
chunk += rs;
}).on('end', () => {
const response = JSON.parse(chunk);
const data = util.parserConfig(response);
resolve(data);
}).on('error', (e) => {
reject(e);
});
});
});
};
const fetchDataByTag = (tag, urlPrefix = Config.url) => {
const url = urlPrefix + (tag ? '/' + tag : '');
return fetchData(url);
};
// 拉取,写入本地
const writeDeployHosts = (tag, urlPrefix = Config.url) => {
return fetchDataByTag(tag, urlPrefix).then(data => {
util.writeFisConfig(data);
util.colorPrint(data);
return data;
});
};
// 对外暴露(JSON.parse()处理)
exports.fetchData = (url) => {
return fetchData(url).then(data => {
return JSON.parse(data);
});
};
// 对外支持覆盖 `Config.url`,以防 url 变更,本模块无法及时更新
exports.fetchDataByTag = (tag, urlPrefix = Config.url) => {
const url = urlPrefix + (tag ? '/' + tag : '');
return exports.fetchData(url);
};
exports.run = function (argv, cli) {
// 如果输入为 fis3 foo -h
// 或者 fis3 foo --help
// 则输出帮助信息。
if (argv.h || argv.help) {
return cli.help(exports.name, exports.options);
}
var fetchUrl = argv['set-url'];
if (fetchUrl) {
//write config
console.log(fetchUrl);
var content = JSON.stringify({
url: fetchUrl
}, null, '\t');
fs.writeFile(path.resolve(__dirname, './config.json'), content, function (err) {
if (err) {
throw err;
}
});
}
// 抓取接口 hosts 信息
else if (argv.fetch) {
var tagStr = argv.fetch;
var tag = ''; // 按照 tag 来查询
if (tagStr && tagStr.length > 1 && tagStr.charAt(0) === '@') {
// console.log(tagStr);
tag = tagStr.slice(1);
}
writeDeployHosts(tag).then(() => {
console.log(`Fetch ${tag ? tagStr : ''} 'success! (${pkg.name} v${pkg.version})`);
});
return;
} else if (argv.visit) {
var url = util.getRdHostVisitURL(argv.visit);
console.log('访问地址:', url);
util.openBrowser(url);
} else if (argv.view) {
util.view(argv.view);
} else if (argv.scan) {
util.scan(argv.scan);
}
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。