#! /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 x(central), central, aliyun_central') println(' -p, --proxy 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();