thisdotrob-calvin-cljs
Version:
a minimalistic build tool for clojurescript in clojurescript
930 lines (894 loc) • 48.5 kB
JavaScript
// Compiled by ClojureScript 1.9.293 {:target :nodejs}
goog.provide('cljs.tools.cli');
goog.require('cljs.core');
goog.require('clojure.string');
goog.require('goog.string.format');
goog.require('goog.string');
/**
* Reduce arguments sequence into [opt-type opt ?optarg?] vectors and a vector
* of remaining arguments. Returns as [option-tokens remaining-args].
*
* Expands clumped short options like "-abc" into:
* [[:short-opt "-a"] [:short-opt "-b"] [:short-opt "-c"]]
*
* If "-b" were in the set of options that require arguments, "-abc" would
* then be interpreted as: [[:short-opt "-a"] [:short-opt "-b" "c"]]
*
* Long options with `=` are always parsed as option + optarg, even if nothing
* follows the `=` sign.
*
* If the :in-order flag is true, the first non-option, non-optarg argument
* stops options processing. This is useful for handling subcommand options.
*/
cljs.tools.cli.tokenize_args = (function cljs$tools$cli$tokenize_args(var_args){
var args__7658__auto__ = [];
var len__7651__auto___21065 = arguments.length;
var i__7652__auto___21066 = (0);
while(true){
if((i__7652__auto___21066 < len__7651__auto___21065)){
args__7658__auto__.push((arguments[i__7652__auto___21066]));
var G__21068 = (i__7652__auto___21066 + (1));
i__7652__auto___21066 = G__21068;
continue;
} else {
}
break;
}
var argseq__7659__auto__ = ((((2) < args__7658__auto__.length))?(new cljs.core.IndexedSeq(args__7658__auto__.slice((2)),(0),null)):null);
return cljs.tools.cli.tokenize_args.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__7659__auto__);
});
cljs.tools.cli.tokenize_args.cljs$core$IFn$_invoke$arity$variadic = (function (required_set,args,options){
var map__21020 = cljs.core.apply.call(null,cljs.core.hash_map,options);
var map__21020__$1 = ((((!((map__21020 == null)))?((((map__21020.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__21020.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__21020):map__21020);
var in_order = cljs.core.get.call(null,map__21020__$1,new cljs.core.Keyword(null,"in-order","in-order",-1605651796));
var opts = cljs.core.PersistentVector.EMPTY;
var argv = cljs.core.PersistentVector.EMPTY;
var G__21028 = args;
var vec__21029 = G__21028;
var seq__21030 = cljs.core.seq.call(null,vec__21029);
var first__21031 = cljs.core.first.call(null,seq__21030);
var seq__21030__$1 = cljs.core.next.call(null,seq__21030);
var car = first__21031;
var cdr = seq__21030__$1;
var opts__$1 = opts;
var argv__$1 = argv;
var G__21028__$1 = G__21028;
while(true){
var opts__$2 = opts__$1;
var argv__$2 = argv__$1;
var vec__21034 = G__21028__$1;
var seq__21035 = cljs.core.seq.call(null,vec__21034);
var first__21036 = cljs.core.first.call(null,seq__21035);
var seq__21035__$1 = cljs.core.next.call(null,seq__21035);
var car__$1 = first__21036;
var cdr__$1 = seq__21035__$1;
if(cljs.core.truth_(car__$1)){
var pred__21038 = cljs.core.re_seq;
var expr__21039 = car__$1;
if(cljs.core.truth_(pred__21038.call(null,/^--$/,expr__21039))){
var G__21082 = opts__$2;
var G__21083 = cljs.core.into.call(null,argv__$2,cdr__$1);
var G__21084 = cljs.core.PersistentVector.EMPTY;
opts__$1 = G__21082;
argv__$1 = G__21083;
G__21028__$1 = G__21084;
continue;
} else {
if(cljs.core.truth_(pred__21038.call(null,/^--\S+=/,expr__21039))){
var G__21085 = cljs.core.conj.call(null,opts__$2,cljs.core.into.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"long-opt","long-opt",-386094553)], null),clojure.string.split.call(null,car__$1,/=/,(2))));
var G__21086 = argv__$2;
var G__21087 = cdr__$1;
opts__$1 = G__21085;
argv__$1 = G__21086;
G__21028__$1 = G__21087;
continue;
} else {
if(cljs.core.truth_(pred__21038.call(null,/^--/,expr__21039))){
var vec__21041 = ((cljs.core.contains_QMARK_.call(null,required_set,car__$1))?new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.first.call(null,cdr__$1),cljs.core.rest.call(null,cdr__$1)], null):new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [null,cdr__$1], null));
var optarg = cljs.core.nth.call(null,vec__21041,(0),null);
var cdr__$2 = cljs.core.nth.call(null,vec__21041,(1),null);
var G__21095 = cljs.core.conj.call(null,opts__$2,cljs.core.into.call(null,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"long-opt","long-opt",-386094553),car__$1], null),(cljs.core.truth_(optarg)?new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [optarg], null):cljs.core.PersistentVector.EMPTY)));
var G__21096 = argv__$2;
var G__21097 = cdr__$2;
opts__$1 = G__21095;
argv__$1 = G__21096;
G__21028__$1 = G__21097;
continue;
} else {
if(cljs.core.truth_(pred__21038.call(null,/^-./,expr__21039))){
var vec__21045 = (function (){var os = cljs.core.PersistentVector.EMPTY;
var G__21051 = cljs.core.rest.call(null,car__$1);
var vec__21052 = G__21051;
var seq__21053 = cljs.core.seq.call(null,vec__21052);
var first__21054 = cljs.core.first.call(null,seq__21053);
var seq__21053__$1 = cljs.core.next.call(null,seq__21053);
var c = first__21054;
var cs = seq__21053__$1;
var os__$1 = os;
var G__21051__$1 = G__21051;
while(true){
var os__$2 = os__$1;
var vec__21056 = G__21051__$1;
var seq__21057 = cljs.core.seq.call(null,vec__21056);
var first__21058 = cljs.core.first.call(null,seq__21057);
var seq__21057__$1 = cljs.core.next.call(null,seq__21057);
var c__$1 = first__21058;
var cs__$1 = seq__21057__$1;
var o = [cljs.core.str("-"),cljs.core.str(c__$1)].join('');
if(cljs.core.contains_QMARK_.call(null,required_set,o)){
if(cljs.core.seq.call(null,cs__$1)){
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.conj.call(null,os__$2,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"short-opt","short-opt",-384995699),o,clojure.string.join.call(null,cs__$1)], null)),cdr__$1], null);
} else {
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.conj.call(null,os__$2,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"short-opt","short-opt",-384995699),o,cljs.core.first.call(null,cdr__$1)], null)),cljs.core.rest.call(null,cdr__$1)], null);
}
} else {
if(cljs.core.seq.call(null,cs__$1)){
var G__21106 = cljs.core.conj.call(null,os__$2,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"short-opt","short-opt",-384995699),o], null));
var G__21107 = cs__$1;
os__$1 = G__21106;
G__21051__$1 = G__21107;
continue;
} else {
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.conj.call(null,os__$2,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"short-opt","short-opt",-384995699),o], null)),cdr__$1], null);
}
}
break;
}
})();
var os = cljs.core.nth.call(null,vec__21045,(0),null);
var cdr__$2 = cljs.core.nth.call(null,vec__21045,(1),null);
var G__21111 = cljs.core.into.call(null,opts__$2,os);
var G__21112 = argv__$2;
var G__21113 = cdr__$2;
opts__$1 = G__21111;
argv__$1 = G__21112;
G__21028__$1 = G__21113;
continue;
} else {
if(cljs.core.truth_(in_order)){
var G__21115 = opts__$2;
var G__21116 = cljs.core.into.call(null,argv__$2,cljs.core.cons.call(null,car__$1,cdr__$1));
var G__21117 = cljs.core.PersistentVector.EMPTY;
opts__$1 = G__21115;
argv__$1 = G__21116;
G__21028__$1 = G__21117;
continue;
} else {
var G__21120 = opts__$2;
var G__21121 = cljs.core.conj.call(null,argv__$2,car__$1);
var G__21122 = cdr__$1;
opts__$1 = G__21120;
argv__$1 = G__21121;
G__21028__$1 = G__21122;
continue;
}
}
}
}
}
} else {
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [opts__$2,argv__$2], null);
}
break;
}
});
cljs.tools.cli.tokenize_args.cljs$lang$maxFixedArity = (2);
cljs.tools.cli.tokenize_args.cljs$lang$applyTo = (function (seq21017){
var G__21018 = cljs.core.first.call(null,seq21017);
var seq21017__$1 = cljs.core.next.call(null,seq21017);
var G__21019 = cljs.core.first.call(null,seq21017__$1);
var seq21017__$2 = cljs.core.next.call(null,seq21017__$1);
return cljs.tools.cli.tokenize_args.cljs$core$IFn$_invoke$arity$variadic(G__21018,G__21019,seq21017__$2);
});
cljs.tools.cli.spec_keys = new cljs.core.PersistentVector(null, 12, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"id","id",-1388402092),new cljs.core.Keyword(null,"short-opt","short-opt",-384995699),new cljs.core.Keyword(null,"long-opt","long-opt",-386094553),new cljs.core.Keyword(null,"required","required",1807647006),new cljs.core.Keyword(null,"desc","desc",2093485764),new cljs.core.Keyword(null,"default","default",-1987822328),new cljs.core.Keyword(null,"default-desc","default-desc",324577013),new cljs.core.Keyword(null,"parse-fn","parse-fn",1818406345),new cljs.core.Keyword(null,"assoc-fn","assoc-fn",418597603),new cljs.core.Keyword(null,"validate-fn","validate-fn",1430169944),new cljs.core.Keyword(null,"validate-msg","validate-msg",-1415932287),new cljs.core.Keyword(null,"missing","missing",362507769)], null);
/**
* Select only known spec entries from map and warn the user about unknown
* entries at development time.
*/
cljs.tools.cli.select_spec_keys = (function cljs$tools$cli$select_spec_keys(map){
var unknown_keys_21128 = cljs.core.keys.call(null,cljs.core.apply.call(null,cljs.core.dissoc,map,cljs.tools.cli.spec_keys));
if(cljs.core.seq.call(null,unknown_keys_21128)){
cljs.core.println.call(null,[cljs.core.str("Warning: The following options to parse-opts are unrecognized: "),cljs.core.str(clojure.string.join.call(null,", ",unknown_keys_21128))].join(''));
} else {
}
return cljs.core.select_keys.call(null,map,cljs.tools.cli.spec_keys);
});
cljs.tools.cli.compile_spec = (function cljs$tools$cli$compile_spec(spec){
var sopt_lopt_desc = cljs.core.take_while.call(null,(function (p1__21136_SHARP_){
return (typeof p1__21136_SHARP_ === 'string') || ((p1__21136_SHARP_ == null));
}),spec);
var spec_map = cljs.core.apply.call(null,cljs.core.hash_map,cljs.core.drop.call(null,cljs.core.count.call(null,sopt_lopt_desc),spec));
var vec__21153 = sopt_lopt_desc;
var short_opt = cljs.core.nth.call(null,vec__21153,(0),null);
var long_opt = cljs.core.nth.call(null,vec__21153,(1),null);
var desc = cljs.core.nth.call(null,vec__21153,(2),null);
var long_opt__$1 = (function (){var or__6543__auto__ = long_opt;
if(cljs.core.truth_(or__6543__auto__)){
return or__6543__auto__;
} else {
return new cljs.core.Keyword(null,"long-opt","long-opt",-386094553).cljs$core$IFn$_invoke$arity$1(spec_map);
}
})();
var vec__21156 = (cljs.core.truth_(long_opt__$1)?cljs.core.rest.call(null,cljs.core.re_find.call(null,/^(--[^ =]+)(?:[ =](.*))?/,long_opt__$1)):null);
var long_opt__$2 = cljs.core.nth.call(null,vec__21156,(0),null);
var req = cljs.core.nth.call(null,vec__21156,(1),null);
var id = (cljs.core.truth_(long_opt__$2)?cljs.core.keyword.call(null,cljs.core.subs.call(null,long_opt__$2,(2))):null);
var validate = new cljs.core.Keyword(null,"validate","validate",-201300827).cljs$core$IFn$_invoke$arity$1(spec_map);
var vec__21159 = ((cljs.core.seq.call(null,validate))?cljs.core.apply.call(null,cljs.core.map,cljs.core.vector,cljs.core.partition.call(null,(2),(2),cljs.core.repeat.call(null,null),validate)):null);
var validate_fn = cljs.core.nth.call(null,vec__21159,(0),null);
var validate_msg = cljs.core.nth.call(null,vec__21159,(1),null);
return cljs.core.merge.call(null,new cljs.core.PersistentArrayMap(null, 7, [new cljs.core.Keyword(null,"id","id",-1388402092),id,new cljs.core.Keyword(null,"short-opt","short-opt",-384995699),short_opt,new cljs.core.Keyword(null,"long-opt","long-opt",-386094553),long_opt__$2,new cljs.core.Keyword(null,"required","required",1807647006),req,new cljs.core.Keyword(null,"desc","desc",2093485764),desc,new cljs.core.Keyword(null,"validate-fn","validate-fn",1430169944),validate_fn,new cljs.core.Keyword(null,"validate-msg","validate-msg",-1415932287),validate_msg], null),cljs.tools.cli.select_spec_keys.call(null,cljs.core.dissoc.call(null,spec_map,new cljs.core.Keyword(null,"validate","validate",-201300827))));
});
cljs.tools.cli.distinct_QMARK__STAR_ = (function cljs$tools$cli$distinct_QMARK__STAR_(coll){
if(cljs.core.seq.call(null,coll)){
return cljs.core.apply.call(null,cljs.core.distinct_QMARK_,coll);
} else {
return true;
}
});
cljs.tools.cli.wrap_val = (function cljs$tools$cli$wrap_val(map,key){
if(cljs.core.contains_QMARK_.call(null,map,key)){
return cljs.core.update_in.call(null,map,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [key], null),(function (p1__21206_SHARP_){
if((p1__21206_SHARP_ == null)){
return null;
} else {
if(cljs.core.coll_QMARK_.call(null,p1__21206_SHARP_)){
return p1__21206_SHARP_;
} else {
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [p1__21206_SHARP_], null);
}
}
}));
} else {
return map;
}
});
/**
* Map a sequence of option specification vectors to a sequence of:
*
* {:id Keyword ; :server
* :short-opt String ; "-s"
* :long-opt String ; "--server"
* :required String ; "HOSTNAME"
* :desc String ; "Remote server"
* :default Object ; #<Inet4Address example.com/93.184.216.119>
* :default-desc String ; "example.com"
* :parse-fn IFn ; #(InetAddress/getByName %)
* :assoc-fn IFn ; assoc
* :validate-fn [IFn] ; [#(instance? Inet4Address %)
* ; #(not (.isMulticastAddress %)]
* :validate-msg [String] ; ["Must be an IPv4 host"
* ; "Must not be a multicast address"]
* :missing String ; "server must be specified"
* }
*
* :id defaults to the keywordized name of long-opt without leading dashes, but
* may be overridden in the option spec.
*
* The option spec entry `:validate [fn msg ...]` desugars into the two vector
* entries :validate-fn and :validate-msg. Multiple pairs of validation
* functions and error messages may be provided.
*
* A :default entry will not be included in the compiled spec unless specified.
*
* An option spec may also be passed as a map containing the entries above,
* in which case that subset of the map is transferred directly to the result
* vector.
*
* An assertion error is thrown if any :id values are unset, or if there exist
* any duplicate :id, :short-opt, or :long-opt values.
*/
cljs.tools.cli.compile_option_specs = (function cljs$tools$cli$compile_option_specs(option_specs){
var _PERCENT_ = cljs.core.map.call(null,(function (spec){
return cljs.tools.cli.wrap_val.call(null,cljs.tools.cli.wrap_val.call(null,((cljs.core.map_QMARK_.call(null,spec))?cljs.tools.cli.select_spec_keys.call(null,spec):cljs.tools.cli.compile_spec.call(null,spec)),new cljs.core.Keyword(null,"validate-fn","validate-fn",1430169944)),new cljs.core.Keyword(null,"validate-msg","validate-msg",-1415932287));
}),option_specs);
if(cljs.core.every_QMARK_.call(null,cljs.core.comp.call(null,cljs.core.identity,new cljs.core.Keyword(null,"id","id",-1388402092)),_PERCENT_)){
} else {
throw (new Error("Assert failed: (every? (comp identity :id) %)"));
}
if(cljs.core.truth_(cljs.tools.cli.distinct_QMARK__STAR_.call(null,cljs.core.map.call(null,new cljs.core.Keyword(null,"id","id",-1388402092),cljs.core.filter.call(null,new cljs.core.Keyword(null,"default","default",-1987822328),_PERCENT_))))){
} else {
throw (new Error("Assert failed: (distinct?* (map :id (filter :default %)))"));
}
if(cljs.core.truth_(cljs.tools.cli.distinct_QMARK__STAR_.call(null,cljs.core.remove.call(null,cljs.core.nil_QMARK_,cljs.core.map.call(null,new cljs.core.Keyword(null,"short-opt","short-opt",-384995699),_PERCENT_))))){
} else {
throw (new Error("Assert failed: (distinct?* (remove nil? (map :short-opt %)))"));
}
if(cljs.core.truth_(cljs.tools.cli.distinct_QMARK__STAR_.call(null,cljs.core.remove.call(null,cljs.core.nil_QMARK_,cljs.core.map.call(null,new cljs.core.Keyword(null,"long-opt","long-opt",-386094553),_PERCENT_))))){
} else {
throw (new Error("Assert failed: (distinct?* (remove nil? (map :long-opt %)))"));
}
return _PERCENT_;
});
cljs.tools.cli.default_option_map = (function cljs$tools$cli$default_option_map(specs){
return cljs.core.reduce.call(null,(function (m,s){
if(cljs.core.contains_QMARK_.call(null,s,new cljs.core.Keyword(null,"default","default",-1987822328))){
return cljs.core.assoc.call(null,m,new cljs.core.Keyword(null,"id","id",-1388402092).cljs$core$IFn$_invoke$arity$1(s),new cljs.core.Keyword(null,"default","default",-1987822328).cljs$core$IFn$_invoke$arity$1(s));
} else {
return m;
}
}),cljs.core.PersistentArrayMap.EMPTY,specs);
});
/**
* Given specs, returns a map of spec id to error message if missing.
*/
cljs.tools.cli.missing_errors = (function cljs$tools$cli$missing_errors(specs){
return cljs.core.reduce.call(null,(function (m,s){
if(cljs.core.truth_(new cljs.core.Keyword(null,"missing","missing",362507769).cljs$core$IFn$_invoke$arity$1(s))){
return cljs.core.assoc.call(null,m,new cljs.core.Keyword(null,"id","id",-1388402092).cljs$core$IFn$_invoke$arity$1(s),new cljs.core.Keyword(null,"missing","missing",362507769).cljs$core$IFn$_invoke$arity$1(s));
} else {
return m;
}
}),cljs.core.PersistentArrayMap.EMPTY,specs);
});
cljs.tools.cli.find_spec = (function cljs$tools$cli$find_spec(specs,opt_type,opt){
return cljs.core.first.call(null,cljs.core.filter.call(null,(function (p1__21322_SHARP_){
return cljs.core._EQ_.call(null,opt,opt_type.call(null,p1__21322_SHARP_));
}),specs));
});
cljs.tools.cli.pr_join = (function cljs$tools$cli$pr_join(var_args){
var args__7658__auto__ = [];
var len__7651__auto___21328 = arguments.length;
var i__7652__auto___21329 = (0);
while(true){
if((i__7652__auto___21329 < len__7651__auto___21328)){
args__7658__auto__.push((arguments[i__7652__auto___21329]));
var G__21332 = (i__7652__auto___21329 + (1));
i__7652__auto___21329 = G__21332;
continue;
} else {
}
break;
}
var argseq__7659__auto__ = ((((0) < args__7658__auto__.length))?(new cljs.core.IndexedSeq(args__7658__auto__.slice((0)),(0),null)):null);
return cljs.tools.cli.pr_join.cljs$core$IFn$_invoke$arity$variadic(argseq__7659__auto__);
});
cljs.tools.cli.pr_join.cljs$core$IFn$_invoke$arity$variadic = (function (xs){
return cljs.core.pr_str.call(null,clojure.string.join.call(null," ",xs));
});
cljs.tools.cli.pr_join.cljs$lang$maxFixedArity = (0);
cljs.tools.cli.pr_join.cljs$lang$applyTo = (function (seq21323){
return cljs.tools.cli.pr_join.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq21323));
});
cljs.tools.cli.missing_required_error = (function cljs$tools$cli$missing_required_error(opt,example_required){
return [cljs.core.str("Missing required argument for "),cljs.core.str(cljs.tools.cli.pr_join.call(null,opt,example_required))].join('');
});
cljs.tools.cli.parse_error = (function cljs$tools$cli$parse_error(opt,optarg,msg){
return [cljs.core.str("Error while parsing option "),cljs.core.str(cljs.tools.cli.pr_join.call(null,opt,optarg)),cljs.core.str(": "),cljs.core.str(msg)].join('');
});
cljs.tools.cli.validation_error = (function cljs$tools$cli$validation_error(opt,optarg,msg){
return [cljs.core.str("Failed to validate "),cljs.core.str(cljs.tools.cli.pr_join.call(null,opt,optarg)),cljs.core.str((cljs.core.truth_(msg)?[cljs.core.str(": "),cljs.core.str(msg)].join(''):""))].join('');
});
cljs.tools.cli.validate = (function cljs$tools$cli$validate(value,spec,opt,optarg){
var map__21395 = spec;
var map__21395__$1 = ((((!((map__21395 == null)))?((((map__21395.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__21395.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__21395):map__21395);
var validate_fn = cljs.core.get.call(null,map__21395__$1,new cljs.core.Keyword(null,"validate-fn","validate-fn",1430169944));
var validate_msg = cljs.core.get.call(null,map__21395__$1,new cljs.core.Keyword(null,"validate-msg","validate-msg",-1415932287));
var or__6543__auto__ = (function (){var G__21434 = validate_fn;
var vec__21436 = G__21434;
var seq__21437 = cljs.core.seq.call(null,vec__21436);
var first__21438 = cljs.core.first.call(null,seq__21437);
var seq__21437__$1 = cljs.core.next.call(null,seq__21437);
var vfn = first__21438;
var vfns = seq__21437__$1;
var G__21435 = validate_msg;
var vec__21439 = G__21435;
var seq__21440 = cljs.core.seq.call(null,vec__21439);
var first__21441 = cljs.core.first.call(null,seq__21440);
var seq__21440__$1 = cljs.core.next.call(null,seq__21440);
var msg = first__21441;
var msgs = seq__21440__$1;
var G__21434__$1 = G__21434;
var G__21435__$1 = G__21435;
while(true){
var vec__21442 = G__21434__$1;
var seq__21443 = cljs.core.seq.call(null,vec__21442);
var first__21444 = cljs.core.first.call(null,seq__21443);
var seq__21443__$1 = cljs.core.next.call(null,seq__21443);
var vfn__$1 = first__21444;
var vfns__$1 = seq__21443__$1;
var vec__21445 = G__21435__$1;
var seq__21446 = cljs.core.seq.call(null,vec__21445);
var first__21447 = cljs.core.first.call(null,seq__21446);
var seq__21446__$1 = cljs.core.next.call(null,seq__21446);
var msg__$1 = first__21447;
var msgs__$1 = seq__21446__$1;
if(cljs.core.truth_(vfn__$1)){
if(cljs.core.truth_((function (){try{return vfn__$1.call(null,value);
}catch (e21451){if((e21451 instanceof Error)){
var e = e21451;
return null;
} else {
throw e21451;
}
}})())){
var G__21464 = vfns__$1;
var G__21465 = msgs__$1;
G__21434__$1 = G__21464;
G__21435__$1 = G__21465;
continue;
} else {
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("cljs.tools.cli","error","cljs.tools.cli/error",1825406757),cljs.tools.cli.validation_error.call(null,opt,optarg,msg__$1)], null);
}
} else {
return null;
}
break;
}
})();
if(cljs.core.truth_(or__6543__auto__)){
return or__6543__auto__;
} else {
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [value,null], null);
}
});
cljs.tools.cli.parse_value = (function cljs$tools$cli$parse_value(value,spec,opt,optarg){
var map__21472 = spec;
var map__21472__$1 = ((((!((map__21472 == null)))?((((map__21472.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__21472.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__21472):map__21472);
var parse_fn = cljs.core.get.call(null,map__21472__$1,new cljs.core.Keyword(null,"parse-fn","parse-fn",1818406345));
var vec__21473 = (cljs.core.truth_(parse_fn)?(function (){try{return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [parse_fn.call(null,value),null], null);
}catch (e21479){if((e21479 instanceof Error)){
var e = e21479;
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [null,cljs.tools.cli.parse_error.call(null,opt,optarg,[cljs.core.str(e)].join(''))], null);
} else {
throw e21479;
}
}})():new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [value,null], null));
var value__$1 = cljs.core.nth.call(null,vec__21473,(0),null);
var error = cljs.core.nth.call(null,vec__21473,(1),null);
if(cljs.core.truth_(error)){
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("cljs.tools.cli","error","cljs.tools.cli/error",1825406757),error], null);
} else {
return cljs.tools.cli.validate.call(null,value__$1,spec,opt,optarg);
}
});
cljs.tools.cli.parse_optarg = (function cljs$tools$cli$parse_optarg(spec,opt,optarg){
var map__21488 = spec;
var map__21488__$1 = ((((!((map__21488 == null)))?((((map__21488.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__21488.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__21488):map__21488);
var required = cljs.core.get.call(null,map__21488__$1,new cljs.core.Keyword(null,"required","required",1807647006));
if(cljs.core.truth_((function (){var and__6531__auto__ = required;
if(cljs.core.truth_(and__6531__auto__)){
return (optarg == null);
} else {
return and__6531__auto__;
}
})())){
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("cljs.tools.cli","error","cljs.tools.cli/error",1825406757),cljs.tools.cli.missing_required_error.call(null,opt,required)], null);
} else {
return cljs.tools.cli.parse_value.call(null,(cljs.core.truth_(required)?optarg:true),spec,opt,optarg);
}
});
/**
* Reduce sequence of [opt-type opt ?optarg?] tokens into a map of
* {option-id value} merged over the default values in the option
* specifications.
*
* If the :no-defaults flag is true, only options specified in the tokens are
* included in the option-map.
*
* Unknown options, missing options, missing required arguments, option
* argument parsing exceptions, and validation failures are collected into
* a vector of error message strings.
*
* If the :strict flag is true, required arguments that match other options
* are treated as missing, instead of a literal value beginning with - or --.
*
* Returns [option-map error-messages-vector].
*/
cljs.tools.cli.parse_option_tokens = (function cljs$tools$cli$parse_option_tokens(var_args){
var args__7658__auto__ = [];
var len__7651__auto___21536 = arguments.length;
var i__7652__auto___21537 = (0);
while(true){
if((i__7652__auto___21537 < len__7651__auto___21536)){
args__7658__auto__.push((arguments[i__7652__auto___21537]));
var G__21538 = (i__7652__auto___21537 + (1));
i__7652__auto___21537 = G__21538;
continue;
} else {
}
break;
}
var argseq__7659__auto__ = ((((2) < args__7658__auto__.length))?(new cljs.core.IndexedSeq(args__7658__auto__.slice((2)),(0),null)):null);
return cljs.tools.cli.parse_option_tokens.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__7659__auto__);
});
cljs.tools.cli.parse_option_tokens.cljs$core$IFn$_invoke$arity$variadic = (function (specs,tokens,options){
var map__21511 = cljs.core.apply.call(null,cljs.core.hash_map,options);
var map__21511__$1 = ((((!((map__21511 == null)))?((((map__21511.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__21511.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__21511):map__21511);
var no_defaults = cljs.core.get.call(null,map__21511__$1,new cljs.core.Keyword(null,"no-defaults","no-defaults",-1025033878));
var strict = cljs.core.get.call(null,map__21511__$1,new cljs.core.Keyword(null,"strict","strict",-665564191));
var defaults = cljs.tools.cli.default_option_map.call(null,specs);
var requireds = cljs.tools.cli.missing_errors.call(null,specs);
return ((function (map__21511,map__21511__$1,no_defaults,strict,defaults,requireds){
return (function (p1__21501_SHARP_){
var vec__21513 = p1__21501_SHARP_;
var m = cljs.core.nth.call(null,vec__21513,(0),null);
var ids = cljs.core.nth.call(null,vec__21513,(1),null);
var errors = cljs.core.nth.call(null,vec__21513,(2),null);
if(cljs.core.truth_(no_defaults)){
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.select_keys.call(null,m,ids),errors], null);
} else {
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [m,errors], null);
}
});})(map__21511,map__21511__$1,no_defaults,strict,defaults,requireds))
.call(null,((function (map__21511,map__21511__$1,no_defaults,strict,defaults,requireds){
return (function (p1__21500_SHARP_){
return cljs.core.reduce.call(null,((function (map__21511,map__21511__$1,no_defaults,strict,defaults,requireds){
return (function (p__21516,p__21517){
var vec__21518 = p__21516;
var m = cljs.core.nth.call(null,vec__21518,(0),null);
var ids = cljs.core.nth.call(null,vec__21518,(1),null);
var errors = cljs.core.nth.call(null,vec__21518,(2),null);
var vec__21521 = p__21517;
var id = cljs.core.nth.call(null,vec__21521,(0),null);
var error = cljs.core.nth.call(null,vec__21521,(1),null);
if(cljs.core.contains_QMARK_.call(null,m,id)){
return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [m,ids,errors], null);
} else {
return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [m,ids,cljs.core.conj.call(null,errors,error)], null);
}
});})(map__21511,map__21511__$1,no_defaults,strict,defaults,requireds))
,p1__21500_SHARP_,requireds);
});})(map__21511,map__21511__$1,no_defaults,strict,defaults,requireds))
.call(null,cljs.core.reduce.call(null,((function (map__21511,map__21511__$1,no_defaults,strict,defaults,requireds){
return (function (p__21524,p__21525){
var vec__21526 = p__21524;
var m = cljs.core.nth.call(null,vec__21526,(0),null);
var ids = cljs.core.nth.call(null,vec__21526,(1),null);
var errors = cljs.core.nth.call(null,vec__21526,(2),null);
var vec__21529 = p__21525;
var opt_type = cljs.core.nth.call(null,vec__21529,(0),null);
var opt = cljs.core.nth.call(null,vec__21529,(1),null);
var optarg = cljs.core.nth.call(null,vec__21529,(2),null);
var temp__4655__auto__ = cljs.tools.cli.find_spec.call(null,specs,opt_type,opt);
if(cljs.core.truth_(temp__4655__auto__)){
var spec = temp__4655__auto__;
var vec__21532 = cljs.tools.cli.parse_optarg.call(null,spec,opt,optarg);
var value = cljs.core.nth.call(null,vec__21532,(0),null);
var error = cljs.core.nth.call(null,vec__21532,(1),null);
var id = new cljs.core.Keyword(null,"id","id",-1388402092).cljs$core$IFn$_invoke$arity$1(spec);
if(!(cljs.core._EQ_.call(null,value,new cljs.core.Keyword("cljs.tools.cli","error","cljs.tools.cli/error",1825406757)))){
var temp__4655__auto____$1 = (function (){var and__6531__auto__ = strict;
if(cljs.core.truth_(and__6531__auto__)){
var or__6543__auto__ = cljs.tools.cli.find_spec.call(null,specs,new cljs.core.Keyword(null,"short-opt","short-opt",-384995699),optarg);
if(cljs.core.truth_(or__6543__auto__)){
return or__6543__auto__;
} else {
return cljs.tools.cli.find_spec.call(null,specs,new cljs.core.Keyword(null,"long-opt","long-opt",-386094553),optarg);
}
} else {
return and__6531__auto__;
}
})();
if(cljs.core.truth_(temp__4655__auto____$1)){
var matched_spec = temp__4655__auto____$1;
return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [m,ids,cljs.core.conj.call(null,errors,cljs.tools.cli.missing_required_error.call(null,opt,new cljs.core.Keyword(null,"required","required",1807647006).cljs$core$IFn$_invoke$arity$1(spec)))], null);
} else {
return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"assoc-fn","assoc-fn",418597603).cljs$core$IFn$_invoke$arity$2(spec,cljs.core.assoc).call(null,m,id,value),cljs.core.conj.call(null,ids,id),errors], null);
}
} else {
return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [m,ids,cljs.core.conj.call(null,errors,error)], null);
}
} else {
return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [m,ids,cljs.core.conj.call(null,errors,[cljs.core.str("Unknown option: "),cljs.core.str(cljs.core.pr_str.call(null,opt))].join(''))], null);
}
});})(map__21511,map__21511__$1,no_defaults,strict,defaults,requireds))
,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [defaults,cljs.core.PersistentVector.EMPTY,cljs.core.PersistentVector.EMPTY], null),tokens)));
});
cljs.tools.cli.parse_option_tokens.cljs$lang$maxFixedArity = (2);
cljs.tools.cli.parse_option_tokens.cljs$lang$applyTo = (function (seq21502){
var G__21503 = cljs.core.first.call(null,seq21502);
var seq21502__$1 = cljs.core.next.call(null,seq21502);
var G__21504 = cljs.core.first.call(null,seq21502__$1);
var seq21502__$2 = cljs.core.next.call(null,seq21502__$1);
return cljs.tools.cli.parse_option_tokens.cljs$core$IFn$_invoke$arity$variadic(G__21503,G__21504,seq21502__$2);
});
/**
* Given a single compiled option spec, turn it into a formatted string,
* optionally with its default values if requested.
*/
cljs.tools.cli.make_summary_part = (function cljs$tools$cli$make_summary_part(show_defaults_QMARK_,spec){
var map__21570 = spec;
var map__21570__$1 = ((((!((map__21570 == null)))?((((map__21570.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__21570.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__21570):map__21570);
var short_opt = cljs.core.get.call(null,map__21570__$1,new cljs.core.Keyword(null,"short-opt","short-opt",-384995699));
var long_opt = cljs.core.get.call(null,map__21570__$1,new cljs.core.Keyword(null,"long-opt","long-opt",-386094553));
var required = cljs.core.get.call(null,map__21570__$1,new cljs.core.Keyword(null,"required","required",1807647006));
var default$ = cljs.core.get.call(null,map__21570__$1,new cljs.core.Keyword(null,"default","default",-1987822328));
var default_desc = cljs.core.get.call(null,map__21570__$1,new cljs.core.Keyword(null,"default-desc","default-desc",324577013));
var desc = cljs.core.get.call(null,map__21570__$1,new cljs.core.Keyword(null,"desc","desc",2093485764));
var opt = (cljs.core.truth_((function (){var and__6531__auto__ = short_opt;
if(cljs.core.truth_(and__6531__auto__)){
return long_opt;
} else {
return and__6531__auto__;
}
})())?[cljs.core.str(short_opt),cljs.core.str(", "),cljs.core.str(long_opt)].join(''):(cljs.core.truth_(long_opt)?[cljs.core.str(" "),cljs.core.str(long_opt)].join(''):(cljs.core.truth_(short_opt)?short_opt:null)));
var vec__21571 = (cljs.core.truth_(required)?new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [[cljs.core.str(opt),cljs.core.str(" "),cljs.core.str(required)].join(''),(function (){var or__6543__auto__ = default_desc;
if(cljs.core.truth_(or__6543__auto__)){
return or__6543__auto__;
} else {
return [cljs.core.str(default$)].join('');
}
})()], null):new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [opt,""], null));
var opt__$1 = cljs.core.nth.call(null,vec__21571,(0),null);
var dd = cljs.core.nth.call(null,vec__21571,(1),null);
if(cljs.core.truth_(show_defaults_QMARK_)){
return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [opt__$1,dd,(function (){var or__6543__auto__ = desc;
if(cljs.core.truth_(or__6543__auto__)){
return or__6543__auto__;
} else {
return "";
}
})()], null);
} else {
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [opt__$1,(function (){var or__6543__auto__ = desc;
if(cljs.core.truth_(or__6543__auto__)){
return or__6543__auto__;
} else {
return "";
}
})()], null);
}
});
/**
* Format a sequence of summary parts into columns. lens is a sequence of
* lengths to use for parts. There are two sequences of lengths if we are
* not displaying defaults. There are three sequences of lengths if we
* are showing defaults.
*/
cljs.tools.cli.format_lines = (function cljs$tools$cli$format_lines(lens,parts){
var fmt = (function (){var G__21581 = cljs.core.count.call(null,lens);
switch (G__21581) {
case (2):
return " %%-%ds %%-%ds";
break;
case (3):
return " %%-%ds %%-%ds %%-%ds";
break;
default:
throw (new Error([cljs.core.str("No matching clause: "),cljs.core.str(cljs.core.count.call(null,lens))].join('')));
}
})();
var fmt__$1 = cljs.core.apply.call(null,goog.string.format,fmt,lens);
return cljs.core.map.call(null,((function (fmt,fmt__$1){
return (function (p1__21578_SHARP_){
return clojure.string.trimr.call(null,cljs.core.apply.call(null,goog.string.format,fmt__$1,p1__21578_SHARP_));
});})(fmt,fmt__$1))
,parts);
});
cljs.tools.cli.required_arguments = (function cljs$tools$cli$required_arguments(specs){
return cljs.core.reduce.call(null,(function (s,p__21591){
var map__21592 = p__21591;
var map__21592__$1 = ((((!((map__21592 == null)))?((((map__21592.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__21592.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__21592):map__21592);
var required = cljs.core.get.call(null,map__21592__$1,new cljs.core.Keyword(null,"required","required",1807647006));
var short_opt = cljs.core.get.call(null,map__21592__$1,new cljs.core.Keyword(null,"short-opt","short-opt",-384995699));
var long_opt = cljs.core.get.call(null,map__21592__$1,new cljs.core.Keyword(null,"long-opt","long-opt",-386094553));
if(cljs.core.truth_(required)){
return cljs.core.into.call(null,s,cljs.core.remove.call(null,cljs.core.nil_QMARK_,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [short_opt,long_opt], null)));
} else {
return s;
}
}),cljs.core.PersistentHashSet.EMPTY,specs);
});
/**
* Reduce options specs into a options summary for printing at a terminal.
* Note that the specs argument should be the compiled version. That effectively
* means that you shouldn't call summarize directly. When you call parse-opts
* you get back a :summary key which is the result of calling summarize (or
* your user-supplied :summary-fn option) on the compiled option specs.
*/
cljs.tools.cli.summarize = (function cljs$tools$cli$summarize(specs){
if(cljs.core.seq.call(null,specs)){
var show_defaults_QMARK_ = cljs.core.some.call(null,(function (p1__21601_SHARP_){
var and__6531__auto__ = new cljs.core.Keyword(null,"required","required",1807647006).cljs$core$IFn$_invoke$arity$1(p1__21601_SHARP_);
if(cljs.core.truth_(and__6531__auto__)){
return cljs.core.contains_QMARK_.call(null,p1__21601_SHARP_,new cljs.core.Keyword(null,"default","default",-1987822328));
} else {
return and__6531__auto__;
}
}),specs);
var parts = cljs.core.map.call(null,cljs.core.partial.call(null,cljs.tools.cli.make_summary_part,show_defaults_QMARK_),specs);
var lens = cljs.core.apply.call(null,cljs.core.map,((function (show_defaults_QMARK_,parts){
return (function() {
var G__21616__delegate = function (cols){
return cljs.core.apply.call(null,cljs.core.max,cljs.core.map.call(null,cljs.core.count,cols));
};
var G__21616 = function (var_args){
var cols = null;
if (arguments.length > 0) {
var G__21617__i = 0, G__21617__a = new Array(arguments.length - 0);
while (G__21617__i < G__21617__a.length) {G__21617__a[G__21617__i] = arguments[G__21617__i + 0]; ++G__21617__i;}
cols = new cljs.core.IndexedSeq(G__21617__a,0);
}
return G__21616__delegate.call(this,cols);};
G__21616.cljs$lang$maxFixedArity = 0;
G__21616.cljs$lang$applyTo = (function (arglist__21618){
var cols = cljs.core.seq(arglist__21618);
return G__21616__delegate(cols);
});
G__21616.cljs$core$IFn$_invoke$arity$variadic = G__21616__delegate;
return G__21616;
})()
;})(show_defaults_QMARK_,parts))
,parts);
var lines = cljs.tools.cli.format_lines.call(null,lens,parts);
return clojure.string.join.call(null,"\n",lines);
} else {
return "";
}
});
/**
* Extract the map of default options from a sequence of option vectors.
*/
cljs.tools.cli.get_default_options = (function cljs$tools$cli$get_default_options(option_specs){
return cljs.tools.cli.default_option_map.call(null,cljs.tools.cli.compile_option_specs.call(null,option_specs));
});
/**
* Parse arguments sequence according to given option specifications and the
* GNU Program Argument Syntax Conventions:
*
* https://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html
*
* Option specifications are a sequence of vectors with the following format:
*
* [short-opt long-opt-with-required-description description
* :property value]
*
* The first three string parameters in an option spec are positional and
* optional, and may be nil in order to specify a later parameter.
*
* By default, options are toggles that default to nil, but the second string
* parameter may be used to specify that an option requires an argument.
*
* e.g. ["-p" "--port PORT"] specifies that --port requires an argument,
* of which PORT is a short description.
*
* The :property value pairs are optional and take precedence over the
* positional string arguments. The valid properties are:
*
* :id The key for this option in the resulting option map. This
* is normally set to the keywordized name of the long option
* without the leading dashes.
*
* Multiple option entries can share the same :id in order to
* transform a value in different ways, but only one of these
* option entries may contain a :default entry.
*
* This option is mandatory.
*
* :short-opt The short format for this option, normally set by the first
* positional string parameter: e.g. "-p". Must be unique.
*
* :long-opt The long format for this option, normally set by the second
* positional string parameter; e.g. "--port". Must be unique.
*
* :required A description of the required argument for this option if
* one is required; normally set in the second positional
* string parameter after the long option: "--port PORT".
*
* The absence of this entry indicates that the option is a
* boolean toggle that is set to true when specified on the
* command line.
*
* :desc A optional short description of this option.
*
* :default The default value of this option. If none is specified, the
* resulting option map will not contain an entry for this
* option unless set on the command line.
*
* :default-desc An optional description of the default value. This should be
* used when the string representation of the default value is
* too ugly to be printed on the command line.
*
* :parse-fn A function that receives the required option argument and
* returns the option value.
*
* If this is a boolean option, parse-fn will receive the value
* true. This may be used to invert the logic of this option:
*
* ["-q" "--quiet"
* :id :verbose
* :default true
* :parse-fn not]
*
* :assoc-fn A function that receives the current option map, the current
* option :id, and the current parsed option value, and returns
* a new option map.
*
* This may be used to create non-idempotent options, like
* setting a verbosity level by specifying an option multiple
* times. ("-vvv" -> 3)
*
* ["-v" "--verbose"
* :default 0
* :assoc-fn (fn [m k _] (update-in m [k] inc))]
*
* :validate A vector of [validate-fn validate-msg ...]. Multiple pairs
* of validation functions and error messages may be provided.
*
* :validate-fn A vector of functions that receives the parsed option value
* and returns a falsy value or throws an exception when the
* value is invalid. The validations are tried in the given
* order.
*
* :validate-msg A vector of error messages corresponding to :validate-fn
* that will be added to the :errors vector on validation
* failure.
*
* parse-opts returns a map with four entries:
*
* {:options The options map, keyed by :id, mapped to the parsed value
* :arguments A vector of unprocessed arguments
* :summary A string containing a minimal options summary
* :errors A possible vector of error message strings generated during
* parsing; nil when no errors exist}
*
* A few function options may be specified to influence the behavior of
* parse-opts:
*
* :in-order Stop option processing at the first unknown argument. Useful
* for building programs with subcommands that have their own
* option specs.
*
* :no-defaults Only include option values specified in arguments and do not
* include any default values in the resulting options map.
* Useful for parsing options from multiple sources; i.e. from a
* config file and from the command line.
*
* :strict Parse required arguments strictly: if a required argument value
* matches any other option, it is considered to be missing (and
* you have a parse error).
*
* :summary-fn A function that receives the sequence of compiled option specs
* (documented at #'clojure.tools.cli/compile-option-specs), and
* returns a custom option summary string.
*
*/
cljs.tools.cli.parse_opts = (function cljs$tools$cli$parse_opts(var_args){
var args__7658__auto__ = [];
var len__7651__auto___21660 = arguments.length;
var i__7652__auto___21661 = (0);
while(true){
if((i__7652__auto___21661 < len__7651__auto___21660)){
args__7658__auto__.push((arguments[i__7652__auto___21661]));
var G__21662 = (i__7652__auto___21661 + (1));
i__7652__auto___21661 = G__21662;
continue;
} else {
}
break;
}
var argseq__7659__auto__ = ((((2) < args__7658__auto__.length))?(new cljs.core.IndexedSeq(args__7658__auto__.slice((2)),(0),null)):null);
return cljs.tools.cli.parse_opts.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__7659__auto__);
});
cljs.tools.cli.parse_opts.cljs$core$IFn$_invoke$arity$variadic = (function (args,option_specs,options){
var map__21634 = cljs.core.apply.call(null,cljs.core.hash_map,options);
var map__21634__$1 = ((((!((map__21634 == null)))?((((map__21634.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__21634.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__21634):map__21634);
var in_order = cljs.core.get.call(null,map__21634__$1,new cljs.core.Keyword(null,"in-order","in-order",-1605651796));
var no_defaults = cljs.core.get.call(null,map__21634__$1,new cljs.core.Keyword(null,"no-defaults","no-defaults",-1025033878));
var strict = cljs.core.get.call(null,map__21634__$1,new cljs.core.Keyword(null,"strict","strict",-665564191));
var summary_fn = cljs.core.get.call(null,map__21634__$1,new cljs.core.Keyword(null,"summary-fn","summary-fn",-2130107959));
var specs = cljs.tools.cli.compile_option_specs.call(null,option_specs);
var req = cljs.tools.cli.required_arguments.call(null,specs);
var vec__21635 = cljs.tools.cli.tokenize_args.call(null,req,args,new cljs.core.Keyword(null,"in-order","in-order",-1605651796),in_order);
var tokens = cljs.core.nth.call(null,vec__21635,(0),null);
var rest_args = cljs.core.nth.call(null,vec__21635,(1),null);
var vec__21638 = cljs.tools.cli.parse_option_tokens.call(null,specs,tokens,new cljs.core.Keyword(null,"no-defaults","no-defaults",-1025033878),no_defaults,new cljs.core.Keyword(null,"strict","strict",-665564191),strict);
var opts = cljs.core.nth.call(null,vec__21638,(0),null);
var errors = cljs.core.nth.call(null,vec__21638,(1),null);
return new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,"options","options",99638489),opts,new cljs.core.Keyword(null,"arguments","arguments",-1182834456),rest_args,new cljs.core.Keyword(null,"summary","summary",380847952),(function (){var or__6543__auto__ = summary_fn;
if(cljs.core.truth_(or__6543__auto__)){
return or__6543__auto__;
} else {
return cljs.tools.cli.summarize;
}
})().call(null,specs),new cljs.core.Keyword(null,"errors","errors",-908790718),((cljs.core.seq.call(null,errors))?errors:null)], null);
});
cljs.tools.cli.parse_opts.cljs$lang$maxFixedArity = (2);
cljs.tools.cli.parse_opts.cljs$lang$applyTo = (function (seq21622){
var G__21623 = cljs.core.first.call(null,seq21622);
var seq21622__$1 = cljs.core.next.call(null,seq21622);
var G__21624 = cljs.core.first.call(null,seq21622__$1);
var seq21622__$2 = cljs.core.next.call(null,seq21622__$1);
return cljs.tools.cli.parse_opts.cljs$core$IFn$_invoke$arity$variadic(G__21623,G__21624,seq21622__$2);
});