UNPKG

tin-args

Version:

Simple command line argument extraction script with no complicated feature

1 lines 845 B
"use strict";const boolMap={true:!0,false:!1},parseValue=v=>{const bool=boolMap[v];if(void 0!==bool)return bool;if(/^\[.+\]$/.test(v)||/^(?:re|r)?\/[^]+\/[dgimsuvy]{0,8}$/.test(v))return/^(?:re|r)\//.test(v)&&(v=v.slice(v.indexOf("/"))),eval(v);if(/\\,/.test(v))return v.replace(/\\,/g,",");if(/,/.test(v))return v.split(",");{const e=+v;return Number.isFinite(e)?e:v}},tinArgs=(e,t=!1)=>{const s=process.argv;t&&console.log("process.argv: ",s);const r=(e=e||{}).prefix||"-",o=r.length,i=e.startIndex||2,n={};if(s.length>i)for(let e=i,t=s.length;e<t;){const t=s[e++];if(t)if(t.startsWith(r)){const i=t.slice(o),[,l=i,v]=/^([^:=]+)(?:[:=](.+))?$/.exec(i)||[];let a;v?a=parseValue(v):(a=s[e],void 0===a||a.startsWith(r)?a=!0:(a=parseValue(a),e++)),n[l]=a}else(n.args||(n.args=[])).push(t)}return n};tinArgs.version="v0.1.3",module.exports=tinArgs;