{"_id":"gabr.sh","_rev":"26-989c66e5f33c06660dc4fd15d9205ae6","name":"gabr.sh","dist-tags":{"latest":"2.0.10"},"versions":{"1.1.0":{"name":"gabr.sh","version":"1.1.0","description":"Make Bash functions accessible with gabr.sh","main":"gabr.sh","scripts":{"test":"bats gabr.bats","release":"release-it"},"repository":{"type":"git","url":"git+https://github.com/nicobrinkkemper/gabr.sh.git"},"keywords":["Bash","functional","function","file","gabr","commandline","tool","terminal"],"author":{"name":"Nico Brinkkemper"},"license":"MIT","bugs":{"url":"https://github.com/nicobrinkkemper/gabr.sh/issues"},"homepage":"https://github.com/nicobrinkkemper/gabr.sh#readme","devDependencies":{"bats":"^1.1.0","release-it":"^12.2.2"},"gitHead":"bd02a2484d6cd4b1383184d923dc9de9dad2094a","_id":"gabr.sh@1.1.0","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"nicobb","email":"nico@brinkkemper.nl"},"dist":{"integrity":"sha512-XANJZprYEWgfuPCjALPzVBfeUP5XaS+Eun72+0LYrqC67aYox7//rty5H8DPh+sqoGENsz52tTKQLsI957um5g==","shasum":"13588b2a1d83a5ddb2323ad9b2e883187fb08371","tarball":"https://registry.npmjs.org/gabr.sh/-/gabr.sh-1.1.0.tgz","fileCount":11,"unpackedSize":30505,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+XcBCRA9TVsSAnZWagAAjqUP+QH6O2m5zrbOR+egjmOr\nIQLgy18ZEsXjI7wLCxa5rHktzQWQ8rH6VS+ZZOTrthG0vk6G6cCrcQZiox6O\nkiJYhoduBbqJ+OEVik5Oe7eslDjcow3cViI0fblgVBGSJ5IUmftm5n80BG2j\nt6JHCgKvPWW4j21jJnRxsuAf8rzVrpbhNehXnTgPLh6wBL2mhAra3P4yN1uh\nDM/CLzkQ84X/6lSydUqCp0RbQygsrAhaMpStniaH5vMCWm0eEMKif9G24JoF\nMLB2MFYx1ec0jPWuhUncPuXH0XkOZBB4nz+CuRXSxI9+ZClcyYf7b9s4/3x0\n+ndeCFjWomH66IN+ayY+VguMMoEnrg9UQgyc5+wGvnADuLF6VhCBZ16YjVzp\nbNzgjqpGScfRa6yXuUsYUv3QoeuOXx+XkEjmc+dTHXxt1zTNXTH3L8DjMqQw\nAaadfhQVJxd7gIz5gUfYgLR6G4ZNmTe7S/JHmliVNDmCudyGDfeZQThaMNPD\nGstQIB8xnC7ge4cw/s6w0yjHkTVa7BwefKz6Wv6qDlanWbH0v7+S9K2ATwbw\n3IT7WjJV8KMnaPElbqTHor32/tiQ1v8BPS7G+4saCdudHl2JAd6+Rjym0oek\ncVcR893NiHIZ7OIGZwE+u+ymGKiosBB/aNK6ospVMuYEF8kYrhtqe7i9V3KE\npkfO\r\n=Bevs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAij6CHLNhjfIeaacaBqMs2nGXsIeo/1baO9Oelxv0O9AiAchVCKo7Bdxdlv4jjDTMgGKllGoa+BB9v60U33qfuW8w=="}]},"maintainers":[{"name":"nicobb","email":"nico@brinkkemper.nl"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gabr.sh_1.1.0_1559852800746_0.16413665810961287"},"_hasShrinkwrap":false,"deprecated":"Version is prototype only"},"1.1.1":{"name":"gabr.sh","version":"1.1.1","description":"Make Bash functions accessible with gabr.sh","main":"gabr.sh","scripts":{"test":"bats gabr.bats","release":"release-it"},"bin":{"gabr":"./gabr.sh"},"repository":{"type":"git","url":"git+https://github.com/nicobrinkkemper/gabr.sh.git"},"keywords":["Bash","functional","function","file","gabr","commandline","tool","terminal"],"author":{"name":"Nico Brinkkemper"},"license":"MIT","bugs":{"url":"https://github.com/nicobrinkkemper/gabr.sh/issues"},"homepage":"https://github.com/nicobrinkkemper/gabr.sh#readme","devDependencies":{"bats":"^1.1.0","release-it":"^12.2.2"},"gitHead":"9e1730c5a0bc135c11da7e32a5ae88e5a13f4694","_id":"gabr.sh@1.1.1","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"nicobb","email":"nico@brinkkemper.nl"},"dist":{"integrity":"sha512-NnADwym1Y50YXLsmfJT++jndseI4Z7AqS0Nzs06YHbSuHnRdIG0GtGF5PVPnjAXwUyoiVetAOe22/I2m54C2zQ==","shasum":"d8088b3816638056c7603c3b4b11e1b380ad86c0","tarball":"https://registry.npmjs.org/gabr.sh/-/gabr.sh-1.1.1.tgz","fileCount":11,"unpackedSize":30521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+XoLCRA9TVsSAnZWagAA/9AP/2+7DAye6mHNqW9qcyvd\na4C7n/XD7ffXbk1VMwyADQ2Lx6FxSUzGLWnzHbnKHTSyLwoDjA8ad5TNNcE8\nP6Aa8ojoA96qT2OAzNvXnhXBO3RreBkJSysXe/H9NJKfFNLuik302VOdSJNJ\nxOXNOMif1bL/rLP7r/fyLdPYgwlCeBpgzXotao50KNantmgPRQy0pJRgGgwO\nY084wex7NKE9aGRgUYANOAzLVW65vw0kLMsUP8y5cUwOVWDqEfYeImZ0GuKR\njDD5wPjMeDwykunYGjHRkdEBNbE8XWUz9yW7Hjh/M1VRX2LC010lgrVBbNND\nGQXpb3VE385DQNPTDRb7FYtSMYk+vuFXADMgV8yiliyj+x7Ik/IXyoDrS79U\nVfGSn9RjFvL0NYLqAU8LMaAiH7AspqG1iZ+qQaDD55PoDLycwetwVrC2aUIv\nsBFjGZo4OHoeoTId+123eGLa6R8IsTNKuWVDPhpkJOUj6AtMfSkeEfF7fTB5\nw1MShSAXFdj7Xl0ha5AA3AyvomUkB9O6zrSfLESgYrgNzsyU3YQZIagZgWqC\nl+BhFcgSoa3BDkb/3OYC6K4de7sWUzBQFwMByZLNK9EXcoIVkn8LQPkS8JX5\nxqjSiB9K39YqUYSZDfJ5ROwROd1wtFiet3R+89koJ3bzHxtLpKNPBRLbNJRu\n8L/s\r\n=9VO5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFxyWaPGK9uA0Tql4ucQd/GIcyYczsrmpS78pT9HfPd9AiBTQeFq4ZmLOF8zR/THalmWCGVmsmfc4ic1uKEOD7QECg=="}]},"maintainers":[{"name":"nicobb","email":"nico@brinkkemper.nl"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gabr.sh_1.1.1_1559853579321_0.17144335781988662"},"_hasShrinkwrap":false,"deprecated":"Version is prototype only"},"1.2.0":{"name":"gabr.sh","version":"1.2.0","description":"Make Bash functions accessible with gabr.sh","main":"gabr.sh","scripts":{"test":"bats gabr.bats","release":"release-it"},"bin":{"gabr":"./gabr.sh"},"repository":{"type":"git","url":"git+https://github.com/nicobrinkkemper/gabr.sh.git"},"keywords":["Bash","functional","function","file","gabr","commandline","tool","terminal"],"author":{"name":"Nico Brinkkemper"},"license":"MIT","bugs":{"url":"https://github.com/nicobrinkkemper/gabr.sh/issues"},"homepage":"https://github.com/nicobrinkkemper/gabr.sh#readme","devDependencies":{"bats":"^1.1.0","release-it":"^12.2.2"},"gitHead":"7c5a7f92c1a9295c447edfcbefa32d13a245cd96","_id":"gabr.sh@1.2.0","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"nicobb","email":"nico@brinkkemper.nl"},"dist":{"integrity":"sha512-WfTulmlsTBHWEYw864SpJ2mpaeNqhRw8+h7DwPTrK7xVyBrD1TTyQ5jbyouamp46QTKf75QuuTzfPJbQWvncLQ==","shasum":"721e2c1bd7b84adf9fe1c581c0e13a5877a6c8a6","tarball":"https://registry.npmjs.org/gabr.sh/-/gabr.sh-1.2.0.tgz","fileCount":16,"unpackedSize":38105,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+m1LCRA9TVsSAnZWagAAo7wP/0ZqUM8cgXhTQHoGt2dn\naI7VH4Oo1clsf65rnqdX4DqBxcAvmhHyTvSiN8CNmjEkWI+saAr0D+QojiEt\nGfK/pLSMthcM07OQeL3wwL2xGdFIQ8d3kVOH3gRCP3iez/HWi4fJfOXBlQe0\njLFSJKaNKD7sTwgjJViCTeyHmCoyVtiqV6P8MYP6U9gpzrum+l98fkrctodp\nmEiYdd5u/fiN9RinA3cpetPfM1wMAS4W2xSnn1zonVAZ4bBpXNwXEbpzGoLz\njCELsPSohjjmCYQY2LF85hxwaR/WMmgGeLtEfQcsr+Dcbm3VgC3NsX09258D\nTHkFANHsCylRUkkTHNj36dFXtNHm2STWgjOWHD++YABudMX3PHh3pMs+CZ2+\nkgvZ06f11Jk4FY6SY0dy1L91RqmB4LMUGB+TRmWAhG0fMojYj14dBm5pJIH+\nEqGjQ5Xl5kgS/LdmW7V0He29P9xZa3WlSA1fthHEUjwuwKQWMiIS8Vl3lyji\nvuXsw9ANRsjFB93t/c+yzfui6CPXDQeEbaak5WC1ZKTZTaA+yWkdBf8sxQlo\nTpDCZ6KsWudDa1h2veuNNembpe73l/A0RmJxKujBFGwVSp1l4gYktGoyPHj1\nar0FHmWTcROjaX5+W3JAsLMWyF9byeUCnBCIKH9F8KD8mDjUbl77X1TRpT89\nmmMn\r\n=hTou\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICBr678FTqlqWW4CfplNbiwngkhPdaDbYFxbMowhQormAiEA1tEnV3k7LO+NEa7Sdq3m0R7SpB+uGLNMTYsovYNZQx0="}]},"maintainers":[{"name":"nicobb","email":"nico@brinkkemper.nl"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gabr.sh_1.2.0_1559915851082_0.9950584800555093"},"_hasShrinkwrap":false,"deprecated":"Version is prototype only"},"2.0.0":{"name":"gabr.sh","version":"2.0.0","description":"Make Bash functions accessible with gabr.sh","main":"gabr.sh","scripts":{"test":"bats gabr.bats","release":"release-it"},"bin":{"gabr":"./gabr.sh"},"repository":{"type":"git","url":"git+https://github.com/nicobrinkkemper/gabr.sh.git"},"keywords":["Bash","functional","function","file","gabr","commandline","tool","terminal"],"author":{"name":"Nico Brinkkemper"},"license":"MIT","bugs":{"url":"https://github.com/nicobrinkkemper/gabr.sh/issues"},"homepage":"https://github.com/nicobrinkkemper/gabr.sh#readme","devDependencies":{"bats":"^1.1.0","release-it":"^12.3.0"},"gitHead":"756f8f5d8c63a61969760df091f276c70c6935f4","_id":"gabr.sh@2.0.0","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"nicobb","email":"nico@brinkkemper.nl"},"dist":{"integrity":"sha512-zTRMIVCmyrVgIpEuVXb9P2LkeUyTJCx2Kg+DHm2DJ75hFrVXEJ6nHiFaxtK/1a60beEh2vLYrtemwuWIUTOd0g==","shasum":"6da1e156d913479aa51d268adb852750dda2d9d3","tarball":"https://registry.npmjs.org/gabr.sh/-/gabr.sh-2.0.0.tgz","fileCount":11,"unpackedSize":22941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdADONCRA9TVsSAnZWagAAFKwQAIB/+B0K41uZIhYFdmoM\niacHX1KPyeYZ9hlnZxpJtM1CbWImKivES2ZMu52wbEcn1r+Por0rV8WDQd0d\nUItyvFAuJPKJgga7cw+n06kX6iUntDsAN7JEDpjjTB2reIxF4vABpKkn2Npr\nDvz7M/xVlmt0Bj5xtthmY0D4klCEK1guYxyYLJd2/z82tdRqAAkOhbfTfUBN\n/EGqdRBrvnYzYB3AGb5KrzITr1nAN5CNDac08Z/Q+DhoTxhIDk1L+eSL2m06\nlpDjv/3vBiDbWKx8uP0ucMTaGfivf7pE2yEVqKD5rMy4HV07/HdO8rPY4Aqx\nYYu7sqMt24lXy5+tQcD3MKIZcHDG+jQ23RHQxsARxespI8DJH/ds89ShRvv6\nX39USlR/y4ruu5uEXDIZ62o2Izlp8eEA4xTSQBQEsqtVL4ch+86VWQs7ZWIl\nIuGaaL4VMqvqACgefd2kO3sVf32n0el0OgcqrWS2KKsMqHn0j3uzASWM9oJm\noTUOt68nEMXtHqD3eePTaswAKew4Hyxfd23wt4JejtdfI0kElWMQLZ4TVZz7\nQf63LJiHQrsWo4+w9+ugXOkeYGBVvC7tJ3BQWWKXieguMItAA24Dt1ItPfji\nGk+V5zM76MqE3uNSKukC69IZ/6AGD1AKhWmiEm6x1lusyMbZifEUkcF3eIn0\nBlIs\r\n=MHl/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCh+EMEqfaDURPmE/zF4j2g33qVFg/sJ4MCO7YYros5RwIgbGUIUNNT5s4UmhPnOGEDJa94DwQ0gJ07TmlWUDtkoHY="}]},"maintainers":[{"name":"nicobb","email":"nico@brinkkemper.nl"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gabr.sh_2.0.0_1560294284960_0.009627220682102866"},"_hasShrinkwrap":false,"deprecated":"Version is deprecated"},"2.0.6":{"name":"gabr.sh","version":"2.0.6","description":"Make Bash functions accessible with gabr.sh","main":"gabr.sh","scripts":{"test":"./modules/bats-core/bin/bats --tap test","release":"release-it"},"bin":{"gabr":"./gabr.sh","gabr.linux":"./gabr.linux.sh"},"repository":{"type":"git","url":"git+https://github.com/nicobrinkkemper/gabr.sh.git"},"keywords":["Bash","functional","function","file","gabr","commandline","tool","terminal"],"author":{"name":"Nico Brinkkemper"},"license":"MIT","bugs":{"url":"https://github.com/nicobrinkkemper/gabr.sh/issues"},"homepage":"https://github.com/nicobrinkkemper/gabr.sh#readme","gitHead":"806d0d3cfc9f06d5ece04d6cc60d3f7184570ab1","_id":"gabr.sh@2.0.6","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"nicobb","email":"nico@brinkkemper.nl"},"dist":{"integrity":"sha512-zc3z7vKndkKIxzKIfIrEd5kHc0CzU2wC/WM6SchiHCz9E2H0O8Sd5J3x8z+G29bfCCqOZu8Aj5lEtmlOlVAp/w==","shasum":"e864f9f9ad0ea54fe47cdbef7b93fbd278ffd0c5","tarball":"https://registry.npmjs.org/gabr.sh/-/gabr.sh-2.0.6.tgz","fileCount":40,"unpackedSize":125924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBG1TCRA9TVsSAnZWagAAZGYQAJVje3byJOc3bEqW1MTc\nqXqCpTOI323KdIBe1JgJsOjJEQpNAiucYm6rIG7A6DspqFNPoezYWHWny24z\nK1IoelNZjxS26pHPJcWGXDnuLqOh+aFEbIg2G8IM3IQcZL44o4WOZE+C/dFL\n7NArR7bxOlVIEdiiiLY5N+4hbyxJEjAcmBRct35J3isKtZ8mg3uVXSJ1OcmM\ntaa9An+FgWYc85s6kAfqtOZnSOCacwXTiKXFzrgESnvOcpJkOf4UpiDIOXPR\nE+xwl6EVww5dK/2YZKBc0jS8lRX8fBFlQEG/isK29QZthgWdH/IzrMuAsegy\nV5be7vc1F7Lbxzqb7iVjwZrx3uDIDKL4VPBDymtY8QDWP2zfVm6t/b3Gr9u8\nWEdmWMeiWWlGgIfd6wLXPRQ2AYPY63pTOT6iG3vIlx2xiXM9LGo82P8xZR1p\nsOGqYLJnna7hqAFBbWkMnQM29OTmkFoWKFWtPvPFr1YoKkvN7YCPIC9djQ1l\n9UPnh6u3TiHSv2DhBAwybHO8RdvkMv4ALBMUlXPN3SpH6X9vcT5zAoCCIEoV\n7UA/Q5Gt/6offQOGSFNOobiux1zCZ91PwJdFjh6aGCyCX71ODIXGsYJ/o62C\nUBxzO5/rbc5vDfmBIubXCQuAxYxD+h88tI2uvoN5d0PTSJPR0WY5uFhubngV\nlvAk\r\n=+02D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFJcchkWFKgO0EINKen1i2mpTH9yJrXYstIPYsSh4GEIAiA5MA4Ve4380w6S9EQlu39uMZVfdjKH9wRnWlLDAomDDQ=="}]},"maintainers":[{"name":"nicobb","email":"nico@brinkkemper.nl"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gabr.sh_2.0.6_1560571218503_0.7440510278222545"},"_hasShrinkwrap":false},"2.0.7":{"name":"gabr.sh","version":"2.0.7","description":"Make Bash functions accessible with gabr.sh","main":"gabr.sh","scripts":{"test":"./modules/bats-core/bin/bats --tap test","release":"release-it"},"bin":{"gabr":"./gabr.sh","gabr.linux":"./gabr.linux.sh"},"repository":{"type":"git","url":"git+https://github.com/nicobrinkkemper/gabr.sh.git"},"keywords":["Bash","functional","function","file","gabr","commandline","tool","terminal"],"author":{"name":"Nico Brinkkemper"},"license":"MIT","bugs":{"url":"https://github.com/nicobrinkkemper/gabr.sh/issues"},"homepage":"https://github.com/nicobrinkkemper/gabr.sh#readme","devDependencies":{"release-it":"^12.3.0"},"gitHead":"21183754abf021a9679611e42e04d37d724faae3","_id":"gabr.sh@2.0.7","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"nicobb","email":"nico@brinkkemper.nl"},"dist":{"integrity":"sha512-DKqtUFAno91FDSMGx9uCSx8Kn1GEwAcXdRAWk05RX7SZ5XPy2QS3gkaMxkWXrEI/l16qa6465WTVRs2suBny3g==","shasum":"2ad51ed61a225a7ca86943e6ba282f5f3d10f799","tarball":"https://registry.npmjs.org/gabr.sh/-/gabr.sh-2.0.7.tgz","fileCount":39,"unpackedSize":118465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBv3LCRA9TVsSAnZWagAA9oQP+gP/aYQ6kd3Mxuk5i/VO\nTGKYzBkmEGg9dE9l/PYpfA89a+FEfDWmnhI8xgqurkFUA3GdMx1IZrD8gA6q\nBw0q0lqpLodQnbS9YrQgv3qhY83Lxg4927ccHWdgQ6YdnESqPymV4Rx3fbjj\nQhBtwbPPEe0B4i5gmWykukybk4Xnwm+yGzIuDJW1frctz5i4Vfej88Dzmrpw\n38txT8nSOW+K+k5iAIMrbyGef2ahzbItIHXkK+izejniafmOFOAG8hS0Tj63\nPfHcL19FbUCUJNC7PTcUNggsR1hVAbUVznogE8etT2MRPIdRc630Aq4TmVdc\ncIPMzsUvTvMNWNrXeLIFOQBO3j0zA3dAg1KEJaVu2ERmn3xLOztcMvdNRA5b\nBcb812urA3gbX4JkPNK4E7CfBW6gZq/KvUbUOeVR+XiDxEqYRirXJ5yA3G4u\nurMnETBu7ADQdvnlL6NRdGoo46xUqTwt0srJ+XGg31OWYL3ijGTt9jFtpnlj\nIz6OF+T/zPrGf67pyZOgtMOi+Ui0JCukPQwyxb5CA6Jcgp+VPsUPJMElbLo1\nmDUOVUKidEKfSFMRvrzCjcJrjab54OET+gewhjbecHK5YD/PFnZwLUukwape\ntbsNsPayO9oStKXqGpzjgMOckQvPjh4elrqgbGDvrcW4UuL09J60FEzi03XU\nNmVK\r\n=ttud\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXC99g+XQvZ81+CFLF8bZ1lDtZx0UvNdhOOJ0UytG0rQIgGGred2HKa9PtZvG51mX6ts5d/D9uttBWTOMKDI08qDI="}]},"maintainers":[{"name":"nicobb","email":"nico@brinkkemper.nl"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gabr.sh_2.0.7_1560739274367_0.7245239670509556"},"_hasShrinkwrap":false},"2.0.8":{"name":"gabr.sh","version":"2.0.8","description":"Make Bash functions accessible with gabr.sh","main":"gabr.sh","scripts":{"test":"./modules/bats-core/bin/bats --tap test","release":"release-it"},"bin":{"gabr":"./gabr.sh","gabr.linux":"./gabr.linux.sh"},"repository":{"type":"git","url":"git+https://github.com/nicobrinkkemper/gabr.sh.git"},"keywords":["Bash","functional","function","file","gabr","commandline","tool","terminal"],"author":{"name":"Nico Brinkkemper"},"license":"MIT","bugs":{"url":"https://github.com/nicobrinkkemper/gabr.sh/issues"},"homepage":"https://github.com/nicobrinkkemper/gabr.sh#readme","devDependencies":{"release-it":"^12.3.0"},"gitHead":"8c8b81c619ae975583c06112e50de7716c66b7bc","_id":"gabr.sh@2.0.8","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"nicobb","email":"nico@brinkkemper.nl"},"dist":{"integrity":"sha512-tE1w9Wbo9vdhwlZXx77szsgCzLpQJNP0sjxradq0qWF4FVYbw8rp5t0C3OHA+MfzS1a4ZB74SV9YibYpacoM5Q==","shasum":"aa85cf13082bf054f578f3bbb170ab61e9da9150","tarball":"https://registry.npmjs.org/gabr.sh/-/gabr.sh-2.0.8.tgz","fileCount":39,"unpackedSize":121835,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdB+jlCRA9TVsSAnZWagAAVCgQAIUlj1pzDpeensxNBvY5\n9Wv65EIqxGa9j0OoBRc4mw72iCJyaD8XB4dc0DfzOVI3Hs0h0gWo3Tko5WiS\nRsbYTXNwtpkmz6zVAz1mEcqnAPZTU8r7xXS/LLnZVzeWRvV149jEqw2iZdrd\nsSGx8/Zo98UNnvzb5mxABMbOcqPQb17YgfB9Von68KHgJUWcgLY8l4IG70wP\nwyydEij7iqskrnbGMRkTXFzAjKLiKeTidmSYS9BHRbcM4u9DrsWAkeVZ8rrR\nW0Kn3KZpbQbnF5KBCa0tuXrppBi2VbIlAb5Kh61mkXB8ZnLSg7vMX3sEBzED\nV2xdEH7LDXBHBD8iYjQ6WGx8WwurSa+3r52MxhNb9oMxgE0LoSUtJum3oT86\nZc+h1QVl+0NRgVuRxAO+/6LoUrKSJ8AgLS1IJaetymkzPKgfUXT3MIsNpRXp\n4HyNiGk6ye836Wee47Ut4PveyAJBLdhBWd2NJbVMD54bvRSFu0KZmS0Yaf4Z\n5romyNpq+GxhPxj0jXoIgLRfY8pRdAwKcRrbQP7fxsyn8yQCa2aqEtyjv/9s\nH6unV5EE3DstKGXwqYqCPeU4kua7R67r2fwX6LWj5GM0HgTYajLttuIluGAQ\nQzEkPiFyvIlQGKd0RSuvsjPA5e6mGeOTFSLCzsVOSxI61SLvZ/T+Of5Xn2Cz\nLfUl\r\n=MHYR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrnkVAkJmmq+hWBdsjU3rVOLzNEy/aawHZx/+GuXUpKgIgSn8z6Gsxbq+KnY4miRFfXB8yQ+MYcuwttKPF23IUukM="}]},"maintainers":[{"name":"nicobb","email":"nico@brinkkemper.nl"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gabr.sh_2.0.8_1560799460546_0.7096739202330202"},"_hasShrinkwrap":false},"2.0.9":{"name":"gabr.sh","version":"2.0.9","description":"Make Bash functions accessible with gabr.sh","main":"gabr.sh","scripts":{"test":"./modules/bats-core/bin/bats --tap test","release":"release-it"},"bin":{"gabr":"./gabr.sh","gabr.linux":"./gabr.linux.sh"},"repository":{"type":"git","url":"git+https://github.com/nicobrinkkemper/gabr.sh.git"},"keywords":["Bash","functional","function","file","gabr","commandline","tool","terminal"],"author":{"name":"Nico Brinkkemper"},"license":"MIT","bugs":{"url":"https://github.com/nicobrinkkemper/gabr.sh/issues"},"homepage":"https://github.com/nicobrinkkemper/gabr.sh#readme","devDependencies":{"release-it":"^12.3.0"},"gitHead":"6b73bc75c9c5a9995c9f75a562fd435a377b427d","_id":"gabr.sh@2.0.9","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"nicobb","email":"nico@brinkkemper.nl"},"dist":{"integrity":"sha512-AeO9DyAjPWCqUegngnr4t5tbiMyBRfW/NnzHySR9IjNG8zv+V2WRpnny85VwZXKVcwcmwXf1i4MBE0Rg8Ra7LA==","shasum":"684ce469491efc114f392c0e32e64cf9512e719a","tarball":"https://registry.npmjs.org/gabr.sh/-/gabr.sh-2.0.9.tgz","fileCount":39,"unpackedSize":121751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdB+oaCRA9TVsSAnZWagAAkaEP/3x23tVYY1v/uMhJ0rKT\nmzWlhAdKPiLLiP8N9rpOh4FHDTkz1TLxaSC1HlVHHZi9VVTvjKPQZUWxtC4W\nXvdT4xFTvM9niNOg+7GShqgliGYCEZQPnoaLHVQAC/q4rIbHmR2hl+cdux0t\noU6yN8xQKJGBokNwgjIRU5QIKtFzp/87llYfJDcPKbx8Qi1jSkoMvGxQofKt\n3FMqb17JZyM9E9bAAUIS74D08SJRApVfDcZCkXBHQsdfyEMo5RV2bkkxIk22\nYRsW+qmZXYH06e+bx8YPYWt0+6Q8iWENL6kSJA/6pYBxj8JBMvmFHQroZ1ae\n/gXWXCroraWCDQ7Ge+QSuagucchGL+JX/IY1nNzB21XA4BHAzUIYEIyItsV2\n2F/Nnw/Dv120agPy7xE7CiNktiz72R3pIpLu2nHBNWVKFYbMi+2shf6HJjR9\n9bT3/E/HlJb6W94vP99axjMOtmvceDokquB+1df7uTmMKn9asm6r0V3s80Oy\nEoSfGxRwqDSzlbl0Uhf/1UR5EW5dBVjmHx9+Y9X8POpL9oX2ZyM0Fmfp/Vy1\n+unsftIkyibgYp5r1yVgoxJJ64koH63HtU9BI2fv6PxpbmdHIn474egaz4R5\nmn7QAhVPWprWE4DLlf6mEm1/ndbUVie+Add2xQuCsdk9KcE+0L+DGVarPDxk\nwpB9\r\n=XI93\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyyBVfkc6ha7pr+BllBwhlnQz0MVn6tL/TqKbtBAd3XAIgILQZRCnMMg2yAkt8hLxGPQ1d9hZKcWLMyiYxVFemk+w="}]},"maintainers":[{"name":"nicobb","email":"nico@brinkkemper.nl"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gabr.sh_2.0.9_1560799769943_0.06926460771561671"},"_hasShrinkwrap":false},"1.0.10":{"name":"gabr.sh","version":"1.0.10","description":"Make Bash functions accessible with gabr.sh","main":"gabr.sh","scripts":{"test":"./bin/bats --tap test","release":"release-it"},"bin":{"gabr":"./gabr.sh","gabr.linux":"./gabr.linux.sh"},"repository":{"type":"git","url":"git+https://github.com/nicobrinkkemper/gabr.sh.git"},"keywords":["Bash","functional","function","file","gabr","commandline","tool","terminal"],"author":{"name":"Nico Brinkkemper"},"license":"MIT","bugs":{"url":"https://github.com/nicobrinkkemper/gabr.sh/issues"},"homepage":"https://github.com/nicobrinkkemper/gabr.sh#readme","devDependencies":{"release-it":"^12.3.0"},"dependencies":{},"gitHead":"579b67f8004ea74db5b621c57689bf400b2bbf72","_id":"gabr.sh@1.0.10","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"nicobb","email":"nico@brinkkemper.nl"},"dist":{"integrity":"sha512-4PX0lb3gqSKzBtfwBJINrFDkri65wb5mjVsTWgm8MM7lqODAaDlQWm8arFC2D3IDZRRsHSMtRNVn6dzUsJrtlQ==","shasum":"f0018d50094cdc514e5947585d334398806efb59","tarball":"https://registry.npmjs.org/gabr.sh/-/gabr.sh-1.0.10.tgz","fileCount":47,"unpackedSize":147604,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdELzWCRA9TVsSAnZWagAAZo4P/1zfowTXcnWg3vHYZTvR\nyl8NdIsND1LxmDOz9fgt+uyuFp3pSzYcZAhEJ/1cf9dNUt/31jN8TUDtrI2t\nNaNV2PmJZLzY6fS2UvjadqbGYd2xgyxBGMmW7UNM9gKgk2LGbhE9aBhPqT8I\nkHsATFmsxbcsxnJMwrYVvt4ForvgW0tqA4mrbKcHmgJtWm8bPJUrWS0MPEYT\nO4MSQZeL1sCawUItP7fU/xaYeJ3P0mm/l4zvMR55DHpYFSWfYjC7TUVbmzf1\n6e52qmBG7SM0SkRuJJKHHX14UR4IXNbFuKf8Cq2PcifcV9hXrVByMNI4LUYw\nM6hUingaTr0vYwNuZhiP7ADbF9ijfJFmj7m/9FN1ZZSQiRdT3ZDuGojdFqxR\nkWI/b+XEMqoUqKnQl0cepZOHIjkoSXbYtUtgC0zvf1sOHVp7LbsC0x8U9mMG\nwQcuNPuH7T+B/rqj08+RoCBdsR1o1I4BuMIa1xejggNpHmaz+9kfi3hl/UJU\nlNoo4+caj6F6JN30XnPR0vKNfEy3rlreyaa4UBFS4p6yXbOKMg6Srkj50DSU\nrnJMQ5qsRlHmOBNpgH6mRpkxIcvx/lq0tJd23H9nrfBD4foL3P1RQtVdfstz\nIt6dtHJFwY22GbNJox1jyeapUdvaAiUxZ8wz/77Jlm1kaXGipkf82vmlK/1u\nVxlz\r\n=oOPl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD05JsTQwQlIQ1k8VuMPT4Dc6FHmY6H+frcxw9XkNxP7wIhAL5i9Gj1e4GVLfGbqDgkB+8MpoC4eRYNNv0Pkd1oR3HQ"}]},"maintainers":[{"name":"nicobb","email":"nico@brinkkemper.nl"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gabr.sh_1.0.10_1561378005581_0.7087903358633652"},"_hasShrinkwrap":false},"2.0.10":{"name":"gabr.sh","version":"2.0.10","description":"Make Bash functions accessible with gabr.sh","main":"gabr.sh","scripts":{"test":"./bin/bats --tap test","release":"release-it"},"bin":{"gabr":"./gabr.sh","gabr.linux":"./gabr.linux.sh"},"repository":{"type":"git","url":"git+https://github.com/nicobrinkkemper/gabr.sh.git"},"keywords":["Bash","functional","function","file","gabr","commandline","tool","terminal"],"author":{"name":"Nico Brinkkemper"},"license":"MIT","bugs":{"url":"https://github.com/nicobrinkkemper/gabr.sh/issues"},"homepage":"https://github.com/nicobrinkkemper/gabr.sh#readme","devDependencies":{"release-it":"^12.3.0"},"dependencies":{},"gitHead":"579b67f8004ea74db5b621c57689bf400b2bbf72","_id":"gabr.sh@2.0.10","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"nicobb","email":"nico@brinkkemper.nl"},"dist":{"integrity":"sha512-S531cNDHSzIZe2N6z/X0JihC4GKuzu86LOYmIpQMJLeZ9ClmRr9THKDWRuKr0iQUAbRsI8kivU30PI8nllQ1FA==","shasum":"e20d7f99d7310bdd112a0c754c2c26dc96def633","tarball":"https://registry.npmjs.org/gabr.sh/-/gabr.sh-2.0.10.tgz","fileCount":47,"unpackedSize":147604,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdELzuCRA9TVsSAnZWagAArXEP/0NRdYa4fqVVfYzkA5Xc\nCKoM+MlEmuGE07pEhdqErJJ3Ckyj6tRwZf+sWB4PrPdpQIoR+IusjetGPfVF\nw782g5W60ujBoH6JthqDLT4zcs/t9d8Xnjb7iQXA/DKmJcJTgyac6s6tJY1I\nf1fdLsE6SBwm4FRgwBSw9p2sUVoEl4GbvXn4M1kGB5D/74DN+qHJhspdSUZ0\n4LzpmSMmxiJwti6qNZm6hxLRSMTfWpfq7wljMlvgrXOVKoGEdsuE59+43cHV\nnxM1W3gAth/pG+yVNB/lR33zwifI1Zw0aS8Lx/65cydLREC6rWBsYesC58ui\nJn2WgZu0s70BqfyDTLaEzjR0GMd8OmRxFBUdWAf0RbCqlxVUt6sJwQ/3e6lc\nSRfFqMgGUkKUXS+YPbkxSzNOc/XQnB2VMjlZy/x8GjKSfCrhhA5fFTnXVBMt\nOpSNl36Rfi7/rS9ypT5kU/YHBD9c56HO7e4VCyU8Nxnv59M0BMbU3ePpsJzW\nhaQlpNOlx8+koSIQ1jxlHeQUpGM7ir+OLjpEIGwuB3ho/Xj6Bm9ZplEKRWDt\n5duA/P/4u5HQNkejqOuDfYmb44C5SSzO6iTe3aozY3y/UT/WrCzrOLrHl0io\noB59Zf5mrcB0hFZMWJLYMrBKEs1WPgzQndt4G9DrimI2DWoe84qpa9j3Eeuw\nmVPb\r\n=jSYc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG/C5W08dfD2vXJwa8PN57gVUq7dF9nTYZZ4nxmbE/a5AiEAl/DjbhAx+sArONqRyUGvK4QCYj7tLAfedmIlXffXg6A="}]},"maintainers":[{"name":"nicobb","email":"nico@brinkkemper.nl"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gabr.sh_2.0.10_1561378029909_0.08664739159666568"},"_hasShrinkwrap":false}},"time":{"created":"2019-06-06T20:26:40.746Z","1.1.0":"2019-06-06T20:26:40.887Z","modified":"2022-05-03T02:47:37.463Z","1.1.1":"2019-06-06T20:39:39.481Z","1.2.0":"2019-06-07T13:57:31.204Z","2.0.0":"2019-06-11T23:04:45.137Z","2.0.1":"2019-06-13T00:40:33.508Z","2.0.2":"2019-06-14T00:09:34.713Z","2.0.3":"2019-06-14T13:46:34.879Z","2.0.4":"2019-06-14T20:21:03.351Z","2.0.5":"2019-06-15T03:57:26.706Z","2.0.6":"2019-06-15T04:00:19.067Z","2.0.7":"2019-06-17T02:41:14.501Z","2.0.8":"2019-06-17T19:24:20.846Z","2.0.9":"2019-06-17T19:29:30.089Z","1.0.10":"2019-06-24T12:06:45.769Z","2.0.10":"2019-06-24T12:07:10.035Z"},"maintainers":[{"name":"nicobb","email":"nico@brinkkemper.nl"}],"description":"Make Bash functions accessible with gabr.sh","homepage":"https://github.com/nicobrinkkemper/gabr.sh#readme","keywords":["Bash","functional","function","file","gabr","commandline","tool","terminal"],"repository":{"type":"git","url":"git+https://github.com/nicobrinkkemper/gabr.sh.git"},"author":{"name":"Nico Brinkkemper"},"bugs":{"url":"https://github.com/nicobrinkkemper/gabr.sh/issues"},"license":"MIT","readme":"# Gabr.sh\n[![npm package](https://img.shields.io/npm/v/gabr.svg)](https://www.npmjs.com/package/gabr)\n[![Continuous integration status for Linux and macOS](https://travis-ci.org/nicobrinkkemper/gabr.sh.svg?branch=master&label=travis%20build)](https://travis-ci.org/nicobrinkkemper/gabr.sh)\n## Installation\n### Try out as portable file\n```shell\n$ wget https://raw.githubusercontent.com/nicobrinkkemper/gabr.sh/master/gabr.sh\n$ source ./gabr.sh\n```\n\n### Install with git\n```shell\n$ git clone https://github.com/nicobrinkkemper/gabr.sh.git gabr\n$ cd gabr\n$ npm link\n```\n\n### Install with npm\n```shell\n$ npm install --save-dev gabr\n$ npm link gabr\n```\n> If you want to run `gabr` as a local function, try `. gabr`\n\n## What is gabr.sh\nGabr is a Bash function designed to call other Bash functions.\nGabr takes arguments and will try to turn that in to a function call.\nGabr takes the path of least resistance towards a function call.\nLet's illustrate that with a flowchart.\n\n![Alt text](./Gabr.sh.svg)\n\nWhen a argument is neither a function, file or directory a warning will show and the process is stopped. When the last argument is a directory and not a file or function name, a warning will show and the process is stopped. The exception to the above rule is when a directory contains a `usage` file. Finally, the arguments could be mutated during a file source.\n\nLet's illustrate further with a code example. \n```shell\n$ echo \"\\\nfunction hello() {\n  printf '%s\\n' 'Usage: gabr hello world' >&2\n}\nfunction world() {\n  printf '%s\\n' 'Hello World.' >&2\n}\n\" > ./hello.sh\n$ gabr hello\nUsage: gabr hello world\n$ gabr hello world\nHello World.\n```\n> By naming the file and the function hello,\n> a tiny API emerged to call the function.\n\nA different aproach would be:\n```shell\n$ echo \"\\\nif [ \\$# -eq 0 ]; then\n    set -- usage\nfi\nfunction usage() {\n  printf '%s' 'Usage: gabr hello world'\n}\nfunction world() {\n  printf '%s\\n' 'Hello World.' >&2\n}\n\" > ./hello.sh\n$ gabr hello\nUsage: gabr hello world\n$ gabr hello world\nHello World.\n```\n> See [functions](#Functions) for a different variation of this\n\n## Why use gabr.sh?\nConsider the following commands to delete a tag with git:\n```shell\ngit tag -d 1.0.1\ngit push origin :refs/tags/1.0.1\n```\nI'll be honest to myself and say I won't remember this next time.\nBesides I have a lot of tags to delete.\nI can just write a quick function.\n```bash\nset -eu\nfunction deleteTag() {\n    git tag -d \\$1\n    git push origin :refs/tags/\\$1\n}\n```\n> Let's say it's saved in `./git.sh`\n\nTo run this like `gabr` would, one could simply write:\n```shell\n$ (. git.sh; deleteTag 1.0.1)\n```\nBut doing it like this is hard to communicate and prone to human error. With `gabr` a more direct API emerges to do these kind of things:\n```\n$ gabr git deleteTag 1.0.1\n```\n\n## Variables\n### Local variables\nGabr defines the following local variables.\n\n| variable     \t| type  \t| description                              \t| default                                \t| Note                                    \t|\n|--------------\t|-------\t|------------------------------------------\t|----------------------------------------\t|-----------------------------------------\t|\n| default      \t|       \t| Name of fallback namespace              \t| usage                                  \t| May be set by `GABR_DEFAULT`            \t|\n| usage        \t|       \t| Usage string                            \t| \"Usage: gabr [file] function...\"         \t|                                          \t|\n| $default     \t|       \t| String printed by fallback function      \t| $usage                                   \t| See [Functions](#Functions)              \t|\n| fn           \t|       \t| The called function                      \t|                                     \t    |                                     \t    |\n| args         \t| -a    \t| The left-over arguments                   | ()                                     \t| Available as ${@} in target files/functions|\n| prevArgs      | -a    \t| The successful arguments                  | ()                                     \t|                                           |\n| file        \t|       \t| The sourced file                       \t|                                         \t| Will be unset after file is sourced   \t|\n| dir          \t|       \t| The relative directory of the file     \t| .                                      \t| Wil be cd'd to before calling the function|\n| ext          \t|       \t| Extension to use `source`                 | .sh                                       | `exec` is used for files without this extension. |\n| FUNCNEST     \t|       \t| See manual ([reference](https://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html)) | 50 | Prohibits overly recursive function calls\n\n### Global variables\n### GABR_STRICT_MODE (default:on)\nA global variable called `GABR_STRICT_MODE` may be used to toggle the following snippet:\n```bash\nset -eEuo pipefail\nlocal IFS=$'\\n\\t'\ntrap 'return $?' ERR SIGINT\n```\nThis snippet will run once inside the subshell where the function is called and the file is sourced.\nLet's go over the three lines:\n\n1)\n    `set` allows you to change the values of shell options and set the positional parameters, or to display the names and values of shell variables. ([reference](https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html))\n    - **-x** Enter debug mode\n    - **-e** Exit immediately on errors\n    - **-E** Inherit traps\n    - **-u** Error on unset variables\n    - **-o pipefail** the return value is that of the last error\n    \n1)  `IFS` is a string treated as a list of characters that is used for field splitting.\n    By default, this is set to \\<space> \\<tab> \\<newline>. \\<space> causes issues when entering \n    arguments that contain spaces, such as sentences. This is why `IFS` is set to\n    \\<tab> \\<newline> in strict-mode. ([reference](https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/V3_chap02.html#tag_18_05_03))\n    \n3)\n    If `return` is executed by a `trap ERR` handler, the last command used to determine the non-zero status is the last command executed before the trap handler. `trap 'return $?' ERR` will ensure the conditions obeyed by the errexit (-e) option for older Bash versions. Furthermore, `SIGINT` will be handled the same way, which allows a user to interrupt (ctrl+C) any long running script. ([reference](https://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Builtins.html))\n\nTo opt-out of strict-mode:\n```shell\n$ export GABR_STRICT_MODE=off\n```\n\n### GABR_DEBUG_MODE\nSetting this variable to a value will turn on debug mode for files and functions.\nThe `gabr` function will do `set -x` before and `set +x` after every\nfile source and function call.\n```shell\n$ export GABR_DEBUG_MODE=true\n```\nThis variable is useful, because it omits `gabr` debug info from polluting a users code.\n\n### GABR_ROOT / root\nIf `GABR_ROOT` is set to a value the `gabr` function will change directory\nto this location on every invocation.\n```shell\n$ export GABR_ROOT=$(git rev-parse --show-toplevel)\n```\n> This will make files at the root of a git repository accessible to the `gabr` function\n\nThis variable is powerful, it will make arguments put in more likely to result\nin the same output. Keep in mind that the `gabr` function will lose it's flexibility,\nit will always run from a fixed location.\n\n### GABR_DEFAULT\nA global variable called `GABR_DEFAULT` may be used to influence the default namespace. \nBy default this namespace is `usage`. The default namespace is consulted when no other options are found. \nIf neither a default function nor a default file is found, a default function will be generated. (see [functions](#Functions))\n\n```shell\n$ export GABR_DEFAULT=index\n```\n> This will make `index.sh` behave similar to index-files in other programming languages\n\nThis variable is useful, but the default value `usage` is probably the way to go. \n\n### GABR_EXT\n`GABR_EXT` may be used to alter the value of `ext`. Files with a `.sh` extension are\nsourced, files without are ran with `exec`\n\n```shell\n$ export GABR_EXT=.bash\n```\n\nWith the right shebang, any programming language can be called. However, keep in mind\nthat `gabr` also looks for files without a extension. These files will always run with\n`exec`. For example, see `./example/javascript`\n```shell\n$ gabr example javascript hello\nArguments received: 3\n0 -> .../node/v11.7.0/bin/node\n1 -> .../gabr/example/javascript\n2 -> hello\n```\n\n## Functions\n### function usage ()\nBy default `usage` is a important namespace for the `gabr` function. `usage` behaves\nlike a exit condition. The argument will always result in a function call, and thus\nexit the interal loop. The following snippet shows the last-resort function that will be generated when a `usage` function or file is not available.\n\n```bash\n# ...on invocation\nlocal usage=\"gabr [directory | file] function [arguments] -- A function to call other functions.\"\n# ...later, if all else fails\nfunction usage() {\n    echo $usage >&2\n}\n```\n\nThe `usage` variable may be altered during file source.\nBelow snippet will force `usage` when the last argument was a file name but not a function name.\n\n```bash\nif [ $# -eq 0 ]; then\n    usage='help-info-for-this-file'\n    set -- usage\nfi\n```\n\nThis can be useful for filenames that may not contain a function with that name.\nFor example see `./example/git.sh`. It contains some functions I used for maintenance\non this repo. A function called `git` would be disastrous here, and anywhere else for\nthat matter. \n\n### function $default ()\nThe namespace for `usage` may be altered with `GABR_DEFAULT` or simply `default`.\nA last-resort function and variable will be made for this name instead.\nThis is done through variable indirection. ([reference](https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html))\nTo generate a function with a dynamic name a small eval trick is used. For this reason\nthe `default` variable may not contain special-characters.\n\nIn most cases, the following snippet would suffice for files that don't contain a function\nwith the same name:\n```bash\nif [ $# -eq 0 ]; then\n    set -- help\nfi\nhelp(){\n    printf \"help-info-for-this-file\"\n}\n```\nBut you can take it further by changing the `default` variable.\n```bash\nif [ $# -eq 0 ]; then\n    default=help\n    help=\"help-info-for-this-file\"\n    set -- $default\nfi\n```\n> This will print `$help` inside a generated function\n\n\n## Flags\n\nThe internal loop wil stop at any argument that starts with a dash (-).\n","readmeFilename":"README.md"}