feat: scripts
This commit is contained in:
150
scripts/mvnjar.js
Normal file
150
scripts/mvnjar.js
Normal file
@@ -0,0 +1,150 @@
|
||||
#! /usr/bin/env runjs
|
||||
|
||||
var argsEx = require('component-args.js');
|
||||
var json = require('component-json-ex.js');
|
||||
var gpg = require('component-gpg-ex.js');
|
||||
var DefaultRollCounter = Packages.me.hatter.tools.commons.io.DefaultRollCounter;
|
||||
|
||||
// need pom?
|
||||
var REPO_BASEURLS = {
|
||||
'central': {
|
||||
'jar': 'https://search.maven.org/remotecontent?filepath={gid}/{aid}/{ver}/{aid}-{ver}.jar',
|
||||
'src': 'https://search.maven.org/remotecontent?filepath={gid}/{aid}/{ver}/{aid}-{ver}-sources.jar',
|
||||
'pom': 'https://search.maven.org/remotecontent?filepath={gid}/{aid}/{ver}/{aid}-{ver}.pom'
|
||||
},
|
||||
'aliyun_central': {
|
||||
'jar': 'https://maven.aliyun.com/repository/central/{gid}/{aid}/{ver}/{aid}-{ver}.jar',
|
||||
'src': 'https://maven.aliyun.com/repository/central/{gid}/{aid}/{ver}/{aid}-{ver}-sources.jar',
|
||||
'pom': 'https://maven.aliyun.com/repository/central/{gid}/{aid}/{ver}/{aid}-{ver}.pom'
|
||||
}
|
||||
};
|
||||
|
||||
var gpgEncryptedAuthToken = {/**LINES
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
Comment: GPGTools - https://gpgtools.org
|
||||
|
||||
hQEMAwpgonLPA1NTAQf+MowR8XeAd6jtJhHE6s8FwmXyYEI1R8J3kEo+XBnUWXph
|
||||
dVQYHUAj+lWl9Pd8YpJmImT+Qf9mseZSi0wbkUi6N1UJogwtx4sAu9szvLcEhYa2
|
||||
68Oyl+AY8jdn608OKqXRwG8z4HVrzdFgyEBuyJ/GafDH+bXcLYNtROcb63FlMlhJ
|
||||
zLymaJD85W3uKlmYqJ0/OHLxn+fruRvZz0ZxlN1w3lj8t0wqLk+cOcTVMZkpdiYD
|
||||
BGj8fkS/OTQBBNACmsCJDoUdBEMSRpjU3z55Zn5EGK0R3uTkZfuo+pJjGaZEtz8m
|
||||
kuM0Yxyvq38fzPC9zrGQKsyXBOH3B8/x7GqcNDEVRtJnAWDu4syv3FkiGAzyHiKZ
|
||||
nEupU97rz+XL5fKU89i6+ttAAC+xIMkASAde/Z5CdOdGjwfjx3u7U+c8XmaAcQtE
|
||||
ibIucc2d0dsCkynzket0EfqExEXj4NUqxmwIS118vKMZAwap3FnaxQ==
|
||||
=fjt8
|
||||
-----END PGP MESSAGE-----
|
||||
*/};
|
||||
|
||||
var SITE_PROXY_MAP = {
|
||||
"hatterink": "https://hatter.ink/pget.action?__auth_token={auth_token}&target={target}"
|
||||
};
|
||||
|
||||
var __cachec_authToken = null;
|
||||
|
||||
var getRealUrl = (args, url) => {
|
||||
var readlUrl = url;
|
||||
var proxy = args.val('p', 'proxy');
|
||||
if (proxy != null) {
|
||||
var proxyUrl = SITE_PROXY_MAP[proxy];
|
||||
if (proxyUrl == null) {
|
||||
xprintln('[WARN] Unknown proxy: ' + proxy);
|
||||
} else {
|
||||
xprintln('[INFO] Using proxy: ' + proxy);
|
||||
if (__cachec_authToken == null) {
|
||||
__cachec_authToken = gpg.decryptArmor(gpgEncryptedAuthToken);
|
||||
}
|
||||
readlUrl = proxyUrl.replace('{auth_token}', __cachec_authToken).replace('{target}', encodeURIComponent(url));
|
||||
}
|
||||
}
|
||||
return readlUrl;
|
||||
};
|
||||
|
||||
var main = () => {
|
||||
var args = argsEx.parseDefARGs(['use-wget']);
|
||||
if (args == null || (args.length != 1 && args.length != 3)) {
|
||||
println('Usage:');
|
||||
println('mvnjar.js [--use-wget] [-r, --repo] [-p, --proxy] gid aid ver');
|
||||
println('mvnjar.js [--use-wget] [-r, --repo] [-p, --proxy] gid:aid:ver');
|
||||
println(' -r, --repo <REPO> x(central), central, aliyun_central')
|
||||
println(' -p, --proxy <SITE> Site, hatterink')
|
||||
return;
|
||||
}
|
||||
var repo = args.val('r', 'repo')
|
||||
if (repo == null || repo == 'x') { repo = 'central'; }
|
||||
|
||||
var gid, aid, ver;
|
||||
if (args.length == 1) {
|
||||
var splitedArgs1 = $STR(args[0]).split(':');
|
||||
if (splitedArgs1.length != 3) {
|
||||
xprintln('[ERROR] Format error: ' + args[0]);
|
||||
return;
|
||||
}
|
||||
gid = splitedArgs1[0];
|
||||
aid = splitedArgs1[1];
|
||||
ver = splitedArgs1[2];
|
||||
} else {
|
||||
gid = args[0];
|
||||
aid = args[1];
|
||||
ver = args[2];
|
||||
}
|
||||
|
||||
var baseUrls = REPO_BASEURLS[repo];
|
||||
if (baseUrls == null) {
|
||||
xprintln('[ERROR] Repo not defined: ' + repo);
|
||||
return;
|
||||
}
|
||||
var urlJar = baseUrls.jar;
|
||||
var urlSrc = baseUrls.src;
|
||||
var urlPom = baseUrls.pom;
|
||||
|
||||
var uj = urlJar.replace(/{gid}/g, gid.replace(/\./g, '/')).replace(/{aid}/g, aid).replace(/{ver}/g, ver);
|
||||
println('JAR: ' + uj);
|
||||
if (args.flg('use-wget')) {
|
||||
$$.shell().commands('wget', uj, '-O', aid + '-' + ver + '.jar').run();
|
||||
} else {
|
||||
__.httprequest.fromUrl(getRealUrl(args, uj)).get(__.rfile.from(aid + '-' + ver + '.jar').file(), new DefaultRollCounter().prefix('Downloading ... '));
|
||||
}
|
||||
|
||||
var hasSrc = true;
|
||||
var us = urlSrc.replace(/{gid}/g, gid.replace(/\./g, '/')).replace(/{aid}/g, aid).replace(/{ver}/g, ver);
|
||||
println('SRC: ' + us);
|
||||
try {
|
||||
if (args.flg('use-wget')) {
|
||||
$$.shell().commands('wget', us, '-O', aid + '-' + ver + '-sources.jar').run();
|
||||
} else {
|
||||
__.httprequest.fromUrl(getRealUrl(args, us)).get(__.rfile.from(aid + '-' + ver + '-sources.jar').file(), new DefaultRollCounter().prefix('Downloading ... '));
|
||||
}
|
||||
} catch(e) {
|
||||
hasSrc = false;
|
||||
println('[WARN] download src failed.')
|
||||
}
|
||||
if (urlPom) {
|
||||
var up = urlPom.replace(/{gid}/g, gid.replace(/\./g, '/')).replace(/{aid}/g, aid).replace(/{ver}/g, ver);
|
||||
println('POM: ' + up);
|
||||
if (args.flg('use-wget')) {
|
||||
$$.shell().commands('wget', up, '-O', aid + '-' + ver + '-.pom').run();
|
||||
} else {
|
||||
__.httprequest.fromUrl(getRealUrl(args, up)).get(__.rfile.from(aid + '-' + ver + '.pom').file(), new DefaultRollCounter().prefix('Downloading ... '));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var b = {
|
||||
repo: {
|
||||
gid: gid,
|
||||
aid: aid,
|
||||
jar: aid + '-' + ver + '.jar',
|
||||
pom: aid + '-' + ver + '.pom',
|
||||
staticVersion: ver
|
||||
}
|
||||
};
|
||||
if (hasSrc) {
|
||||
b.repo.src = aid + '-' + ver + '-sources.jar';
|
||||
}
|
||||
var j = json.prettyJSON(b);
|
||||
println(j);
|
||||
__.rfile.from('build.json').write(j);
|
||||
println('done')
|
||||
};
|
||||
|
||||
main();
|
||||
Reference in New Issue
Block a user