{"_id":"@nofrills/tasks","_rev":"218-a00b75b1ea57a479d826ec9cb6dd0619","name":"@nofrills/tasks","dist-tags":{"latest":"11.1.0","next":"11.1.1-next.0","canary":"11.0.0-canary.2"},"versions":{"2.0.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"2.0.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json"],"clean":["rimraf bin"]},"gitHead":"1b18e8dee2738b8e8a892dca55022d7a41d7fb85","_id":"@nofrills/tasks@2.0.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-lqOoFg4X63v1qnc0F+PZI7QQXG1PF/b7XBbZ1P/4OuNKbvAcELn79Ea76BydFP5J7uJbimLgyCf5B8orvxlicA==","shasum":"0278382f21e7fd13cfc7741bbfaad3e0e6aabdaf","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-2.0.0.tgz","fileCount":25,"unpackedSize":21865,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJblpicCRA9TVsSAnZWagAADiMQAIG/QzhqHpXXlnWCHePa\nCNlemKIIFlCKMG1ik4elmux8rWl51uxyxIBafhDeaIKKDKX7PaSnU2wohS//\nSDxzdrSQUnkF+OE5o3ZikUl5vpBY9BqqnLAb1XHcqZePdKybZ/7clhcMEm8I\nSkGbglmGIBrCh9/bEVd//HzPc+ZGQ3hL2DwLtD1apaQYbCUBxMSWZNnAqy2O\nAiAOmrGrfwfLhet7zld1BTn6+4hU4Jwc7TdK+dquqkCSmgvqjvW4rvQrgAiQ\nkEdxFZFWzY2cj4vs/vJGVt2Xzt6T8vHG9d3RtLJwJ96tOAPOm6v2FMs1SSIq\nHGNbgmEnJe6fe+7iFD7tvCiD6vl30mj6ePYvwDocbMy4LRZ6mdXNqVWluN83\nfR4NDmwQhWXhMM9E+9RaX8ZxARLqhAdE4892kJY0EjBBCzr9SrXCx3xNIaVp\norEh+1We907aC4MW4kOUbNp6B67IgufSa5G8g+1NEdKqKARBMEvLa098XsOv\nyOosAgYTRbKDsOvjqbGzTVVOv8Tb7w08CETldCHZC1KAMHbsdqsbW2DccBpC\nUHRtPDbyUb4RtqsJGUJlSpXLCBn+mzcvAppG7hVphGDaUIO8rG3n6jO2Int/\nQWNCmmlkmPF69am+oEm/Ju8QKAoNKT2pZGflA8hjzgHOo8jQi5RkHWisRiWl\nvnE5\r\n=Z7+3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPFfRxEemDRZr9rTiMCdVJqBKUxMme5GKVejiApnRptgIgMLs9kAJ2zabRVRi2e9n6aaNil7ZfQXW/Q/ZyEuTKG9U="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_2.0.0_1536596124157_0.7005441773511489"},"_hasShrinkwrap":false},"2.0.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"2.0.1","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"83a07ec558296933d6893b13c55ae5db5deca045","_id":"@nofrills/tasks@2.0.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-RSSckbo5kHANJ3zHOghYcprtXRlpllm3iNk5+b7xSPh+hzPK4tCP8BBF81vUAyWVsJEr5PyEMrSCUTvy+5QvJQ==","shasum":"30ba2b77dc907d6e3edcee1abcca437d1ba989da","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-2.0.1.tgz","fileCount":25,"unpackedSize":22042,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJblv/2CRA9TVsSAnZWagAAQN8P/ifDeyt+aCUpPb55WFvx\nr9EMP9Lhdm/b6ABKn4e4geMhC5ZhqABQcYE/WJ4R+XXMjG9CSa5Yqd2c0gM4\nxSBIkN/BrVmaApEnppyfz51i3wm3f46XTQ6Hszn7exjdT8ajAsWG7yjIr8FZ\ng8AqoDZ5Zjq6xO8pN2mJiN/+YGXfaq/wwCOooa/IuShHqYaru7+t4NqdGRGK\nnfdjTYMAsrqQdj3E4g5Cr2cS3+nTIXeMER4pgK6misfTs93KJZZzIjWPYfF3\n8M9ZZwuaVWbBJjE9hFErhYwU5IF1GB+oHl5cKazXQGX1p2V260q/m+JVjRgb\nCCKzM5F/Qxqc3rf7JV27ve4pBVjY3BkZynEju/GnlkJmPke3vl58kCpdAAoO\nPiGE0c5HL/y414KlttrE9IBpj8r4yXX0c0X6f6OIfGREuxdBlGobMqMhinY0\ndDmuyXsS/W955nBFV7VHNGhPj8BoOf/jPJsIFf57ao+Sxg6039aXMk5XtlsY\nZRo/6kjgEfwTcE9ZZlbznY791/dIZGs6fVglvB05ghhZeTdR3kO18iAe5Rxt\nLIyngqvaOV4QOCSOpq3/Fqfdv4XmWcvuLj8VHInTw6qUfc6b9J7dnNSZZFRh\n4b12nzni0lUSnbeg6bkpA7ciqYepR+h7QYe6CfuiFUfo4O8OdwBvY9+pcyOk\nuSAT\r\n=7VjG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFndsadSvXXhN/5BcarNlgHvLyV7HbcnXq+6uo2sBk5XAiEAt8DiGsMwDSLYXdxLKBU9sbT5SsNTJfPEe+FpQhccUm0="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_2.0.1_1536622581975_0.6855853821648106"},"_hasShrinkwrap":false},"2.1.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"2.1.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"6f1a5ca41dcf563d1a0bbc27b8916980711541b6","_id":"@nofrills/tasks@2.1.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-w40qRzIRUqnkOLFM19tYeJ4JMiZHAR+NYnv7l9Dyh2Aef2u3fVaUiyEkQj/PxNnZCPESnFnXabiMOI4rodlvzQ==","shasum":"8cc698000c0386688ddeb43b2e43df92a0eaebb0","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-2.1.0.tgz","fileCount":25,"unpackedSize":21843,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbl1wfCRA9TVsSAnZWagAA/2IP/1tUMjdhCZH08ij+OWIU\nhGmZzPFONhmkv0UlycW7pBK7cUeIw+6JFpHm9RNlK9dPIlvasMBuq3KEVvoI\nRss5kf2oRnP6D1dGlgqeer1tM9247tPrxMmyQR4A/769qQTHZzWY97WbV/aO\nbRgJU1aHLGY97tqv1/TzxMIg19QmiYlow4o2CBcOP8mEhMlRuE5VThY7PRaf\nJq6sMDFeSQjIfFLKPDXGdfWsGnhI2MaDpdzhs1H8q9x5YrF3C/rMkhtmc8MC\nlr33umFbFsdmwpcbDUcl8uommfn8xs7kY21pebJFOms4NRP98Q4Tp+kt760P\n9liqGxv+WHyXAsXaj09ceUjnerDCFUK7zPIAOLnMzyOcpFH8D2r/dckjUt3D\nzLC3oa7F6WwhEnKeH1yWrBRdoBr5AKSTZGO16BcV0+PTM9j5Xl0O24HTAb/c\nFWGRv4+Oot4HW5RdEcXfkawe9eRbycsy/w/yEj1RRUZg23x25NZkZZ1iHxOB\nTCmUAs/NE03gjxWkQ2p/czsfRFbJ8IsI4+bHv+sT4PZbthNTZWpOBTDXnzOe\nOSFIKk2kJSDcSUHFBqlkMUJBH7N1tcDccDGP21SK/cP32A9hEdPXtoadclyN\nHyR1RCmB46OWtklH0ztNlwWJNGBGh60XsUX0siyyxrWW4TCjJybWNCuJPEEl\n4geO\r\n=qM+u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCL2InVBwQuTEDOJ+QikyDY0F9/GBcrdGXuoMzpCfVJOAIgERknhNTaM3wQ0ZhejiRDWrnaGKvsTJgFMPS9Xd6wvr8="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_2.1.0_1536646174913_0.31397740640782557"},"_hasShrinkwrap":false},"2.2.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"2.2.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"35f31a55ab5b5f5725f57923806887a1e82da846","_id":"@nofrills/tasks@2.2.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-TeFj6K02OA5ruYxB5POXZa1o9GAtrcA++h4zaikdySMkYpCldoMT7h91vB8CKsdIW5LSQ/Pm2X5/0p5PXir1gQ==","shasum":"1432bf8fd662b3bf4f12f2223fbbd1004be762da","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-2.2.0.tgz","fileCount":25,"unpackedSize":22077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbl/pwCRA9TVsSAnZWagAA1TUQAIWD3FbXLYnch/bsjkW+\nXCOD56DgJXHfJCfbA/uMygepou51LSjMa8/YLPuN6e1ygfoCtLLrnFn+kE3w\n6a87TImvycrWKCOaZT1YYMMkJpKbZcSWS1sMDBMKa1Eo1XhkIDKZ7u+TVCL6\nDySwJ4HGGODRM4QB/xlXqe1ZKKoM14YOuP7cq9JNi+XnSw2T/vSHGTwndSXH\nTIGAdrhkkUe13E4tiW5uJGy2Vxcs486sv+V0qIB5C+hkuEmhdWQs7DOb3sgQ\n/hv8smyYDiqLqUdxA5SsIEt/tcUcZ/rFpb6WFw4mjU8UBLt/N0ch8f2kG0oS\n0cQKxwSjBIXBdg1oN5mgbY4xqxjeDV2iaW1O2iSbtjtG+AOSifI1CKGKG3my\nL3+2mBQeauFU9WNeWse5Ocokfk2R0kSXWr0CcJVuPoVWPG0CJpfpN7WYTH5b\n+myqkxsFqDJxJ1KcWxxDP/djLAPN3dOoZEYYGSYm6uPEX1HaUtOD+h2gyZ25\nkktgyS7LIcLn0zyB12NayHyIpJtRhvhJ/y7koWtmrqp/sk/S9RsO8My2h8Hf\n4ZzhBtj1u182ygh3f7goPkhgSOWaQ7PWSqVaUMCB6B683hR9umI7+anYRubq\nMyVl35HFIg0pbOfVgh/c3uA5vGnpyL7R4C8LqTqpvHXEALH75JYA11yy9F9w\n5RQu\r\n=vZO6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlG1ujpDTp2lts70c2fDOmlXmdgQtut9fl68XPNutKOgIhAI6wAhopJgcv19uH+tawQetBCSXJHGK1ibL4JRJhUHQA"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_2.2.0_1536686704282_0.43165557234323915"},"_hasShrinkwrap":false},"2.2.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"2.2.1","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"610509e16746096e73e59659527f210f77c947de","_id":"@nofrills/tasks@2.2.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-E4PpkGTXkEwCEg9gsk1hlG5BvVMYLNGDRAUXDeaX+xPOvZ93DXnDigEzbgd4fH131vPEHjAkSqz9Lh43PE6Nlg==","shasum":"a59ca4baaa7ded2ce41978a1dfec4fb1ceea67f0","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-2.2.1.tgz","fileCount":25,"unpackedSize":21731,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmAS7CRA9TVsSAnZWagAAqaQQAIDz6KBWCwHKARUUylNM\nDQu/WGsMkeSdnRCot3M78RA2TCxAhgKkjA1+PDZuEIdgNJC+Cn4xX/TInCuK\nXroNDBSBFob3tGTw04xMPqI4rTL1K5gJ5iB840eUc6B7JLoOiegCyUHnBsd2\nvqvmfOrX/ESCAGJ67kxcQZALWOLseV67FJEIP4S30dQpEqfey8O+5GvEUrKV\n1smEcxqi8l1dZks4uhvTgDq7Io0HrI3pkG5i4NV23mj4KOGiNzCNf/tl9gbI\nS9DRisbBG9nFs4qrzQoQ17zWraIy2BttOzJQkVRYBoYsX+uNcnkmC3l1zwXi\nKEf/x5+l0v8xQppNDTtBbnTFO7yd5EngifyKvrNC5A2x7mR5xv0xof9umWJv\nNLycJ5KXKYOlA6trR8DtgVNzW7WHcIOeAdRCZ57BI3Aaap4Bp+hRG2BN+ScM\nwzkyHQNh/sAe1nqlh2T2UD9jp9Izx7EFIx0xj7pHStbBO7E69oPdzygDBHY1\nB9oU+8yT7B7xXc1AIFRDDzgw4KXx9zysh/sFBXiT4BPII+7w5jZM5vHIDpyN\n2CTGKq62QY6ICZHANyUsX75kbeZfhP4vjJlyq7EDMD1dRfvI+z+wtB0oHKRj\n0PFF7yxYZNCEc0lNER9Vr0EWJCBHDcdYo6CiKZ6x9ofaQyIqK/kiE5mz3dry\n/9nK\r\n=3kHS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFMMly9rR5UA2oEzKGpZMzkEOYO4PwysghSUEeataLnQAiAuu2rx8wCbO/Nbl3eI/oQAmuO4M+PL1fmgs+ckd3hPQQ=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_2.2.1_1536689338498_0.7750980691701674"},"_hasShrinkwrap":false},"3.0.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"3.0.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"c5260751618d92b5d850c1954cb9998bdaf284fa","_id":"@nofrills/tasks@3.0.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-ly76ctOXclEWrU3gB+Ms3hNGHfNNgrRYh8VPAmq2Y8YLxa3B6QbpCqymzFlsSKWsbGa7GymQCZWXBqglUMGO3Q==","shasum":"ab7c10960d7769acfbabf45d2cfec9360cd733ae","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-3.0.0.tgz","fileCount":25,"unpackedSize":21954,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmAkRCRA9TVsSAnZWagAAqGcP/1brlNCip7q3NqyzRoMh\nwoRdF+1PauskARFyfsSJAP1GgxK21/ZZUyusa7X7vnxiWnmBDMmwXTxq1TjY\n/Tv01iwsCKGbq15TWwHliuNM+6k7XN1GLL9+/bel9xMomW7kBAUniY6W4PZ0\nc/+YnqSk/YMeRK4zqJulk61cMeU9HfAiE4QOzPjKUK9v7Wbq1o1Rff3sMeIs\nGXXzziyxStGTg6Z+vMsX4oSJG81TN4AQMPWC85tZ+NSGPcaA5BllSzgkfaPG\nLMjCNm7k5AdumyzwSGRMQJz9tTo0v4k6qwphDTDl6Eyt8L2Ueu9ebLYQRP+J\nUFpb12bqb3dwhJxronfwxZnYXhVgQhqJYLoOGPFy1NG0hXSlwLbsUhZ5L7b7\nHhFm8m54NJUrW8qyka75QOX0Jj+tQgqRPpskvMo4KlelBPUOf2eB9LdW33hb\nmbzZbWzRcE5RhlrVkV6GtKegKX1RlkM0K3/2HqSq4Hyc2FXeqCfan/zMpspG\nMfnXf78cS+MhLTVIw5zUut5BfuXvSTXBlatmXI7wFj1/6efMz2u8nhi6dPRS\nGDBv5MSWdtslW8HiBEZMXa3zX+DNQW5SkTPPRUg2adTK35OdWrJQMaarqb+V\nDS2TTuEh5AXLAknql8qX7kFmtE0nBB0057GZP6vVu6sJ+QgfdfhMs9pVWgkY\nTVpU\r\n=mph4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVbnCgjM5jcMNQkQgq0d8FpbKQ6HzF993VFoTT8k6qngIhAIzKjYCVxlubb6znQ8DdYQ5NYvSKUAS4790S4uAIkNQk"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_3.0.0_1536690449282_0.5307820789476949"},"_hasShrinkwrap":false},"3.0.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"3.0.1","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"b98e00d4ebea103aa711b020ef9dde12ff8d47f1","_id":"@nofrills/tasks@3.0.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-yONpUiywmgq6+9hA59lgc8MrINOcmwRcmFaIWTOdoU8b28Uo69GoZnG16FJ1FGF25dtQa44BTwnYTTQemq0vug==","shasum":"0edc9f276d24d9aa66709ac91ca23124d06574a9","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-3.0.1.tgz","fileCount":25,"unpackedSize":22555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmVdDCRA9TVsSAnZWagAAS1kQAIDEn7kI3K1rfclVeMia\nu2XrOy8IJ8GdadKiHX2G8RFmXbwGCgzl7/x34na4jAWZt5ZoAEMVplQNa24q\nhsU+tp0MpFk776GBf27ZqmuI/+aVWBZJ/XPBR0eLMLQDOI9xPbA+Tzd5QQb6\n9MSv4uR1MNOVuRHS/5cmgv0gU3g1vqLPxVzd+s1EqWixFl0KdUwd3gVHJdfq\n7XAOkoDuicn82n7Pb0cz+RadFHH3l3JtrX7vQrU5L/u0qPKlAypOTSx3czdq\noZCUCZvkgvLmGndiO+/M1c2Sb5QL87iUOjzNSVXedy0CYnfViYLuefW4X6Rk\n0UDBY22e2BYuOaMzHIWC1LocMApqNOBBID42fFbJyTv1lY79fovZ3JHPj54U\nDTIqVGETJFBK4WFqoHpy6fvSLzyv6FyE5ZYmt4zGNZ6SO6oONHhxKn3csbyz\nqkb6JFAI4/FCUjQGAB2yr2Z5Qjh04W7e7nf11bBWeBjgnhGSVqC2msEw1CUa\nF3rc4cX0SWZ3R1mC48f/7+6oCOnpGf1/M4dnyLwlW+wA5hgxoC53TKzttHEY\nBxssnoy0ptTBSnsKvem0HP8EQQIbnRITstmr+Fadoe6xTUpHaOi0hZyCwgzK\nG/dITzicrMMnWZz6jASsKIWWA7IljNkRUxugLMZY64NCb5d3v1hErXLe2E9T\ndMbL\r\n=6+7q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAKSe1m1qR22LvsvnREsNP8kSg2FjUoSfN1wpKmSNEE7AiAVrVdU5ey82Q5ATKBpq8hMje6zohf88ZBPp6DPO5+QNw=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_3.0.1_1536776002305_0.37141004041153525"},"_hasShrinkwrap":false},"3.0.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"3.0.2","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"f1ca15ed367c5ab61a27fe2f7a062f0af2c7f724","_id":"@nofrills/tasks@3.0.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-9JlObZlCQ4NpbOC+2xt2jYHQa689nfvbzZcatOubTjDN+ExeVS/H6q6cxgzog/9NnzuRCkIZw3nf0C3CIE36Lw==","shasum":"a00aa9bcc146d5dbddc7f002cb2f4742eea73883","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-3.0.2.tgz","fileCount":27,"unpackedSize":22770,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmVrKCRA9TVsSAnZWagAAsbYQAJuLV+cvMrfgZ9ybASZE\ndMA5Kpgo8EYuzbvjG8AMvVq31dTcoOIF+TYb+BMEuaD4s6OHh3MOw47wDuRG\nkLyOGA0OVlzQzU+tMAov8bUd6cMwuuylBjA+s2u0fit+QRovAkrBLGyt7iNU\nw2nOfv0abaO3pG0YfzxtATN+l2+//qCsujezG8PTYQ8jfzzgvFNFEjW+Ym0l\nxlt/sHr3Rdoqs/+bm5GfGuNz3k4GM/c7egF3Ssmqcw7olEFUe4zCer5p+nR5\nd4y1uDaLepgjWgavPq9jgPBcanfFGfJgS4BnpNA3aE1cKyNdtlHydqegBO4u\nwKFoYlOCbtpCstnca/srWbJKb7CMCXuj9xHAKGuCxRVH3DdMFGbMUhDxTgI2\nzbhHU9mkwfyUrnM3XWqJBc8C4k9QjLoTMGaV+UuSuqMH5D1v21fuBRRmYJps\nCt4ncKSbZ+9SELjALU1Z7PEAmg62H3ZeUVIPNE1eBoae20CX+4GNEqPyl0QC\nOsRNRXqu/DtcOQPXrE1gAg6sinz+Ti12M1RAozE+N0TBWWaXSw6CQXnqt9uf\n1YxileSpWckGmhVnRU8nsPhdqosQEHWlPakeE/lMmdyusGhfNt9b/LrowUjg\nP5xE4a7hrg8LLw7rrsW2X9vDg6StudXOPY40iLybXEK7iA8SpN/OjJzRvBOp\nXp/f\r\n=TTZu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQCkJzBEgdBP/y60C5oTSwj68D2t7V4y2ZIsjIFiHffqmAIfFcjjv3oOWb/VWY2k4d1MvrWsalhh/27eK7BcfxaZag=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_3.0.2_1536776905751_0.8347492815293822"},"_hasShrinkwrap":false},"3.0.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"3.0.3","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"7e3f55b7d314c7dccf51d3dfc1cb95b18d632ac6","_id":"@nofrills/tasks@3.0.3","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-H26DNbSPKxV7EU9gwqLBZc+v5Co/JCmG0IAgtOmWtsnkqxAQn7y1lo4Kcqdxa2qCg0OLdBp7+fdvT98QUTYwgA==","shasum":"e6ac09dbcb8734463b95c2e07774f97737b09c20","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-3.0.3.tgz","fileCount":27,"unpackedSize":22778,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmWkhCRA9TVsSAnZWagAA2vYP/38dHagSa+VV95Gw14we\nQc8z1SdJMMhQPVWc/6nXqEDDYiAtYBe3M2+imqOepcliqYxVvgi2Aa4iqDGC\ntNMxBZu5bxg0cHidgFWfd6C02N2x7XKrAC2IwUKeWIeQ04xS0dfBFcotWJL6\nGG/4HmIFdCXP3EuCxMSHnJ/t487gnEA60iiEDbpfdc2bo8wfr9d263EKuqx/\ngewvDPu/1BKbGF8hIrrOXpY6gtZ03Bk2Coekea4sUZYGZNwEHNAzyhXRuzR2\nm99oCxP1ZJM/nhDKTTMisbzkzgKKxlgNcT0mtP+GgxxlN4um5XAj5K6V2fAt\nSMhHpnzGuXS6Re0rsx4PKGkCAJSh+J/HF6L4tkTN0M2RotR6rjIBxnZsliyd\nsqGPq4FBHKHPWBg76pk/966eS4THL6nr/M7PwieW4K9CWThm4op8IhCy9R8x\ncrZm1QwpN4GE2sAUytCgkN+tses3thPqeEJSF2SL/vgc6VvRz6/PJCBlsEn9\nImqPRxV6hH/7e9tL+LMkpNbP9eDCEyrKLWjtgyn/Tj10AZrNz+IKgHAdvsg7\n0milG7+CM31MVKfSzhigGqhHuB39dhLJxmDJU1pyulfzO8d5YmOEWpa7lMW/\n3tvnx6C0miBUvC48/8XxmAFZWXpeZdKWs6+RYXuWRlxFgZ+4K4vwTBH4gBOI\njQgd\r\n=1MpS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEpS5YC0rE8Bfq2zzejGuIhpKQm8NPd+VjWPk1oqzy1pAiA6UQTIqwENtv4TeT3LMtV2TfIP7ugsvkNIOlbZkrbzDA=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_3.0.3_1536780576684_0.4835674529450902"},"_hasShrinkwrap":false},"3.0.4":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"3.0.4","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"04596358f3586908f962fd0b23424e48bf3c3175","_id":"@nofrills/tasks@3.0.4","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-JqQLkHM2tIDlc/8XSWVRTTRjs/SdkfhZIUDLnHqDgSUaqVQR6bqsEeYeMOZC0f6kBSZw+xxrNRKrt+MTvlvwnw==","shasum":"40dc45d82c9dc33e798cbc52fef3e023f661d825","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-3.0.4.tgz","fileCount":27,"unpackedSize":22816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmXLrCRA9TVsSAnZWagAAeiQP/jO1hd9kqSw2Uz0z6av1\ny8OfwgidfvZYoTuFXKyukQngq0Otai1Lb9JQxVKDmc/rvJY1lNS+d0U+wQFd\n4UPpskIptNNcnxpDawOrdVFf92ACtbbB/Urh9cfcgXcsu8TIoWKxnFWdqqGc\neuWBIT4zirIWUaFJsQgdrUsnTxZASY28Y+f5qt+L7TlJQX2CMA4eM0VnpXzt\njwx9USixHa6quGS+7aGNDJg0PMejBe24t7O9yxkF1oCUlwSrmPsZsWMNM25w\nR1o6sdmyBjgZkMBfJUFeuiEQNjMS6hKZ0EV7IA/lbZn+gFv7uVwJE27mbuRV\n6L2BG4CghO3BTBodVgEAcUlnybFizyyy5itEgyjxDQ3SR/DHtGO/sjzKJrcj\n9msH2anE4Hscm68fjjPsxuyLBR96ngDSlrTUE1OssOF7HsarnLbqw//W+Lnl\nJRf8rM5Ck5qXfyZ8wgOWkDASEi2qpIUpV33MXbnNqKjy0RQEw4FT+pNqGSeD\nuB5ad93qJABq4ISc1IqixsuyiitrVPvSTJk8a04Q2yUKLdE1MTVBFjOnxNCQ\nzG4OZVOE9cJKNFSzOehP3kEVhAznXbs/IGNluUQr6jFTi79SCVZk9Q69+yPy\nfzkfe6ht9hFieu33bKTbwzS/0kZRhRh/87fZ3b1Z1+o0yD/nVurJZAp3uArF\nIu5v\r\n=7jPd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID6jrF99NXOP5TAvtZWghLyZGt3pcgw6RxUPl0uOG8PpAiBH1f5IadeGS0QoQZpqoVQRFvXueufl2aApLXfhuvpYEQ=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_3.0.4_1536783082267_0.2414403937101799"},"_hasShrinkwrap":false},"3.1.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"3.1.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"66067d702728a639dfca97272a6b50fc72597d12","_id":"@nofrills/tasks@3.1.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-ND1xsZwY8tAwgiqEwIYm70Ls94/x9r7556uwJYnju9pwfRyia2E7NH52pVor2BxY1cRipRYUenK7RSZJwUTQxQ==","shasum":"d6214a2861645c80ec5f28383d5aad2003f065bc","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-3.1.0.tgz","fileCount":27,"unpackedSize":22866,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmZ2jCRA9TVsSAnZWagAA12IQAIixYjRUvvPNf2BlrOs+\npotBpyNvE+aax0/UqGGXHhWXXfkIW/BooMAG5aO11y6ZEIdK6XwfqJjGrQiW\nWg1+9n7v+yu/L/oHjFiA31BLO3QWfieB5MdlCcNDtYm//XSPIkvTUyg30qq/\nk16nCMGx+FWJy5Weg8UrHhl3/AGvbsZRjh9nY1P9Un1vcfKqhG10/dazy47s\nnQ4FXTWoxlY5Zh1lgcp9sGFSIlNzEVPFe57FTd9uYgIKYDnJbonBwV6Ce3z+\ncvGm/ROezAugK7oL4gQzv2SJxTu6xPbOX7VDP+2F6A2axTFcW79kikiNKLSJ\nd6x4+hijQFQyu/Y2QELuQthfT2ENjr9KGqYiFnIpF0SfmlHZMfZwcnPkuXKl\nlcmiYptnPIjkhrbGQe/ibnIOGiUy1RG/d0MUCgzlQkkTb88JBQP5IZz4uUSV\nAPNMtuCMMptKoqo5GcE0P46nQ2CF3L1L0YZ5iqicy2mZixNfKMw/cElXZk87\nh9dNqjzwcvgf4YZtIOGpGbl7tno6oUwe5+hryGLgewkFLYifxUnn/Xz9st0T\npUkGRHM+wP/bRv+B25LCXB4emqCboWkptcngKYpio2Dl4J9vzaGhhWqaeo23\nD+u0ebbdBqRLTop3vbWUdQc9gkjPfAjIRYXyvWcb/9YmiSKR7SDeyGHZRmKN\nERsE\r\n=OcIf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnOrE3V5Bb2056hlYFTx7O6TbJ8CTWy9/L0F3x74jlDQIgc7btedd+BsGzcuH3fZfmaxkivmNqOP2MUj9pKShm60k="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_3.1.0_1536794019041_0.9388628567269228"},"_hasShrinkwrap":false},"3.1.7":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"3.1.7","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"bf8518ad2720b27441bec58b0d2b351553d55dc8","_id":"@nofrills/tasks@3.1.7","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-Nd+NVnK40iwzPORrlEkIjDgcT01fLLMZAQeAJ4XYZf+qSz6P9FI4ztorC2quOclN2DY+uXf+pBNMhgB6U2d2Hg==","shasum":"6b21e2651bbb69854740ebb0797701d222cae96e","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-3.1.7.tgz","fileCount":27,"unpackedSize":22882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmdX8CRA9TVsSAnZWagAAUpUP/1C+wy6TbinMlcDTNpw5\nuS42f3NndQozIx1+i31VfD+QMRxKtn/tUx23RM2D712c5pyakGg9EyaOVXj/\nEUBOWxN8zhjwf+M1dqsvknQ7xNLiyQ+Qkhxy8TCjbtmz9jlI9AuSwL4wzy8N\n+7N2uV9X+ZV/7haOHmfyOaRDj0W2gx/6SDO751geMomiPfWdS4w3pSGUooHN\nXICvyV/5c6c3gdhWW7lRTYZlHgdicnChf1joaF+fKU5vjnCwVhLDoHWKDug7\nG/Rg/weTQgGjXY7numt1zuwaYgzL4blzZvjItoYS1qfRCsoaZDj3Rlx9QC0E\ngt0WyULCJULiVyFB2NcOHZWIzVrxtRKa6yI75s3QzbkernolSH01OlsZHDWQ\nL75SH6IybUCArfnDoSg/HdSqT5TWlNPt7GaNT+rXDQT6cNKFCv8Y/SwdvV5w\nnuKwfl82aCL27/CvkRB/bFiEYlQ/rF98lXQTYPgzIq07bewL/y+tc8wxy5lp\nAcgdlx+01LLSZNqq+SNLSeROQKlzr4xdmeUxZ3rITNsDsBZZFcM0avxeEB8t\nFPcIEPoyCY3pJ2GU0etgWwb5fG4sukIOWowst7CGL5ZMxziWFNzBidYz1La3\nQBQi1wl/wE5syHrwFVx4WlLA4to8nGrBNIVF1MHX3qxqbTbGTHaxhvc4GPhW\nToPJ\r\n=3JLn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFsQtn3BNnYbGzHlwH7qnRcKZk2WHLl9OIYsX/RvnCzGAiAHsksuF9xHjLqbTgBxlsMTQtwD79unKAAeqTD7l7wTvg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_3.1.7_1536808442728_0.2563549037754076"},"_hasShrinkwrap":false},"4.0.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"4.0.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"ed21e12eb311eb7632f7c3edb39272a32709c164","_id":"@nofrills/tasks@4.0.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-5zVfT9kJE0TkSDUZvpvvgIdfETAblqWEcUNKoaIsnUEUSlFLagE4CrmlXi+1OJb1kV0OUKVrdtQ+FHwbrEkhNw==","shasum":"18724df1f6d899e4d1061f187db23cb492fdecb0","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-4.0.0.tgz","fileCount":29,"unpackedSize":24440,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmzq1CRA9TVsSAnZWagAAOFsP/RFEiTIbxjYj1bIDycml\n0J4K3Wr3C6c8Khq1D2nZiQpBM+WB0p5IWrb991m2Xb2/2jUHmU6Cg87gz+GO\niZeBXi7c3qOyb94QTfg2N0ltd4fTcc9t5Hv9blKx/oxnUnrZLN0WgnsM8guf\nk6RuYU3W0H51I75EFod7Hy8CtWVwZuHTj05w8muyh/X0063mutxtz91SbpNP\nwpaVwcg9ODCTIQJMzgwZsdjK+VVTnD/kUTyYQB1E+D36X2hew3q8BwXJDwVR\nAQq8P0LPz7v2ZxQ0MAuWnvJlLXA4v7PY5G7KkUm909YfhDliUhu4iw4iN8ek\nkaZ8svtysf5lIXFacYcwKT95jBf9g92PRjLH8Q8Cj84W269niDDhvEDtwiGB\nbZ/l8Gwu4dM4jWDN0JZ24wU3nW0U3z/iMdpeyvjMtsNKjNOyIsSw/ygAPT2B\nugtBiFGwB2BxuevNMbaoBEia7WqbaWY80DYix1aCk8AeltlRdwuqdMecxkFE\nGu75JzG3hW4081M0f7Psp98mpSbzT180SQNghujpuspwNpId8mO99cQHaJ+p\nFJxf2UbaOmn7xQ9cW/m+dncbWNeE7Pn32URoEuZ4mFKk9vVj1t0Uvsu9xUdm\netp+Ln2t9vDHhQo1BEM+GSvgD5NQiIKOl8Sgy2Q0ebcWMe1t8GCOlQwWs7Eg\nrX7S\r\n=0mkP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyKvspwP3dsVekNWZ2kU7Rm2CywIi0ZTB2o9vyHXzyWQIhAJc/0ulVy/WmlGKfy3KBM3Awt+1E7NTiBSszg+pAx6nO"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_4.0.0_1536899764570_0.8290480317275464"},"_hasShrinkwrap":false},"4.0.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"4.0.1","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","yargs":"^12.0.2"},"devDependencies":{"@types/node":"*","@types/yargs":"^11.1.1","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"27b367b333e2c8cbbbac80f7bbcd87ce999d6399","_id":"@nofrills/tasks@4.0.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-UjfIv/ZsoAvMam9JqXjKVP3vx8X0+LItL2+WzCZnv4j+A41Ru4M9rrYQvTiMnbp7Fu3W2jo3D4O7CrytbJiP7A==","shasum":"7763d523d39c7e61b4292fd4f10c0750e177ec62","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-4.0.1.tgz","fileCount":29,"unpackedSize":24471,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnDevCRA9TVsSAnZWagAAzhYP/RgL/eJLX9j7q+jJJPT2\nswdmDIX54sBmBninuRGX1haYfRL2uoY9ble1lnIFPR5DbDiDyr7IYzRfNXe3\nCWSje/U3NxeETcjR2gaQFcFWkj2yFrQIWOv2UdHi/d88sDsyIvOnB3A/Vjwe\n5HdTFb24bKMkbG8DuL37Nt6IHUdo25E4isPISdiY83xxWiielRNk1dztVmNz\n5AR1Ogoz8S9hCQPOQuqzW3FboYeGON9XBX85goaqHhOvWjoLlPt6XzKaDkfL\nmri/KfI4/IpmRvq7hageFvDuj9h11mi60jZS2rTiMGA3N16p/BYUDmCBIdU/\nrzGjjP+lQmO5wrCFe5zX0KvNGz8BqENvejO62hCK/3Nsg4H0mxQXxXZ69Sx/\n1fBjGeCZC6x4pYLpLwyvte7IMOKPH7jEidTJHB9WY7ih2gGNtAuPtNRUoSv6\n9UrvibcZRRbuzzz7H4cR7QNBZJzR+kmH1ZkgOt1X+joEvnARPBqYTLki33md\nUMh3ShgN1npJBKGaf+TtpLtE08VlUkmtg/SmCysS0k19eIDHf07Is9zBAZ7T\nXxe4V+KISKy2msU9taw7r98TA4aeTk+HMF0WfLTOF71KQbr5QwOS9WBuI2XU\n9rjnRXTruXQQBOLSRQo5/XF5dCgrIWiw8uTjIHYZ/fg3vek5FHa+8LETnenb\nN7YP\r\n=C2lZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnxzhveytv8L+E3bgdOm44logn/nTg4r56JrVeFUZlYAIhAMN0MDDUlt84kcgjwUwSy9jkQdp79adKO+S0i24AGfjo"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_4.0.1_1536964526853_0.914398773501947"},"_hasShrinkwrap":false},"4.0.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"4.0.2","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","yargs":"^12.0.2"},"devDependencies":{"@types/node":"*","@types/yargs":"^11.1.1","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"e76efa33941403658876f7e03fb055bf5d60bbda","_id":"@nofrills/tasks@4.0.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-3iEJvr1PN41cRLGn4Ax2mYEFxQ3Hr6Sn2MicWAUfE8Rbjm1BT0jQbZEf4z/Zs8C2WDWeEJaFWSL4EJd05ZJQCw==","shasum":"b565885ad7e3470c0bb2ee7b45558f770045fc68","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-4.0.2.tgz","fileCount":29,"unpackedSize":24569,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnG7FCRA9TVsSAnZWagAA1lwQAJEbcWe6uqMLs/icyJ8d\ngeRtssSLY6uVo/Ur6zfJ82w5jF0Q6co/iNaOSwebPkFXmTRf4kOsz7AW00bG\n/8vZw5Nj7M8rmeyMXY1ZgIJSHCS6fnQwnwmfe3vrlB3a2PALkTS1b0W8y0Nc\n5DmUo7PL83alRlGtECVrc3IfiFoaDSTgTY4igs2DmivgemUKAX/SOJEYFrg0\nJHmkoDycvfGDI6tm6XIrKFKpHoHkf6zWVoqUb6IeowNSjwg3RnwuNRjJ+dhF\nuHnVWSdfUYLlhLoEhlA4esVVkgod529cnPVcoXM6T/HeN+iOixXjSAkFwRPU\nfusUQU8oxCtveDAGdXYtfOEE1d9OeoBZFFGw6AAfXrSYxVVm7tf79v935Uch\nIImB6/j57mXeFYfoD+lxot7i+f94rpSaeZArk/rYT+fVzaqdMwoT/FYjgsFY\n9KKQZ7Tm7irQ63JFg7B/ZQi+s/YoKh2HAXsLpol9MF/gsR5neiitr6N6ypDf\ncycwNE2pyzRVyjwXNcLNGBwH/8TgcqRbXp1rUYruuOv6JVyWkLp545w8UZhD\n59ey/3bzuWT9SvuiEnK3Lb1heljvQxQ+02HPB6SBItPVRFoBOmTn7PusiBrB\nYlBS4DrcXWstSTPE/jGS2fr+KATrcPGhwi5yVt+yEvMPa/7F6zpRVq6/kgXh\nVlyA\r\n=YrpS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjjPNVFGptsOVxYn1lSUKUznho/fYA7l18BxiZGl6f/AIgds1VP7y93FCK2FfwEgXquJfoCJUNGhgaDoJK66OHr0w="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_4.0.2_1536978628683_0.701446665695219"},"_hasShrinkwrap":false},"4.1.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"4.1.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","chalk":"^2.4.1","yargs":"^12.0.2"},"devDependencies":{"@types/node":"*","@types/yargs":"^11.1.1","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"c234fc67687bb71b04b49f99578dd44a87d9360f","_id":"@nofrills/tasks@4.1.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-Jhl/As7yT+zLhHZH366IudxihBY2AdUySadbpVM4f4qcTzuYP+wd4oVjdE2DgUAFHyIfqYkdQ8lPvpLooHkwNw==","shasum":"b2767c6960ca3a1608e7b2c25e1edd10c263abc0","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-4.1.0.tgz","fileCount":29,"unpackedSize":26238,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnKGkCRA9TVsSAnZWagAA5EEP/0mD0J1A6jBAQbpjttn7\nsaXBh/TttMGtcbsXWwZFvgay+ZKTRs7KsARKzwqEOgRcauNIV0FoqeFI27Yh\nftApHnX3W6QTGlwAxFECRgeUiVw04pkbZJWIPlHImnRMlrFJPO/Eb7whWF3Z\n6v8O+cVmz6ukiVlcg5YHOZ86udqbvZRukdmy9yYyJbzRr2BI1RpsNJ7spGpL\nKVi64e7hr++931rYMZRsGzTsxkcjeKo0SmaupVvOv3MQPmmuRV/UwsKPRVRX\n5wiDDr+zTfqaBW7zyC4M2l6WKV+To2A++oh8IRif79VsjOBy5O26efuSMpkV\nwxEHL7b1XVvlNdkzh7nctJbdVi2ZmfshxHEk979IK/108r2OjCK1HxQIZ2Ac\n5HnK2EbDDF0E6t2iKpXDpOGb0eGqBgdsh4ymxPosdqX20PpSIITS4xiJfudx\nD944cLkzlhFPrj059d6aru7qFBhqBySX+Y3Y62nKD4X0B0OALWauRCzTSmea\nJ77G36hlkapCjKsfrMVac1icIWdbGSLJ3oGsiwrDCtMa3Rb4RTSi7eiK3/3F\nqNhhwSDIIpfW+LzTmhOv9hh89zYQXqz+OWL6K5EY75ILrK9R11AV9RyV94c4\nUNq0l+90BiqWn/9OHMhCZ08woM3i1ZO2tofB8Wrg+a+HkDXr2Fp0Y8AQxpKT\n7Qap\r\n=VfDb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD250eAsu8sDN9fb8i0vutzDYxNN1xmzYZInOfyFWDyVAIhAML4TG3PbAXyXvvY3iz41LkyEWZ2MR6LJ311f5VVZUwF"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_4.1.0_1536991651538_0.14908698033310963"},"_hasShrinkwrap":false},"4.1.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"4.1.1","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","chalk":"^2.4.1","yargs":"^12.0.2"},"devDependencies":{"@types/node":"*","@types/yargs":"^11.1.1","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"5bf2b93deb7390da505fa71b9ee23e4b52019a51","_id":"@nofrills/tasks@4.1.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-y+2D95WAbFb87sCEdQnAzxi4nOU96yfE2jqBxB5zR6Lw18ZmXd5pPpbn6KAIkJvIw7b7Polfi9tv4qqOm9n6gw==","shasum":"b342ab4f99a09e21cc1f27f8a1756f023c3ad506","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-4.1.1.tgz","fileCount":29,"unpackedSize":26301,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnKfFCRA9TVsSAnZWagAAcJUP/jmoYgerRl9cQoxT4O+3\nPtKZrXUa7Ws3cmMMAFNnw60u9ekuoz6oPNxFBAWjJl9daKIZMowB8eWR9Yuw\nmL7GVUknIp8j8V0wq+iFL2KYGa7um1a5Fhlm3w1VctyUcX7H8VEQPBEDglLU\nZl2YuMhk6/ZbLeFbbfr+IV/OmXVAwDiuONlWfVBUinMceVriyaoyiV/HOGOH\neNrnE+tADr2uE4txcA+FTUH7mDvO3MQwDE6gLLd8PmVsiiRph8sz4IoVBd5R\nQqrm9hzgQ8cTz/BdkOxv4eb2irK705NVym/irnBABpdekwQLS2F6nlPEib2n\ncBEub9lwEkCPHXcwdaQhfqOUl6BXS1Y/Rc6q+8r/GCDs2jQ5h0gfuyQCjcE8\npNnbQgIL/q8Nfm2tby3DJ0/mH34pHclHK3Bu+QRsIQLJI+RiCvGHaTaoUybs\nKtBoccczSZ0x/ga8m41IPhn/9o2i7qRELUnbQIWzbtYsXTwiiH8N/DAaOSYk\n0rN8edvIp6l5nFHtwxf8CghHh7JkMf1j7A9xHkWwwkurmU5hBDAcMTkctrtv\nu67iNeNNUJkNBs06LcBsdyWs1nieArHx6ElLyldUMCBF2F8Cd/0czeYwy+2+\n9qXBT+nILCHFdZomLYRARXjFE5JqY0yVu9A7RcSv4zUsCNQLwMY8P9ktfWwF\nyyxM\r\n=0W0A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHJqDXwgi7ejBdFtZxB8nn1HnTgqz5NTf4fR/cvPnxE7AiBMVsomSBhuW4D4LuQ5X0/JxAdTBolL3kmjC4Bc4JW8Bg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_4.1.1_1536993219738_0.7754192786150882"},"_hasShrinkwrap":false},"4.1.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"4.1.2","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","chalk":"^2.4.1","yargs":"^12.0.2"},"devDependencies":{"@types/node":"*","@types/yargs":"^11.1.1","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"035081aee01c8dbcb76ee2089626f8fc4e4b9adb","_id":"@nofrills/tasks@4.1.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-n9h72OmPcExCmcvyuo2HjICUBBj6PmHrsnWG7h+76VmsP/+Wen4TiAaxi91ZrRjwtdJb0qBGQ9kh6wXlxo/S/A==","shasum":"d868724f66312d7eaa4573356534070af12bd488","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-4.1.2.tgz","fileCount":29,"unpackedSize":26127,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnK+rCRA9TVsSAnZWagAAl7wP/j/0qTpvGPq+sKfyaTbB\nVUDuwTc3V3Esy9Kll1895rYM4iAJunifNKq8mJXj9LrGMHnL9PQpN3+kQIfX\nobljWmUPw3nUZzyEzP5o+UGXmF1r1G3TadQpv1ctMqO57RDnXsxNe6zwU1zS\nHIKgv6/FiNfyLq1DlRKVGrhhTk2ufGfFn+ndc79OcTmbkOhtq4LloDQTtK8B\n0KicqS8tY/qEsaDSsyZx+NcodOVIbq4rEOvfZ+zZ9lNqdqi7WYZBBmH9mq8K\nLsuooNu+WDGCOfxkm58+DGL19RDVM1xqQo90FBLLOmWhqXgnhLj9lIAt6vqU\nwvHP5Op3okyoazxfIVEBOP+b4jPgdleBe5OdmI5mt7/SRx/WewbJXd9rREBz\nUbCxFsiqvXC0qMrZR7ImF3793gNN+7A3f+uY4OIilzt+8vBUwQSzj97lgmwl\nYJ0eErp1Zsck1Smf/NwTf2zZ86JrAUdA7fCKVsOIvufVv+NxmPwOweSYQJ/M\nnz5Qku/YqUTacYaaGiycziEBvQL0PVypiwn4cEV/DdR+yiscJ8HuqGD1zhj0\nT2Qyr74aUkXEIiHu/mUpP4xV2NnZy2/gs6cc2rixO2H9scg/20tAhaEAcT+p\nq0+m0651t6R/+n/f73qb1iiSMaLApzPiIQfpcuv+XnkxRk6AncL9WdZFpALv\nhGhs\r\n=d/g3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMQJXS3r8Lc+ZYjvJhfhbnha1uoRR3ImgpuP0AlmQzRwIhALNlQeUb38l34AWNmGbUfxejL5jRL/bpwEr4ahiWS4Om"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_4.1.2_1536995243215_0.1800455239626808"},"_hasShrinkwrap":false},"4.1.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"4.1.3","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","chalk":"^2.4.1","yargs":"^12.0.2"},"devDependencies":{"@types/node":"*","@types/yargs":"^11.1.1","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"ea0e06b90e0a2ee9a2b5c612075a81aaba3ef978","_id":"@nofrills/tasks@4.1.3","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-Q3crNv6XvHoY6jiCWNiao9sIwgO/5yB++PMlj/VC9j5+4krD/neat7NP32mRrx5Yqz7Uzk9BUl4vhv0qap569g==","shasum":"a7b3b4b055c174f4e69e9732dd8c6b1ca1c9c155","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-4.1.3.tgz","fileCount":29,"unpackedSize":26152,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnLQ9CRA9TVsSAnZWagAAymIP/RsQrYhWESYKMjP5tbhE\ntDqrFC7U0WyCodaLtpCY3QyLdTzN1/TyYuVOCqFxVVulAuP4vIrPcAhVYrra\nlrUve8FFLaax9nqUEGjTS+G+ryOu7atVcgP+HsJvv/KAw3wdDMIv1dpcIRC6\neK6OUINLmZQ2qPUTzw5iuzCLE/tn+Xg3ZsoZdAFALTNioEI+nonpbTy2+qEa\nrt97Hy3YOwy952mrFO10ZqCzxJrk6bWd/X6/51XT0z1kpE+XhvaXytlHZcSM\nzTUJeAstijYcKoQz9DD+tbrzyOAcTMXouwfMsI9CGY5n5Q5GnHynnraRBQoT\nNDcyxPHF8xSxlO0YpUgwkowaFSwGqJ43wMT+YXXl16naiIC6Zte1uw92Hdvs\ny8mmo3nFr57PgbMDO3ctWEt0JIkC5K8WWxfett9JvS5k1SuGidYG7pfHoW54\nAgCIdlyQl4Xn2i0nzyG6Ut9f+Ru21GFBCkOMOvpiNL7Dm9lkS7KgfXVeicEg\nZs56wwxfQPkZQGj1x61hxprasbHpv+WSxpUPdctarKFiGT7Y7+VQaQjjsOLU\nhXTkX8kwKG3HX+3artMCjFKomk+urEEj2DIekKizHzdaBdO6gCFQhZZcAsWM\nvSutAB25fajxhbYGcq/VFYWvKttTD44X1Rc3qfEu/kIBSUHilxgJy8P/NcvQ\nj6K0\r\n=vPvy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzZ1L63+4FJeiYSifVhBKIeJwn1F6bFpnSJEogC58CoQIgC6ta6SYu2UkvVKMedNu4GWb+NFXZpTFEFPA5vQTeRbM="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_4.1.3_1536996412548_0.656755606164664"},"_hasShrinkwrap":false},"4.1.4":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"4.1.4","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","chalk":"^2.4.1","yargs":"^12.0.2"},"devDependencies":{"@types/node":"*","@types/yargs":"^11.1.1","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"9f61b17a66b44c1b1f3fdbfa760dda3f5b366928","_id":"@nofrills/tasks@4.1.4","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-cv9poOKUUQZPkFAktYnhVqW4iw0NkCVQXtoDcUwoASiCieuSjiKsAfrPPZ7acjepZr0BxJIwaAjp8a2h+8R+kw==","shasum":"15ff94d08e0a238f3cbf33166335658c0685e8c4","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-4.1.4.tgz","fileCount":29,"unpackedSize":26182,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnLbnCRA9TVsSAnZWagAAXGgP/jmr1fGRiVIYOa7cWhqY\n/BClPk3fZ9g+H/PB6h++t/XfAHrMlAhvUTNNIfm+3FTi60RsKj08O0Tq60JR\nfoNPu9UNF6EWb3KlLJ15WzimZI9r1qb0qDEH6sZAZk6l0rEY0502AlENMfH5\nhNn4tI0LGEpd1XImr3dENsaSFo7k+71lUtDYfmazLW5bVjBhyM01/ui+WgRc\ncZPQt5ub2NKApSvmLLxqgWecVmgtlLTqVEL2KWRxcwLjWTOJ8/15Cmzu1Afc\n3lwOJezq2soVmwMaAwNciMKEmlgTuFEd/yRX5ef+B8iEIfs9QACXCK4g4IGT\nCba9bSWekq5knPAYQYB1LgyOvtI7VuGMbKH843eF/M7kuuT6qP2dCkrtbs4b\nE58fod6aL1HACjCuGvwz+TdHJcZfPXt/tMH5YCKoBJk2QgneKl/f73WlaMRu\nhCWloDhoix4PjPkJkumCR2dgxRQKstYqjOCyoFHT2IDC4tDp1qwEUf/8vLSl\n6irpCNfLWNDLmjA0kX59eour8F0Wn7sZThIkSKzqYrcGgRX8ux6td/chOnpF\nD5qu+9CCO89XaUFvugti7geo1u7wUYOy7n0DKzmUfC0wfYg9edOZNTunX1io\n7XiYLdDT4wE03fv/IOLwo0vcfRCdo8VgoYUjzfsvOReM0SXTnmY2AHH8eKIJ\nrnsl\r\n=hpSU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEIMKE+DqZ6lPPDKIMmyDRmoOIOaKicojy7YPD2XeVTRAiBY3wJ8OicoYRGOvQSYm7bCvsTVlOPdjL7/B9oet02tLA=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_4.1.4_1536997094175_0.9350241426357235"},"_hasShrinkwrap":false},"4.1.5":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"4.1.5","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts run build","clean":"ts-node ./src/cli-tasks.ts run clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"05700aa6022d57ce61d1c884da757be62858c931","_id":"@nofrills/tasks@4.1.5","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-X+PuzwuiCUkrdVyuLgA86rrgviL18YDiH68t2domCYZHML9aedluAhsiGkrGS9ae22VX1YpNI+wxarC1YJRVVQ==","shasum":"a8052fa5d21dadeaf7d5d9640d00b95b789f6ce1","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-4.1.5.tgz","fileCount":3,"unpackedSize":3616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnewHCRA9TVsSAnZWagAAmQEP/2Y+UacPrF1u121lwkn3\nhq2PMMON8yJLlYI+QcO04dNudtQYSj/j/NylYdWKiCxwz/hT8yrHvylW0Yuv\nTBzW+pH25Dt3Yzoo+DmD//bG5LoR7d2MxeYIe2OZFCdg6uhulrxUXUUWSeJT\nl8upTWkcpPXI9yzy/XgT1Ig/iSuwZ7k8iNWfNmWo00RMIXaJOOA0TAcqQYNm\niiY1pUK9Wni86nHdbOVbNXGWkaYKFno4b/utdy4g+COWt5vKtt7caDn3yMrT\n4+rZYXCNQOWk+DOTKugbwBFnmgkpk6FebwSdfjXWaBFhrDUVUYVVIEddUyIO\nVlhp1QwomXk9tscC2VwkIe1+ujYyiYhxRj7M7tH1pDw4/oY6luoF2j47yJxx\nHaup0FE+1vv1BwBsooNNINY/OrKCvR/onyYa65vqXgIciukrW0yagvF/FNjS\nQpBIG423fFkdUXm+pVtfQBFmQWeIP5lcsWtvxodvz1Fp0Z7N8V5kdF8wyM51\nxN0cPQRAOMjSh8Mt+RjuQxYeXuW97xr+vEKe47rEWlfutBkLRTPnMczKybnU\n9b+QlodWVJEgduKFCfiSfbKifxgq7wXWG8IiBXQWIXc9IM0Dl8dcvjFfGqBk\n+ck9tQ1oxz8+wHs67R2eEF4M0OKdbhtqrq1JsE03nTBXjHbWt8eSgUp6++aK\noD+J\r\n=B4eB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBBATAOXUQmamf1xVdfSevR3Dg+SpmXzpnWLg40Ezmo/AiEA+8VF2pel1rIFwM3qH0AbewXXCFrjWyOY73SSI8cToSY="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_4.1.5_1537076231294_0.24852444052896505"},"_hasShrinkwrap":false},"4.1.6":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"4.1.6","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"992156baff455b1b13fe72b865745b40b9bed3ea","_id":"@nofrills/tasks@4.1.6","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-7bFoehx15r7arxUu0VKUDfSk/XWJcdR8gGnKKMt+5LoAyOUEnpmLvDXUsBjCcRvmKXrvGFNrRi3ygTRck8vSZQ==","shasum":"80fd9dfcb1274f59aa390a92a1593e85a119125d","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-4.1.6.tgz","fileCount":29,"unpackedSize":26303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnn4gCRA9TVsSAnZWagAAyeAP/iTksC4lCfJ9mm6bML2R\nQi1L67g7mS8tTC+8f+cQy9cQIut6M8t52YYyGeTpbdsp9oqjIf2M5m6x+O0V\nnvZ1kcWpeQSCDEbQ+ionUYp2SCynTAtc9l81337LF4zVicP0URKq5vdwaQqZ\nk4Lv6mCuTxhGyG0s5IbpmYQvFvMf3TzByoYwkEd8b+T1I/ECYu7G4lnDrfVD\njU4lrjRJThJm6t16K1j9Pdcn2/o6NE0FOfmqHuZ7zK9qa3i/YcaSsC8IVbsC\n3B5WkT+U/eOyHCaksde6B1plNzAF7ZGKB5GLX9AzakdfSCEWo4BlUfpJw2mA\npIe3S+ROAMlfLMSr25Kjfu2DcB/O+h72ChnguBCVqXZCnMxV3O0NCU4azMw4\npd6REiQ4Ca2cRBCIX5ILUcseXwr/2AR9z7QHUZxGUR26IdYrkFOeO6cbYN/V\nGJS3CjTGehluPY09w9atIppeHIFtTsumMfIPxMaf76iwOQg+i+mYf/DGaTbG\n6X99dJWcFB+R9MLiYQxu0VmQLmsTFxF2H0NpVbvPn+WNHoQV+W7N+KFEjFAW\nGqORyjnzWLbAwm3DZNXrzdiwQpkVNDa87Kx019dl8kO+2e6e1X7U99wrWJm4\nQ2ByoHf1km7l2Q/FveXcML8ul7pFdtmjlIkxE9M85PUC3dacqCkN+x/AmSgh\nQLna\r\n=WPTl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB4F/K+g4NxmrS2Fwm7k/5iQM57qKiVCKBrFMC3lx7VKAiEA3/5D44dzeBEKhN6iJcLPqrZ1b+oHY4dh1EIvjHgNi34="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_4.1.6_1537113631330_0.3814107503225672"},"_hasShrinkwrap":false},"4.1.7":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"4.1.7","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","tsc --project tsconfig.build.json","ts-node ./src/cli-shabang.ts"],"clean":["rimraf bin"]},"gitHead":"6c16bba283d6b93b7c9a096c3efc3b4df32fc7ad","_id":"@nofrills/tasks@4.1.7","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-EOVyUd+NNSKB0cN+OereGk5G7qn3w0glssGui0eiu/9es5IROvUC5rgv5ecXM7+GWr2v2hPPiKbHcN0U4KNzbw==","shasum":"2f6296c6855933f48bf973124feda65d8f3903c0","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-4.1.7.tgz","fileCount":29,"unpackedSize":26449,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnoeCCRA9TVsSAnZWagAAHY4P/3cc/1owhKt1q8RmTe8R\nFGTz8SPAq2nCb2FA+YiSFoiCTbu4ROUIGmvaqtCdo7FnCJw0TJ2R5/EDPmCi\n5TRF5NsMoVSKzJy4SzilfqN6+kfbulYDk0xGIQRTgvFej+krvCulRDm7MxBG\nF3F3JB63LMpuZaGiNxA2tBSWZyxW/fNeY8i7lNKT0kxxhbwiLyagwOUr0y1I\nLsm1CkxQT2ULUMiZdhIjEZwHw2kPOJq2H5znfg4cs8KRErbp/r35eZWEh/jK\nfUylS7D+6NrQjyD5aoaVYKHZeXTuU/pnhhFyrAyHq8JOpX3S/b+a+SL9Mk5z\nzitPAEKdP17d5RtvBinZTIhGoBas+uor8TY+HoPUeI/j9BrpMR34yRPFqRNi\nQYox7lb3Ao66LV6LMuik8to5ySGtxLjxvfiSnSzlu5HpSbhvnNXGC9RVgpVk\naU1i7d2vNdCT7BplvU6IbIZ/nrJAxQjIKtY83FnSkwCFU5PAW9bAtZkIOI/0\nO2e2qakmNjDpv4Cg0Wg8FOyfv5EoGV3gnqly7jVA+r+UbNxri/Ac/TS4Ixva\nqR0oV2K0Go3FauGB/iv/6JrgjLJLrm+2iCBboDjjrPMjb+PgUpivdqeXWZdL\nXKHFi9IIQ8eA7OquMNXBBlZqEY+/Y7MJa+xEMdWSYnhAIU+Y9Jl58M5A90Qv\nBtcI\r\n=TXdo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDcCKIQ/yE3da9ncWEOoWZ/nXjhR2rmR50roTdBRHSTLAiEA7IsFZG8/tsd05CLQXOP511cCEQw5Rd3M5Y17GMHPyAE="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_4.1.7_1537116033449_0.8427996282554815"},"_hasShrinkwrap":false},"4.1.8":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"4.1.8","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","[build:ts]","[shabang]"],"build:ts":["tsc --project tsconfig.build.json"],"clean":["rimraf bin"],"shabang":["ts-node ./src/cli-shabang.ts"]},"gitHead":"e51a2cf717866347d9d08230ce03c735c9ea7deb","_id":"@nofrills/tasks@4.1.8","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-PGoseHk1bwBXCie6DHtIzYB662ZXPw041QjSbJmtxCdK0ABnZDcCFqBVfXHLyceksrvmzSK3GB4ik1BlZpUxdA==","shasum":"c34793d0ac3cf9f4ab4340c1e73ec5a4b65c66e8","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-4.1.8.tgz","fileCount":29,"unpackedSize":26320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnpRDCRA9TVsSAnZWagAAaAUP/10Wh5az+9Jye3j8xoba\nNSywGLvQ3YCKeeomGBVqr5gfUveOEBkn4U2/72u/9sckVMIrCNvnUWBvJhdj\n9ksSHvlVFye6UJsP1zFYmfBSchv1XiicGjbLzFvT1PzRcDkYawvVJXYX4cNB\nX0jjSHgdAqcr48n/hG6VbesFdG98RYC9bZDmsAsBrWhnfVrwcxFelj+/y5nj\nS5Kzcnj2dj/xpq4ZhC5NRNWQHohXQnC4hVjEMKY0texVhExuQOwUVX5ko7Eo\nI435CBD/hs2Sdps2Gmm/DPpfaVBIyCtOsSnspAIqU6dYIpy/zOm+zbnilaCL\nUbyIjM+/V6JtJWzqtFiI033Ovdp9GoPsLqiqtgw/wwq3ZmSro3ignjW45Pt7\nBEBG0sf7z3TMGzo8w5rpGMlYXYolsFXrsVRYoGpR1wcdZSy7G4xVcitiyHQ4\nSJ+ZWRS9DsvUQVYKwg4GIXYlpUBshxO4morwEzH1+VX1HrbiuJg6DTbM3EC9\nobFdyUYNeeUfzkFCN2SMuoiBcQZ+01tKbOaNARtzbdCs/VveT6y+eLIamWXZ\n0dxXw8MtIv4AMZnTBydLKvltnlDuZC7biwbtADyqpnMW/P9wlClLT9cxSyRn\noSbnG7aREoxSlaUUsX7xDLLxWxxCG4BAs1pB29fDih/wZAfneRsb9650LYZn\nxDWu\r\n=O++4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBqNmYQ520oXDPxzuTK9fD/mWpAUG5+uwppTE9qqvgGtAiEAhBn4ZpME+LX8H6peJEf0ecfeRdTXtwxlFyMxiA8Urzk="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_4.1.8_1537119298487_0.8384378905247911"},"_hasShrinkwrap":false},"4.1.9":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"4.1.9","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","[build:ts]","[shabang]"],"build:ts":["tsc --project tsconfig.build.json"],"clean":["rimraf bin"],"shabang":["ts-node ./src/cli-shabang.ts"]},"gitHead":"4bda3baa80b576138e3c892979ea2a6d659127af","_id":"@nofrills/tasks@4.1.9","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-3h44kAul7uqLMAkmOQeOoIpHQo4g9dxbrqDU62tnSsETX8evsHQ6ZzI94+L3bTJsBA/179Rkuf3JrNwJQTGPkw==","shasum":"85e8caafd73e4dac94a286cff5c8980f80642268","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-4.1.9.tgz","fileCount":29,"unpackedSize":26314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbn90eCRA9TVsSAnZWagAAMUsP/RjdRVQloaO6TTxUyOj7\nbTutvieYNFb729VFglC9ab+6aKVdjnWM23MbhhFEbSi3cCleAUNdFAbs7uqp\nPr8k/0OnZag5J/ae5KfsarSuA4zCAHkoaw19qHzqH+LI1u0CcFFn98au/mDj\nZGcNUJIHh+FeCitFmeNN5W3tADoZZ9hblH8MVlN5NloynZ1k9otazGLDWB8g\n+L5UjqhzZ/aMoye7hwCfgjzRv2z6BHNtS6DCd1hr6+SpnK2vcI84bhNafH8u\nHlETn9htppL7MpniqzOzK9NXrvb9oTrbfeL06wR9fQYlQ5namno9Qe69J7RK\nel6Orc++3Bknx0l/S5/VMXN2rbn7u/ZTxT596qHm9jDhpyK4/tq5VyKFZ62D\nGJAblRMSAGRWcbvtT2N5K+OQrSDb7JMBTFhC5+jNGr67diUi5ztXJwJ881Fp\ndmXs+LJZOrYVVwwt9lwmKnDF1dOGUuuZr3CjzH9zFrjfVBW1ek4+njieQIB5\nofRixe3SZmjLqzBjUr+VntH5x/ZG9scMV7maZmkwNTi5I9xMN59gstPdXYn8\n8wuetG5Y6LKMvB3rR+VtmiIm3qRDb8PmJ3J5HvFHAR9WzzcXpe9G7trnJ5YR\np0pNCRf/zF0i8CAJqZt6tnTEBN2mNqdWN/EuANCmgHTaRUKmxK3HEcsC4mZL\nx2tL\r\n=LQ5d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB1rg5H/cenpHrBO/qVzJaD/BhlKGUHh5NagWsmbdIIcAiA/cqZK/KeGGseyykROX9MUlG2H9ZKw6Or0Of8V7AD70A=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_4.1.9_1537203485705_0.2903244759549759"},"_hasShrinkwrap":false},"5.0.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.0.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","[build:ts]","[shabang]"],"build:ts":["tsc --project tsconfig.build.json"],"clean":["rimraf bin"],"shabang":["ts-node ./src/cli-shabang.ts"]},"gitHead":"0bf89ffcdf40b11179cc7e5d8782ab6d3210cd17","_id":"@nofrills/tasks@5.0.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-HHeSsUalayJ5VrG+0dN5yN/CHEbwcoZrMx2TqOdXcPzOrMWiGgT9vQXvkf2gijeLKZKTg3fdrmfUZVyeJLHNsA==","shasum":"a6bc1869ebf088bee23fb849ff882ea25e76d879","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.0.0.tgz","fileCount":29,"unpackedSize":26251,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbowNPCRA9TVsSAnZWagAApvEP/R2g6GBxzSBDG6CXwYLW\n8oga8PcY0A+xFpkY5DwGnRt/nLm6Tix9cBGNqHUb59v90MiK3vtAihyFaWBx\n9atgokG7b/pufqyqI/IHobT0HdUlN2LDi/bPB14iF4eTYEmEQasfLnyRMMGB\nFiizwWtGoB1DtvyXPxrJzFXvIcoXFvvPNWE4ZF7rlI2laQ7LjTzqpS/aWcwP\nEVd80rE+De+bD4nu1chfkxl0RRU7qFsRH/bmDlVzAgTJYJ+E2kcav568C0+a\nW81KUVQJYNQBsgJv+iFU/AGE2hFMakY8Gbb+YzMMTHn4vAMoeKYHGNsmG1qN\nP9yqPFEzwSRgWXbu+2i8PSU8OIyc4k9wj4Z7QkKcgvPkWd+1Rst0uiGbWjkn\ncZ+03SsbMKxWaUWOE6cMkyqyVvTin4e23os9ly41UFsEv6xdgMH8kGFNYKKx\njFQB59rthHPTb/R7LNoX4jSx9oRmTbEmXHqHToRGfs79HD/j7iuB2gXjq6N3\nCgF9VI7ntTfzLD4QgcPXZ2Leqg06zkeX0qpsnkt9v18WKCJzWTPLEgIXf5FV\nah948SPLTV/M8scMb7lHUDnt9anSAzV0lD/ngcTrA+ui3tHORQ3i4mXN6MRl\nMOzx3VRdMSU8Hy/nM7YexIoVTVww5T/mlDpMetuagF1x60d7No3BQs+GxtH6\ne71U\r\n=b7dg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF7UnqoRiVzAXYuZrhmsBSqZntlLYATxkzpMpCbo5eV/AiEArOknuY9j3hnQhw7Ait1+tE/j2dQenWSmtapTEPPpKg8="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.0.0_1537409871281_0.3351288338699212"},"_hasShrinkwrap":false},"5.1.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.1.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","[build:ts]","[shabang]"],"build:ts":["tsc --project tsconfig.build.json"],"clean":["rimraf bin"],"shabang":["ts-node ./src/cli-shabang.ts"]},"gitHead":"9c2e5495308b8aa026da8725d51a5df6b0262c6a","_id":"@nofrills/tasks@5.1.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-N8rm5oydumpJ/zw5gf8JDf2tPMRnTOuf2WlgTYNv6rK6irypjNQzhYXWbf9luTImrJ5WJuBclvHy0tHp9r9zAQ==","shasum":"2abbd350a45b120095705c021e99ab8ddd12cc33","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.1.0.tgz","fileCount":29,"unpackedSize":26683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboxjDCRA9TVsSAnZWagAAJNgP/0RoM8hxLOpv8RATSJut\nIPrnPsa9Zo9UDNi5kTarFIrwGljbtYjWE9jyEHYmO1kGC7nlkJSUi/C1oYPt\nx5KnUco+4O6M6CC/YApUnoLFehFnl43MFTg+9VGTwmyQnbdVxsW8F3ZgvNjb\nF3jR3OQ1hvDjHyyiYTDrYJEUxkvTvjvTyb4ZsirbMVn/K8s11J6ZJYC9m1LZ\ni2/VaXXXMhmHZuzcA6NDpH/ou46R4XQSCuoHdO32J8fFXTe0MAs+T3qSrXDg\nD0Id8ec2N7VZ3E/1UsQmflwC48W3ACLnzXgMWbtH/9ALxrjJTLC4RftnPZi2\nQEoeMGeGrBLbpnQ0K8wXH4VMd36YORCX3sA7dF1ps/EYblHy0H4wiuTL3sPu\nxEpRiQrFsdZ8lhlYDLw1G0GEw1BM3JBY44MGPO4ODNz4vHoEU1YEiKg9PSzX\n06mzmJsknVCrTF/fkY7pQf5ymrtk1aS8aVtIm9/lIKm4LId39SaC9WT3pVHe\nbkhcCpoVi0wu1rB+hV6f0tSN2Kd0wp5ysp02oD0H8vUsBXCyiPugCz/eYXjG\nz8TTBcCE0csrHEr3FQijhQyR5VRKjFRnhaP85vrUlcnw1zI55j/jWBw7mXIP\nWvTZM7nz8pcSBhQZN/GRGgfagNlnJP4qG3+oVSid9nHF117KjO3yR1S+sAd3\nmz4s\r\n=n0Sq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB+e97qRjhvPFrAftlXVeejDT5NRd86QbKkn9nkqRinuAiB1WUwvlKA2zgosQGpPEy5RQiHkR0eRoDD32a5n0KRoRg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.1.0_1537415363106_0.5397550318982738"},"_hasShrinkwrap":false},"5.1.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.1.1","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.3.2","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","[build:ts]","[shabang]"],"build:ts":["tsc --project tsconfig.build.json"],"clean":["rimraf bin"],"shabang":["ts-node ./src/cli-shabang.ts"]},"gitHead":"013c04d1d83995d3362478b1b726250a2e05d19b","_id":"@nofrills/tasks@5.1.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-Qp+LXgu3Yc2gZv+jNCi8UvMQXPsiuDqcQrLAKIlOeQLaOOkbjEm3DQnYyG0Em3dlpdXQYyCGiCJpQMq2ASL18w==","shasum":"acb6c20aa593faea37ab70108be70c901bc6a42e","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.1.1.tgz","fileCount":29,"unpackedSize":26728,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpXPTCRA9TVsSAnZWagAAF04P/iZrgQgcf0dqlQVssaV9\nDYf7ag2L9EGGwQ13AktaSByAWp4QuVthvGMqiRUCicseCkHE7HQbvE+3J6GW\naoNswCQZXD4nlU7SLQZEFGv70VaJpW9PA1oyfskNqzIr3UzthikZkwc0Cw1u\nV7gzMTqEbxY62cWugN709Qj1NZnI/2Y4VfrmyjpLYxQTh5X5FMYlLQ9GIXeA\nduNBTcwqJnwGDU9Poi3Dh8jsaApiyIAe+6N93C4oG1cajQFbk5ZPJk8Lcd/6\n6DvkfjiqpnndbcYszWJBXPlpZa/h4OKipXAXpWb6e7t3I4eUFzhp6xxA6X3N\n2X2fKxkwNugNlRQiBaUJFFZuS9pcWo5twpy+lWMgpy5h+8LEqa2p/KylQ9xw\nDJBB/600X/XgFGbmMs+Uz8qqlwCeeBb6hZWrL9SNEkLBUeEo7XJDUYkqJ7Qs\nSDbf3CzQfzU4clUFBRzw/a9WeJoOG2teJ4QMvtJNxonAa9RsTwRDdzF+GE/M\nBAtUeoNig99aDvGZklP+P+qQjVzqioPciN7l5TEN728DaN966XRVtWRu3AiX\npwNvHBk0kg/PBYNkQSjMGKKkjdGl7TEHgmVQ1fvRq+6ie4vAEFjzeEBr4ZMu\nc/sT66GJ/x9n5UPzoChifmQjVdym7gTMJNjqaQKQome8p/y/bOoV2UVvuBGZ\nhO1w\r\n=xvVq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID9zMRz92TSmuLN4N8KLLd4G9VvbWnR82Z7i13JfOhf2AiAt31pujd2rC7vUIsSIP71i37m/iqTLaTGYSkeiNZwsbg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.1.1_1537569747094_0.21260475494953757"},"_hasShrinkwrap":false},"5.2.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.2.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","[build:ts]","[shabang]"],"build:ts":["tsc --project tsconfig.build.json"],"clean":["rimraf bin"],"shabang":["ts-node ./src/cli-shabang.ts"]},"gitHead":"a3c3e87aa85e3ba1f18a58e8c6fdb977172d42be","_id":"@nofrills/tasks@5.2.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-STKEc3JBw/0EWhXHLKqIpa3uU+mGq6o5yYSum28VBfUADpq+38qd6LtBljbZsI/YSyidt5l0l14JmUNIIlYZWg==","shasum":"e284ba93435f61cf4d16b6ac106e3edf0562dc8e","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.2.0.tgz","fileCount":29,"unpackedSize":26728,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpX1dCRA9TVsSAnZWagAAv/4P/28BohaMAfa8DkyrGQYz\noN3uImeE7vge2x6WnBIp1z8S7BPOCZNBDDFd3nKW9z1HQdve3me3erE03N8e\nIZMIz6/KZgLZoY3xN+TYN6ifi6c+i5oLPLhaeX6nY6GRRDGCCGtS53lQcia7\n7H4szKlPz29AV8U37zBBaz2aQGE9brMDqI5F+ag1NuBPHZjZOOJnmwO3M6sZ\n2jxkKbrWts2YqRgCE0PafSJK85JSBq3AKei3aA6v995HcrwD7Eu8dKcD/nXz\nXEcCJu3JIjOrZXfWWVag9eLDFu6eGbkk5u8MHBc/JVd9zCfTLbPtJgAHVIBy\np18CNsXzJbXLe3BF1pobRmIO+YkWiieMh0julBiPaWoeqMNW3ju47VvwSfvn\nNzU63XzLyxV+EAEhF2OiynEP27AJ74PnJCL+1nsP9+1fsal9zzmJiq9ecFHe\nFZ/OCpg9Oe6NIpA5qS3mGEpBtbr2pz1I2l5PDJg/SJe7O2RPfMIbHbswdW/4\nrCcyTMRHciA6SxNopdjIcYg48+hQ4PJJo2KOa4Vtae8KtU71xhsiPg0jksDr\ndpFk30OgbiqTldD6uKsBUuU566/TCLftpPkSi1co3OAHlKvBJ54Ldic5UxwG\ngPJixT4E5vM3kqIDL91oIBk6ZzHOji0fH20AlCuIO256g+OVtOE8hhTk2lJS\nNg/N\r\n=fJvF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMxE443Y8BQ49UViY8t7rMK3l+aRTY/Z5eFeyVj+vrmQIgWAWrQqVmCc8HDX0n7iruORGVAFE5BclGDqBTJWwUSto="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.2.0_1537572188917_0.2366946150252709"},"_hasShrinkwrap":false},"5.3.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.3.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/types":"^3.3.3","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","[build:ts]","[shabang]"],"build:ts":["tsc --project tsconfig.build.json"],"clean":["rimraf bin"],"shabang":["ts-node ./src/cli-shabang.ts"]},"gitHead":"4ed518c4427b7fe77bb0e25e43a8c5e03a536707","_id":"@nofrills/tasks@5.3.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-Ggkv7xFp+F9iEfq69AOxMa1aehwSqp02xoSfSSDS1XDk5+6XQcJl+yiFs26inseuX8YRmJamqvpxuTy5TA2qNw==","shasum":"d5c2c8a740e02eea011d6c27d59a328a43b84dcb","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.3.0.tgz","fileCount":29,"unpackedSize":26742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpYSJCRA9TVsSAnZWagAA6NEP/RwMc0xTH7KMiFQDpcg5\nnRCBP8iiIwiieC9qgbHNZ33vk/xKzybbU6cYPVpdvjA0DvE6RmPJhPgWcmGO\nBPb+AZB5FGiHWtww2Ww0gTA6YdSbOa2BsyS3Yqo4zS+lhLgcpdbnV5ebLQHZ\n9GqwSloIuulY+oUYkmeZeUg2sIRls34kqro0plHb8JHzNDxlG57mkUCbus+b\nG9vFQE6FC29x7Etja0iaEjrTKBTJtf8XLeelj+qGMSsD8FZC45Pomuflof9/\nxZNPy/76T7R69tlhKvmTU72IHj4TwKAHPIYN4a6EBtVS/HUjLn0ej1b+Ff7r\nw0i/dwhOFIy/Ww9XZDX1oFwC9cq4UWWBu6BO/FmylpqJs8fq7mHDUcoMoLEm\nx/3pPPZXEQH8QYCvAA00YhBNoy7VCEv617jUT1USWu6QW13S5q9mYhrNGSyt\nEvzbZuiYcHtqlkZtm3SJgIf7Qy3JZOFFMJqwYhe1zlIWhRogEwqGkhiBYY1F\nRnOfVN7TD8Rp0U+tWcPRW09AJcClveJ4E3IKsBNz5xN5Fj2PlHPaLIbbonj0\nBLuANRpd4wZGFnmOdIH0xWNJgxya8os57pF9xWsyAgokpN/GNm4SBxck3FjN\nFPfi6XtZkpikchCYwcod0sbZq/oAsG+uEJ/t5CcsRZO2SVYb7ZPJDH/cFkoT\njsVr\r\n=rbp9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBglHDHr7c3U3ZhmLd+soRZBNu5PO1dRZA0M9T7h++cQAiASu6weZwkh/g5aFSTsMA2GRWFBbR84rUPGFhATKRZmHA=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.3.0_1537574025079_0.3552480108844178"},"_hasShrinkwrap":false},"5.3.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.3.1","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/patterns":"^1.3.0","@nofrills/types":"^3.3.3","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","[build:ts]","[shabang]"],"build:ts":["tsc --project tsconfig.build.json"],"clean":["rimraf bin"],"shabang":["ts-node ./src/cli-shabang.ts"]},"gitHead":"fee0481ddcc9fd51268afdab04293c949d63d854","_id":"@nofrills/tasks@5.3.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-lNOAYDfnLpjSvGS80URIjikdw3XOPHuElQ2svET+OumA/fKGQVjBkKpZtc9oVBFrgB/ubMlMdD78rH1OPzXkbA==","shasum":"6fcbdaa56d71a21bda15a3a58ec3154b05910cff","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.3.1.tgz","fileCount":29,"unpackedSize":27103,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbplvyCRA9TVsSAnZWagAAx6EP/RVn8JQ+Sy3lgwOpykUl\n1yLMDA1uN6v66B9os/qrbsnoZMXnU/QDFAMHrlJfuUCzEIo/evb3p1ZBBk35\nFou3A3xM8iTPjQbuAbOxqzho57GbHZTtwp04v3CvwW1+LapgI13ustBkQKIl\nZ1A08sxFCVkeIdR9+Ozv3uH+WRgFjIJhCTPlmVdBOZy1TeFFViAs7CH5peqk\nbYdgs68KP5AODa8Mg800CICtfyS+PfhJgXh6PqNicKL3rwOokAW/aCcQHMdB\nAT1Ds65a61H/flXBS5V6HC8YM2CI1Xuam6Y6CI0BJRquJ38GhdyHcsSBGOEX\n+WIZRfdOuDe3/ZP7B+9AkU3nsJNd6oAQ8X4TnGTnxwAJ8M5Hg48pIwk3879O\nsFQQ4i78ptAa9FD7o9ZNB8AcoYemBtSQD5nPt7xoWsGYEDFheKrG1fFiwgAJ\nLoNcmVuopPILMtSYMdh8tTCWRtEXJ8sTaipF73lDmmT46/Hn1I7sVL9PlK6W\ny1y4sCQgE8FLC2ghA3QB1bHSgXrStN+kyq6MqAXaxmNd46qNTxdbaThwqVk+\nd+LlFGpVh3yjAlQK/GkoSzmpjEh/jEvuMJ9/nbMiVMI1OHJxsTW4E5lfQmEv\nbQ46jkUMnAsY5ycIH7Nx/jqBkRpvqeLkWqIR6DHVgX3Gcmjxs+iY6ZktU6Uz\n3pWC\r\n=ZotZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICm4rcn6j5MiRgQeVEYsa2L1eOQy0ImL8EWnFo/bFKl2AiBOv8kX4JUlo9YFVoIrxZ3m/OA94lEopj00VvMWrPkEOg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.3.1_1537629169518_0.5036767330429046"},"_hasShrinkwrap":false},"5.4.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.4.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.4.2","@nofrills/lincoln-debug":"^3.3.1","@nofrills/patterns":"^1.3.0","@nofrills/types":"^3.3.3","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","[build:ts]","[shabang]"],"build:ts":["tsc --project tsconfig.build.json"],"clean":["rimraf bin"],"shabang":["ts-node ./src/cli-shabang.ts"]},"gitHead":"92140f6a70f37b7fcafb9bc8ae1eadca43e7847f","_id":"@nofrills/tasks@5.4.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-ml+T9EoReg9WgiB7fqfS3chSbcfPwxQBmkxOxh7QWk+I2rN6SDAA7ld9DaCBtRUyOdcgKEady8NhY+1mUO5AUA==","shasum":"2e485e9e9a057c416ef004fdda4c213838a67e34","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.4.0.tgz","fileCount":29,"unpackedSize":28617,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpnFSCRA9TVsSAnZWagAA6OIP+wZ8vV0kmO5LHLjk5dlJ\nHXm5kGzMCgfJi7xpah/2vaqo2EhoFApE+hOkyPiNhvS8t38pvQNTiZBppN2I\nc/HrekkQlWPv9OtKHxb54dWnuW3QORnbQGNXXnrkD1DszpbclgKk2AAwi2mp\nUiwQRCRmXW+FUIRAByaH7XWYJ5yyeVPNDYmY2tV24pJ0gt62hAXnQ6EYY/V7\ndA8JNZht8hUoG96z1pNmO2Wgd1Xv3zDw+IT0//JaoPg0mAYgkrMVOhHtFTak\nvY5ZZo0mxlJvYU0RkJI4QqgGd2rUp/rKB4jtAGCwgiPgHnhs1hPIxS42t6Zd\ni3ABcn6YlDlWlLpIJ45p0n1IMndjUbZuQT7eLkfgcclmauyrib6SC9GZsQOJ\nGWBUK4Cect1+z4XmOa7kqv/iA+53zqxCIzKOK57VvW+RzEnMbNDURHwG2xGE\nHPbr6syJi8e6tAPuUdk3Mt72xJ/go64cVmwnAqgx7IbpiFRLz2TTKWKItfes\n61HxW/65cY2O6syTu8eBwzgevz+v09NewwDlBJpOycuvCDcrrxTPlrXoFgRw\nNuzwnhclsdWRIYrkO2avZ0ZYkMo/bDow41Z2zplRRVnDkAMK8NxUx0FTbpeH\nOvNjmM+nrNQzT4Jl4fPyVWsRGLDfuPjvqcNryyUG1T9aawagEYt7CJI5xO+t\n543+\r\n=bEwt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH1uiz2/oPPxbnZChqxL+TqnKWIYTmcS/f3vBNT5eEkNAiB9JjxzyOXsYa2cQKKRVLHX5+kd0xxwpI88UjsatSThBg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.4.0_1537634642005_0.2847308436927838"},"_hasShrinkwrap":false},"5.4.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.4.1","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","@nofrills/types":"^3.4.1","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","[build:ts]","[shabang]"],"build:ts":["tsc --project tsconfig.build.json"],"clean":["rimraf bin"],"shabang":["ts-node ./src/cli-shabang.ts"]},"gitHead":"85605953a192aeaefadad546607cebebf22bb58f","_id":"@nofrills/tasks@5.4.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-lIJcUIGyDZa1YwLeFzEt9/3Uz5BbqEeaSe+mSfJvaJWSnoDumY8ELcvO6EXc9svH8JwjVV9chq3m8h9j0m1Mug==","shasum":"966f5952e2098cf94f98bb427479d1bd60440c3b","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.4.1.tgz","fileCount":29,"unpackedSize":28617,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpnnfCRA9TVsSAnZWagAATX8QAJe3EJG7ltjqH5w8P9qG\ndk1Vb4Vgj/UzSnDmuJs4eMzoFZV+GoldiD5eR53IxxwhU6UEoOE1kSi1knFw\nOzX25mQZ+GdvW0FoLuyQTnbFnl5K+BS4cmWcoluZwF3o3xjVHIjghwt6SBFi\nS/HQX2QeGa6VBGHe8y7UaRkzytZ8pp+TCCIx5ljAEB4YwP+cwVdGmYa5m6h5\nXu3kNMTupBNPPD8kRh2igv9vSaeCzGt2kxYEuSdlfFS388qQ7WfvD6WA5u+s\nMt6OeGegSQCwezyYqmbBat/VWLZwRu+bLTVcUPaU1mlXb331rOL7BMBjy3zZ\n+BVQoYCaijvwTj2ZH01K8VeGgVexCbWiJwgRZh716iSG2nZEsMAxwg/Hf6n5\nZNuoDQQH5rpjtd7ad4uaIsbkKRuqf543TaxZbywBsMyG3nbyoxHgJd0K+63c\nNr+jIz8IHTg0nnrSIIgHFxeYmvgk2S4KWTzB7vlL9bNY3DPQDGgIgV2U3eOw\nfwUbKJ6F7ESYG1SdQ/SYdn81Rh2Uh2QLu/rihzmIb7K+HEx3ORW2AgBujANb\nb6yD09RqYKK8i+KpaezV5CsaMfbfEbOZiyGo86YiWmVRFCX504XS/h0d1kdA\nX0WmuekOjzAivsV2Mx49TYX/GwxB6f3QUXQhn6IVxxlccbxND+xfVRB02gVc\nDn1l\r\n=sSNR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHyq13CxD5N0d9nts/yaLfGJjY9mUZHdccn2QLBrsaokAiEA/9AEl7n6qgVjV4P56Zu28NyCvf8zNYnI1pBIZG1O2ag="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.4.1_1537636830517_0.16071994184740146"},"_hasShrinkwrap":false},"5.4.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages/tasks/#readme","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.4.2","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","@nofrills/types":"^3.4.1","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"tasks":{"build":["[clean]","[build:ts]","[shabang]"],"build:ts":["tsc --project tsconfig.build.json"],"clean":["rimraf bin"],"shabang":["ts-node ./src/cli-shabang.ts"]},"gitHead":"94ca5d83046b8014f2f1a11600669b6f94d2768e","_id":"@nofrills/tasks@5.4.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-wONrDmP+En5fSSKG3PF0gRMvaHjcW3r/vhy2PnJQ0ArfrCzlOhohiJ16fjjnLVJCQj5NEysf/NG0Ki+9WgeylQ==","shasum":"bd3bbbbbffdbf862632ab0670a12f72daa78d8d1","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.4.2.tgz","fileCount":29,"unpackedSize":29413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpoWeCRA9TVsSAnZWagAAKAoQAIp9Mz4g7pQPE0ej/1tq\nU+zNQed8rQINFeo9BUfMw6JSUnzVDNMGJALwb0uNr2KaebpSa9i4eUcZ/uTJ\nbr+X/XZvbkpyCVqZ1P8T+GUT5OAXR9WikqY9KOaMp7hLvVlqPi5HUdHTsoa4\nEcvw6UJzeWXoMUGazr+f+LDDCd05yJrYsHDZmajhz/cleqfiaCKqO1cpPNGn\nEPqo53TEbssTV1TI13HtSfthOOt51aT3Frch0AlB7VQQiRpyiHxZGX81TSOO\nq54eh/y81z9VLUpp7znTUPndrcnyprh+5jf9lzB0/pQOjnNDBLfUJAi/e6+t\nlZ0YRqzdW1UekSOCNJbnBTUlPQLYPhavFU1q8a16oqSjYwaCie0+3DFW0r+C\nVDol7ye4oGzOzTfmJ1UtH524jClIfKXPU0eFybjLa7wk2DzzHMAK0iYDbW1x\n/j9szPM4K2TPHoOSnuYqq8Js7398KKxM4qfedPHIrWeEI4HGPZeKjWSeBkMc\ncKOQQqJQi7TxJMyvjTcsKtfkZBFWsjwc9/TMSmXkVOuon64IinhHpW7oq3ix\nfASlT1FRKnz6B8wx9v1NpltPDw7pHIVBxK+kf7C45+YuxRUpnpLNbhIELa/C\n5DM/XLsrnuoYEZM7eyGJynOglMSIegE24GFfNzusObqBtEb8vnYga2l3BKTT\ns6vn\r\n=39e0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCotUVXs9fGnOIqggmsHksgrIuQeVyDVkz+RHs1bd0AQIhAKRCRM1n14JuB8DOPuiaQLsmNsNCMK1YPy3nKnQPTrV/"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.4.2_1537639838126_0.5821066243017861"},"_hasShrinkwrap":false},"5.4.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.4.3","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","@nofrills/types":"^3.4.1","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node ./src/cli-tasks.ts build","clean":"ts-node ./src/cli-tasks.ts clean"},"gitHead":"68611ba55f5c863885a02861801c6d2ff31cad0a","_id":"@nofrills/tasks@5.4.3","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-QKIdrarkqTJ0qOZA7LTgsD3dSreSetPCnXuN29rLW4ij7c3SbOGOkbzbOVV0SC/jg23v/hWqvMD7xUi/W62ldg==","shasum":"d4eac647c8228b5fda95e00a196626d807c1d57e","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.4.3.tgz","fileCount":30,"unpackedSize":29412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpw5FCRA9TVsSAnZWagAACZQP/jDVJQnaDEriR6Puqh1v\nEkKqBD+UQpGfscOd0wfnLrDxhLjYxcJ1PSz3npoOQ1ycpMoOheypOl5MeCQ+\n4o7V7VOWKm6YPktkE9rbY/lffeMSUN4HAZCI70SD2QBlxmSSIHNogBW8Scof\nUKBgibGf8A57I34WLCRr3G0xVx4/demUb0irz9LxHfqSpCtSB21iDXn5rQxF\nzTfdzeTvFcFol99vS6+taUsNsHbc+aTquQ7zvkWvNkKEchKTcLIn8QI4TJWc\ndet6yB0TFrkvwm7jwQcQ5900i8EGQySkOjEIP8KAAmhTtoAg2VFvIFE+DlYM\noTP9+SJo3fSjpEnlA3xHdcDIb2XqUxTRcZYEnCnD88IueTKFTz2SJ8rpMkny\nerCfu7yM1VvTHQaOAZ6M2dVlBnKD1lWj/q+M37XIcGvkBabSfRy727KEWly4\nnm8Xn78r4Z7wUliFAZ8Fs4O7+81kW75s6ELdMj3+CvtLvWI34woLjKGIWY7o\nUApZJ337puFhu82RPMslHBBXrx8wImwyzntFW6POOGDpwGv8cwTYOyomvRrO\nrKzrm5rVveVBK5W3OJqYd9iTTWH00gJBMxebOH00VLj3Em1bR1p/9ASPjGwX\nMM9QgFYcK0pXoxZA14iukzV9KNaXbVZN4KYrcB+SUbuxUDuXoPU7KHwvOxbC\nwef8\r\n=/Cl3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBszRR0qHd1mseSOg0a0l9ToIOHYt1GISGdhVc45NYUiAiEAhtRdmEJiTXzJT7/gKS+SVzaAru/cspDurCbscVNzmRI="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.4.3_1537674820546_0.05126100663000077"},"_hasShrinkwrap":false},"5.5.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.5.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean"},"gitHead":"34c5e3fda6f940d49354e281960a3dac171374cd","_id":"@nofrills/tasks@5.5.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-iHz1EE3QMxwVTjXu9dOSkyaiEKiu+/FImJq5t1D5Z+Waa43R7SVhc1cOWQ7V+1EqDwdki0f/e6ue6QhHV+ShcQ==","shasum":"96b4816d8459b4bad71ab27276a8e945f4b9cd13","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.5.0.tgz","fileCount":42,"unpackedSize":34675,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqAvyCRA9TVsSAnZWagAAXS4QAIJ6SfzaZFQG0MFASVoo\ntZypmOXXBkqOy5ecJHIEsQTxu4Gt8qllIxJrshXJYay/gSD23SkVTOT/Gy/0\nBSK5HmyEqqodvLAFbnZdnMOHMggfGJmWleC5VcYebAAkO1JeslxWLUP05UWd\nyGhkeb14wH4ntThRm3l/Pev0osaJHr7vIZCmLTtd504uv65ImL5Qh2zY6ONe\nkSnLUwoJtG0PKAA7Rugq4D8foTHKJYsgtBaGnZlkB+CK6HNhcReTJ/ihcmPU\nriIUePc9EsU4sM0XnjrJPAYsiXYOOFBrMRijD2CaDbwdeiInsBOvDg3ggG1S\nk151IrULPvQxbokCSujIMGibizXeTs+RYrkgi2DGKQgsDfb6YvVVYA+5SzmA\nmAIWLqTf5khoCvmRW0Pbg4Y9pUvxL7UWGR23s5P91KnPEGDWbXTi+4agpun5\n4et6ILjgKWHxqsX7kGmzEEZoQEmZys2pp8f+/Kq//EZPJP/peqiA6R7pzY5i\nG6rTRahsM2r+XF3qDiGNggbCF8zDirN7L0Q8aOQJycpYSc4+8Qr6JzFgXeMo\nsLfTY4tYxB6MR2LvTTI3JV8h2dS7DHjX2n2raX4Z/mFvTvvvdjK6XPx9DueI\nNF/ObaSZ/SVxnHrRw5NdoIKRSgogjkXqIAgKkBaaIM3CQX06IY1525k+1Fzz\nxIlL\r\n=F8xZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZxZEW7bV7seM0H/+VdOeEBnUEgxscfVTZsN+nEzd0hQIhAMMY9nIf4kIffgDKT+7DSCSTDHXYvZof/G6okuEqIcfl"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.5.0_1537739761654_0.7309627493699027"},"_hasShrinkwrap":false},"5.5.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.5.1","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean"},"gitHead":"4c0ab8fd44a98b6ac477fc740d7d44e5127ad40e","_id":"@nofrills/tasks@5.5.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-e0Ei0foG7qyETtz7BpYFdfjhNGIFFe9yYnexA7Qnez+SLUes2jMtx24pZtDaA5enr67PXvWsiM6chpRlrhf2qA==","shasum":"a87ecbe24cc2954d3438fa37559c0e0193cba0b0","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.5.1.tgz","fileCount":44,"unpackedSize":35670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqCwnCRA9TVsSAnZWagAAueUP/RQIF+3nibkjPUSpZhaU\nITAZixA/d+hb5limKo730O+3EFGUqJK+yCQIbod47MrV19vLUhcELSx2c6RR\nU8+/bm0ywdM7xF+nDm6shUbJj+lZfPPV/GYCv/v9Iip7mjsrQfkWMPhfVZpX\n/M3gg5BpsuGKl1mVuHdytyg/ShXCCX2ZVe9WsjHDo9+Fr5rDP7xS20o76Upd\ngiUCDnn4Znosi5yf5V0hvKm9M/bDLE+CEOM6o1QcLOHbtgZvTve4NP+cIAGt\n/+X5QxTXzx8o9k8uBa+SBM7FyKDcR+lNQIbTH7W4MR094lcVCNVTBobX4+Qy\nbrYpcRZDnZFyR6WXe7VmQGDm3ysJ3Q1eY5LUYIc/IKqGWOacBD12XBgjtvAG\nMjoDvh/o1l4wDEAQD/BUdHfoRGgAI7gNsjRB8HrfnlH7SXbgFWwclgfe4sGY\nQ2y/Zmw2wpae+Ixg1XtDNTJ08ovQY9w8KM4plvJcyJV+BIOI+kmdzWKvIJsg\nALbr66qwns7Tspszcqw8CWmKlgXOfwrrE09a7/RvSS7eFYGv9p9KjU/r9Chv\n5pS9CLSOTZUabndcbCaSf7GClq2oN4/lCpHY/639DscQdJ/1DpyW/3VrhGc1\n2yzGLPoYtoGZbAGHw+ZP4440f2DZnVjwowEijXQZMMFqrUheoK/8fGomO0AT\nZzkY\r\n=rClt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDy9ArVx3dnuu2FkSPoXi/yKdr7zF0iYIa10WDwHDS7zwIhAJUbj9lERzI8YJ/TZZdoGjHbwrHH9yz31gAIWixxmX1f"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.5.1_1537748006941_0.26456097178319493"},"_hasShrinkwrap":false},"5.5.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.5.2","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean"},"gitHead":"14cf190712601ada6cdbff0a0ee28fb04a4913d4","_id":"@nofrills/tasks@5.5.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-LtHmVUZWagQqkb440yzyqzlwgD8XTJYFfNn+QIHDr1J3VB2tr3/Wrryla+7PjOHARbp+D/N/tbFoBhme3n8Ntw==","shasum":"d7bb1ad2da49f168d1e4f4140afeadeb2d21ef03","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.5.2.tgz","fileCount":44,"unpackedSize":35909,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqDQdCRA9TVsSAnZWagAA7zUP/if/KsrrAgFiOX+BU915\n8xYuPI3NT+1rySuKIBYBCUR7/jSjUKr5IFIz2FDDFcjuHJIyo8kGwHQattIC\nunKqemqv+HX1Cv6jb9Ts2X5elzbH6YtjrGJ1icKL8fnR8MUeaMjlEqkxj4Xl\nW524lQjLD3YIHEyTRbDigng52zmpn0du+EojNyXY4UkbWeF8FaNq64ss5SDF\n2wTgDC/3ZCWR8wC8511nOU4meoimm2VKwFn2AYsT01diJlbaEsy0Rm5cTLS9\n8i0nR/przHVrqLCnzM3bdkkZT6r3+8hYcmH/g2g4bOqWsIb09YdIjssFpqeI\nvsxfobArdTB0fDP09y/eLlMq5PzlOXaxx/1DDaLmPhv2tPT+yQsIt+xwiA6i\nERKAj5Se7ktluIOS0QM5CbbOTxV455SE6WFz3QfU5zn/XWmPQ5HuvrUA2wdX\nak85T+3k3f+omWjRa+GcIv0Zv/PREGk2kK3NGgUzMiAo654dzd2SbumMq6aL\nsF3IiwsWzac84xXCBUHDlpdsVd0LQgWDRubp4MrLOmCUINT7dQWAhFafGRau\nOWTO806onzlICLKYG5DmUfsHCWrBmDqglxnAOOGSDeWGdaPK8eDHdyHbWVAE\np9ceGTBmSWE0ALVuexnd1EgrWMmcONZyjaB809L28S6zKCJExRSu2+ehubt3\nKLHv\r\n=y9na\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLUe7RPevFf3LRYE7L+1FYblvGXY1vcq5JHfcNcLZwzQIhAI1MMG3EYQe+cpRvfAWmkpT+IZLok9H8FTW6PUo0iTa5"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.5.2_1537750044556_0.3509261401398214"},"_hasShrinkwrap":false},"5.5.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.5.3","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean"},"gitHead":"6948825ded2e75be6642e9be48ad24cd59105128","_id":"@nofrills/tasks@5.5.3","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-C/bFH/h9TN28+Yn3+wND70y4Xj/lSRfDv2KYsACsgMHiuhltt03efIMRsNGb6uDKY+q0orJ9ZV5LWF/y+F5KjQ==","shasum":"ebcd948a5eb490d22cb21420c2a174bc49630158","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.5.3.tgz","fileCount":44,"unpackedSize":35962,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqDwTCRA9TVsSAnZWagAAmgwP/3giQG1XMVKJaTUV89IV\nbRtjxKCHachVIZkKQL5xePuIV7iVNYR6gNzJR8EAgcIk8e7bQFGwNB0QUpHy\nAlhgpPbM5qz5AXCuW9N21moB6f/NREmoU9Knu7rxUx9T7V8rotwOeLwek0EW\n0Xnz6KuB5IJEk3zNfQODPplDN6BgGwbH0rxQCbtVCsKHbmMpWJTQljhzalBc\nuQTod72aSRn1bx4SnzRbVJgfQQOeNcipOocJhBJ3Khdm5/2knPJB6u8rLDex\nJB6BMvvbNa8t4f3uEdc1u/KfU3/B5GdvHkk836NTWEJA6t30gL05osoVAfA9\nreF3NhwdiWzV1DWmNSpXTUzVkkLy4y0JvUci7r/DWQU/dWZcZWeWqHR1+etj\nJpRxzWYeVpKRCeeX0xXgx6ksjtk9yp9oYQMEH7+oaLanyO1hHQRG9LEaRCeP\nCVfT7d0ooSQ4xz+5PxyxtcNjqpHr5rlYQhVjjLAPqw88JklQRMKidjmVzDX8\nnfA/QwqmAseTsV9x18Lvg0bxna0S1vTDTP/6FzGxLfD79JSA34SDXpFFfsU4\nif/CHrJVNj32wTu2XSSKQymdxszn0NtRfKhbufxCK6cMfd1hTe+cyz5VEZZJ\newed2j3qAMI9yEtKVEahVpr3xQjleQDQLc7bfag+i8GcEfgWSjB6MZhtXNXL\nzkCt\r\n=yqIG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBzFV0Eq2d4SwlHUiLtK0ldZWDT4/B2c86I9ESzIOSKZAiEAz6uxjv5aT4PjX8gWblgyS6Psx+g/Ps9A6trhTwAlZy4="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.5.3_1537752082873_0.6292254304028349"},"_hasShrinkwrap":false},"5.5.4":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.5.4","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean"},"gitHead":"dfad680899fb334992f408e2a3bf7817f7211eb9","_id":"@nofrills/tasks@5.5.4","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-ROELmiunh5O3QtrMb33HySHRzHY4ZOENWhCaVwRKpXdbESV2KKIoKumAz0VcYsudzEQeODuwqshzgd+wAckbTg==","shasum":"1fb1e86c294257b4bbc3eeb0e4269d33ba966bc0","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.5.4.tgz","fileCount":44,"unpackedSize":36220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqEM9CRA9TVsSAnZWagAA5ggP/3GfBlbbRhu8GU9olkm2\ncU8YPZh+GUhlyfIuKm4b0hC02ZOOPg3/aeSKkJEfrb+0jYRjgmHOJXSmDsog\nIziN4wFHowcaopq3XSVmbcqfBEuQQuHdEwcVl5mvJX/T8cFqO+IoyYOcRmKg\nlVWgdNnsmyFwfS0RRFZpZsOjyLP1+3qA2ySB2z5ApdAiOyKz/20eiKVCd+1K\nNwy25A6jJA8t5dJ+FkG5kukXKLHI5sz72Jmo+K/5C3NjeGRNUIEBDO8PIXpf\njwygk7XJ5zs35CPpUbm/jSQsndqIj18FhbXce0cWB1TAlOEDO1e+Irg5sia+\nAqQfmVAycLusQHXyZsK76noQVqE++pZ74Ai8+vwaQkyJ2SHyI5+IHtIEbd2m\nFPPdi7gvRS7hGmfpErOSpXMVLQkDlZQ5ZHZj9U1+r6nrTmETjaEjr/mxKBaF\nP7QNer1glD3oxLEc7Km0XtZvMuMFPV9GOtGikb9RNl0Eg14lKwDKknGULxTF\nr0ahH4BrOMl/njpLdREq2B3RKzphvcsZKVbk6xO3hWnfoODMC/itw/nhD+Oz\nyYL3+0vR1TcqQ8GGsDZV+xTzXVOjuTZcup8Prmp0jj7E1ClUjfKrn+Cc8TIs\nrsi8tuKB35a9EtmDaxPKW0Oh5KH3SErDcu2U6WHeVT0lkaAQU6Ja9hfPn4Eb\nenr+\r\n=1/Qy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFs2T69c5v5P/j1on3P6LyFiRMlaXRB2/7/tKxuAIeTpAiEA2NGA9kaudLEYRjowmfMIso3A76lR3eYEWSu7CKnfyDc="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.5.4_1537753916480_0.4576914251335209"},"_hasShrinkwrap":false},"5.5.5":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.5.5","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean"},"gitHead":"02b48a0c23e326f655b47c2e61a4dbbcc71e4670","_id":"@nofrills/tasks@5.5.5","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-55Ii/eNL17YHfccWDcxo8jpyVec743W7kxxU6eXHo8hU8i15JMY0k3eEuMGaGKHdOrCXwduXxEbWasl/TuGNbA==","shasum":"a9e588cf59bd4055f9834eabde26c461ba823393","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.5.5.tgz","fileCount":44,"unpackedSize":35963,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqEdRCRA9TVsSAnZWagAAdykQAIcZc1EtfA2Y9ueVQUgE\nH3ljO6nxE2NTHs5kqwNKq/xiLTnNidJyja7gN/v0WrTr6v9x+G7jzfTIgwE8\nTcX5tuyT5Pxwut0/6TNLY+LX2JLBEq+mI3/G7O1AeAsUZQgMcUeyYysfxOF7\niBBoIA9Yetz/vnYi4GTqkq3rrBU7C/jCi69A1JYWPCC8Vk1DEucDs0yJ1EIQ\nH644mdK1yoC0Qu7k+I6nRDyRhxbqK273GBm9TsrfX3CTdUF6pSApeLQYtMVV\nGHn1YD2KwrJ21cDsgTi4dHyTvTWD3ImwzzrK+cEAgUmAP3CPShmZBQXz4mT5\n7HvGQ9b1choq/El6yYiiCrg47cOfvoWwHt4b6StFmOfZaAlWHf4g5CMsoeY6\nNdH0jhWYsNlSAsAcwPZnIfCVjGi1+VWDWNvUVBNdXMBDRE4q8ihaCOt6c+71\n8m8gjFeqIthm/yYdt8Nou34sgkTzqe7d83377ZcVv8RGwfM2Wm9pEcclTAEu\nblDEwUoDu8nqM092g5gww47UupKIPohAuZ8/qCqKEG70wHdGmDzQiTnaA3hQ\nHN5fa4CIQIbEOM92vGmNZIfxdGIhQNDPv9dSRwsSwlzvPkr7/SmCFjzaKHaY\nOMj7Jh920zS9NV0hN2Gy+2j7+p9NyioheM9csfcCfTz1uR0dapEgou4M8WAo\nFgZx\r\n=30uo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJ9IjcUtFmvs8D9RHZ+XdkMiSzWPU852H/ADSa4NK2PwIhAPG/1UDKH5sUBctPJ/vG1cwDebeRWzJLHkcpN09j3tkx"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.5.5_1537754961163_0.281930909832913"},"_hasShrinkwrap":false},"5.5.6":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.5.6","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean"},"gitHead":"ea148f0e642e06011b2974f781c763548569c61a","_id":"@nofrills/tasks@5.5.6","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-Pn38r1+oyvzpHND+xzisvnhZFmOHxCN/9eDhFlLQkUx0LDCc5BDSsokU6T4LBeCgEcmFQ3ghmo3j2aG2zbs/9Q==","shasum":"11d4e9f44533a9f7d105fb73ee55e039be6cdd4f","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.5.6.tgz","fileCount":44,"unpackedSize":37693,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqFgXCRA9TVsSAnZWagAAAZIQAIwiYEDR2Nc836zdEHFY\n8DuP5XFfkMub4XfDOvf+NSAZZOJw3rbmQ3Jieta2SohpS9ne/aOHgI/xpMl5\nMJUQ04zP91lxc8xdMXvUo2S/uYMysz5cpr9JooHO8fPsKEMEyhDGIP+mr5O3\noAeQbxgr2do2AggdV2xVtlQ/Qhx0jfGa8cPUybZBcK2ufDjsP5SdaNWuZ2qA\n23iQ3mfCs6lj93JZFsno0WEGgdpO1NhgtXRUS7necwH9lf893XWjPByFzwyg\nD8LPi8w1mmxv0gaEFTzGNZxdwzUs3TbDZfX9pE9xCbKcwXslZ/otrt/uSAzZ\nZfO65WQH4pnGChiLI0e1fwoe09dgfR4FaRlwd2jYi/eGTrck5bop/vauezUh\nb3TNA2NVNv0pgECfOy2Z7x9WrpYRpom4Xc+ga98vW/txdxtN/jwMRBxh5WoY\nYnrUQ/O0ZRQFIol95MbWlroyDsx1qWSrp6A2IiRWIYsGV2uDHanApchYAlXV\nQ5p5an7FQ1uL9vCBcN2JybGatzhd0Nf13XmGDFmYwNDDmn4ZgvPA5P7+9m5Q\nwWjypMvkwiJnHJIbfOIox2fNMdlH5dlVuv4ZWSG9oPdEu2MRUmBmTjpU9IU6\nr1pIVfE6mvbDFJlQFhlWdfXq6xC6xI+zmzN/GIidz8bpSqGfNIcX7oCOsq/f\nKsWm\r\n=beDU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAOZaHlShExMAy+AyNZx+z0kKAPUVpSlh1vYjPIGZfwJAiAthgYslgzl/4aAT2tfJ3SJKsThTGW2Q6fpGSo3DCQZTQ=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.5.6_1537759254800_0.39005858743826516"},"_hasShrinkwrap":false},"5.6.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.6.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean"},"gitHead":"ea5d4ef429f31de863ad6cc741c1c47b4d7b731e","_id":"@nofrills/tasks@5.6.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-mVM4EDiMmU0EkKo5yqcQG1Gx1VHlbCTynpzq7hwk5ngLMcV7ehM877eGD7E42UTIm16SYqVKt51RGC29HREtuQ==","shasum":"7cd3873e0a69b099a3372b19440ca6f83cb8b3e1","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.6.0.tgz","fileCount":44,"unpackedSize":38880,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqIOwCRA9TVsSAnZWagAAhagP/iFSE5l8RKFRMwi7I8d7\nm21eKt8vriB2GMcmZE+GEWNdRx4+BJIQqxZZpvtfnrchbNnOZioJs4+TtmW0\ncQhixF2gUNbvdebVXI2MmBq8JexP7w52BOAmve7P7M8hqgejhPlHrtwq4iMR\nfZgySSC/q+s/DpvTYgSUP0apgw+X2EHdO9TeNzPNZq0T1hZu9ufkda9U3ZOv\n4sAfCfr63STDEQpyCeZOhjKZY4LpGzdNteac8f4RM5MfoGydsrxlAqP6VukF\nqOdNq9fexZ2NRlah/Amt40qMY625l8qPRs9evVDogpscLs00s0uIOmUuHbt3\n9CUqsllyfbUAxM1r9g5oHnVPJQ2Kh2/gjwiN+rxpRGDdtWP/C4h/yViXaJ2U\nEFuvdPsAzQpQxMgqXlJ5Y2hXoKKQ5dVrHvfgh6ICgwGBuWbwqgabnuGI5Qk7\nEE7+x+DfChDCO4qF+E7cIv3APgKNf4vrrazFlXhfdSQ3Kyk1f7Mgm1490FI0\nbdCOdCenmkv7GWEDaoMSu8ToEhHABSpmIjhjn3GT0v41ZwtLu8+OBAKrHf9S\n/IgzVpYE0eo3Yo204XTD4ThZYNZjUyyLaZA+bagAuow7Hy7B18XKfgTaRkoc\n42MBUbOrb9/HM8+S556UimbPgfWrYKeJKxQjbinudrvsKN7T6tC34JrStaxg\nOxp8\r\n=iX2m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEH3eSWgPgqTql7BiziBaBdFiXwWlqz1O2/wxY5SpYxQAiEA0/WPe229UvKQE1kPcPyjF3qhzYfdtLFMQioH9RkFMGE="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.6.0_1537770416061_0.7128871731594648"},"_hasShrinkwrap":false},"5.6.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.6.1","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","@nofrills/types":"^3.4.3","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","viz":"ts-node src/cli-tasks -v"},"gitHead":"b0c2134a16a8f674afd28b97ad312fbdf3a3927a","_id":"@nofrills/tasks@5.6.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-JM9iHTvDo1Tno+HLBluECZxosUIoJsg06gsirLFZrZDZ0Rl7xL7dWdip0HM00epjfj2BLm2+IYJPZeLUxIMRTQ==","shasum":"db9ba82dbf890bea0c6338e99963733baf6617e3","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.6.1.tgz","fileCount":44,"unpackedSize":39872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqXJnCRA9TVsSAnZWagAAYzYP/AyJvQTOKfCrOol0NADm\npSHr155hVCotlBH7ZxSe1q1r4vk5lcjNnBc6L2q6/5nDDTQP73CMgy1M4GSR\nrRNIF+kKtUcTYRgDjyvwm1wF/1CBMc4AVx+cWoAAnkYZOxZsxb5K2Q+uLwWT\nXBgbAQodNc14PHUM6qWfO9ESuWPvZgaq/SOhRCSaYas9GmKF6aPhsqdQIuyQ\nceOn+g7dz5W6ZpyQSmrEP53qISNirLIMaYBt+7GDHCC8SW5B9XoCDaeqamih\nQlRb+JR83QIPsAUVuYy8FU7391mBHnFGn2UkwryfvBAwWG7cbBM0QhVKNpOA\nydrJlvNZIN5AZlbQMcc6KWgnV5XrJfe7bnrayAjFy59jcp3Ez/bl9lgCrkc3\nkl7MidERHkWxhDerAMQEMNEAuZYA1//rvmRuzEe+b1ft56lYlrrR1ZnGZdvI\nZ01U9QgDdeq4BuoMnrm4rPpbmHa4M4hpyigfpfsCg/WQqN7zIdeZmmiKNEqB\nfSynTHwxy1Dsws230Zym5TWHRc4YBaMyfQdTe8I1jMzMnW9zKZjISBH2ToNI\nVPRI/WB0iVLjYDr3mAdHXCloyWE1sVwLR2sieBY7HmhPpi9U7Q8sxNlWqVaJ\nYXp8hHKc93F9UoxT8J6AwTv1mWJyeLlqlSzG5C14G+LXbB7Q1pch4n/hktaY\n2xva\r\n=EZva\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICLQ0zshWMuoArr+kNCz5iM2sgHCIcMRspoWIMTfsCroAiEA/npkN4Pwz5mHI/FI3Nl5h0tBmiKH9gurWtbh/oHcVyI="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.6.1_1537831526307_0.8903017738365213"},"_hasShrinkwrap":false},"5.6.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.6.2","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","@nofrills/types":"^3.4.3","chalk":"^2.4.1"},"devDependencies":{"@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","viz":"ts-node src/cli-tasks -v"},"gitHead":"2e2e149f5df3d6cae02125421adcbd03fa16d1ac","_id":"@nofrills/tasks@5.6.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-06evRqOpyHZdScwwzFSki/jaKmlkYUxmMViZrWnb5IYwTcJCQQ2RiEKiUW2Ac7ekR0MsVnI8wEKKwx6haXLwyA==","shasum":"c285514b0c89b6d3b63a374f0792cb58614bc895","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.6.2.tgz","fileCount":43,"unpackedSize":39594,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqk0oCRA9TVsSAnZWagAApG4P/1zfZG12Z9i1iefQjhaD\nOLwZ+zlWsIDQO+7CvSl6Bt5Eqz0w3azTJvR46Y04VVI/Bxu1/XXZTkvMLLxj\nG2efXAfXTVKSP21g1zELDGEecIi81imIUMVOyO10tVPgrGRb1wCDjIXV/sI5\n28dO5lYCKOLDla6k7ymYqIC3eRL8jy1qnHvXAv9ksqEzvuPrYviYAhW2vpg2\nErrV15lY6g2s6pqYuvtzr8kXyujBMyxYj20KCJaLHElFIr6AdPK+fTsGhw+/\nBZxYZE1sLWGTv/4ozhX3PJiiVzUTv8eavSTS5U+Yabm2AneOcoO7e3AbU7xi\nJpgkeIjMwZNy+529guGHk4lIn7rsGQzagfyHvdoYombDn6VWeYKGFmgH10eV\nBnLZsPFB/LBU0axU4U1U/V/7wJq4HmbR+PTivrRDYNZhDwjSeNhpgafltPgB\nKXjJLVBz4LbkgeKIG1Z/FaE7vWgybkxrA4ubDJ7zdCTV6krQ3ko35yDj18mU\n5rK9MCe0RQDA/UosmLwBfs/ysi7KMl1hz9yW1jCnobqv/PU2VOc7KDYyQ9Ui\nCdmLNPXH81INcMqgGkfJdMd6V8UfnPITuiFHnuvLWhSf+846A53lTCX7Pq+n\n4gz0MkD5eUosyALqfBOqqgG1G1+AFgG4aLYtCQ4bd0fsfi9+cXqjD0S3njuT\n2USr\r\n=oLJ9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEr8R1VSXtUjSIz4k2s62vfVVvzEYjwkXAf0SVB3ChF3AiEAvWkR6xOZb1UA7YOvWikmNfa9t9OX7snEGFqekVJiS34="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.6.2_1537887527592_0.9452719926677047"},"_hasShrinkwrap":false},"5.7.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.7.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","viz":"ts-node src/cli-tasks -v"},"gitHead":"fe98f627b3b697e95b1e9dddb38a0c226e7d084a","_id":"@nofrills/tasks@5.7.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-vzFknz/EJzVT7zts0Ar6g3PIAmBggXTVOGKN2blhNJtM4C395JBrzIUwJ0uUUZeGu+wwm71/1UBvRhS7CVXwkQ==","shasum":"3e83b7cba007c8e52e8fa8361f491733e9d7f7a5","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.7.0.tgz","fileCount":43,"unpackedSize":38120,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvCxQCRA9TVsSAnZWagAAkbEP+QGbOu/IvNP2GQ+e364h\ngfXBd5ZkDAImlDTg1GC0HqubtD8xVVUEZyLxDaQ9SVUWRR2ZvJsbFwrYFNQp\neV8q1IJQTSvfi4aWcOhZUDA8qgnLL+aMBDviZVsdjVZb6bwoaV8Zhgg+SlBy\nCSrsiMI/UyIYgw4PnTn4r0+khTbTEv9NRp+G94BeqJc4/Ec0p1VPUpACIknJ\n7rUrob3NRVXnZclJZfznm/PVWAwtqMrX6lEz27yUGJ1xneZ5T5qPapRytOVF\nTn++nesnk3zMmVChOcLmDmXuUAw+q9igvGW7zrMLqRYjEPb68fjlPSxwefn2\nMd0QJFUk7fuoH2ENs4Wc/09tYYKWcu5GbLeicSELBwlQrtfu/GlIrT1MsIEX\nzQbFfyYvQDPL10I0VV9HpxWRq7Aa+rHKNKPnBUU+JGUpygqg7HS3MyOZazaT\n8A4qF4dSfk/ANmakN9SX1FM4DK26/+9ojXBwk9d8LC5wq6jZ7iQlS57/67Tf\niRmLFdiD9pFfZowZV7DQtE8M5woZ0Wj3QXLuGfichVsrpbk9uvrWtBUKxTH1\n5bSyGh152VYgmnBP0eRrN2x62tEMg9S+5qs2/kk4f6kBTnIUfs0ipWgeip4+\ntdGu1B491n33FA3esGsno+Y3cn9GxW3d0rzo/opOgsOZQTSdiVp739TX4iWj\nM2kz\r\n=CAgi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGdlT8B0JyYb3iZkUhpur3ekEoOyP1sEGrHl3vMkq+m4AiEAu1EuNtJgcY0u9WYlRuTkujDLSczuBwOlkK3GEUA+b6k="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.7.0_1539058767927_0.8047691213182979"},"_hasShrinkwrap":false},"5.7.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.7.1","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","viz":"ts-node src/cli-tasks -v"},"gitHead":"2a7d2bd1004de5caefd58d304c0e7733280e6e53","_id":"@nofrills/tasks@5.7.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-OJZoBwLkf1YlAsDN4GoC4gAtziiOoQjrDxrgQ1Vh9pivf2CPrsSn2DcSwt0U59lvNhsqyNJq4iZr1xT7XXleZg==","shasum":"8016d19a4fcc901fe8c922ed1cf734cc8d3f6c35","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.7.1.tgz","fileCount":43,"unpackedSize":38365,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvEdWCRA9TVsSAnZWagAAzygQAIDAuT3WMDlIHJW/YJkH\nGAEtV7eEpTHWDZIrAulPKTvajoQJM3Hx4tdRV1iWdH9WykQjYvqWNGtcTVFN\nDleobpuUTKFj3g4lkjiNKrX+Puonfqw36w2dw9oLXjUaaBW4RucWMsfiPm4E\nsD97n9qVRzj+WSiVenzhfkOlYpVgM/qqg1SGe3GabFzLnmmml0ZSVrGx0WAk\nZ1B4thrGkutK+jP7Qupr/Q/qf8+PpGxcrOIsVuk531/aP2AwVhbjLOh2DNY5\nZX6deqGb0buzVGLFZQR+/kvGbqsrBZoCU8RpbX4AlMW1GrUoxNSaoulDnMGH\ngB1bElwu7zI9SvBZh4l1PZqHBEwdoWjsbogANXKz9xyoZhS97akwfUk6hiiA\nAANLa4354vgeWABtByQ/Tf6YQN0hO5TS7NKNe2K4Zatae/SHpXbLYraK1AHj\nsAZtDq8fLbLbXUCG7pe9UZ5FquLCf5Zp0coscOYECsQRiFGwZ19DtxbATi05\nNc197en0AQNshBUCReXCTe2dIm+K7CwsdhWEZSCCHFwrYz0bEjZzzuJk2+yv\nZJ/rq9BAJ5yRYyCDdTWVkCLuBqxgrp5sPYVZDhqQdP316hVOqVqgH+JpJnFF\ntIhccdmyzZYtcG9XOr9/miskSmnkQ7mqj6Q1GG8yvoFwG/T1GrcgCjWgidqo\n2oCX\r\n=Yavi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxPLrZb6pG0QFPsVNYLcqMUO5l7VK+epb5KgQke7qgXgIhAMScqrZr23ExxABtKT0HHc1yIYAhaqCp1tWp+jrTK2pS"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.7.1_1539065685845_0.8529514273308432"},"_hasShrinkwrap":false},"5.8.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.8.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","@nofrills/types":"^3.4.3","@types/get-stream":"^3.0.1","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","viz":"ts-node src/cli-tasks -v"},"gitHead":"9c865d037265d066c3d52b59c2f0d7e9996dbfbd","_id":"@nofrills/tasks@5.8.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-nPjRcXM3V/GJ9SQ4Yw/ua9nokfFTdIhldWGPUAnlvoCl5klbh3+SYokjwgKnPRfiBLe4bnRN+YjoPP6JiGdEtw==","shasum":"919d105a6e248f6bf0c81d90125daa35771f1ddc","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.8.0.tgz","fileCount":43,"unpackedSize":37931,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvTxQCRA9TVsSAnZWagAA0K8P+wZaytqOUWf6f6g/KLTP\ngP7+lnIG33rJGv0ZF16Ok7BXmp0U54FHnE+zX/QIsG5FlI5r0wro6IQNyNNN\nl+A+e4bPKEZfEfDnUbc2G9U/NOv6zuRBtjK4PJ2+gWEQascyhUPYFja3p14B\nURHVAfXxS0gtHaA8o1A1L9j7NVPL6MkY540GQoXuzJELprEyKW0ZMtoHzIMc\noNqBerKTrkbwLGD5eltGwtQ3fOwbZwxfBqtmIUAQOGPF3oqGSMKBYzFU9nKx\n1U7HFxEzWXbTsAqNoc01Kwsdcqx3QNx5mk2tOx3xbBGUFWK+9dX4pnpPsN6r\n+8rwhNaEBN7ZepsCDR5oTHw6CQnfTQxcHQ00/PaATjb2a507n4Fm3C/d8gJ0\nY9aF9xWA6RciGYW2bj7gtUpqGHM6aTDqt4vDHtpReABP3YiyOZbO+MldlZlj\nbEDBeDbcEm1V/7xrGv20xRYS3sailI6v0RC6xp9+FvhdwOEv3pjBrku7y2ot\n1PoIUxvLc94Ee6gBJPsTquuY1eujZivfT3fTAsU0A+gxpbxp1tXtmy3dA+fC\n0UZEN8OIqVRb9gU/6Md0d0WNhi9fFVavIvrZCmZ2XsyUtyvqaFRRPUohXwIO\ngS7QcgBltQ6l6YP4N4PYq7lKtF67KhRgYJMJQ/3swspVdA4jQvIbATm92o4w\n9k+0\r\n=Wt3o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWh1VCcAxnoPOIIMzsXN4il+DpLGFjOIbSg7gwqDWTJgIgNd00xymzmGUukasFDTKnY+IdCyI0dUOHasWN6gA8zM4="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.8.0_1539128400127_0.5177424454674295"},"_hasShrinkwrap":false},"5.8.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.8.1","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","@nofrills/types":"^3.4.3","@types/get-stream":"^3.0.1","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","viz":"ts-node src/cli-tasks -v"},"gitHead":"9ce186a22bcf92574e7bbf48c4728c2115743aef","_id":"@nofrills/tasks@5.8.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-3ARf9rhAzFlTx6Ddd5gVdyGktpTaIfV9rf1xLN5Uy3nr0bhkKQgF3zJFrb1F9em+NnW5tICEPBfem/1HvbEy1A==","shasum":"3d14c7eaeec15dd13484db62a2d9fdec13703b0c","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.8.1.tgz","fileCount":43,"unpackedSize":37851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvVGFCRA9TVsSAnZWagAAXhUP/joCl73OGHbbPAtYbLcJ\nDxCCzylebc0OS11P5qV/4WAer1X8L7i6kC/ym1E/a+ILXLo7TTpu0dPCV0mk\nMNus56HktDmJ6/TRr4ZPEHj1q/Ceq/f/byycNctbSXnqSG2WYc0fnHDqPurV\nzz1gjnGHKm7MuVwXcdJgI5I3cRLdjmnkDs5T+7eMJyo3+QejGJooo18cdyDy\n911mRBkIHQ2leCb8dn9GPm0l1LjyjAPqKklwpNRTVTHiyDrhLXvaTWTLQOu6\npa2msekHh0BBKOZJj27g8m/l5kjOoH6axxTQ+JFRwJGn+IOdMtOPAW8xzyaX\n8LDtkKxrmcVYDTt76/ZUobByo4XTMtEEnGL4+vciCahJLXJEaYfGMSvxBSdg\nCYDD6UGMwYJkZKSZhCjOjPK7ww7qOISKsUvC8kOm4D7WZMjHxy+yRMuB/URc\noBw4xqkFCo8bS4RNLPPk3gr3AdEr3mcTB7Omis2X9ZxS2dqVFEgbO+Cjgb3J\nAEJZlPX+tyfT5BtZBR/I7CKPuoW93hA8oEUNrhKhG1AzZ94AQZe+orjODsC8\n8LWDAYc+PUX1CudhZqTtJCOTk1V5St5bGHXsfsy56fhFvZTqj7YUWrxX7VPd\nqU6WhwVTdE+Rln4ihR7hal9GZxRtf04d0zFCMNZkg9S4qUjJ7ijeMf45xI6N\nb2Am\r\n=m6Ji\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7z63ZjD2sA6wOUDzx8s/aKpLZX0KBZLllH0YdUcrwtgIgPxpp/yLuzDH82meelwygbkxbt+6AdbpeBzQRCEaq4rc="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.8.1_1539133828960_0.9528430384758435"},"_hasShrinkwrap":false},"5.9.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.9.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","@nofrills/types":"^3.4.3","@types/get-stream":"^3.0.1","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","viz":"ts-node src/cli-tasks -v"},"gitHead":"51f3aef613d6e6f2091388ca2a0017bcac9b7dd5","_id":"@nofrills/tasks@5.9.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-deqqrJnGDgZ68+PqvhXGO730t6P3hncgMxCfPJAox0k46DmqW2PRL2l/z1+JdADq1RxG9ZdwZPjmZwI9uoLcww==","shasum":"8310cd77f6232cf9c2fd1389a5c21b1bfd59c575","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.9.0.tgz","fileCount":43,"unpackedSize":37738,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvonOCRA9TVsSAnZWagAA/58P/iFaarCB0M50SCqh8GYk\n2CAY/wdT4hfnSTUfKf5zcReqLTRFhSQ4HiRntpeefcmlkmFRWCHKUyyWk/3M\nhoD6hYYZyipYA2trZMnVNgQ5IVXTe55XBEBMjyDob/O0Si7u5gJuIxLIVYGZ\nLlcYqN8LYkQbFO7/iBy0wcRDgr9aiRAA5Ytfbj0Ytb8ntwMs6KI/PlFBeQiX\nS53AnkYG+NPNIbYQ+DbkxUiqEfoooeODygNXTKBPQRREyd7QTRUMSf9MWzF8\neWaRud9oexV72ARYgUr9VCpTQ6qC+yYHFoa9+Ks7kcJCiua/V9UsdSlEMGsg\nKFb49WWN4JTmKaFn+qii+wwu/UoUAv22/Ra3F/BpYL/+DwbjNYfo8W7br+9o\nmDmOyIWHB7ksixCEPvX8Skne9IkK1povFXYqHBtrrX88PrdJPssUKMAUX+kv\ncWzKVMon9iv/oIWip4sysCegpQGGaGRvVhN/Ejg3Vr5HT0xFbPCvwJ94+2Ar\npJK9gHDK5tMEF6FaYOZLI+lwAk5Idwq6Jj6M6T6Lx+35EcEl1QlVe9RzOG5K\nbGQuyLiCexZ1NBPtcAJjfFkYhkvA0le+9NNR81tAhTUigk8TY9V1xFg7fmtk\nHYnVg07jSbMw4DZ2GM8E5OZBMwOX7h1lh/ev01988GaRscBoam/rmVQt50PA\nE2lF\r\n=JpTR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB8FZgYTDBxbFRnLYOkS3E+Ms8ZqZTCuSvmukbmhgBLGAiEAmwaAYErdqf15RwwHQ5vqgE/MOhOvSqcMSDbteUYlLsI="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.9.0_1539213774079_0.8503656669057005"},"_hasShrinkwrap":false},"5.9.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.9.1","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.3.1","@nofrills/types":"^3.4.3","@types/get-stream":"^3.0.1","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","viz":"ts-node src/cli-tasks -v"},"gitHead":"6e156f6f1bf88cb9de1afd410e09e062fcb11017","_id":"@nofrills/tasks@5.9.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-9GxWtl5f/AORvg+CSiv+VfQJ+E41m6TAFL0bhnnuoOaHLJ3hfHqkYJnc17QihzI0++B+oAxhG2knRFf3UKeWQA==","shasum":"ab5f8634a14f34c90978e884485489ad3a6a9eaf","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.9.1.tgz","fileCount":43,"unpackedSize":37737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvqgHCRA9TVsSAnZWagAARRcQAI5UfJr2SCiPuzWGT7B/\n3srdUweJg4x+W7t2pmEVrmV9ILe0iAiul8cz8xoiLC7vlgE5XhTopbqELvmJ\n2PVnoWQBERgEEfd4A/C3e8U/RhQhMjwc3WKVtjzeGUKQRpx5XWnWEvI45Hiz\n2ZqkL6o9OwOUDF10rqLLUvV4Q+QVNDI/YDf4Mph9vLV7Dho4+xCxScSNIgzR\nWoMZv1FkyA2ffHdM8G9T4UbuXFcege2kdAmUp+6tclfsKR3Xr6j6fcYYYFsY\no1AhUJqBqbxQhvjp3DhvpHQ4M5HMUb2N8Xfo0vPTwRNChtlVBNA9+irH5MbY\nbIsqUtV5yKmLNHbzO5UvDe5IXbpPnN4rZn6A5DND0uzV7tuh19Vvq8d7Gd9t\nO5KJmLB8TZjSQTud2pkY84iuIyouD3vwNkoX9sl9NyFhCLf1kXa+oRakuxAf\n9prCUTv0SMCh1mfjGvDuMRH1oqWTjHkGvr6V+Y0KrTqpJDByGb7T9gpSHyb8\nOHBXSTGZyEetROUU0SFWdsCPdTpNPzGt0fi7NhgViyhqCVNpVs3tSkaPnLk3\nGdgruo+uj8e95NUB1bBM1xiiHHKY4KRNDuoEImlM/CR5laQlzZDvfw+7+yrD\n7eWY3zqMy174Mje6yGO7XDtwtvPRLlzUnxGGQHfxSYXr/ROnJ7sAJK8GksuD\nyVF1\r\n=zg1D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbbnePjTpqPv/500akylL3ZFrPdmViXeu54/CM5nuDNgIhAJwmNcCoDpc/H9y0cH8YvWJOTIcCRJInL/tcY8wmg4ng"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.9.1_1539221511138_0.5432248234096178"},"_hasShrinkwrap":false},"5.9.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.9.2","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","@types/get-stream":"^3.0.1","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","viz":"ts-node src/cli-tasks -v"},"gitHead":"77894ee9882b55db6dbcb13cf23c17de1289a830","_id":"@nofrills/tasks@5.9.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-HrCvNFG+CkdXFecHkpPbSgOmg3SqrZvPKPAA8Ih3GwowwZMAy123bOyM3Zn/tJ4KiTwjRIWwylXhHdkf9h26ag==","shasum":"ed9841e694765ea433668686b498725f63071531","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.9.2.tgz","fileCount":43,"unpackedSize":37737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvqybCRA9TVsSAnZWagAAdBIQAJ+/XI8w+gFDkqFg0lTI\njva1wk/BA5SJqV5VJSWuwVkDIHJn99SjUlSqJAclZndIr1SrojQkN2mbXV2E\n3fdIVntG/GDPwlggiNW+damrokg31/H+jrf1r7EZ2vexnkDf9a2skrEzEsNj\ncPMBpty85NnEjPdmchelHDc9txg8Li4pSpXCQ6iobIpIfB7KdM/Ssr69jNtk\nV43srrGQ5RmWrPyiOcXjNvFMzg6t6dd11orHH4uorQK5jMK1QZ4ippNQpJlB\noKZNbVNSGBOeQYsULW5+xB9ATiBJR/iXdl5XUNglFBPrFfETElZlhVNhhvTH\nBlm3fsm2mhIYse5bpfO0DPUvT3EF+KPFcMFxWIbwVL1PPNNKJXUzuaTM5xB8\nXscsE18EIDaYn/8d5rKOCypR1uvGW0HbRsUoi9r2qMvCeweMMwliz+26eKYS\nWU3ToAZauBNqZbPYJ5XdO1lUl788c+unLuz6nSqbjqQ9AwjRIIOwxyMd+ZHt\naEFBkJcrZHEs2pQvWteOH6UiSFd7qjkUmup2zzkUH/zmWUGPrNwh4F+GoUjJ\nbuZQkFsnG1e9a1FwqomebCqI0a95KolRK0SI4NcNnIfkcXzWbNE1r/ya5q1k\nMjqtZ4QzmmiOTe4acrK6vam9V0Muv7Gbvqoa5sCYOL5Vi7TsKej6ZzZ92nnE\nfRCA\r\n=fS3B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF9RRyUZmqS9Hcl60MuRzCePnlhL9L0yJaMQiHf7QUt6AiEAjJjqdnAEPCkzw3u/WNjqGwegVcoTCKFbHcoHZDM5YNc="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.9.2_1539222682477_0.8104416588444698"},"_hasShrinkwrap":false},"5.14.0-alpha.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.14.0-alpha.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shabang":"cli-tasks shabang","viz":"ts-node src/cli-tasks -v"},"gitHead":"56665f25bded5a2ac1f3d9164830c706e54a0d41","_resolved":"","_integrity":"","_from":"file:nofrills-tasks-5.14.0-alpha.0.tgz","_id":"@nofrills/tasks@5.14.0-alpha.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-5xnbJvLFWs9SNJVZNJjNrcsjKsWf+GTPZODBN2DFG3YFbTCIVdYX5yPGWlBNa/AJQ9BZC768CgLRKfgU3BcedA==","shasum":"e4fa38a65b6de8ce637441864260d48d6efa124f","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.14.0-alpha.0.tgz","fileCount":43,"unpackedSize":38342,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxUMpCRA9TVsSAnZWagAAFtsQAJWCfA/vZYskhQz22Yc7\n1mrO46lh6f/t9YfcoqpoTqDHqka+DfSgbAPzglX9107KolMyxKPHDsvgWTGl\n9le97zZ2RMqJIIAVTA6AlBGvFhLTdiUttaqKawRUhe7+bpYaqyCTz2cxdsZ8\nMt3CAPqkcIVVdPx3A4oGhw/6Z156Pvipq1IaCJkgZRywoIq7SoPiw0zGtVzU\nHO0+s9LWYaXldOKNy059Olj2IjeH2TkEFC0f9kysZngpkrIBOfPth5ICTy7a\n8tfNHZPXOb2XUvS3i88OlIe7BL2ZYj7aNVcieqq1bs/ce/rb7anUzK3m9T4B\n6gHZvIJ0gN/lXPKNXt7HoHU3UbUVLcHNAMkq2JGb7xmpgn7RDqctGLM9XBxX\n7VE4QVDchGiMekt2Xh97SFC0re/caqZAuauYY1QKDVh2YoipmUzFngPNl62i\nwmbN7qIhIoOGA7BBMZzaMyXjQCz+8bPIy445wJPFjLkeiYx1iwwljHCS089f\nM89zOmqeP884vtByJ2SYTMWdtY/fUepKbMdXuPqzzBL4aVcb6oRW7IrQcRm7\nL04Mhfu8TH+O+JqkBtr+wMT/0YJ41ltqca2XZg5v9fCjnaNh160pq/y/BMjY\nr5YUkILci6jqW+XNeYNH5nqQe8TL5QAmdHtqIAFxzgfWA1tdpdPgyT3MOHvr\nXZou\r\n=PVWT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDM+i7Aa8vneIxZJVBUwOGJ1R6R1Fxq1lUyv3D8vlascAIgZ5OEbGzvuu/1Tj6ceDkhvvNDC58nKGiOx5Vs6WMb0zk="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.14.0-alpha.0_1539654440880_0.18043088156293052"},"_hasShrinkwrap":false},"5.15.0-alpha.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.15.0-alpha.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shabang":"cli-tasks shabang","viz":"ts-node src/cli-tasks -v"},"gitHead":"a25a50805b39be7ddadd871beee856c78a9fbd44","_resolved":"","_integrity":"","_from":"file:nofrills-tasks-5.15.0-alpha.0.tgz","_id":"@nofrills/tasks@5.15.0-alpha.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-4+qHGev4nM2t0D4BTz+3rTZ64CUForDdSuxophT7BhF+0sabQyjeZ6ke6uRAr927m1iOxGDL0jgz1AXsr7spnA==","shasum":"cc1b0775d3aff99189603d919c4554c874a6c18a","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.15.0-alpha.0.tgz","fileCount":43,"unpackedSize":38342,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxUjkCRA9TVsSAnZWagAA+iMP+QDWMEGKB+B/bYL66fgM\nxTiFoaVOc5WgkG0t50zWNnWtPES+dBTTFJT/NBMm5QMd1nF+ABnENKXrA5WR\nn7Jp/tXmwTBRRT0zFZUEfL8ueKOGfQ+5ncPPZlvY5OFeYc37gmNYsEAJT/Hg\nzd+sKZsOZQoA3ZSwtfNuofIBQfSJtGodx6B5HHKbS/gfFvetwEFTNB0Jivr8\nDmn6B+ZrEl+rEE1i5KGEwH/m82sJFRylP5E/rWyO+wXa1PiFJ+tf4gY2ux22\nn/PTM8M5hiI4FDiA6HYChkdfgJn3YwX7Z4L0RD9GtsUZyxUDxlf8ogcHX/LY\nrL6DgT6A9q8aKlQ3z/C7F2fvnJJYndEhHJ8wJs8+rs7pCcrUm88Z2rYjJJaL\nK2e3tPOA+WQ+zI78ZYiKJhZnz6D2BUdejDAukogYmKzkvSuhtjbF+10RPIuI\nBpnXbz0aH1B6XKZo61UgtfWYYtiy7S3FoDlBc+/ZLgNjq8TCEkIQC8+OQT85\nljQpN5F1MqedZlHNci+zXNB242L9AQV7a6/PsMgRlPPzvfNlR70NuKAsdd7q\nHgH+u+rwISakXls3AWIY6NkyJmRX4GsjUeo4Olfa/BrAMvcQXBGoq3STTxao\ni/gvEwT9UXzP1fcB6JNM1VukKsW3A45fpo7zj3/UY3RBSAzdpgkNke7JElpK\nucB8\r\n=Oo9r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDqyiP60AryFspaJq6w26mT8gFVCvr/Zj12xYDpGga14AiAb5QUtq5taSZP8JZVHFVnaB9xi5Ix0Gm94PjLQ+3FY1A=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.15.0-alpha.0_1539655908213_0.6408313531092569"},"_hasShrinkwrap":false},"5.16.0-alpha.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/nofrills/tree/master/packages-cli/tasks","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.16.0-alpha.0","bin":{"cli-shabang":"./bin/cli-shabang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/nofrills/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"publishConfig":{"access":"public","tag":"latest"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/nofrills.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shabang":"cli-tasks shabang","viz":"ts-node src/cli-tasks -v"},"gitHead":"ad0a5c1ce9a0b26875d8e57d58655401623d2294","_resolved":"","_integrity":"","_from":"file:nofrills-tasks-5.16.0-alpha.0.tgz","_id":"@nofrills/tasks@5.16.0-alpha.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"dist":{"integrity":"sha512-sdnMTirwsPAeji0ALRfVChEUSTRZROkH37WLz0p52gmts5SRkCPYa6iqsmNxID0KUXdl7NT7x3LhJUHyvyaG6Q==","shasum":"b149031b788e3956a828258bc2f4624249afdd77","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.16.0-alpha.0.tgz","fileCount":43,"unpackedSize":38342,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxVMpCRA9TVsSAnZWagAAqU4P/3z5Qy9Q2W1W4aC/6Jtz\nO2p7MAfBTL/WbUT2SjACJQENUl1yzNwmrpngcJqFnkNl/PCRrZgppBTpuBaW\nZ6jk21VvyXd9tCBTHHeaJaCVyJQRztQDUHGLq35C55RJwK7mgqPvpiGtJFh9\nQZjuJRjfHfYgq2DMMFS/+4JgD9akNNem6tlvjjWTOQOYGdcPu8hHnmrLj7q2\nWQY46Cj7U3eegrcCvVtDiKpKgq01dUcJ6dltzbCHiT12t/D+HpK/gzymrv4r\n5atogLAweC/poQty1wg16dvNjuSftW6YA00sL2BcMLMkslgB7hIhsWmqqSvo\nN0IrL7kGgp3+uJ1FkA7DH+9sc6i6SkkQSBZg4TnLd7xZtX5T1XQIFWwVnnNd\nhXYp7/8+G9g/izGVEftk/D8sAH4nQEl8qKrFmnixBe5amE/wJJIZnHdPZFfL\nCeX/PPHejj9K9BPHFO4xpb3m9A72AjwMB1IME+p0Cd9yUPK6POh7JHPPEEqI\nARNdHHq0CELYpDEKNJOqGg9Ad6JR8cFsaB2VYZ9dDHHrRCvDnrMNXLIjGYuV\nbQAf8nzQgLgHqfUppuvHvu+z5cOS4zQYeW70nFo0TD1QLjQN6TYLXGkRBv54\nFLThfZBQIyzL147yPRnAGT6CyrphfAA9LxJPYAmzlKXhC3Te7Ss2p7l3uYIp\nx1ZD\r\n=Oqds\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuKdqXFbk8Wv8f/GBca0Heubo8gUphblYCAkhXX22eXQIgUys+RY57UmaCVhAu4CAKDjMKGHR2ooYvHVn0vdofoEM="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.16.0-alpha.0_1539658536984_0.7902909825105786"},"_hasShrinkwrap":false},"5.16.0-alpha.36":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.16.0-alpha.36","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"e8a3ef9dc707b694a5bc1af6d430b4d2e0fe0645","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.16.0-alpha.36","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-TgKB5vXXrXP/YoRgwxcdglC7uAW3e1Wjfsg3Q6+YgqeE0pk+A0qcUjnrwSWgsYdT6vsshvKjWVaqAWiPW/BR9A==","shasum":"e7b5026bd6244f3c72ece4a4d4d2409862bf30d7","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.16.0-alpha.36.tgz","fileCount":83,"unpackedSize":67699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdA9kACRA9TVsSAnZWagAAFikQAIPtxjTQ2fQ5h/sXkmAy\nuxsK946hxO4HBiFhZWb0XiRuWMaircaViUZwkjb5pWTKn4HelFWmVwOXaJkA\nxQHcaJVrcghYQHCBmHdd+IdnJr4ffVg3dswd9H9V8HvIHafLnt126ktiZl/g\n7U68uP57Sq0L3fdwvDdzFcH+HGiKIt2qx65ZwFwRBdcJ/dGtCpdEV8GHGDbQ\ngMge9a05CFuzevtSm9XC+oGkpVld4WQye3V5GhXo+fyQH07Wb4oKZZfi+Dow\n8GwCXPNNAsoDhIGqz/V2MU0tzPE8qn3Aio8ixidQFKL//ZSq9Bzxm4nQzFB+\n99yMOAGb2B+toOqex8gqPE4tZXQlTufT1lP9c7JFUnxVOMeYkiuswAvq/5Bz\nT9psHCGcBSQXCugaWxvTAAFQ++FBxqUApLxmDXHJ5aT313S0AKXAhA6zCW4N\nuU5miTTgavPhi9ObxVF6c0322smldyu6O0UAoA5hDMXaLTnkR6AvB+6V2I8y\nY96h8+nHWTJFh7XIcqsa/xAJtAyztSD3iz49oYyZT+tNBV0BUFtsNjnr9vmw\nVfTBiFzGRdD2E9BUNgUFM4CdnG3RxXMMJylZfTdkEZJsMdHL7XA2hZ7UmgCm\nBzdb9EzCCB2BKt2brr3mDQ8kbTH57KqCrh/3Lx6CEXAtknedyOrwYDyh3aK9\nAHqI\r\n=QcFw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGPhKM8/Zzl1++CavFeAqx/XMg4T8xJ0Hj5CDfCRUqhwAiEAu9AtjsN8e9ifvg+CLKBx4wOoJRB26sNOqiqcBfLGno8="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.16.0-alpha.36_1560533248257_0.08036968640740105"},"_hasShrinkwrap":false},"5.16.0-alpha.37":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.16.0-alpha.37","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"895ab7933a7ceeb41b4234bf199b804cfb573a4c","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.16.0-alpha.37","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-JgrdswAVgEw3JaWYWDdh2FbxaDxuVrgpj1OPy3piQnU8Y7NfftDNF8xL3HdsqbZnMbjACLpM2BMIxJIQk+vN/w==","shasum":"9ca4e156888ecb32baf015e3228d057d156d5870","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.16.0-alpha.37.tgz","fileCount":83,"unpackedSize":67735,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdA90TCRA9TVsSAnZWagAAM/wQAJ/c1aZG+CmgD1T8+p54\nM3yqXke9qELpJUo2IPMnQjsy9NC+UXWw4FqZgSnmU1Ethw4X3rW7uNMQzL70\n4aMhmM11T6985aUlqIbdmeOF7r2PQZPrtc9sgBtQe5oCwnedtUW8SoRp0dHi\nHWg4bxRvqkb/S/Ds32HZ1UkK0Jgv/h6Xbiu946L8q1+bYIAPBRUmHzoTgeYl\nh7eNTO+766aRPHs4suN0mbSezhXUx0xwejn+hhAxzQvYUbDxCGDxFymdXkL4\nHGHAJj66xDeRhGZtJ8Vbp1nMiLDB7dx0z9OEzm23u3rMnBmiFR0psWLTC6x+\ns3tiJGiQrDvM80Kx95rKLI9JHaiZeEd6AT4iNQICbUb91MhTLAexXzsLzkQ6\npOGwhflikx3dz/Wa6xdHQFFXrclZGgHhtJzkiv3L2xcY2elH24FA2jA/ifo3\npIsca/GTWwq7QA28YD9xikQsc9Ip3bj8/qMmcHmMd8jcIs4VMifywkkmC0m8\nAvGN+C/rWm8zTbif5mmZZSTUUT74q1y6L3l051uF5wYwlQl6feA/D6ns0bly\nZktd2SXR0CDYSrWJPrtWBOWsDUTENG3rB29968ZpxFgLpvnOm3FZY/sUgpK8\nyrCUQkYsfAuBkj80nK5gzxbS4PNrkhqXIea6mQec1mgsIfEJa0FKAfCVksXy\nXNka\r\n=QOJs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTliR7tLgTOL9/922kf/mlTzos999O/qttNQzvNb0OTQIhAJIykjyQhgDWif+gQvIGhe4ot64AG590USG1WmgXkL5H"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.16.0-alpha.37_1560534291165_0.8788807049918841"},"_hasShrinkwrap":false},"5.16.0-next.39":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.16.0-next.39","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"6d11f11b3c36d8da54a3c03a70047a7cbc615a77","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.16.0-next.39","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-omyLiEHYWyu/izGRsHmZeSFyjlLTLCW3mSpf7qjx5y+BndvfZqnjww9Ux3Jo7TpkOT1Cn3UGxCQY3U+duAlS0A==","shasum":"1c951244664c5664e351a3f8f626244e61c011ab","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.16.0-next.39.tgz","fileCount":83,"unpackedSize":67734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdA95FCRA9TVsSAnZWagAAYcMP+QA6t9Vg7ODcKqMz9di5\nCHv2AhwqJoZU7JelGkkTm4bbvTOVc3o9/jux98auNiR+kktxGx0e1oCexTI8\n4zV255yQXGLGyDq3kZ+J2y+knRh8hJEo1qrU+vEKcWFjP5GyGTnO7wB8rUby\nOJsvwOOpuLY/nvjd5sZdCcOmIo1BP3Ie/WtaeWA5y10kXw8H8jJu/x6HcG0N\nQM/5P9Qowhcc+NQ2Q7e0wPC90Q6pETxseggqQJ9BYbzhKHUmO3jxx/zFG/1P\n3QCXMeM1OBb4qEsBXWrC6SWkS5qk/U7VD71f1PfDapaX3w6zAZJvzNbnxyxM\nvW8c3EfkOiP/jG8lSONlrVYCshZRlh4SrIFU4VIy39rdSNdP8ditp/m5WRvQ\nb+6ZP6///rHzesN+S76lf2Ax8MX6iklQDjLgm5f+KQ2uOc5DmpAc0jjrIMGR\nDHgvIMlQq8uas2Ph6F4bgxjyKY8GsKdY+ZwkSNWmhuKFgDkAKf43pPtQbDM2\nCqP30AxUSSAL700GEPQippe5eRax6pYfDBqr61WGYGgdpotkTSEQMi1BDIrQ\nclPEoXKjiFnb1kJl13vcy+cHDvpGWM+DADvNKImvGyxX5Dzt9RCW1ycylbkK\n+rOpFZXkF2E8tcO5WamO4mLJnmRX41VLBo9p41NAKa6NXNsxqdYHqovtcave\nb3f0\r\n=VRRv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChdeirMFZ3AKFmp1R4XHXjrjrmx6Mmzrl8zfFWtlm9EgIhAPFxfCN3Hfbwa01tff2dCD+OBnNUHHSrndG3BpymgWTI"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.16.0-next.39_1560534596918_0.8576267675128051"},"_hasShrinkwrap":false},"5.17.1-next.66":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.17.1-next.66","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"f8a5ebebfb43c670079d4be7c5ab3fce528ba66d","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.17.1-next.66","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-QEkU2b8++J7NlzJkrzRsK0MQo73kk2l/UrnKD1s7zpv3OkTD5VZzpQBLrRFvDFfT4v3hluShVk6xDgamF/jOgA==","shasum":"1642a9c7e8c4cbb32251c4b0d4fb48fffeab8d89","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.17.1-next.66.tgz","fileCount":83,"unpackedSize":67717,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBTUfCRA9TVsSAnZWagAAzCwP/2XaxQSYPBRZlRwjDNmT\nTHbEvuZ9d94AKSMZ075tvChGK70MGglxkAShwWn7M9P3u6lc7uRmRqQoR9Gc\n28nOuHQGLDjzuScw9zrU3OCGC7eJn8dLqgsPp2Jt8wU3DY/I0i2LrFiQTSue\neexhAdZ2G3ng6k77a2ByZ4C5hPLEX7OrHJSvfurMYDrQXeWdRHDv4ggW2tpm\nEpbdNBXIU1tgd35Sxpmufom+wEc8xBxycP2Fff0v/hXhQqDcrbAQF6smHOUP\nnQiXBLbsgD/0T1mIBe4yAKLtk69ZWDv1gfz3ktSTobox/YIgcebyhRbpRvuV\nN6SB9mbEJxaop+R6X6l+2nPW0JiGPsQU87jm/CrL+C53l7ztE906KWt8MRF2\nCi3iGF/ETjvXE59WAjDtkGywYvzSgBoI1RBh2qgSwwH/MowCev+ACfY0VKZD\n7cX5nMd1UUIwvxXwEzLIWbu+LVzxX2NzVyaL7Ha54d7TvlisZH44SI+hlljd\nSXe6egDX15npXo+yh2DRV3yvLFwNL5BBH9o2FclAji3MNuNuYVKjQ8eTBv9P\nVXYnpO3ClcpPEdM1pLATx9VBdWdXpxshV5G9sMSyvpj/n21r0CRy6Q5IIMiz\n2/+pxH7eeuHDN7lzpTrzEUhHFQ6SkOG+Yjidmx2Kw/K7dy2MJiUh4Zga58ML\nt27o\r\n=CObZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBWYaiuZ5hiEIojK8s4srw63Q+N7y3ZHX/n+IMO1iIIfAiBq14/uCNFLfQXN6CfQb74pdbey/MjUcrUsewuYzcbF9w=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.17.1-next.66_1560622367041_0.06711679767278023"},"_hasShrinkwrap":false},"5.17.1-alpha.67":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.17.1-alpha.67","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"28dda8e85c7f202524818922226da1ac70c85151","_id":"@nofrills/tasks@5.17.1-alpha.67","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-cMGJ+bhK29tD9hIN85Y67tO6ZmegyEhgrZpFfPEGS7tKEoPcBj2lzoNSe1HyoE0PV8ai5ZjBqBVs3XPdCGI8mw==","shasum":"a02a77e53416e81e063a837c58b8dae91915e2d0","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.17.1-alpha.67.tgz","fileCount":83,"unpackedSize":67718,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBTZNCRA9TVsSAnZWagAAFCYQAISk3Hj9PMhFZfrQtnDB\nSASpSu+nXbxrGj3PXEnKTqbOvzILJzR0M6W/p8XYWrXxFZrJ2vpRFx3V3Aac\nyseu1KyJT6PO7jj9iMpMW+ymcNSJpxiWMcvkmoyfxXYHKSV9uLsV5WQo2/Sc\nEeEWsrmO/jOvIA/e3vD2plHf3CCrjOlc2Epw+gcQvL4eIyo6EVReAnlX0stN\nsTHb7a1VvuZJPARLYoX4x/A48iaenCa16QQ6D7DtArhOLT9b2Eb6yVPYsc5Z\n9G3y4sP6NOG69fCBQA6A7gXdqc6RlR43weAYlbbpNLiJq+/60nX6AUX2TPzf\nOC8uTuGx0y5/+5UBaLMti7OL6pCASSVeafL8Xoql/wQ45uhXsIn2ON4RVUX+\n/jouRUdB/em63y2av+DRJCmxC0UEuQaFFM0xnD1EF9BjloSLVyM8a29b3ZuA\nwjhqN7rW2LX7gjv8HPhDTii8uQ5s33Qe2g/nhWD8fYS1RsMZ2olAMW0Ns4e4\nW1U+JI/pPF/PC++/o2Z/FSRNISX7b5Gx+pipMWxHPDfN0RDiaPFH/J3IA3Q+\nBdFg5enmPZRahw2t71Vk0VY39WGgAna47dPn77s056B7tBBsmydjECMjeUkU\nYFMGGlku4Xrvx+14v+JGnY7oUxzJdDY7ZkdspKR6UKy7X+3Vk3MZk3jqOLLa\neHFf\r\n=7fQX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF4355FKC3gPhnZF3INvwO4iai/qbMLw6jdYE8dtOC2eAiAyloIJZ1uAQWDGHIR5YQzOKtRJfjzDPChSwU7cbRYNOA=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.17.1-alpha.67_1560622668628_0.4562397136382099"},"_hasShrinkwrap":false},"5.17.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.17.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"a042569909afafa003fdbcfe192e33443bf910af","_id":"@nofrills/tasks@5.17.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-uNDFj28fSz15OUk0pYCfkPRB/zL0bUKYiwrhHc+DXD3G1AOMuOkQMum7VrL1s1XtYDbqaKXiZbxnFG2wReIX1Q==","shasum":"f2ed089e94922d694c4af030ce892fb213aa6594","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.17.0.tgz","fileCount":83,"unpackedSize":67701,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBT4ICRA9TVsSAnZWagAAxG4P/R3MBRwDub6Pm4dIotS6\nqTtTWr0se+2IIeY/wiFYDBr3raJxLMW6mprRIHVt9KywOY0YiDIJL1yEG7Md\n4qh2kVWc/QxfZJfeajJoZ5ozJ6L7ibveBxmDrk3ROYugs3LfRhT5WQoBlyTH\nVSPQOZsu8777lgvEzy96SBEPRYj153VYIPBEa16ma8hv7ouSQ7VGF3wr61KX\nJ5MYbpj5b8fm8U2uTvMekSFK/Ni7P05VkCXgDk7tbBUZwPY+xJazQIcH036d\n5fsGgjlw1vuF85ka1DltJOJM++/71T53qSGp0vJs4RbbTwONPyS9rnJMKlqb\n8rzE1gYTPQz8Za/acgIhBf4VTRsaaE8ovMdUDjb8H7FxCWg4OP7I9MAnOtaM\nmdTm7NPXSvyz1/qVRznJ6ra1LDyt7tfzVMiA4bDXNVcCoYD2GZxaCRYV6ohV\nwp6PkQkZFzY072XNCOudKCxmuY+/JknHnu5BS9mN5zgz3/uZSJFbhmHuo47z\neOmlf49YsH3ka6Oz+MK9ztd0LN8xQ4VrK7FpqRo7tf6eFeSIH6gQKA4K2LNQ\nAIaegLN6eJiiiiXVeC14qa7+4UFcq1qKLgTOmDtZfDMulXOJleePEfKZ47qz\nAaepx0nhfMyZjc0xoXZyeHK1L/sRzHF4DXM5ZCFslmVYIv/4oKpjpT3uNver\nA1oD\r\n=LBzI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrQxW2hd/n1qpQaXE10t3sQaJspkJi6Xey1wLRLDEeCQIhANFBG7C/z7+Q+wrat6t4GZQPPTbXVhGWJFy2q6fXiHIO"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.17.0_1560624648058_0.725996122600993"},"_hasShrinkwrap":false},"5.17.1-next.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.17.1-next.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"c118af06d167bc50a69bd9b1d5486ac2a5e0f4bc","_id":"@nofrills/tasks@5.17.1-next.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-HnFDNcCYy+gMhQe74kcS+quFkURYn73wsNYu64WZIi7UhwPpf6I2geAioBSqDISZWCB63XVk8fjmROEypcjJnw==","shasum":"8f0e73ed2b87e6c064daec62ea0e737048a67e6a","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.17.1-next.0.tgz","fileCount":84,"unpackedSize":68334,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBUpYCRA9TVsSAnZWagAAZ3sP/AkDso9VAUSMp5wPbuIy\ntbveEv87iSQEvwfKoOcikNrBfovH0Pp1o61W4g3MGDbSwVLI1PfZERTTLqsX\n2kpugbrDh5Z8PghB8Fdwxqt0cWOgIiL1BlrxgRCaCF9+atu590+a7mfZW7uW\n7abnuHll2yx41CAoqa1xQm3GeTNh3YVHmDWPJUoz1LNUHyjkX9MyhRKChGL1\ndb1qprJWCNOb/DordQRxPonp25Ntz8YrWjToPIrm0dZ3M54HhGPQxquq+Ab4\nNTRKMsiLHxindxWonckWYPI1WWl618E1g98Dz+pgrlfcYLTb+eCcA91luB8h\nYdLPkwVwt2eeyQrTsbAuozHbknE5B5idfoK/SooUOiAUEgIr2JxwpG8ksBk/\nXW6sjlhTUR57+8bbJvQTOJY0nWAR3wGTZzQHCmqtbO1McwiF0Y/QnKbMkU1J\n6ky7G+lYJpzaKnJwMWMqlvGMRPWDZ38A/fAjXSNm/3b8uEgeHOuu+Z116WwU\ni2SZZZ4bj1LzVXe+FIQlZ7O/tIdgTOQxVv78rrouv+TB4vQpoGv6Fk3cls5G\n0MXYS7lJKjGd8nKv6bg7Eh9VzdmzUCxxVVdOPRXBYJ5COz5I+E3Fj8BDqgjZ\n+fNq3eKEn0W9y/5HHJO7TdHHCbDJ5tSajWQBq8Qryj7B/EXmBckLsrlUAVhP\na91+\r\n=URIW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgrdBIDk4N+Djuz4GmXkX2FOiq1kDE674OK4ZPEEWDSQIgDs2psSr12AIhycs5lW7N+eACyR46twuEY9CUZQQDnNU="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.17.1-next.0_1560627799381_0.8139082466258472"},"_hasShrinkwrap":false},"5.17.1-next.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.17.1-next.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"a339eb10dc2ccbd5b4d8284f62acbae2b58676b2","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.17.1-next.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-kfvmyKevA9ENSnKtPboR94/jkHjzz2FdXNQnibKtjXW5uEV6wn1+yC03UoEMH/eRCAQwbn0tGXvwreriiwyNbQ==","shasum":"cf76164ea475e8e80ae73fc605385fbf9d781065","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.17.1-next.1.tgz","fileCount":84,"unpackedSize":68543,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBZZQCRA9TVsSAnZWagAAd00P/3UZC19oUjlQuasSTdYi\noS95u6o1JiYtTkB4cY+NkStf9Lm91eOdMIfmqTS4U0OUzZOYYH5tUuOIno9j\nvRAXyfe4i+KTgz8keFgGA3zktX25bLJ8sw1Jv8RP38G6mEPZpyU1smXAB0Xi\nWyg71TvQ8gL7fQvwLRDWfK0XHbetBA3YXJTgduVZU8g98dCNeDjkWH96qETr\niojV40GG2YFDn/wxY9/5Cd1pINnUf+two10RvvevoOCBnWshROtBLwcftTMe\ncJ5a9XwnpSexmIgxfkeJ/Z4W69xfhRht1++tDNrS7TQkG5UQLr0AWSQ2Lvaw\nstnTSY8U0Xz5XQ288coP1l+OshkEE9kq9kWNhWoWW8kPpXJE8qXIa2yI7qxG\n62LhTby8ycftWtQMdzGmncnPA0u8xdGlJoGL0tN8bLn/CrKN8cPEfu9oZOwv\njF3Qc7VSu1n0odXgu4GZ9dKstz9JHJQJMCD8JURJWgfAYHMGnYaHuG7eztJF\ncW+VOeugNGOxZZkEP3Lt+SU5QL1pFzOxlhtVtFs12jVvNXl8WDdSC/nhX6jG\n8pbJkwbkympOMH1IcvilM9/qEbbFn4izPCp8tvv32uMi2kUKY6GaOpcEIXLD\nV3PRbODWJk9T7ZQBCmxJwc5F47y4ncxLG7JDQNV3bj2G2nD9hp2WjFvkmkGh\nYaLn\r\n=FzqE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF5GiJ7fLBhtv756uZWLdi44Knt0367ZadUNwDa0U8AlAiAZE1PCt0Ebo2nL+irZeJlJkfb5cX18WTxtLSLHqMtDwg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.17.1-next.1_1560647247536_0.9595815895945563"},"_hasShrinkwrap":false},"5.17.1-next.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.17.1-next.2","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"48a02d644758366281fd297dc62a394c6976c2ab","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.17.1-next.2","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-34KNo/5soDvsbuIQEKf3xUzQfJNNRCOkYADd0qQKC5w6gxxDIat4xrYF00TXgNnEqmhb9dOi1y9bVOh7D+Kb1w==","shasum":"904b06cd376748bd4425ca2b95847f23a72fb4cd","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.17.1-next.2.tgz","fileCount":84,"unpackedSize":68752,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBZcYCRA9TVsSAnZWagAAnZcP/i94jlsglV0xJ5MHAvpg\n1rghMcsABTNwcnpbi4HatuUw+fePpWrdo97X/WBdWfETAIiD3U/RnaESi74E\nP53PXbyYXqVs/gAE9DskHA3j9wcM/FXZnH/ZboLMi2LZcAsRY7pcpe4vmKeY\nAAhUE7gvQ0ufQUcaqaE1P8dhPQVVNDFGzZMfUtWN9nrzZMapeThAD0A/oh/o\n5CKLz4TtgNAHUefxw38Qdaxm1ZtUBH5zcdDREAa6mRkf/4ZDvMoF/FwBzpqc\naoQZnb2z35z2hb19QzY8wB43REJY1CYV+TsnTE8SLl3U77sZQeSPIAuVa3Sr\nNOFwY9GEa/S/omqVHiyu2mdkE0F30vtYTe5ywlb/qBM9uba1jkn5DHJL5LRU\nPGdbXV6gV/Le/qllG1j2ODl+5sIycMxCQtUvqAhIv1nvaqZng5e9VgzeQbGB\nesptp0Nt3qBmdMHPi5/BZhXHxZzJxQ6sGnszyqArT5DbnGCjG0ETXjrMdKxX\nH/daEzPDu2GeIJuCEywTMgRYxPB4YvZs5eH0REpXzVyPxumUVHpwrilQAgl1\nt/qqJeGjY64I8E4F79H0TsP1+Ta4CiVN1qzlQhuNyA6ty+YYoyaIi43r/5wx\nnY3D4rSKkif9jCYZpvpt0MOaU0TkrQfuE0YQt3f1ZMNPh0w8abG7SVbwuHCj\n79LE\r\n=1D13\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICHrIAsfxfQUUJ1iTGAn5dEj9NYIAeszzoReylOaRfZuAiBJdVxwJf2VU4lkvunRYhflj3K6FiP1JZxj+UqNrF8bcw=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.17.1-next.2_1560647448188_0.4464526148674097"},"_hasShrinkwrap":false},"5.17.1-next.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.17.1-next.3","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"fceab3478b6654342c8ab92000815f9c4b4cca88","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.17.1-next.3","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-+U9T8NPHZvxcqDQXLsQOyDfwjfib2KW6xucvfPhkSLXMM7DzFx7PogBcVK0euhlzZ9fM5OCDBb17uSBCiUrOKw==","shasum":"f92b547e0815319d390118f674d477c1b02d29a5","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.17.1-next.3.tgz","fileCount":84,"unpackedSize":68961,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBZhECRA9TVsSAnZWagAAGUgP/iRhqvCzcsBqa+tvv2Hf\nuDtbE1SKE11tWA2Ekpp50GvDOGtZ0ZN48qYDuJ1nDCBM/58RmybEpS7a9zLw\nCELwNkU0vMQUFt6zYFQeBkMaSvgog8hJle2DJvj/j+c5sJ37PrdP5QRw+G2F\nDlZ9uboOALHpW+5ejhl1Ps+Rtb5UCKQ4hjXl9hGpcO+xG395CYi7KmnpovFr\nXNyafau8agHp+wpVfLnAqmA4cfv8cjfOPTnO2vyRp4l0UI60Fduho2YnySjY\nbdTDHjlwp+U6r4w7fWf8wARKlm6cJUekZ+KM0aLJFc1gkei4l/DchbT7HkJT\ngHCPHIoHob5e/Ph+jAO/A+aO9JITaolMGMbE6bNPpI0u7xYU9OxNUsnhRiuo\nF4MXJCFE8lhkt/RnIK6jwsIeBsEQYOBb6Dk/BE9f9hcQbl+DcFn6xd0ZsU0e\nz8Yf/NmwkIo1EmPikzJdTvpYSd+S5aSTxWfR8JYnj10CLVzMSak5Je+X4ZtC\nSDFogZJAMQJNASCcBmsIDCa/ZjMFsmo/WEtshG7ehHRi2f+6kFJgWxmjApd9\nOM68KtlCHkhLMGcDhKSNhuUgCrPzZQumqtqPFpD3BV6SwMlrsAIAvxzw+n5O\nKtx7NH1vv/UVK+NnI6jRDeeOQCLIOfIzZa6do2OkTJP3/idPUXTZKY/t/WEd\nodIs\r\n=d++W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICJaAtD/KQ7nUH1tRJ9fYRsFeO8BDwqZgG18iQoX3UiEAiEAsuYSjftvwlun9vcqiNxffwQDLTomrHbFeK4Eoa/SuEQ="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.17.1-next.3_1560647748012_0.6137306967777996"},"_hasShrinkwrap":false},"5.17.1-next.4":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.17.1-next.4","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"c4919e7d3769416149131d9ed016b72aab144662","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.17.1-next.4","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-doxvOdBMs4zlzrX3ZwTDqolYdvOPJJLgRpSr7mGZHhPM1cWtEPcLoRza+LTnSbw1LnYUTphq4BtJTUZ3JeS4JA==","shasum":"e3b87bace647552ab7718158100eb02fb79febbf","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.17.1-next.4.tgz","fileCount":84,"unpackedSize":69170,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBZneCRA9TVsSAnZWagAAuNUP/1CNgm1egRKJuL837+kF\nqRglJzol/Zb1RFTa64TiWW36cHymSEIAPwC3ls98mOKLuWSGKorlT1Vrgx/K\nh+ny2txyLEkxe6dWPKWHSS8fLtQOrdw6nWTI71OGZAF1+dVMRaV57DT3czYr\nO2ICzw61MXGJDNSwEqZQuSl1ZciI5H/UrRi5kbPKXIteIc/4KJBQauU7GX8e\nKbMqvAwW3U35YQchr9AaZ8z+F4t4QtQ3XrzmwgArIaR6fcUQS1kv9v6ke6Z4\nf8Ga4pVcUq4wSDkKzhObTEpgqq5G6Xfu2wBnhc6ksodSynWTGu7+SThVCOzL\nQxGF8IywcoSTy7utT7c3ZA1GCviHiZcit51ndUO7bfUfnKijIPzSy3YvBkI/\nI25WuGoUgCpXH73Qh127ol9xpZJvULKJ5puvv7FK0f6n2T3DTQ8CN5PE3U/f\n6O43SEzkSWsENUo03RZMefQ6HQ7YqGCenXP3MbpWGCW3Y/3euYoq0zDYuPqM\n4XXHnvxoDRVyU4FQhzlZ4HSzuHQXth6utyedW02/cndkSPIX0VeUnRJgih96\nZyDoE/bOQZSGF/8LUxvRZd1m7z3HZMsiUnIM3XZnrTh0AdasE4CTOHlxVRbK\ny6n2QJQTdBwENkfwtSy7dq6EVAgkeewYr+aGedtPmi8aw/2YhnESKHQvlqf5\nglEA\r\n=hxO2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE8Ruf04fhR//LUPGFGEfuvjbSKGSAd9p85Ul3LH74FoAiEAzo/1jwqmyftAMXll9LFna/Xv2pIVPlaYwUPvuTrwEN4="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.17.1-next.4_1560648158205_0.7818990266347967"},"_hasShrinkwrap":false},"5.17.1-next.5":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.17.1-next.5","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"d51a76c7bbc0b1ce31698f609c83f9e79533af94","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.17.1-next.5","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-fTAbEDYl5FEuXZy6Nj1cisCUIDk8D/AC2hHIbEBxEhd9AiBaWN2ddCUXNXRk3jlqv2rLTTQprU4HTJqXXqTuKQ==","shasum":"4bbbd0e96270ed8f3f5cd7e4a3b930c7e3fed4d5","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.17.1-next.5.tgz","fileCount":84,"unpackedSize":69379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBZqGCRA9TVsSAnZWagAA7NMP/1tDCvqBVWASebZa/7kV\now2YSdsi2slfcOpJLvP+ZnvHNAFD3zaD6Bfo90BD+KbVyjCHaJGaSrVEFIhp\npfohLvxC808WrNktFimv4tB2ougO+yD4uMbTqagBE7h1psYLwGmfXBwGPSD4\ne5tnjlq275o6CnNzG9t+ni4IE8UAYfi3WoAvnzherE9PMEiYna/93fa/LaCH\ncM6WQ7craIhjP128eVi5gA15f/myFOqoXVQA6fiDKVDFU7l2VSsrLn55mfdV\neP1nQ0yVmZyP0Yzstk9BUlh7oytNSjKWwZrVkPvg664kPordg0fHlxNx0HXU\n4zrqgsCKc0tT+CCVgkqWF9R62qnfkYCY1kN487TpE+/5x9JMoA5HLlpI8zPB\nqaSzC5bR0aUaYuiIFSAOMh/p0uhnTQqxB5LZzXr6ixBefMKoB1BgdK9ft6Sv\nJ2VweQ3W3+mgkJK1VLp5Ye1aC2OkwzK2stt0DUXg/98EdGHnwzaygP/kSmMo\n0pQ0SUnU6a7ON5UMpns3EaJAnx+P/KklIiCogsTbyNZfXRsydFWH/zJ+ZxeV\nnzLyg1+LehLdx9Wva18Cn8pmH7sZXuBylXP+eFiNLhkDyzskTJa25onKbYu3\nETw13iP4ZZTYIPs/XJe8uMHtogLbk5cUbGnA+AGrFsNd3VrmcdkSq1irLG5V\nVdQK\r\n=5+wU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHHiVK3IS7MpWuUc4ezDEhd6I17SHZs5ASQGi4noVBL+AiBOeqlkQZYu5NnXSlHlhkcWCAwOcyHsJgbFAbLTJTM5Hg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.17.1-next.5_1560648325705_0.9486632422916415"},"_hasShrinkwrap":false},"5.18.0-next.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.18.0-next.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"9bff41b23e8dfb0e09491f669cca74928d505ddd","_id":"@nofrills/tasks@5.18.0-next.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-u/rCdN5A1YqfrxiUgo56cxr/fN+7ZHaPFFt39b2NHwVQ8mWqRpI7EvOd91Ip15e0w50z6cS4tL90XE3+5keV9w==","shasum":"b23e3eca889ff0c90497208ebe50fad297878329","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.18.0-next.0.tgz","fileCount":84,"unpackedSize":69842,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBZtFCRA9TVsSAnZWagAAuCEP/0JF/9F2UdiYa2wFIGX7\nud/Ua1z52g53RkLMV4f47pSOKBffVn0/D42T+5nBiY78Pk6GPjzqDNvRgzoZ\neVCf9cdEt2xvinOodNaHDlxB4aY7mbyDS9tt1wHqyZXATVclC9n9GApgpnw1\nA4gzOuunI87JH/id+lunUtyrsJjbx5oTtL/WNfRNHh9A+Tcjm8s9BG6+0ekr\nXKNKMdp1ejDomtVRBpc3wijl1VXQCy2MN8xnBLz/2f7dNRBgoEwXW221kUzn\nM2mESgHi7L8/IMR3T7mHqt5Ep4DnF9iE6T1GQ+52nryQpPyFpD/uKOAyimGr\nU+4dOSJKob/3JAh6iTGQF/gIWwGTKD4OIvsrxmHLanWaBTHt9zoesJRIlJO/\nMlyuBO/22xrl92KwrZvp4cKhQlfmk2Ssq4UGLQt/sxBx+49hZe9JV455b76t\nANUp1537E7o6FeeArQ/PQuD5F8IVf5/1T6eJ8NXj90TOnPfsEN3KcfI5z8Cw\nm5zxLsOpn/7pkEm4QcW632+Pp5gPj8RmJqxgj0ejm/KocnmgnmWFDPG40cTp\nUuZ/ELJBnfbhrfO2+qkLvWb7Vel0j2UZ4OYy+MHrpY5DQNPkDaGOXMpp7cg7\nu9FNo4z7xJSVFPVhbeeWzoZktEuJKy9RSNP1W1AtXvYL2jjWvzdJYFI5WKQP\nfA0T\r\n=63OC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmVjh9PzbQTSSYHiKwaRg59NiUm//9MRAVtRA1b+LQTgIhAMf8dOaLGVJYlNBNpaJMRog4+Bn7bUpBeyIegtlHDJ7Y"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.18.0-next.0_1560648516514_0.45023278255957133"},"_hasShrinkwrap":false},"5.18.0-next.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.18.0-next.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"b9c283197a164f5bfb38e5898029bb2657d3576c","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.18.0-next.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-vVWSwj6QuAFvxc3m+RPrt39uwFkJmbRzKTm3Qmx6GlYsphNajvBQTuO9fw4yfgNkgDIX2sf39NDzgbDf1arV2g==","shasum":"42670325b3492dd5e17958c877c3981bb3decb70","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.18.0-next.1.tgz","fileCount":84,"unpackedSize":70050,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBZxjCRA9TVsSAnZWagAAT2cP/3bCRcEQGKvN5GnujLxL\nX4RCoRLoMl0n/P5/7KpKWG5j32yHyFW/+OiPay+fv1O0fCK96y1oxPzzgm55\n8rhiRmeyThbe5p9ukWKrRU7YXPoPGr3FXLJQGTx0pl6dR8zcRNl7zrFYzXNg\nbi61gyh/DoU2fA2zkTIYadtPyVeiKsjEln1EUaVXXQTVnygnE/RiKAk32Xlt\nCJfZBda4euRoq1rqYoNb8AhMzMO1wD/ReJd5NiwaIo0XL+l7XF8r0xx+Yqlh\nPTOF+B4z2QVRk7GM3+w4anE82zhWfoYPEX0OPGHFRD+ZAR5S/NlpHngtvzsm\nvuwnFIBB3mfeOJgcQT7TRP3cQc/HFZzCCw1qYC0bvIvbGkWx7evbNAZXjpGT\n9jFgOToe2rVQpzUOpgTSfz4FK9TB+Tu34CB1c+8VoDkrtZf11RKsTUttEizA\nnIxwdu5ZJUKqve+G4EisGc+ITX7nQL10zhXLeBJhG0nMo0WI2qzjvMDSw7md\n/YFY0gRoF3m4eegDJzmJHX13xN048ikKVgY2TKUc+nKndSFq55A/W0XiIcSr\nEf7IYld3w7IxlIW065mRlwPjDjOj7tnt6snwZHIYbfgj1syuN8K36I1ENUuO\nl8moXemnvp0uFv43JVrCUb53kR+Nivf8EGuOHBBp2F3y1rRQmIBcABRdD51z\n3q+C\r\n=xKL2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDansRJmerIIV+hZlTsmOBSRdYoit3DbVAUldTXo6hBFAiAXayanhXGUbU1gcK7XBeKZC7vZHK0LKnaSsmfzOGPC9g=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.18.0-next.1_1560648803297_0.8492722835077859"},"_hasShrinkwrap":false},"5.18.0-next.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.18.0-next.3","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"590d34ad197db32b344309814b54258263fa50c1","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.18.0-next.3","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-rEtHax+wMDguuV70jbMlX11oq2ZdT+KaRiMTbqyMLHB+9ns5St5mO4IHXNPgYtQYY5eQYEx5SgkPvsYx7lPyNw==","shasum":"0339a821265b0001e1e92ffd0b242f8eb6020dab","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.18.0-next.3.tgz","fileCount":84,"unpackedSize":70466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBZ5uCRA9TVsSAnZWagAAd9YP/iXyMKw/3XIha0AeN2fU\nojkp3FSwdTO6bnPQJ7iBuX8wEQpVyDRUhuEp3zhiFyf+cYHmQ2K2cxK2pGkv\n80cSca+MuBMUevJv7gaRoCbI3ASyAmlCRJGXxg7kyNPFXn36gP5TV/+vvVgg\naTqmMloCLc2lSb+5MDD6aCyCB2Ro6dM0DTVU8WuT3X2t4MysTpt2DKAOdbmR\nkpvu5V0OMUIT4ZX3fIovmMPmV0uv8DSU/s05ujr4nslfrhjnalyaDLxxLVOc\nYxxSczKk85h/qppQPKfTKHY2rTL+CLGog2/Ug5mnHXiwN7JFL1TDCYr/lJWB\nHN3eu066FVELeBNifue1hoabyX+WmIBF5GBq5g/rw95ZWnkm6Z3efM6/nLxv\n+aoG26EMjUl5JjkSFVGGXVakaeoQnlQk1ptHVM67JbFDQb4ZlkFDl7c2g4oF\n0mYEcxrJH5mDsuhuLWUWWH+ahJztN0cvdD9rOpL3Mikve4GyVQYIoJJUxkYq\nxY7CCA3RgHeWF7JC6UIHqQ/BEtPNZWIoSJA9V9MGmGZNi2C1PDIluemOXvyD\nzv3jYB27v5amRPiydFuhrGVtB/06mwokvFYVEYfCtBFYNgUKGuavPd4hcsxq\nQXpt3R5wOi7brvHb/JW5GmQOzpR9eVyZXPR9MAP+LB4OvcIILWg/UgV4MZzZ\nJmr9\r\n=cRrh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEhaJyyVptB3tHoSnU9dmHFrp8TotowYgykdexVVLZxEAiBiJBCVlPY1CrrMx4N04KUS2e9E61v/xAqHyIxU/BXcXA=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.18.0-next.3_1560649325531_0.4686561308254795"},"_hasShrinkwrap":false},"5.18.0-next.6":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.18.0-next.6","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"5661b868221ce9f92e291dc54e2df7b4bc2fc418","_id":"@nofrills/tasks@5.18.0-next.6","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-LkUwmF/orgilMbUxyMyXGbiM9Y02PidX1+f20dDeS06apIARylhLYodKfsl9DwWWSD8dKkKbdcUUT4qSl1M9IA==","shasum":"fc7bca055ad4dd024743c3821609ccfa0ffa5680","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.18.0-next.6.tgz","fileCount":84,"unpackedSize":71090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBaJ+CRA9TVsSAnZWagAA/y0P/A+WOQrGH3aR7NTXQepG\na9OS0ESqWtSPYKIYmx/3014oOuiGXhOCh7X8ZqiM5sgrWE/8Wpd96J41FxAq\nZHfdv8pXv1ZYtOPI5J/67XeyjptBeDhulsioBNm5mvr3G9Fm4yJagmwGdYki\nEnxpqcQult9x5vzZWvgeV5ib39nvUWDnH9keWgkGd21gY8Pxeo1w/ubofjI6\nTV4TERVTD9hprGQO4B2FsaFN4Nzw2SpD3PoSYpU2sLJDq5I4ULmNh6RKR6RE\nIRb8gqcLK/Rzy3en/h0saL0irlmJ/mnm0xubpY+APeJv9rsYHLCyfwiObybm\nppiq37KoSr5xtFbs+vd5GmKFz2pWmXhPiq10VKGlnLaYoAzM3FRIwsG5SExR\navBEDriomb33+AvxDq2UaOug/ck3KN7+RfU18hNXJxZqUzLkqby7/FpMa85S\n0JkNkwF0HwVAxfgTli0+opEULPdcmfGFgTrCMbkSqny4A9vq3VVPVdmREQW7\nnX0gfjFb0NGgEdTK/7rHGxKxPdReYvYatvT70lTlPcjCS7AEBAzl8/M2Ccub\ntQVjKIFc8W8Co69L7fgAHMVOFUrbIURqyKg4d035IbWxmvbelNJLuL7vI34w\nXUE6Vqy1oa8uVU6eg9Km71yRSKntELycsbsJ+ZZiGwRYxKSFuQaB3FtP34gS\ngo5g\r\n=HTPa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbXSsSEief89rSjddWzOLwF+61DK4SAnDOTUFEcZ7y/gIhALcalj5VS0sv02RP298WQtDDyxF1FJE/3lzwqvsOEtyH"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.18.0-next.6_1560650365484_0.7041910050860964"},"_hasShrinkwrap":false},"5.20.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"cac58748fd63ae4e72427fb72b64bbb2de68bd2b","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-BH6x03HmEWVhORGdHCafs8KMAQdj+ftZFN652bQsSsQNjPPvZWiyleou8NXxuX+yuC+8rUOyQfFT0WpE/hg3pg==","shasum":"b87d510e3763dd13a0b1dc3318f250ca82e01a58","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.0.tgz","fileCount":84,"unpackedSize":71143,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBaQUCRA9TVsSAnZWagAAB1wP/R8jkhXqEglBXjzOVT20\nrkoHXu+wwXRyHA0ia9ZHUycZFSeL9LSQuq+W7jZXZ+xvmPOtmtGFLDdaEP6b\nVDHva+FEclP3l0ewzFfPWNaN5wvBwQKhmF23c0Mi6we3Qdvd/pSe34qK3dAK\nwifCYCiNUs+HqRDtgFuD2eO97GUxJaJCQu+9KYky0H3j9m7tdJAj53neeHI2\nLnkKN8Ufp1pE3UAoBjFqScZqQPKFqNEJBTJ3CPpxtJsX1hK76ZoLW4x+AlIx\nwdKoMH0tMmur7/xF/E75GSAxTAtm0kaqRFPtO+VlCwtFKLl+vdgU2+HmC2EP\npWuHA77galzaXLDE5r+TIunW87ingOJcLUCEK4f4UzWo0F7wfjcyxJsLYqdL\nT6QVe13d7Q9mC7XHL4SebW8VWY6ZP6kVbf7SaevAsvY8gZsajv6dinmnUtnU\nTs+HTMhaO6npOo7xo/PIyAnnERVS9hw35x5eogij8nfe8Lgrw9NL2qTEQDT9\noT/7SXf+uGfyauSZFsGFxeN3pwXlb766HdCzNF2iSRPfebUohUrJqIFlzfks\n/phT34JdFrFIvEOqTw3lDXr/Kg+pGT+oftuqV43IzB9fwiMk9x8XZQgMgBRn\nX6QUhcZId3hVUMEn+SDuipOj/yUA1P7AewM0xIpRICCcIF1kXiSDdxkGQt0b\nq+Ao\r\n=Hxgl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAfsdRc4yu8dKRRQs6MUccmlm+mFh4x4efCtGyODmJJQAiEAt33wcJLFLwQ+eezSiC0qpGTg4tMutYfkbi/qCPXqWDE="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.0_1560650771350_0.7397345310631447"},"_hasShrinkwrap":false},"5.20.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"aed6bfb02b44267c5937c858e94fccb76627350a","_id":"@nofrills/tasks@5.20.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-FIe6AB9V1EIY8vNrAph1EHuVUJ7G6/nHKpNLcTnmsp6i0qlWD+1G4BvpnFUIaTxDGxfFwX02+t3J2Yc4TRAp5Q==","shasum":"17e4587353537020cfc4edfe4666ac8d28593e12","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.1.tgz","fileCount":84,"unpackedSize":71331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBaUJCRA9TVsSAnZWagAAG+cP+QB+IjGXGkRyPspTaWWf\nU2pfkLYhB6KWIMYB6TafeTBWuBnrgf4lZVSinMxya45xdG8it0NXovJDFixj\nIh/TjeZREDWsl7ZOoQToKjnEOGP2SIUjP1NwOE1Y4USxZAS3Lq8XAChXI4V/\nx4YwJTc74D7zgGzyxli/S81c8xPWbT8IKKIIt6MxzhpyVYaXxVY3nnXQmViC\n7G/NTqvhnbRWkRuHLmOab0r6xGsTGKDZDTmF3+l5oa+6K0LROgCQQ3CR0UGv\nBsq+l7kk7unCRHPQ56l9e/Y3j19gQqS0x9hOUTKHsczQR8u/MMeksbEXTme+\neHs8LjXVVHetsRfyeRUxONKsiCUNIETC0Scbo9dYW9bUGZKYL9S4vi5oSfAR\nrxEiHkviq7HSqjQ1OYzr6wHHbgKYEHwBd/FiI625/FzfHB3vEP105c6YfC5G\n04YQ7Qlg8ZryeHmcL96K9Q2yfIMNsCUIV97dWkaGliNVw1dIi8fIHfzLnOte\nfnFcMW23muDdLEsscQdYVJ3XKFgWZukFu/67JI5KjdcEmISBSU47B1pSQCWe\nEwvv8YnjJv/ZigGyryOtKkKDnAqYT+cdV7kH9eDmNFiM1YUBb9X+ZWZG0S9d\n4QzRMqZt6mRhKGKl+vaeRcRYHYhVL+wMot6YS6+USBmF5U46tVwx9JvV47r7\nyYEP\r\n=g2Ub\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOyB+awhqMBtJlsEyPr1z+ZT5BhP9Eix9AebYTQLsZNQIhAIyMnJ+Gn1S7EU86cbdTnnQplmA8aWyUFFXv1IaXIz5Z"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.1_1560651016700_0.027835977941139678"},"_hasShrinkwrap":false},"5.18.0-alpha.5":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.18.0-alpha.5","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"88cb68657f02f0db6a90e995adbe401a39ebbb0f","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.18.0-alpha.5","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-xpLgljA2+L6A0/GuS10ORbA7R9rmBMLQ6zI5mPF6KaB6mdY4stixyhp+xs39ghV0loejprmzjYsjXHMtgAkLqw==","shasum":"37daff3ccfeb65e9af4756ac979865a905b8da0b","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.18.0-alpha.5.tgz","fileCount":84,"unpackedSize":70643,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBaayCRA9TVsSAnZWagAA8xkQAJhhPoJzQZ9ZgWaGfHfq\nwqbaULHz0SWCa1PQ20as1lyNfmC3EFkZiUn9rbNcnE8kjlDNXHtF5WyQgkhJ\nNgnEYdzGG3VXLutntm980riCiaysYxwQVCEk6Ilfjceo20xHdt/TGEYK2Fi+\n8o4EEeQzeaokY60/yy0xEw1kVtK73qur0iMiYeoUh/Xg+SObaE4z8hO/DCbp\nfP5drsv28UhMYg+bBKYUfZ5MfGzSOpgZtdetbN3ngWx9/x2622OQpMnDhZhC\nUS/XobDAccmCv/lK2jWLkWHeebpL23lg1CHalgiWz+FxEgM58ktQE0/Gvgyp\nH4UoU64MCDIDULszLNL6J5anv8gXMzfut+BingqKfib2mg/cPoPwJvXPMozC\nlxCUgPMnjVz/GLn+iJjpFVoIAhhyI1ejdzAyUQVjAJKm+7VCvQAVT1vueWkQ\nzB16nCV+ksybtVWVWyPck6ifgkOhwfHmFgvlkwTQxKvzdc5aUu1EW/zfYd3q\n2OTU2naFPevYzD1nWqwLN0CA4hDqveW7F+AKpmucRSBA9Q9SkqQiM0b3e3ae\nf/OKIRfYcTL+xsk185x2DF+SjdYo+ZZEH7eLFzjtSEGfLtZKsUcxdDbLgxSF\nZ/yHRC6NFc0kY2B/OvKleDhu8t8OAB01cRjLFJSCqlCM4zgsiKOx7OQR12nX\n5dTS\r\n=o+ue\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8qZSY/4mfOJi5Y8Dhn8kLeJJXdoMNYyIA3Biwq77tugIhAJ6LyF80YK9Dkaxxui/b5L2mLWJ1Yu2OWfvOjR6sBNiN"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.18.0-alpha.5_1560651441582_0.9900280480243864"},"_hasShrinkwrap":false},"5.20.1-next.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.1-next.2","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"6a65f50e809186d0306cb5f8bf8f968a9df659d3","_id":"@nofrills/tasks@5.20.1-next.2","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-lpJrLKyS4+j/uQbel6BqV69XVF5IGqf27wVcA8pYKjPXlpq+DgJSL+cvaiGv0DH2VEwTL01+PqgIYmcNrKN6cA==","shasum":"9c272520e6ccc379ebb5a0bc075bdd3040bd2b74","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.1-next.2.tgz","fileCount":84,"unpackedSize":71581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBanDCRA9TVsSAnZWagAAnYgQAIh1cg+XOvEWujCFauEF\nj7VfmrVW8E/nUlGDH85kQ3GfGuqt4MztPeTeYWuoA+dFhcB+eDEyUJwYOCmL\nJRgjTrZgXQToIxxzi/s+2i+i+pao0c3pUb+1UtChj/rdss0NOuB6B/MlfLHH\nxM625EXoqpb4/PuCWEFY+oRnJAf4HiThOzhAq69AgXPyVIT8DlA3+5p13y8D\nO3+r8UBu3aDwn39ngE8Tv21enXat5PBFBZYihFCEnjk8WMtHgTkppQHks63/\nVPj0FjPdw3fluSiIGeuVLPC8sfADWfDM5Ffy/lMhMPjTKSWtS4zFdarBI2dS\nJ5UuH0xThHvFcYcNb8ob9oWf/YU+0+x6Qq3tYog8/J/qnqkkIhnfnSGv6skn\nWOPy1NjhHxkwu/EdA9k0XgT2h01cVUPQZeWl9JM5nVKVi+WhZX7lsfpGL9oa\nomG0t5mxb0R4FuRiAGQmO4buqruix3WUX8TO0tznBbFvxQtPz18Am8UIKw2W\nOS6qY1Z0fQBzBR7lqcrU1fVjDcxYwUEiPphv0QRWq6cCtrSOBW0pYEoUDD9V\nGoRp7y6MPt03gprLWsCju7eCxceb/H7F1rxnrOzBWIK5+a5iYYZXgDHEA+4w\nxjOV1N6Wrn8cMKiPsjocyFp6WTY/oTShN7s6APQhTJoa0mgxNxovgiJCZ/hh\nsvcj\r\n=eItq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4Q8F1ayUkuZ0xqu0iBgfigpzkfCbOOcaUIouqujNLJQIgfi+kk6flOD2y88BoooqG9+5p++E34MyGM5tRgspXLwM="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.1-next.2_1560652226553_0.8429175197468646"},"_hasShrinkwrap":false},"5.20.4":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.4","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"a3f225743b3ff8e5548661106817d3ed4cc710a4","_id":"@nofrills/tasks@5.20.4","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-chiu6FJgNHsI+2cLYOp6fbfxSAdpXWZ2nkPVodD8OWM/Hx2FcauMWX1wdewGnK0mx00QSYtxjhspt4aZwoDa7g==","shasum":"f1d60e9c14d14c530fc3750e178422d45846af6d","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.4.tgz","fileCount":84,"unpackedSize":73030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBblFCRA9TVsSAnZWagAAW2UQAIk3zgW6FPvKybdiTn2B\nz6r3SVIj54U2bqbIDfNknZGDSpYUIpeICeCOS3urqbtJXJ0Cxu80M10vrSKW\n0tqN25NAgSqgMpVf3gNOaUWhcGikbaN5lFJZ7k+dBVlBkIf/TT4Kr+7OAuOh\naRxJM4ELB8vfQ9supkFKaO7Vwj2LlFOOto2R6ox/a/THtrUIxWCr/JHV95Ct\n3T+EKcLXOihRT5SwUfSt01z1npBwsWjHgwTKOnyts4HstaPtEaT6rxBNYt7b\nNU6eFilhbf5bhRVtdmj05fRNFMlpnloV0K2DplARdZaahm4gH5VYzPX/BmKj\nvLJO1SpEdK8KjlvlS7kdASJlQ8FhVgHfcpvgmv7CW2QryaPB/9hv2U+SPBVy\nVA5NtEOPmxC4IWFM05Z12OwWO/34bXIMNHQW6foq7XhhvnPzapIAVA7bjDT6\nMN3Ki/MahNO0dy1SBnvMDv/M6tLdPaitzyZFQJZe3w9K+2mkmB8JINNRKjki\nLEjtp/HVRpiE9gvvYCQLumUYn3CvkTkR6USQVii3fj5mCtSrdNvHh50B+98u\ntpwyjh+gJLHLs7emsZ62EiZT1fNlTIpGGw/V71iFjBbIMWB4g/7KArYeT2j7\nWMVl+TSjMe7A3BcqkOl3szdaPHqbl/gd6tEHO91NuOgn5lJOfGBjS1eYq8Zz\nBdfw\r\n=Xq+W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwObf6eQ910UcUrV8uy+8gimz7Ylx8boBzsP9rlhsv3gIhANnf2//4SXDyIFk0ccVCRYh0zNb60Vw9eMuODQBHvJpK"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.4_1560656197171_0.2858662100225735"},"_hasShrinkwrap":false},"5.20.5-next.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.5-next.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"71c2392a5a244bc4fcf3b081fb564785a53b81b1","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.5-next.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-ItLUtZEDbr+tIp2ZZK614N5rEYXP0iH8sFV304dW9l1tz/KLzcTBbrnpsyDaUTUj/8DMkNKlHv9tTUXDHKw95A==","shasum":"b590dc08f03065f01070a5ebe695731e38c1fde1","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.5-next.0.tgz","fileCount":84,"unpackedSize":73037,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBboACRA9TVsSAnZWagAA8gQP/RreQxGRus0bhtgxZ5Zo\nb5Lh5Ie1IPmuWrJzrqh5EemGLbzKooxguwKEmQVf09IxT6/dDJBBpwZ0of6M\nQ6Q746sm1DMS7gyB+FZ+YxpqtR2wHI7d+xqVjCmPN9e09F/VKVLe7xCWZZ6S\nbs8PcwHirAtuUIdDQ8T9qPA6vHyV+Rn/l6D+Kwepm9EMYh0OeXe2pj+1E8W6\n/iaGf5lSResRckc9Ig5CpGZ8reCwdMHznEDa9gYOFGiBAfdcvFm/WPoBMvnj\nxhUCPnXoZyxUB8MEITT+veqE2qZAsrYOEAN8w211jR+BwTyvUmPsu/WSNkeP\nbvAYG5LENnr547Hli9D8jFcgCIAmwj63n10SHwwSuwES89oorffcGM/zOZP7\ndeK61WATNY7iIX11O3Cpopox85oAR+95eINC4djunTnPSa83Ij3RQrnVz8Na\nCUVGup+Zu+sQ7N5eq7iFPXcJ1bVe4h1moTxXnyp6pDClmqtJgXCDw2xggScY\nTZ5oOjqDz77JRalsiDN0DkUtV+XieeT433ss70WvhsybNnwycjqtpIWLlqIn\nfgW+t0Jj6wDk4p6ThKvq/vJ9ZN0NczdMbtRCSV7AanEAoLFjGWraqpi7AoF0\nJCN/2TBRcKujh1ootjVU/dZvgTvukFJ2F7AicViK0zMIJ83R0PKCkjDsE6Bb\nt0Du\r\n=4qDn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEDMdLmZ0nPRU25ho2U2wulg5ku3F4zfCWdGiC0EHaQVAiA/XfrxoqcoCgYhGHxTP6Jmov+hey4f1Cfcop/fHGR/jQ=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.5-next.0_1560656383888_0.9989965439443897"},"_hasShrinkwrap":false},"5.20.5-canary.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.5-canary.2","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"fa16bcd9c4044461b630978d1ce94ebaa2061340","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.5-canary.2","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-91SnniuI3xgv4pwsrRg8GcR6GRpT2ZkJtW6C9gyIZn/POAx2PXaGmHbGfYKjmo/FTF/jg/S4tNWZ4W4muqbYug==","shasum":"aae17b4d3f423025f698bd86c9450dc4e746d49a","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.5-canary.2.tgz","fileCount":84,"unpackedSize":73047,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBb34CRA9TVsSAnZWagAAwVYP+wU5Uxwp4T0Vn4OHX2FZ\noPxEXzN26aBoC2F+9CYvgfJf5oO/PzPhcaC27TmNcKtQcme6TBYU6OLdjkDA\nZVqiONYMlcc9SaiYvtQeW/aBOY/itnn2349kCnlo/XQfiKbRhbL3TCRDGVuK\nTY9BUYZRlgX/L1Nf60emPyzK/GLmSLjePcGxeiHUuRZcTvRhnQv4aVl7LHXJ\nalm5V0XIAzfj18AoCx2qumvH5fDUHO3Z02INoTIQOiDfShoJvnXQwovM6rTa\niGqapr11NI6RpFLtivqy/Hskl/WkhmAo2G4HwJ0VS2ZWaCog9Y4u87UN4MGi\nsvYKf0e3Vt9AwXBHB2ZkmTLrYb/9VYI7f/SsYnk8Lw+z5GD6YIe/9pvKZzmD\nh1VmyMJeQmPGckYWuVHtHyw/+VCfTnsEHRVqSvuw/uPH4/+DvxGrQAJnPp2y\nyos5K8HWDRVSnqB7K+eERbU0o7/Opp5k0oDZ+Ve3a58AJXBDcnk+w1sC46+7\nBZP/SoCX/u5HqPpoj2l6T+YEDT9FkYg8GRkvfVS0g0+/oSMD8DtQgTdEE8Jg\n3S3iM7JsfVbQTLn6QFvpzFQJJ+IxPBu9BLxkTpW+t3y4REt/b6YoYo2ys0Vm\nJOePtplH/9em6REJmdFULi0BCdxTQN9qGzY6lbmfrM9v4pLBOrDMXZ80TZ9+\nAmus\r\n=ty4e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHS+8x9yWukLMoPmOXK6a1KjzpTGfqioGN+yadmsJUbQIhAOT+aTUZMJ1kx/VmJKQ5qKCJEm1niK9D95btZMSTH2/b"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.5-canary.2_1560657399522_0.8303364116228351"},"_hasShrinkwrap":false},"5.20.5-next.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.5-next.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"71c4df163a51f6c2111ac89d4a5a7cec3f69911a","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.5-next.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-VG0WJPIWGAf/i3CX88IBD7knN3fposuG83LhwVv5R90yUaGC4ulgZE4b3aWJtmQ0/eJvXI91LCp8WmlrM1Qt/Q==","shasum":"14bab55c71930db5148687d338624aeeca288b68","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.5-next.1.tgz","fileCount":84,"unpackedSize":73037,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBb6SCRA9TVsSAnZWagAAeogP/juLp4IJHvfPgwS/O9zR\nUYmMA93FZ5THFtgofqVdM2kDJsjN8e4dLsXvsRUB2U16GDGJPzz1+qe/juVt\nq+gQFsYYN9qO1vhE5IsFVDE4aG0C0StPD3PZsc7qbbhoQHKrcEGSVsutOwzL\nLTUXiumpYT6iMcJxTOVdf25F3iReMeigH199298CFVYxKjtDAQiBKxotlcF0\ncYmPjJjb/7IEzn+ECv+p+R9uF4q0F696lH8YTsz6KnshWxd946bxIPLAvJyx\npHHIyy0hldzuDuArD3T4OKQbmuPhpxTrNIMZgsxyWEm0e/GQGTNfu4LbuTm6\nmqru1nlcDoBVd4tqVjZAAKndQxgeoGZNIELjsU+LvC9XOFM7gHd5KdhLEIAS\nuhLK7H4QSw0cqQivSbDhVQlb5vJu2KAKxdVkHGQlfAVr0VKpi64YaKZ1QsjL\neaaiZd8F1p3na7DmgOiTmnCOhE0wS9kx7jaUaeGDy1ks5ZLAaUAVCcqcL6Yv\nitcDx9VkxEZDucp9kchlmwhSzLAK86UJc93ENiXu2pWUi1lirto6gQ1vxKfd\nn/7IMeOiNucKcEf4mcsptwOpUUmBHjYTcrH6tfw1zwhPfKNzRn0Oe4MZJDUe\nMoS0D6dF/CNbBH+SHPdlP4xW5jVZWuhCB+Faq84LUNCd44eRtlS9FX1z4vXH\nwSKu\r\n=hEpS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF/ny3u8qbssb6/okXWPMzA1K+o54WeGcCb7Z03WmdCIAiBNfsCE9xO0zhGYE9AsBvkBvrDgPuJMfvDX+ois+aOVFw=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.5-next.1_1560657554398_0.8384963088380128"},"_hasShrinkwrap":false},"5.20.5":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.5","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"cli-tasks shebang","viz":"ts-node src/cli-tasks -v"},"gitHead":"5ac6a88d7595c61dcf09ede0543532a41177fc4b","_id":"@nofrills/tasks@5.20.5","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-wfBUDmtzWvGdZQ8AgyKNiibsPWK8Dv/ndNw/+PZsQ0R04w1VqTJcQbA8oxgu7l3RCQbKynyC0PJSs0GKi/KRTQ==","shasum":"d76de50d52e74c866191a84937d718388228603d","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.5.tgz","fileCount":84,"unpackedSize":73225,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBb+QCRA9TVsSAnZWagAAugsP/jjzQFh/MakrmRefw92W\niVbSZBQEKF8lYt1oohRR2jwALp5MmTSk4cU34Kgn8m32ZPHsMei9SxfJNWC2\n7ipbHpB1dIFLBS9RKAOcOFmhKdC/SGa19X6VOpEops/+SpUqer9ZwfuRm7t8\nhz3fWb0TzSs7ciUjSP2DxVqJdhdKY+YsKkXkYXSfo8lHa38/jJ1XHc2/5Yk0\nB8Ni2nlcsVkAH5zfmYypM3VBskMbuUDwkZ4lXpLLmpYo0xnYoTrWM5P0en+0\nGHtZ5Qi4uYljCoz80H6XBhOchnbKXDzAUCQthQwE/Y9b1Vk6ozUMe+wZueiT\n//Py8bozfmDYAyehg0ELU1UgfvR3rNnyq5BPqTMqv3F9V5zf/FAeZeI+px9h\nZgmJf1TD8YjML7ikqr+pKlfN88ITGVED0GhAjXAOYS3d7V/Lg5blX4+jiakY\n1EaVUpkjZ/kuPfU41lJ5Mij0o+4jkUfd0ZmFPXeFmLDppF2iaZdxajaB+sjp\nx/6fQDz4yLcOoG/gHCOnNOkUjENKqvR7kC6I7jmD/UsnZp67rPXn3XJ+thVk\nuSSRX1KDHsfBvZHwj2dbWgw/3Q9rKDmlQTcg0TOUirwdRRl9X7cEKDktulds\n2U7kFYhLqLFnHDcQXroCaP0f49IIbEsXE6NWBAKvTDlYFpiChJDCN31a2ZfI\nrMyi\r\n=Fp/n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDda2BpKhigFroYNNTr4UoLDUXr377Oa+HurlOZe1UF0wIgU1ZQIMOW0R2inJcYuXrz0UviU+1n7WsM3d5jJlP4gRE="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.5_1560657807555_0.3186654990135973"},"_hasShrinkwrap":false},"5.20.6-next.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.6-next.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"ts-node src/cli-shebang"},"gitHead":"c0e64572d132387a14a317ce8666e1ac399d192a","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.6-next.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-62fj3HzbKqkCY5IP/47G6gO3vd72QmJYd5CU7vdaE58nKAQsAM6zhDveXVqEwsH4R/BzUd9KpPYgb56OFRc06g==","shasum":"3a43bcdfc75db33c43fbe860a87de284510352e6","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.6-next.0.tgz","fileCount":84,"unpackedSize":73239,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBdZgCRA9TVsSAnZWagAAxM4QAJqtAnv4jwjzF3RjXIoD\nDw4BuSZbZe7v7lrXB1wVSGZ5OqPMxBypeDfkpLjhsE8jOTGw1D8AlyI7NN/s\nV+ghS2DGXVhQNY18DtmMTd5SZMWVDIjRpZIhZbj4D9BDQui1GoNiPUuuphOi\nunuTRlyqw0EOq/a6R1beuTQJKYCYAVio+Hb6H5SbBIsA0OJj6+RUHfi/BTUD\nvtclwu0FUA3thjk9WTlL9fUoEV5zYnH0s95GAVOk7bhuDCN+G0t+DoZrj3+A\nsbX/mWZ1bfqp+ah6IEHf/XmEIE5hSQSh+H+LT2a2/9JP1cWTQziPB33hhE8/\nJIIN1FWsdMkvcDzSNiyBD/Ib28hPZAiDwyhiFOWzGUL/96RxPFCPVNGRV6QC\nWFUb3+RhabSEc9esqhbrldFtSP8PYtLGMvJztV1yHLE916uCUzjZBzc7czVE\nPBgGaSvIu298bnqE+fZvbfWPtivrwCPOi1UgyOxWi3kgIfOPH22lleY1DbqX\nN3e+deksHmiZjEDj3a5NhD3gOfzGQsxbXKd7Et72+zTIqctlwY3PJUa8J+jM\nQdkRZ+Hh0aJs7HzamgVIOZpr70r8Ju9xbWjebZ2cuenxtgs5H6qG86YJPpvI\n5opj+GwEvjlrZRZiCAYOSa5qHJMCZdyMgFXt9kmyaH2BmemtWCcTmTdvbHQ6\nod1m\r\n=4pwW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICtnIPJDeAZNXPYDmpKjYBINgTnfNeN34115yBAbek8PAiEAgd0pWJQKv2AtlQIObWOhvwqH+Qbk4pOHKjsEQtHjeEA="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.6-next.0_1560663647390_0.17357814173485497"},"_hasShrinkwrap":false},"5.20.6-canary.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.6-canary.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"ts-node src/cli-shebang"},"gitHead":"51d0de6175f8995e52a08873288eab768d270423","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.6-canary.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-zqtQZwYV7PiFrRm1aitVUkgHeLzCALoEdXxxCx1IbiCe8obgxeG1R9VUBmtbr6jD3vGtmIJ6mPGuypTbHUoC3A==","shasum":"1f2da78ab3077b991682b7247479e69b917515d5","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.6-canary.0.tgz","fileCount":84,"unpackedSize":73249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCnfJCRA9TVsSAnZWagAAXpQQAIDLAU0yAnKJz0e37jMt\naxcH2yzWIUCmxX71LyHEx46iIVSzFVi6ClVVm5fAFyKyz3jgNUSJHhTF3hB0\n16/bUje1oj+1f/eAyhUaQfaufEPd8HLHVHMYHOLodFfhGzv1a+Fa/ePimYHM\nAf8BCLI9HZ9458d9+OUokfWmn8FLUovO59t8Y153hx8mtCOqMwm1LcMKCQwH\n4ACllBhrv+sTP8fV5WWHFT6oodPcADhMnH/RArObx8WvlwdIn2AoBpiuf9gG\neiDuivtGYcerv2i+S40Sd0lgZthxg3hY+d74u4TmzIZn7UpPdWhLm2GQIZW9\ndXyypa6oq1Gw4R8YEaNUGvZhHvI1GlDI52Vb8uuqxppzYVWdQ79WqMGe4ytm\nnqvAzNvZemZojgKXN52YUOPDaOodqxBbJbCaUies+CpoWx0MfpbBaxn/Cy4e\nGJfgOCGU5mA+/umf2LCPEh/W+58yD5tA+RM4xHkqFQ0OGyFQbv5BiG+n4H86\n9Hy8sXWCWeAUUOD8gyshggLigKY7bv4FyWk7xVph2gs4DiWkwlil0VZOQBbz\nbbjpv62GYKri8QwlkFN/RuM4wlMUXTEUkz1zs9MPv+gmL4+kvrEqY7Xc3MHw\nNpIF18AVjz6awFMEOd2WMg7KoPV/nn/eRZRo9FZSDYYAS/DU77Kkm8BfxyWl\nJiUN\r\n=qqoT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF372PWZgA6ivcRtO8Yo68SdYXeQSkAdDFUdEbHypgonAiEAmW235tpq4f4Xcpdkgzhw3xuStdccF7OADtnZgomXP1E="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.6-canary.0_1560967112812_0.7466927357181115"},"_hasShrinkwrap":false},"5.20.6-next.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.6-next.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"ts-node src/cli-shebang"},"gitHead":"5125cdfd1bd9ed7b5bce3eba668eebbf3ec90c21","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.6-next.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-fhJgEk1v5XCUo9DGBIjD5LkoqutbXRudkMXWJ0zIzL6C48RWOpW6psbCz6sYq0HCLhJONQyJgWyVldJhw/bcKw==","shasum":"be09e59c5fef2e515ba08c448eda1b8272e228b6","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.6-next.1.tgz","fileCount":84,"unpackedSize":73239,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCohnCRA9TVsSAnZWagAAVoMQAJs9kBoTmidLUfxI2O9s\nUdov6R6Nv316tAI33BvL/3XBa+hmnuUyvjNC8lMw3IlnJY7GVRexkAB8sVnz\nUhdcOwRGISEm4R5JVIpfxvRE98fou+xNPTMUKoQ880tIBEfyMMiHH07vqZq9\nmUJflxLbk+NKB8AvSWDjUezu9A8Wc2rxoyfNqTn6t5wdfLfVjo9UCgrdd5f2\nWHoKuYSwZojT2tUxOsEU0iQtfT0cjGHwA/l+x4EI/aqAHo/i7uMj+jO6gWGO\nc5f8fhHsUo/7mayfZz7Lb5zWSXiNHE5oyoalaWRTFUxtBb5XZo5h3tj4Zi5N\nz+gDlJULAMg/LthjSLL64lfyHUhSjmhmSKvtQNrniAL7LcRlRzQFKGfG4c9w\n0j/X3ialOrQc6egHSDCbfEMXZvfQN4o/UC/W9RLQM8Kg8XCFxb9r3bILFm0E\n3a4LhYkfD5HXxDLZ2ys+pSjdO5f5L6xpeJHeicTJ/+JPSIN44banCv/vVICE\nxkKl3RdVEYOJua8ei1ZOm0t399g4IaKi6ZtYghh0ISHFvCFc4w4wI2siplC7\nrLgSi+O7VaIASxMFPHuTKLZT+kahszWwpi7LIsjvkb/9AMFtOAvzPQT2Pjpz\nmVVrwT0S5u+YPMgPw1Cc75RZeMoF404LKuESZTb3/HXlk3VQjWwqoOwGhaWZ\nkrzD\r\n=xpEZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF+UifGGjK3M2bbWwlouBjrDLbWZGWugQLCQqzteb8pTAiAFO7EGxnmt6O8u+8B9cr1+YRyGKySDDAjdegT4PneliA=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.6-next.1_1560971366691_0.2987942726758175"},"_hasShrinkwrap":false},"5.20.6":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.6","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"ts-node src/cli-shebang"},"gitHead":"a6b73d72acbdae1e2c11cf28dd824b9f77c37409","_id":"@nofrills/tasks@5.20.6","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-IT6qx18ntu5t2hHo6y1Os1ji7zUj5hct5L6Hyktr2ECTtWKg3qk5GOJQtRDcO7tfUu1sXiGSEeh3VdatJOpMlQ==","shasum":"cb1d7415969f88e22a6dd24a081345d96efb5faf","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.6.tgz","fileCount":84,"unpackedSize":73420,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCqQRCRA9TVsSAnZWagAA8QEP/1hoq3yKrjp927yfaNuZ\nFqz+dbU2m8qDvY5049zOPPCoI0c+odbUwjKEzN+nyX9Be4tKWwtiLhuA/zXZ\n3ocwrc9Ro8kVHuIsGi0TiCUR126ulx8kreQO9x/eKEmXnc8YCP4Qd9kg2eMt\nRR6sQ88hQ1V/ZWrTaUZcIM3/jx8janvawbj0AvWMppuOpzfQmNbx9eOpqqMf\ndlTeaCLOCzMVeZaQaE3kmV+TkEhA10k4trjR4iJcNE3HrHRRsEHzgvFc7EHO\nMWfYPfgJHJVNzoUEIz6jJYVpYs5RCD6jkMb3XXS5yqghkPdlGcR473PyO9MJ\nlRvzoesTID0mITD6riuhXqLecNKf/sMZIUBvKVLalc/CthBv4Zxx2t5Ib/Ct\neaH8iU+3FDAdFPDAvnxyiA0FjhjXSO67ILx/AKDI9DZ7OHQnmSM2ll8qdyOj\ng7UY768JTJluckEnopbcYpfmZD7nXu67M6hn08QgTh7WXAkQ26+kLoKTTSz2\nn4aZXTTj5nOROKeGWpmfUSTG+tI+tNOGFVfyad6ea68x6o2vAVVcjdozZUoD\ni8DDSp/y37PilYqSiim05vYvio3GsY5jKn4H3dhdzcfHPc/DB+f9oPjrItVD\nZdqScu54w0XcrxUFgLxmv3thqTU63BkyGKIfATSYOf5uDHxkR9AY9q7rrCWI\nviHI\r\n=qGLo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICIyQLd50KTLfseq2WxMqghlrKDvT4kx/Js12HfDnMm3AiEA6DG08HiKzA/Um9PaCck43TyzbZwij8JwZ12pZ9yrKM8="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.6_1560978448873_0.8160568647125002"},"_hasShrinkwrap":false},"5.20.7-next.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.7-next.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"ts-node src/cli-shebang"},"gitHead":"5b315c9a19bfe2fbbcc923034802d26ca9f6f3af","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.7-next.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-cStBPWF735iH915LgeXUi7dYT780at2XmLLZtwzhy8Unw7NB7OvIuO28SNTYJWjma3kGeUIjnPiTplNPx0cTGQ==","shasum":"a73c9a0885c9e3bc1d04b633b553270cca0dece2","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.7-next.0.tgz","fileCount":84,"unpackedSize":73427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCqURCRA9TVsSAnZWagAA11cP/25xtIs/tyWtkY7mRXkx\n1iNudnZYc6oZ3HFdVUGlLzHgWfLrFHjztJ6HyIza5h0wyX8Odc3Ykkl8+kXw\nKtcJ55GWcjPoirSWrJ/j5em3yLH4nxhCCIvmVQpzxQC95wW9gVTAtqmFiv3f\nf1qjm3gFnOxEq9/GIOA+hQIhvNq3LuQwe65ORSQ1Sj5uFgGsjWGtKbVeoRM5\nLQUbewcFdVYUq0uze0zteAV7lJIc/Jzo6USBeV0aQ8IjzBUE2G/oWZsO/hlP\nRCVz//1QvWCpSx3TQxn0zUbuXzRmtI2LeTHZN5SqhG9I1B+0TbROGPoT6slk\n9VbXN9uVaXXuCD4idGOj5j+H2uOhXs0GexodmTdAe88H6vprNrZVhRsZDRuz\nOyk7l4Jo8MEFk23Dm1jqkavYHNO5I2bk+k+/d+cJUqawV2WUbZRsREqmBQcL\nRIotdw1C+++QhPFZt1xBwJ4HyMP3wdQVzxdzye57VZH+F9RfyEPx7BDQDBfo\n4AD90atyTxc8L4V+yjyNwGphNfi4TLdi30+cPxnzLjhnu5SqtPIU7EPwlIZ0\nKZkewsXIN2sPF5rtpKQ3exyPTIw0Ux2W+AjHbUJlAMCqHHY9YwQ0uU2qpak7\nD7SNBoJQqCC4i1JHnskeUu2lqfoyoQ722tyEyefDgQdEZDf/8nG2fV27P3OF\nUHtq\r\n=CfFI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsOxSre5EwY/0kfktRKT/tdqnF9ZubcfLZiD0sbBJ94gIhAObEU2GqUdgGmB4iS1DK9zRVw4CfGylBdBbxhpiEcnxz"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.7-next.0_1560978705174_0.7160880363546644"},"_hasShrinkwrap":false},"5.20.7":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.7","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"ts-node src/cli-shebang"},"gitHead":"0d0841f0c7c38ba57fa1d5d56b44bca3756f6104","_id":"@nofrills/tasks@5.20.7","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-cxbjvGo4roNX/KK5dDM/M9wBL3CSbS7v0Uml19oTr4vFqFpMsIi3m9vWxZYVaAyjCwAGj5MITZbvDozKVEivXA==","shasum":"a151311e6f5c65da425757c9c5ba802187094b7d","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.7.tgz","fileCount":84,"unpackedSize":73608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCqzhCRA9TVsSAnZWagAAzkwP/ApyQLlLICvZanuQ1ZQd\nCPIi53d3P8oN/ubwsj/39BVldEgdOyr0tntiZHaFJGLIuWSimy0EpvOYulgt\n1v3iMr2Yo3LLGA5bUrgbcxv9Js7LsXq7qsmOM5LeTSzVo9zYyQ3o8sZt9kyW\noW8Tbx3aSYRBRapz1vabOVJCiah4io8VOhyliLGY65BAe/phssuNKoPOGmIm\nPVlAvF/Yv8rqBj8ROD0c/ajHDcYiiMLbpV3ubRqAhANw2CEm33HZTWERXuvr\nuBi0/agQf8XZS9EeB4Eeqb845Uvh7HGzgpTZ4AIkEI5L3HhcO3Vylm7zgsuO\nBLpgeQ0xdZ6HgCznCLPd3mUYmUK24rvuo8/DeauxaMWPM5opX6TS2fDNoQMe\naU5zvHSIeaDSjNh/BLoQoR7BVhL/IOPpSN4p/c+mlcCcjvMhvsyIFScNXMtW\nrX0uBLgy16QBNpxCA06ALULY8ON4WEk+FhLDWOshaqQ3gabfDFgUSoYfBXfV\nirhvcEbqLYj5KpDBpfhQ1ICKpyzKupgdk2kxRBVanxj7t55uR7hiZ/Fwbpzc\nszPN1pHkmxUCwpPjtvHJRkPRZy6zGsw6EaH1bQPAveG39MF6cufXA2kVP2fK\nXI/0ZGx3jF/uDQf+iuRWoRQiL6y+YcmCxDwxQd100Wh7N16/mfsdCp6tZXzG\n6pIY\r\n=ihRY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID1kOTIlZ9tZyGjZAmduSQXfDNwi2eMXRhJOe3SgjgDrAiEAtJfOd30J9EKVml3+rUv/a0uvJ947w2D13KCTsRWYLlk="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.7_1560980705242_0.2559877208020067"},"_hasShrinkwrap":false},"5.20.8-next.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.8-next.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","chalk":"^2.4.1","execa":"^1.0.0","get-stream":"^4.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","shebang":"ts-node src/cli-shebang"},"gitHead":"ee7b10bc2e5b328ce7f1bc628d84129aa44ea308","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.8-next.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-g6NaiW2f3adDhkhyw1ZRejYgs+ERMEMFajAjhGj+P8cIh/v0hCwHKpvBXLsloOj8/gn/STLj5Mmi0VrqvuFBpg==","shasum":"c4f92444ebd9b78fbacbce09c2b873550cc214b8","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.8-next.0.tgz","fileCount":84,"unpackedSize":73615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCq1xCRA9TVsSAnZWagAAhEwP/0bwvySLlYpqtsEQQi5T\nB43zx8c3yn1Etcq+9iv7JCeX06VfujHZhMc2GawhMV4RbgMpZJM/ZwbIcB6d\nEnNefbPi6vcLxRE9Bga2ZE9zp2GxDGXmFjC9Wp3eVJBtWk4/1veiD9PnRsmN\ngYLxQv2PbWc8FLB1dDKms+czQTIJC7uJ4KoMOIPFbZ7hnMLzUsGHXEgEjl1h\nzlSX/aHm4tf3GSS58AucC0/zRAp4pl+8ygcdngbb3dZ+9VTli1/LXcXvxsnf\niTcTzxy4EpXrwx3SCHQ9ktDRk6q8DQqga4OziSfmUEvznidBiQWyCyZDw3oK\nSC0N3nvb4sKNK2tikkZX+PGSPaydo4I6W561jk8ple5IQl9Nmn6jKCPVuvCq\nE5WUsdA1bFuJ7Ag8LG5kzTG12om7O9+U+5YyHR1Sxum8TGt3VNW4w8d2GQQG\n6kIXYdzqqsJa9AOryw4wqPpKs0RsA063fCJSVn3lAT215EgCv6ip/lqCvY8/\n4Wzn1R7IttrefNwhhAz3gZBMWWPykoProryKHHbO2Ub1e+cEj8SYz8efjLFY\nFYJAjYeGhiI++dPJOh4WM8edjAIzT6Kf8Ll1+1j0DFH946RYB3bPDfrW5bmN\n4ph5HHpqfZVVELPV5n3ThGDHlx7mDoQiSgJTnKTgfSlSVzx6PnhC8tRlHjhM\nY5lP\r\n=mkOU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEFvrSc4vA3pq1DI4+sWHNRTi6J5WxpMj9RXNAtSsnvtAiAm75WczteaTmW7ZGBrKVnJ076oRCOq9WmVwqXwCueZeg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.8-next.0_1560980848945_0.04935616965995804"},"_hasShrinkwrap":false},"5.20.6-canary.12":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.6-canary.12","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"2a413093e6981df90379ff9d18868f777b9d0aa6","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.6-canary.12","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-H3JoV5PfyUrOabWUGe4xoc7P0Zby92xxiSyK69J2QEXH6Tjm3gpJavW/Y6rnSZG9t9ueBIc1MYMJf4yG8ZUIFA==","shasum":"34d0be6e33abeb07a95d833762ce621dee1aa6b2","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.6-canary.12.tgz","fileCount":92,"unpackedSize":73666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCtH7CRA9TVsSAnZWagAAOgkP/j08aZPFkXGZia/DZseI\nXvEzROD750NZRVCrpcdGE00+1rJ/Cg3l1w+4ppBKIyA7Ui0lO/A8W3HZWcK2\n8ZOms8Lnolz0PCGj4KYHRbd2ntdoQQFRCajxkb0HXhQP+6kpqe7DyothCfyh\nQvyTMDt97o8MlqbAmb6xn+0iDMY3GYNKJgW9fwlx4KXkcUVx39tnVsWoG28n\n59NeA0QreKP6Jv22hw48sfdGKAMF39XXUZ3S75NUX965kl0Ql0hzMdmxg0+O\nXd9aWtu4PN9H+TWjVRGzEixSuBiLchqaLHCqhEP/eqG8ybTSsfdc7r6qjUeE\nycls8RdaWi5O8Y9wTPxPFCUeL0B+Xcw5WVvPIwRHSATKfLjDn/EoLD7KA2Vy\nCqQtN67GDY7Le1wD1PB5FPvmfNB54kgIfgIwusMD6Wn4m4BL/6t+Me+7QvzH\ndhgxtgwcq68mkC4fOkpGhNIpwv+uzFhBBFaEjbw+159R9r/7ZYXMwCZUtLTq\nTtEUgfqiqITqrkyNKeyCZOMSdtB9ZvlREGZWxtIEeaXmzorF0LU/IIsc4Ebk\n/f8wyZvE5r3LKurQZvEF9eiPRDmm2er5g5aPxZwy3OCR9RXofbeU6JzVm6HJ\nqEaiqCqs1Wf3FkMziUXUvHSU5yfkIQWZ7nKR1oP990qMutQbSs+SnBTNk7xW\nipj1\r\n=DX/f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmbyqB3pE2huNrtbMP+7BeJDnXJQES9M1CvhkAi3ZRHQIhAPmP4Vpsj0OCDou5RWDVdbPtiQObp6WDAFcWjof+Wl1h"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.6-canary.12_1560990202700_0.6655394443296372"},"_hasShrinkwrap":false},"5.20.8-next.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.8-next.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"a6eef241b3c2891f8c2083893b8de4a9763d65c1","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.8-next.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-2Yvalnb/jio4NllL6YhxloTQbwLdGrOfiI1kCBdR9lkqRkkX8KzEFLZO6KtPvMjK1KWaOJpabJPna3bvznkYng==","shasum":"cb9f59440d4c3f86840552bb3fdbff03add9dfc0","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.8-next.1.tgz","fileCount":92,"unpackedSize":73655,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCtJwCRA9TVsSAnZWagAAZQQP/iQMNmgPFQslFFI0/5wI\nR+T7FAwjAAXyKG1fI6tM/s3aaVF0m1d0MUeNqVBjiipvbAIpU+QUo4+GXDDZ\nIgx74yQATJiWrze+hoxpSKodNXA/+ZMvPUVItBTrtFzfemPCbvA81yQclT2r\n5QZParRooTsfSkPdz+iq/5wx+S/DYgSgqsqvJQ/pD8Jf37mBerKAhnY+kaAb\nkZDjJGxEoECMrVRe6O5xXPD+vAR4Afv2E+sw8FUP+MtA/Kvon8b9RnjxkwOf\nurclkJbtociEjEFQ0AWz47Ahkl7NT5DwNakC38PPbXkjOQutMytuDQAEoTOr\np0NM2OPstIe1+57PKl/fb6pz1xdHLWEOg+mLTKNpmadwijw3l4PDmd4n1Uje\nLpf3BYy28z8RBUFoUSkBgZTeSp0kxWFNl+aDU4ixRFMLjMi7J3yuuN3M92IZ\no6lghnT/EFKlfp8eJDqKSUvGTmkVdLlNwstPXNiRwc19CApBQaaFvPQS6LCb\nO0YynbCks5Fc5E3SkYIHP6CHiqN7PnSMzPNYaRkZJB+ypHGedTSq8fEvc0Yg\nqe18PNMwtS7m4p/PKOU16c59DFblbS47vnaBeKrm1eVmW+Wzq1LXVR5pgKLa\nrgrhx6KzHC4OWP3Mw+03f+FFn7m47dBfhhxoG93NOT393GkrFsyfWK6O113f\n2GYX\r\n=7/pc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICYi0dFQYi9OFSX1AoaGqqIMVTJeNahLCHjQx7+4C9z/AiAiUrXylnrRlFzJqqJK7KbOGwvle0P1yydg2SQQSN8yJQ=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.8-next.1_1560990320067_0.7044832171835398"},"_hasShrinkwrap":false},"5.20.6-canary.13":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.6-canary.13","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"5b86cd2cf023d63062d3d3893171c0931e1507d2","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.6-canary.13","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-oFcnSBz/Zn+raVIBO+H1hryW1QVemZK3x4yYqGekeXFzTLVCBAiVU5VxzZlDhiHnGEueDz6nkTSnNERiYNA8zA==","shasum":"d2a028e5e91d26e2a10de0ff8ec5d8a631c62921","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.6-canary.13.tgz","fileCount":92,"unpackedSize":73666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCtMLCRA9TVsSAnZWagAACeoQAJ9AUfxAF1lsCevyItcW\nUGbwYrNx/Z6M6yGf0wN4HAHP9t0UQFF/Z2k0xyP1F6O8itpUo0keSS8+/boq\nIEOBuO9Ot9d2i17j+Ek0MSJwWILULw3K80nnNL8IIqyWSmzmhmptnoo7a7Ea\nwXBDqL1dQ0dD91EqFPSF26u/GdgA78XsM9IFuYEvkotanwTkColffOS6DSwJ\naIRqk9t+LcROB7NkxCNyaQQIPTjftEi5MVmOIwXy/crQgU/+hN0uWFyCLXyQ\njnfg4PF/sBQWT+K3ZFORU5dUHAMriW5lEsUG/Ku1CDi9oWWFdOHg8qwKO3w+\nYx4sa4imARl98XsEnBPuC75AxmVMBUe8OjqBxrYb16UvO1sKkEcbshlynegE\n9M8WQ0Qxy1jHlL5m6xwYf5s35LMPYhZwgp47QnzisYrjuVtUnUOfLLbVlqC7\nPaoRk2WEiTlNsMgHyOAoqqZisf1iJ28ZPMkyHys0UdSYGl1k1A+pGhfs2W/D\nNjUfYeOGxj3HKh1LlmwD2ZEcTThA8YaNrDpGgiLUAgvPlgBA39ON06qv9jZk\npxeyljXcwbsdQRefMNwFaZBiVgWKtqYGms0xHimGCLHZONmeDEostIGia9dE\n6Ha81P4cry1f3IPIp9RgCi3/yLCyqj+E1wWj5KyVI2Iw9SRS7BYYSADPqhRP\npaJG\r\n=rP7Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4ZhWahk15evSw3LU9e19yfHIMdxhfGsCn/bRzvImBxQIhALCq4Jk9p4a1DPQFDvQg83Fwm4z6oQ/SpjVSgFf3xw5a"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.6-canary.13_1560990474516_0.24766805905828337"},"_hasShrinkwrap":false},"5.20.6-canary.14":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.6-canary.14","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"cce49133d30a386bad1d27e044c6f13d7eccdb81","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.6-canary.14","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-AtZrk32H1e9gwxSttd3exRLiJZdFmpr/1olHR4kJUFncqFy8rYLf1ST0URY4gzsnKXUrxeF53byNWC14qtFMLA==","shasum":"b85e57681255589d266582ff25a50c1474e8aa5d","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.6-canary.14.tgz","fileCount":92,"unpackedSize":73990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCteSCRA9TVsSAnZWagAA62UP/jUHE/9lE2DwWMz72H+W\n1CxS8/KjZSv102NVYSakeF3IXWXDEJldeCpec0TOYCJZXIgldd0eGetzaVFR\nQA2QLOmaX2vDdO7nHI9VaC/pxg49dXZ9tGHRQAns4/zLZ89lSKBrLKDhzH0L\nZ47wQB/aVlkgF87JEkAhQbdH6GuFCAtBls4PDju9vb9bGeH5eayRaN6RX9sN\n750SU9tfsujHWeO7eHrk/uviUWOK3NwE7ExB0qbujjo77PrflRQjGpJYCctD\nMZiiL3RRlHhRXaMUqJm3XmE8Gx0qXxdqcg44YWTc/sk/L1qMPTJ+G6fIyICR\n68LrLz8sD4Mqkmrlicu/OreCY16wuJGKFJAvjTBycoLRvPYed3gndSmiPJNR\noMjvVhI7TD7rDNKUuAun83jg/R2kHtGqDtmChaDt4ZTpN53K7AhMa+25CShs\niEYxT7fRMhJKU2FjTtImrrErRSgWvqZ36/puaeM5jr/gOMXMNNmfgO8mgeD2\nskxGFZLhBhREPObTPFzSgzkjkThtOQAjSDoJ+ND89LaZMguflItD+6AodnmG\n8+Oa+YfqcdHY8c+Iiyn5YugtgmEzNYXmmTrNfaoN3B84jXl34V3KIjSZ2h0O\ndbd4yJHEt7gmSt5tV8aNOOSk5jomO9NTTabAcjAy/bSlLFtJz3ZDItEWrHqj\npScL\r\n=8vOb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDyqEhXT4IVU6OGsZ3JRe0gBNVjXGAxrNpKciN6SRqOwAiEAqGAe33iICbJ6VltpycMWuCGjHJ+3IkoQmYwTJLrPlTA="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.6-canary.14_1560991633533_0.38762127781926203"},"_hasShrinkwrap":false},"5.20.6-canary.17":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.6-canary.17","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"ff328dee54dd6c6bb0e6ccf29171e5047383911f","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.6-canary.17","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-f5RzgQ6Uv/ZLPWl4sNAE7fSuV9bDrrqRFixCV6UyEcsfH9Mt8LMZbtbzM48bpiSAkLiMs2I8STZCFch5+LjjjA==","shasum":"5163da66eab35db1d752b1972479976208dc754b","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.6-canary.17.tgz","fileCount":92,"unpackedSize":73990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCtsjCRA9TVsSAnZWagAAlaIP/2rotYYdZks3hhLq+eIu\n5YwcniPKjyZUlQOeb3JVfjfgAJl8eLThDGC9j0bB9fEURpVffBY+BRnT11oQ\nnNQFvaYaA/lqGQVVUxCWMbKQ+6SwawKgNRHVv24sSNHshqpKtaQHEYnbl60J\nHqp8OaU87HuTiyyjzVgAzRbETK24CNoV9CCl7/YBs80zkQM68OujPKhrRiW+\n9fpB/CEc+EB7VLkRb+Nm4Uo405xdRuxAzuf2Xkm1bknhhhGGujHRjoTq/cOK\nE4qdNkVE+899yJmzNGTab0UUixuUaN/rzwT94VlmyTi1xIlNMRD0m3YsVpNg\nNaycNb5zYuCWba7Gxe/o9awhoZswlkYOKwIklubX7Q8UOlN2Ce+hDhiMMSzY\nSYySvoac4QpIHmftbrB0UdCPwBuzkmsQbDnP4Sr8eylX8YhZgiGhJbpO3o/4\nmMnRbBFi+Zj02XovxTRRrloqQk7EmhZdrBwvIHXlGttz3OBczwm4zE6vPEcc\n8LSRfG84kbnVcJjMkxCV4eRsnPP1P3E1p/UUAwkd7P+zCUpuU/dzEvFOmabL\nVLx/lOfFKdwHZ4vN6AXc2XPB4/ptKFjK3M+89tolIqMOIk1TUY1SJ+UIonws\n5DYUazrzIpO6eK9yJ0IHEy0ULJVana8yjvtF+IObxqTGO5FuGluhaR6WM9EQ\nn5Io\r\n=SiSl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZFyXhZttBMEbcflyHuMsjbJ0GGxYPgik5qxGPxo3U6wIgFv3TfPFKc5aYf/Q5bM6cRT6jhv9/PQs4o3sp6zj3o4Q="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.6-canary.17_1560992547050_0.28129002354252663"},"_hasShrinkwrap":false},"5.20.8-next.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.8-next.2","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"742f4b5c2af702f8c422275a4de9ba39601b5e43","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.8-next.2","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-+vxFhRoY6E8mrY/y4v12LPFUYiRCS9a2oc01hzni9W/oiNOFFZ0AjgbFjAPB2k0AdH9YfUBSNPh4pX82vqxpmA==","shasum":"4d2fcb1cece9895bb4a3730af9be17a79bd41d7c","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.8-next.2.tgz","fileCount":92,"unpackedSize":73979,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCtuYCRA9TVsSAnZWagAAYwwP/2uKyNm4hnGnkExOYf3L\nigaWrInABezhiIcxj3ZFITROX2KNpJaD16tbK+x7GEgiwAJBpiP+4L6B9kd1\nGSmKXo6dJeRmZisOu69d6JvQ12q5BmyefT5nXdf4zhY0tFb4f5msnoZR3kTu\nlgNsDHbcc3sbIMOGgpH5yzLKInnbKbU+k1Rw4Tp4kba6JdRSAceYzm5wJxTh\nYQv8+krCls6JGTEVrobQ+MG+CntdFPdrcyNoUPX2N3IgbhF9mQc8zQgUTnUb\nlntDMPcmyop03QWQcdeyQm4F1t08JBjOiaUnGObrJl79Iqi11+yObtzchpdz\nYR+8NroLH6Fddy4NDXlI7JiWMMy3HqgCop4RvExCuEgnTqktIZBtcHtgRxXf\nxisHej/7I3dGje3Zq2hIhrIuLuTpnm5Gn4VPhMP6KlgPFx0E/fi5595Xhj2m\nk/Z0rD9wVghQfjxDrmBNuy626K6YdZV9UmDqzW5VwlhGtXmciQ+UTLF86YBU\nfX1Fw+t7WMjyC5JpNdMf57Am3wss/D4SdRsdHob14WlCsjvO05Nc/Iwwh/AA\n3gqg2ntztGLBEV403W+ceuC6YvJV4HyMS0BDUhXxzzXrNjHMVE3mjC23PAkX\nlRmbCLbstq4b3aIgWcFw/eGk9dl9IXOdLl5WVP+N0DbURgp6ovUdJr3kh1Na\nP4Lf\r\n=9gxe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICRRhWAq2XKCVwTAu2X6YAGi1qYVVRceuSA0SnHo5dNmAiBcYAz8WC9tEEc2Lj7G5SzDnxi39K2o8O1XDIUx4N0e8w=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.8-next.2_1560992664301_0.7134222427557069"},"_hasShrinkwrap":false},"5.20.8":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.8","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"ae8519be4cc980b9897d13d2938b46ef80f52b81","_id":"@nofrills/tasks@5.20.8","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-/AsCOUD6F4HZPc1FDIU46u7KwWfQejCxMpvaiWdvxvaozANRWTaXCoXgg37fWpJylbCR8eMMusA+ud9+JxRhTg==","shasum":"6d04c4819c85baba7f88ce779d652ac70e24a8fb","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.8.tgz","fileCount":92,"unpackedSize":74160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCtwkCRA9TVsSAnZWagAAJk0P/1tlADRLAKTiz63v09OJ\nOZlhCaMDpFZLIo4fZWznFv8Uh0vMdT3eRs3IFUVGxyfwY1AbWfUwpUSjzNIz\nS5ainIWYkL4IKJJD2GI4wdx5IFdtk9B4UNlhyLiBWINTQosKoWbkFX9/F6m+\nILxDQzo+wx8MTWd+vEopdN1XF9+k4vBgyQl5fjgCSEZlAM0NOw6sggeB3+8a\neisIgBKA0PEy1ETZEyGGkgVfeco2/hPzAv8hC7EW4Ha1gOIYgfY8Moj4+Fwq\nHp52pzMOGwyCN3aChqB/0PTrOQK90TqbBNTa/7ExkSCtx/BCFs7klIanGP14\n8Ea0X9bIkDNHMF/D18yl9+U5Y3qPy8KhA4Mh4eIl5Jwv+Fi8kFZdWpoFZgGf\nHkB5XRDiwIBRzLRi158HrO1frS3eX8MTQtFl5VqPmAn2wUtBb+yHIjIshZ5C\nRxL0rMypF8k1R7AmPCEhDuF/JCPCU/DNFWuhIfhVdP9t4IJB8vTku20W/uUV\nFa9gfhAvVw07A51wwjPUE17fODRVeKvW2thH9uzjGFuHKQUuKer0vXj8yVNE\npoSdSB5lDMPU+E2nUjjyFpk324xJPioEWv2kDZQgyat88yxzQ8Kd64NrM8t0\nfgjD3dl9k2RyH9rLE/HmFE9p6B//YqSHz6mUrzQaff0PgPWlYx32YzxBa2QY\n9B8d\r\n=bVnm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFbT1dkPKjZ05a+lOCTb6IqR5TyqgQZRFACrDjHDmLPIAiEApQ85KD7Fcm7V+hsJ5myF2Oeb4uVnE9MRWg+Dr1crwjo="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.8_1560992804390_0.6990550521152612"},"_hasShrinkwrap":false},"5.20.9-next.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.9-next.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"2cb3abc9c64e584ddadd59bc948149bb113dc3d1","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.9-next.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-9jYFWwZs2mYy2NQY20IIJ3ZyRnOEvh6GH5zunjdKpyI2TCG78t9xqWcllrJDLZShGyj8+wDGTaCt50gHpd4eVw==","shasum":"1dddb3ae8b3563a7637fda351979aec7d24abb7a","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.9-next.0.tgz","fileCount":92,"unpackedSize":74167,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCty6CRA9TVsSAnZWagAA3VgP/35XKByRqBmL05QadQYS\nsLp7yRj/54AgcSYgGwNqwAlN8L7hPh1shZvzWUuwvCZz28sU03qcu+NVQ7ik\nwmWtKR1YkdTAq67D8etBo66lH9HzuVLKhnqwZbkG1Lbg3qQbLBSVlfL+s1Ua\nahq5C+u3ZD2I3bq2u74dm+9FPH6Mm9CdIGJZG9w4iMbJ74leiJB16i7bs8Ky\nV3iVoQoqfO6vFLfkzftc9dHk1KXqEkhTaXzSp28HfyHTn/3zHDAWryNMyxi5\n89LZUQcOesQ76Ypr9gtFVtgC4qOSlRY61xbGitEolWLsK8Q13/x7iRFuoJs9\nOs783DsRhrE+lUyRugt83gBRChZH7n6136ZaD4zHHgP3UTTDhknMfYeuGwKL\ncq2zORhw2LQLrrTMhZ2bcl6HmqaNip0S3xg27S4pOvqm2tkJUIDoqUIiRpJO\nzWJNIDpkoc2a3yGbH3aKlNHocXZB1uLkd0Rr+yKDJvDLjh8zEClJVawqwGVO\nk9wdLbT44uDY/t5s7zDfWspuZiSdlD3NnyKji2zifSaJ1SGSGwliMeVcz1dU\njA1Q2kqNfKsDEBybo3Md8i/wMR5hmpKmM+4y3edcSPQTlb1iJcftjAAeOGTQ\n/e9+YcgF+oTx1rG8oL8Js/zIbjA46U3Ij1Z2YL/Wfp1Epi9ViA/ljHabk49p\neJer\r\n=bJse\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhUc+EmeFg8Mu8fdOElC5hVoCNhDJLE4v6Ho4cZyVzGgIhAMb7QLjZlZTrexWS00XLikATi8ivCJKxAmEZCi/s8n/q"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.9-next.0_1560992954117_0.8479153254645568"},"_hasShrinkwrap":false},"5.20.9-canary.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"5.20.9-canary.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"5d2c280e3e4270501dfb594de47a88660c9d4e2b","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@5.20.9-canary.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-r6GNqWsL+PlcaTA/s/0mIYuLusrvEhUtxu8hm6IWgFHCp7Zo5dKkdQD6MQ7EDx7VUbcUIuRguBOZE9zeIVZiow==","shasum":"1bf20d49f84a5a65215502736e0ecae09ba4a3a6","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-5.20.9-canary.1.tgz","fileCount":88,"unpackedSize":73086,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCuAJCRA9TVsSAnZWagAAvu8P/36o+S3CTw06VouIEt9h\nfwDHtlCcp/MHaQvYBBqIC95SYEY/mkc2wK0W7d2KjXxIMidHYokv0MQ6QLEV\nkONEZALAxcRSNZql3Sg+w7O8STSrrV3BZRaq2eR9mjgUG45lg+QO6neqDZyI\nkfQQ83FfJwwhWU3SKith6rgMlKAesLDlloM6sAKj2xHj/DgTVDHVyPgDpl+m\nJRuaRpVX5HRvIns39MVTWx2+sWx0ZuzlG1KIz4rkSw7VDVEbt5Mf+W3hvmMI\nlD4n4tJw6PyE0Uy+5Q5LfzVepOUkTGkNfOgjugMKnFfnITrMVSFVknTmHrvL\nPpPiSTxkPNeToCS8w1KtHR2pMXfgSPujbPaeZciwbHwybWKbLmvbBpVckXhq\nQ60zZsFvHVW7ThaWGOWr0UdRwNM8Tf3DTs+QvTEB3yCt6DQR9mlF2uhIX76/\nq9ys3PTHpcVWYRxqCcwN7ToD94sC661FshFcL1YoQ9ItlwJKcQFwWC6mfYn1\nUipDfDfQHBPSSin6bIi2tOEM6mp1Z6yXW0jx9wZUP7C2Vq3mJLaPs+7l0oxl\nvBtXtsIcnuY7eaLqSPBfMnmZ6hGKaw8zni6MqSjbut4yRagZJX5cSsHwHmr6\nLKmdA3e0Wfa9jPUuPVCP7qcYEgG6g2IcLOhRcJbbOSumuPS8/Iy3EjzsmlwE\nUat7\r\n=YOLA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1ZL0rV4sAIZng+WbMI8Oa8SXEEwIeOxKK4HM9XrpzfwIhAOvtKrsWcMyKgIQKfrA0WRzyv5/971ya5ny8TtzmS9CV"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_5.20.9-canary.1_1560993800809_0.25038238457598627"},"_hasShrinkwrap":false},"6.0.0-next.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.0.0-next.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"3ffb0524df20165ed6efb42868dcc6b1beb06642","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.0.0-next.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-SMx/No7OVktpjgZ1tP5gIt+l2IyQ3AMalDWRWqp7RU+tgpSdCZFmOALCjcTuzXIRG6297qK7dsNZ6+zXx6sU7Q==","shasum":"18821ecd332538b02cc57f96b9e004b1e68fe033","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.0.0-next.0.tgz","fileCount":88,"unpackedSize":73436,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCuPVCRA9TVsSAnZWagAA834P/2ranKO4VUOeOU5EUjfP\nELlXPCJuHSW5FO6e8GTV4/yhq9VWuXbgFbcQsNbXeYL7LcAbnFyDWrSql1l3\n3QD//o9FOI8M6iaXMLE5peL5ANDSnCwfJYh2bFHcF11niUF3Outf4LbjmitE\n57+F6YWFD8nWtnxnUAerQDUTgqgdSQwnc9y4IJ3jJt7Ig1c+QlakA91ukx22\nDoRfKwQaCqJK2Fd6O72J5aRgS6FF51cCsItpM0CAMcr11LW0v5c9IHR2Aw88\nqHkoCP0ZG5yLCqAvzn0Ryd2VV+eaahW74dqKaVVOcqUdAeVWfVj9vIAV2XOU\nwIuzI/7kH/m0y2+MKaKFDa9K85EfMe3Fknx8oMYuvvWnvJRYrnSJVpgaXmVZ\nAEMZMeLRcaNNPHdN7ZZQmZA7QcJLy40xrMpxSxFWrYMbrhl/SNTTOUv0REVY\nJ3zki48Pc7f5kDkFCXEvT0OGlZ+AzV9It5xezeGft9B6EUmaSa7kK5j3SOAj\nAJhdgjsj6mWubnBPNPYcR4qtKVv4zPnzeU4OQ3CP/OGg2+mznYpAJH1tTlWm\nJBkjZV4uxhX+wVJKEfvNDlK6+mTxJ7s73BfVfZFKcs00CV8nJlZ8h+ypFSr4\neKru/AybnQZ4sb4e2HdGQHxoUVErd4c1lkRil/nP+mgXQhylbhtjQqDq6X7j\nIpj/\r\n=l8rg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqmlsFuEZeJzS1tyVxLb9blPhhGryf6tPUtvqT+1oRFgIhAMa03dnsrRqQd0ZjIa2LgBY8GkfU19Q1EmZ3MRdgx4TU"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.0.0-next.0_1560994772884_0.6822262045639162"},"_hasShrinkwrap":false},"6.0.0-next.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.0.0-next.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"f59f4ab6ca97f344f48a2d8a801fc0c0f99bf46d","_id":"@nofrills/tasks@6.0.0-next.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-9pmAXs2KXOJXtV+utp9WAApioDRLbDhb38rLXxGLGbgyDXZzKIOiU8ECbMTppsjObtJhToWiyGVyefl6MCqZbQ==","shasum":"402964a46612d93e5365c4d12d4e56a3e9eec518","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.0.0-next.1.tgz","fileCount":88,"unpackedSize":73635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCuTICRA9TVsSAnZWagAApmYQAJOym9L9JOTuFUbZ2HVj\ne2BMhtVOjLE4RxdWfdgpofnlopifMP+JK+RVZSLhs6tH7s+dEOVq9JvVjG3S\nlBwsYRD/aBRg91dwd4jHNw/LFpw4K05T43rtv6UpbJFHLE2DDw23JNSs09wW\nIhhdzHFtsJfUi+R5oi8TefdPlXfqKPXnBNu24zJEcHh7yfsbR0zMMDRzoOso\nqEKtn632L0483gv4BJnDxjodS2BTZhgegiu8cLI4fo5IGhPvsCDU0x328d50\nOyJOfKjjNQloxeDlRWsDw2ZMM7ilr147vHGkg21F+hMH5dcuX7SUxqYNFgk9\nzdv64W3nI5hBA2g3v9543+mhepGfm1D6Z1wfXLZxfxxwGucW48XsuhknMnrG\nIkPEghAz6nlT5lAV/q+HVuLjluehnPqhPlD/LFNXsdgjk1fvESjxMO1TOAwi\nmQ44mK/pPpK1jZ71ruQFKHMI6g6mMy9VWCEN9+jWeLSPM3/G8fqnsQaek+ps\nARMeP4ToWdiTErdv4PU6n60/uxzypuvSdOqHMDUkzGdjNbP3eQwkpgnBxx7y\n3un7wI/uroIRahRpCCCkh/+mvdml9UpBOKsKEJHGrnaZ3CVj0M5Y0+uFH/Xd\nlhrUpHMQQWg691uLgXcJPA4rjyt5gyJ/ZJBNG+z6GqZe8pNHxVj6r+F3XfzW\nHdTG\r\n=9X2F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCXi3lOXr+0upOYAw3OVXrL6nOoEI8EFN3BpykAhSgDQIgQQqwLfScD3m09lUk9dQnARHDGiXA9b448OsBETr2EjI="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.0.0-next.1_1560995014942_0.32355626507617763"},"_hasShrinkwrap":false},"6.0.0-next.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.0.0-next.2","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"406cce346b564f1911574457dde842a8bb9c3c40","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.0.0-next.2","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-mHHTzdd4PyA2mhqv3Bwqw/pTvJ2iY1TM4R7GzfuZ2Bo4SyzoHsv8Qy90Ue3UCypG5Mpg8qRdBjbmoW3DTDCozA==","shasum":"39e825c418e8d930de7127142707a9b7311deffc","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.0.0-next.2.tgz","fileCount":88,"unpackedSize":73840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCuguCRA9TVsSAnZWagAAhzUP/3ujvhgQ2u8rcQsU5XOn\n60/PtJZdhkHVKpTWhijVfgLiYBzsYag2OGV41Sr2AT3KGlqIa9AyUmBbth37\nP1Tp5gzpdaDitkg8KD78xkc68xOGoEoDfWi60uOy9lWTLpsJ2plKVCz3TfCt\nzs6Vl/c0YCOUO6xhtIgzWZftZTx4NQx4BRc4B8beRHO/eD9bdrhJvg0hNoU6\nOemFCpRdWSPwQKgk6tBQjkFuiA8scfm/bTtRkXE7VCmuoqxGm4eTkjl6rAdt\nOPhCHOR9kyr2VC1rS4TH2tLs4QqNwujE/YQMP1PNW67JIKE8943FXJdve3LF\n4ei/0PEbKKXPDXHFqJUDZPQCtrDYc7ScWEDbN6N25BDj1Dgii0sKtK4plGZz\nyMbp75LR1rrxZ7G6Nhu7SAtpR3xoRvAIrrDV/KQEBMuGiKwnICKBXNDCt1tn\ngZatDwlKgiJG9j0cS00WD6YzlAj1kb4R3P6godSfN8O+vRJbyxbDRVBZOpvL\nvsSFhaKLavNUeOfuY82cMxPzdOE3CtXe8QTotMlQWwWfw77zO3D8bkGGpIIF\nEmDb83kZeC5el1FKCXej1GTceLHm8jBL88glPOUEocAxUXYO463oOVTPIjRB\nYYntUODB+8dDlchu2euqqzki+H80/g3KDjaI9MIoILyzCRVk00xSnYm1fKjL\nQmof\r\n=tifK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvqRnLlcLwgi+DR7ORQKTTAEleiiLPPiAVjZKYLskBGAIgW/jmu/mB1ZWXVTGxxg5Sg9ptNIzaZ+Dwc0CG4Zg7gHU="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.0.0-next.2_1560995885336_0.7011543232485091"},"_hasShrinkwrap":false},"6.0.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.0.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"e2e52985dc0a237a58ad19ef2f6aa27e741def8b","_id":"@nofrills/tasks@6.0.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-SIyBJLgMj/VKTc8a5mmbFZKBEUTk2dIXurrxHg8LT6c4NZw0te5mivrbCQA1QAtXp83tfMlcRmLqUMg5gw3OMQ==","shasum":"bcfbb309dc01ff3069ab53c822898482c553b6c5","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.0.0.tgz","fileCount":88,"unpackedSize":74024,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCujTCRA9TVsSAnZWagAAgl4P/0oVUdCBQmpDfqvV3uPo\n2c0Zt+mLEWa6pC7qo2glHUHxK19LXPCAvPFiM9ODksynP8WkMal3mroX7Jhk\nVyVoqfRYQWwCp3R/0g23R68DYdw4DZTOZOyGHtAO+MRwH8x4sufbmHtGxl0/\nMhG7+JkUfZ7jl/GgYOcuCKhZoZoHLyIswRfCQSQnHIsaBx7sC8YkdwcnUn25\nzZ8qOBVD3KR0b6fVXPmpQjQaJXLcpZ8THDLxDddg7zDMIAxsuPOT6cbZ3tKB\naz2LvErf7yLPAZ7ASSY5DXUkLusx7nj7uB6CV937MhP+CEFU9Tc2P5EDpIJG\n81P9WZq3QEHYUdE+JdTZLl8hAzNQOAJwLhGGLCJ8x1BgIshvQLg7Lwxl7WJi\nC1BeLaxDz+5DzyCQ1SNxi2RFsfNVBz+xDf3cpMrbjAIdBGxk00A6Npm9riLJ\n19OYEBOE/gkcOxRqq5fiR15TERte9+AxSvp93cFUp/q6Ug9gbZzG5e+6hpkF\nukjZ1qvcxTwHLt7OqPBczA0MwfhZ1rANoshl+ALwB4JAe1MncUsZG1ItvhHf\nWPp59b2iLpjRbk/xfb1ZQjn7Xa5kVmjqfgjeZ1S0q0nuH/3WNQbFR4p81ypO\nVOkDzvROhboFWs9gGBKhJGw/6FW3DJ5HRzl7NEqQ3I4JLi9PrzCgNaOleu7a\nRofV\r\n=r3cy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDPWvPyZCVK/p/7B1aT3+uVSVqbWE+cH07S/T9emKBtdAiBZmbAg2FlqbgnKlQzXGLNC00Bm5LZJwb4f9DAGh+Rh9A=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.0.0_1560996050967_0.5869484080031946"},"_hasShrinkwrap":false},"6.0.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.0.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"46cb49c2fd2e588e45eadb9507e0460235605139","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.0.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-vuHymSBZIGCxjchAHnldLB60ToFRHajIg9vZtudsx+2iF6j6s19KfEeUbGMQu8IFAVmG52B0J3kssw+y+4QbDQ==","shasum":"4450f4fd2014012b1bcf0351c8968f9494b47629","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.0.1.tgz","fileCount":88,"unpackedSize":74209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCuztCRA9TVsSAnZWagAAqLcP/0Ucjt48rKYmQ5DNTrU8\nVMJIz0A4VPFYySpEXS8KynLhfZnMtAVl0b+fLijBSaN1mkZJGs2ekh/6pSBr\nfpdzHFUG0PU+2L6NwKilJcWcp4Ztl8j0PdmiE2sBLlWJWcjVh6YUTOEjDu0I\nRRJBqIwkc3ujSylnMQw0QsUPGfrBlpa7DkrJ0e0rblB7Dc6psJUdVUWN80cq\nRte9tmj/Bj06ZHNocNZrQ5ROOg6sqvoJgfFYsdICNoidsgqUlic8Svfe08Q6\nfS2VxUbJ3G5+C4oAWM41gdydp1Uf+eK1cFDmuJB1Z9mJvXFG8UPwYVX57MUy\ni5genRlNUFxvDl/JILNgd/VQNgszC8ccBOUS1X3g4fCyj499zFv55xX/wE0d\n7RlSfPGS7YhdsvfjgAUkOCfHm9Ok6oEpm+QJAx85Sql2iTryH2niUV8OHHqe\nIL4J4xdVD6SpYj4swAlr1zCWZ1QRWKYeutXy3XifIjDOjrHyvYQfNtFxHjwL\nPPV2Pi1iHFJqdYzW11EXU75yxmFaCE0r1OkUJIhm6XCMXVZmURYLGwZ1IgrY\nS0vD13mSnHK72KhpOMthPJzTJo8VqxHpfn0iJ7PW0Kt/sU5SQg69OaQFpDqM\nMP5vfhalIzJ44ajjB96uwpZw3o80mRVuDLI5eLonGb0iIygwKgJj26WGSqcj\noH7b\r\n=Gy8k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9Lf8v4anTWVEcH2ysbKkxOJBqpr8qPKCwDe2kgv7ciwIhAMY0Wk4vyX/z2aL1BJoLQXlXlj9LBcE7xG//7cvffyrR"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.0.1_1560997100943_0.48895628979262207"},"_hasShrinkwrap":false},"6.0.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.0.2","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"646b35379fae0ed9b33871108d933202a095f2b0","_id":"@nofrills/tasks@6.0.2","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-XVuovyEVmrvWlWQTrDd/ZJJp3rmxUv9bAW6V9SDJoKlXrGvJCipqw3/F4lXs02afypdofwwUt4WsaCuuLRfJQA==","shasum":"dd37eb82aeadaaf9df79812b50ed2b2d8d3c227f","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.0.2.tgz","fileCount":88,"unpackedSize":74394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCu3BCRA9TVsSAnZWagAA3LkQAJjhiSgkyGHyLtNgB4Aw\nYJXGQqlqSe3pXSsMVHXcy2KBp9k+76dICYS3N1sO9qDrMh/hxi4MBO8o/CiD\nCJd3AsasVIMCho6W+pPTPbNTy9re6crwp6PybLADNRHl2NgGv4A+UWpK/ugr\nsCfO0UmvTsDfk5fCtqOGX1JoVs/iAiid/ApoijPcUAZh+PaKXRXukJFUh2Y+\nOggYhZZzCZ42yoaLPaUeEXupahUFAd4Rfwb9nxSditawaNFqaWbEBDJljlFg\nbszHZCdAJr5dAbw+B6+Rw/8syGcomRK/x/VxtUupx3bvETj6aNtLHtR2HUX6\neoGTy/SJW80+wVtu59ZnH+vD2xDgEuN3dglC3WYe2bHFyIRrmW577Ye4+XQj\n9mC7ssoxvx6l7gxaOrTdHC0lc/IkFs7vxwx2EGmI+2a710ibn/n9havIUfFh\nQ9nQvGmRkkfBRQESxqDe30mCQqT+dWhxXXly8GfBb3i37re8lW8sTD5B8Jn1\nuNviRtH+5zSgYakdAjHY2g+2beRQn6W+LPrZRZZQFUn4JQ3Fm0BghO3WJExy\npqf05wcofuV5UWH0rfFbi6mWQ91bEsjCvV2KxqIo26B5zkLPEk01mbfDqTi7\nDMGfc3QaJRFfQYDRiINZiSgXtGTcWMgBc7aOAn9hCknVDXDceMmnwffN4pfT\nPT40\r\n=qIfD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKStJCWqnXy+i/HBNElwunSYkoabNK8N9+JZut5TCRRwIgOz0rL8UbfjTJdkFUVNuuB1VP8CJaINU0EtNzb1bIlOo="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.0.2_1560997313278_0.36191866605605294"},"_hasShrinkwrap":false},"6.0.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.0.3","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"01c83e6277a2668415672b2712eb879211db0df0","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.0.3","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-y5BzIzw2DVxrM0paCRxRr1nrNEn/KiqM9veQldkO7SHRHmQHX0h51ks4/+sZ6Tw1VTTLmyCcUhsVrS0/dBZiiw==","shasum":"5b7e418ede433cd3d06e63a774d846919a37c909","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.0.3.tgz","fileCount":88,"unpackedSize":74579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCu7ECRA9TVsSAnZWagAAJL8P/1etyUnIdPno1+uJsD0Z\ns7PR+HpmIUOyWzvpywM1/CDrRucn5YnvCHoUPUyXs3s+KXkNrDxP+swoYZvI\nQJyg0a70V5pb2hz3Pwii7G8/UWiEvOrWUk/DBS2oQ9gIdP1q+oYmBAAUaknj\nX6ibmOXQR5OanFP1mfmcauunlIkVnHF0IeRUCz5UOE9aFJCNY2HdaOIQW6IN\n6e4UNT7kHrJs5n+yEre5Zq1VVTiIENkYEDdnsC26lC5NvrsgXCT/Yylzy+F1\nMglMLnPD/e8c5QbW9Fncl8ziM87dYNpOS3hllk90vpZy6ampT0jJV30MH24k\niyOOZprQZijeqt9YOHdv3BVsJBCoKxN+Z9XNkHrvddLdkQ++HiDTMRgtSTF4\nI9SvOBg2wx5tr+E+i2d9qmr59mtoTz+HYvhesfFXsu/hTx/7GgAbgSttve3S\n2SqyHegcLKa1hoHQtMmzUoJSqY5Tg86a2y2rh0owyTbscyTozGY2yBhequNT\nBkTzCS0OVxJPqpw62TpEULQU0c9uQzACXFN42WoW8G27ckrETmYaAJUXIXIT\nS1kf8V4q0ekQJMQWaa2guuH+UkeANRjuy5kbNyIMKYo/OMRA8j9FpKKkd4eL\n1NkeEjqVmvu+E4geFjS92/6Khs9s8LHpMZ5XIty2poJT/wORIvo6lbZLeCQs\n3by9\r\n=Cw6s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHlwdePDFPG7uxxjZ082IZj5Ef6QDEwfjv8192G/R25UAiEA867K8kpXFj87/K3MlSfhgmAMxshr9YLHZuCx1/aXQ98="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.0.3_1560997572158_0.45408077811313885"},"_hasShrinkwrap":false},"6.0.4":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.0.4","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.5.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"431e961e8b30110f67de89450c056c1c50fde3d9","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.0.4","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-3eKIZUIgCjRfo4st/hH0estJVofiLk21z7FUDZBpHpR9thiiLZqubzOSham1FsGpvvRwUNgkKPnwU7+CL2mSAQ==","shasum":"47bed6a90251ead031be114fc4795c716d0d02aa","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.0.4.tgz","fileCount":88,"unpackedSize":74764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCu+iCRA9TVsSAnZWagAAcTwP/23mJjVj+rgCnV9TS2ur\nsF0pskI5cHwxUZ8BDCztSm+b5ZDxnS520/AWCvU5u1Iaxz3yLfH9uPKNQvBX\nUPD5iGuiRW+fepR3H4SMoAF32YtqvRe9ofbGvkmRo+lr8Fx9csqGCooidQkD\nkpeM4x9hL1+53aP1NO03sz7WmOijiN+mfiQODvFTzLy7LpdTXOepdn2Fbtjd\nGrqj076jAKSDn7pSKh7y50f2LIO+laAmU8KV/Cwuwp5OCpeRqD7gnp5GhJAz\nqYPN41LEqSLaFn0l0wXng+RO8sbGtKXS3qqLaWskoRDYQ3XaiPv3j0Vmi/l0\nyztKlHfxThIZ+Z9TXTUrtr4CfQhjMpMU6hCxLlzKAS2/C2Gl6Jva4UXrASVT\nmbEAWuAltXqcWxiEkrRZmjSwGAzCC9o1qnNhmQeb31TtGd6ep4qr9XMFB6Ug\nl/wM1o/7J9NDrjFgk1mxSQj5ECyyZX9ZLUTzqcLqL4ZqX1rSNVMnS6XzH0gd\n2WNOU2zgkwRyl6sxVL8oJez1s0pkBCtL6t42OHyoqKxT7Wcak+HdaDEDCqsW\nOQaRjOL9FxjOPeJWUYV6IgM5EojKE9S2xMxB47jH7Q4lEgVMiJF50+L2pg5S\nO0jcSsQ8QqyyKy3sDF9eLiaByWSIOkAUnjGLDe+tLM8qd+IuAcjFXEXEV78i\nUgfv\r\n=MYFk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCytHhOnUb0KWNhXvgAWEX+p0obVB1saJnEvhERNxQ1xQIgckwnyZyNazUT3RK3L6QaE+d6sNoYVGZQpjF3zJx/+q0="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.0.4_1560997794178_0.21578813789676676"},"_hasShrinkwrap":false},"6.0.2-canary.7":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.0.2-canary.7","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"e3bbccfa1e50ef72d5656e972175e10765fb0599","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.0.2-canary.7","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-V62NTtwVxkbYsaM8Y3/7PQoVDFgxYPsGTv7zrbkDNTQgxpXnh/lncZHZcEJ703ihNlrFAzmqtfeW7Kxfy/rwNg==","shasum":"e931448ae3bab2b167ef10ec3488b06b337527ed","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.0.2-canary.7.tgz","fileCount":4,"unpackedSize":14727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCx5sCRA9TVsSAnZWagAAg88P/iVlMQMgK1gWHdXDFqIR\nNvYsqU5EglaFJ0ySEf//IB6n3e6wGKfxAa30OUAwnfjNrIJ0syrxwOREm/6l\nVKUYeiwy+F2wofRdiKnHsdESfdQBIAsjMkd32PjNT3Gne5TixuUtyq5yVgAa\nzxLndouRS63iX+kQlh7euB78Fq4PhDridr4XlXtGdwGWU0kYYoUlNksfGgAX\nFqnhg0wqRWZjg6zhZ1ALPnTNaUl8dYJ87zoQ0AAfQE7avmujOtK90fe62cG2\nAVfLuGtHlC8yWLbETksm7ZpuA8aUp0p1nyYlfoKg8iRDNPzyB2DIldNeGjWO\ngW/U9zbCDc1ERnJoesEfqzJhDWbBeINjWtoa1CLl9E9d4oPaL/kHEyrT/EeY\nXrydISMNxs9NBYhBorBS2hWFAF/9V+PFDB74U2aA1azIQ0/27SDNhonoDOu+\nCJme5Ao9WdWmvzYsix2vbapDgTzNN1kVdfT5VNH4w+3d7o1hItSiaosfZHt0\nd7aGVVcdnHdEFN0hRrZ3jv5+1B6Ti2fEiExRkXRifXSnkfeLyAe4FlMZA+AD\njW8HLr/sLTSH/GxmwcUjPV33LxrvvKtKkIhjNJSZx9kH4LqxHHvZSCr9XNt9\ny6d7dYDI0PHQ8TQYdFuxD0VTcqOr/eMeUiR2Q03coyDnBarepm+Vb7jwxxXf\nMvpg\r\n=TIuC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICWFiNHVMzY/fLXvTLmA7+q0IZq2jPQqtcZXr411HnSYAiAPnWQFDWa329/j4mc+/xUj3IBgUAjjXMCp/ykItPh3LA=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.0.2-canary.7_1561009771451_0.6460120056147864"},"_hasShrinkwrap":false},"6.1.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.1.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"3e2fcbb4e4290d058269883686ada43bd81ffa95","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.1.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-Vkcqou7m5fPsS4FVnY+Lg9q2xwrJUmb+9bbEVGJKF9go62gONZp+FKivMqkjhVH2Gzv0GAsFMEJ+UtZ1cSphxg==","shasum":"419681a8d54a9e830b4dd81e1683dfeece600774","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.1.0.tgz","fileCount":4,"unpackedSize":15128,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCx8uCRA9TVsSAnZWagAA+bcP/RGJpyNi5cvkztdFKV6H\nWKWcxX+JIzbJ8JhDiiJ9rvlK4DTWlkyz+SHKgqBPdAV39f1lKFxkj6mtPe7n\nQBOWOjydwYvkhmimYlkFCJJDPK8BA5Jrk1+FVnG8LQhVB/LR7fUwMF+F7nMY\nndgcvvSVuFuGRqEu1Jp8LDmVau+C9Va4cYkdGRvevCm9uL1az3wxLhxVxPKI\n9N0i38FZFfoHA8UDcs7cvOV+g/nikT9gXFvi9KnnTWKH70byXhEmaT2DrEZd\n8RWlFGNFVyrafRhND+2T/X6of2rDmlLzZijxPHlWblD1zO4YFIv+ymsa+7bo\nNiiAPRpsQm1tS1xVG3S2lslYQuviaVThZLJEnCGR7UsQKDJL/OkabhFYCTY8\nrIXmdE68majBgUFkovxTCfK+d3DXp23eoas456Ty+eIn9We/ZpFF49MZB+Ti\nVsaovx2fPY5DwJmdeUhkY7wWbalXstjRcbr5xkC4B379KFAD1/e3vh6Vb0wS\nb1gFHXjbhKzvIefcZKUtLZFBiWkloCaRVOPZOFJP+XG+YCu6GDFOALMDEE6U\ndivXFnxVjXrNmRfkAPrIiZEkfQL6HiVY9cqjqAQFJgfS1IotzuYX1rc8KT0q\nGL4O5f9gKOr94m9JuiJCyiYr+GbUfA+Qb/92FzmpSi5cMb/YKhF468yMuWYd\nXD4p\r\n=Agmn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEx/zeDIxONvJSlu5MP834EDd/tXwUeCjwdh53USuDVwAiAGc2lPLrIJ0bqwzb6esT/2vbcxA7HRNaRCzCQcCmhdTw=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.1.0_1561009965920_0.2664843211172241"},"_hasShrinkwrap":false},"6.2.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.2.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"07cc0b6e90bf2de7ae767a1c3cb39c676661bf03","_id":"@nofrills/tasks@6.2.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-OvK4G/1IIh6FkzWi9hBl7LpsSJShCFRD/O3cpWwnAl/ZDmR9Hq914TsjhuIeQYiZD+61uflEOZQ+lba9IEaw+w==","shasum":"a2918490ac50e93ac5ea2c18ce1cbe3b33836016","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.2.0.tgz","fileCount":4,"unpackedSize":15366,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCyAMCRA9TVsSAnZWagAAiG0P/RpRcqc4Bei9O4xoXdXW\nR+47Qzh566Vs8IdIyD6lZsmCIA65u9v/aZfIPs+nQrH4d6/2mFYJnr7HRW5E\nELUXFBARCbo8VJ097yJRhG5Yl2EbdVBFzdKaiZ/+SIc40nElAX657gcB8OTx\n2PjUaWUAXQVBfczc08EElVmkr8b0N4ZKxmi/z4/5Yksv5zivzIXn4hBEvg9D\nEyjFrN06oAfc/uZff/20ZaCIyuYYwnh+HoH+FVTGkHohlppp2581L3dVLcMm\nvtqd4udkpMSAo/K3uo3MetCR4MCsJPMSomW1rij6VLEZjrwT4G0AiUgKfQMT\nZL9oRm5WMsP1MRGTchip4B1u2U2kT0VUe1YlTlVgBRZSlBzqd/wWzeDJNhN0\nzbUA5KV1t6V5p9tnr/MMgGDifGB8rglAtqlHZ76OwKuVD4C9kSoQvGhTrKhw\naGHy9LJUG/y8UjwjkPxaE6Kxyd/OmkNCou4CHrLx0YZhLrbVGglCwQysj9Yc\nGlzgVC+nZ/XKtiRhZPVX71RHaHpnTFWSqu7WNrlJWw8Lf5ZcZwXKs291KJ1v\nQkhXHa+EzCVE/lx8mI1/WiwyU8V4cg5gPQJzf2BuHMQubNNHzqPHvVJjvnKb\n6gjs9d1RrByYiNlbM/1YHT9UO15BNyR49f9B7tb/coTKVJMghT2/W6llVzS9\nTqM9\r\n=WnEx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA+bvTMCOwOZVejiEi3eb9jR/O3NO/glBb9NCsdiipIKAiEAslBKPc4hRKEJ3c04TAX6jcZHR/3xrc7ifMa3EDKaCJk="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.2.0_1561010187459_0.2966898351315277"},"_hasShrinkwrap":false},"6.2.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.2.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^7.0.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"560c4ead65cd7c1bdaadc87238b73eb326923a79","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.2.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-J1FwBJob43gl6w0CZdCJ6Qf2tUooUH7kZ4HqSvolL30sh07tkpFQdgfk1MXCSgdXoVKqE7jTi21tJ2MSdQn3+A==","shasum":"235c42780144100257446c7412de09536d312541","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.2.1.tgz","fileCount":4,"unpackedSize":15551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCyCcCRA9TVsSAnZWagAAJYoP/jpLwnBcK9zxHaLexnQy\nFtCymG8dsM0MZo5VdWPrRWfjhioIxtQJ0tWVWYXRhNiQRrAa/9iELSXa3Pg+\nfej4TfM0NTtjQJHXviHYJm4/7wE+CDfeaMqwkoHgpLEAeot/eit4yk4KaNXg\nuCf2P8Ld7OD/h1DLFpoeuBDW1jGCI86pBibbY0DYisqEUPzCqBA4/n4Y1oha\nddynjonim5kDVp3XIsusGFWv5ImzeCMJ50byuu60W8nHGbHOPkejfn89k9oa\nxHdCxKoseDIwCnw9Bki+9VKH+0dT5dC32XsARQxSpv4mgrcaGyH0LkPDqnEb\neV4NEK9e6SGB7jDq4pKYxV/EzP7DjbiSYTxiHmiLMkkddoqePzJ2AKkbJMFq\nonH93gosdALokkbJso4qdpoy1HLq0EIZ8S5Gu/6KawmbBsekoiUQ+9ss17HA\niDKFL7b6Vx41Q9lS2r82pNBkrsXVrU2liLh/zHxffFKwga0nRcu4vGAWoFQL\nTvVjbWwWtFIGXpGuJU8fSeSWh+xjMSbgTmlEyGG31IXYkM7RhBMBab/53hfm\n+OuSH4Ic3WAmD0ZVrsk2Sd+Mi9apihN82Ohc2ZyUDl+cDqOLt3vmWo7HdLs3\n6YfxHEZ882qwCI2MJx/DDeptBjR+S3v/oWUPWBhfmOSclr0BBUAzfTk8i1N1\nYZva\r\n=wVou\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8+xcvFLfYcenJaHPVGUADE+6P7x6idAjEHFzeV+8aTwIhAMcbLBQFy7j+82wJORf2IpVcfKhEQ0XV514QVQytki0Y"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.2.1_1561010332283_0.9633885149389341"},"_hasShrinkwrap":false},"6.1.1-canary.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.1.1-canary.3","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"294bc6b7df2bc197d65a79fd60a9a4c9af397bc9","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.1.1-canary.3","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-a80a6kYDBunrYenJsjVGzBNa3s0qta0r11krRdhPkvVW750vkj9p8bGIhBFEGZbNIAcTrdz9OhSOwybgR1Bcig==","shasum":"c2ba7c26ef910386b7a5ddbb5db40840b60e79c2","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.1.1-canary.3.tgz","fileCount":4,"unpackedSize":15383,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCyStCRA9TVsSAnZWagAA/+8P/jwSF3yiUcBBzj3vSOiD\nNf+MUjreGdF0jKXo5bmsiA2fzyQMFPu74nKEY7PmbGzHG4evRfm7fb9FpzeW\nF+mFh0U2T85JdRaBzWvV2YUH2BOnO+y4PeR/stwAKqLz2NncXt9tSJI75K+w\nCQc4b8Sh3a9Vq29KCNvjzGcXYzDlLFZsHOdxJqdBrjLzTsgdFToaqmiPj9HQ\ndImJ49eq3CZcMpSyhB7usA6PKUBKhVRjUftCZwtoB1/nnWRYhoPRA8gvrk5i\nkyRpSYyG8MGZzcwBJpI/j5M9aYCFgxFIpY8GZNNk85kx/5mf2QR8vkwYqTPu\nmRwqVT4aHuQCtcWj6EIYhDgekbBmJRVXnywLQiqRw1eCbF9RAHF9holh2HBT\nRGr3ZU/d6eRdtIDFDfYDh69301RygrPbvgJMC5QQ4e9BHB8gaW8lfbxF73Os\nZUgkUQaxigaTJwr2VKBsy3xQHnC2EUhpK1d1CZWyYkJxaszzH6dWSi5xsgJm\n7aPkWYE+Nh4impOFGjw+R0xG/mzuMX7uysOgyv09WY51AFibenU409UC05kP\nmdiqN3jgayJdc83C3YtWgEUgY79J3t/XI0FXo2+iOT/qx2dvW9lesT9CjY4L\ns8dlCnx9vGX5PjGclyDCUIkN/rJ2Y92tppWB/2WNSiEUF4wZ2UmolqC1yU7o\nt9lM\r\n=Z+8e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIERU4UX72pkQijYvwVCi7hheVLq868rL5xjSxdjmvcGtAiBYPhDCgWJHJtvmdoKEPE+QGKkjxZ7fdQ7hoKJ7YnW++w=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.1.1-canary.3_1561011372810_0.5465902232533029"},"_hasShrinkwrap":false},"6.1.1-canary.5":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.1.1-canary.5","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"b13391ab809a9afd35ae6be3384e94d73e8ba24d","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.1.1-canary.5","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-SwXCGV/YLmX9NwTorTTUgpmflIyTJ9uzBsqq0uE22/H0fb6Kf6Dovdy88eZm/cIx6fW9mmZjkJFEpYBZGW9G3Q==","shasum":"c86ed1cbd5d179ee66fbd2ef4409fe54c46b2769","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.1.1-canary.5.tgz","fileCount":84,"unpackedSize":97135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdC5mMCRA9TVsSAnZWagAAn1kQAJeObMeRPZwaYtQYxj5J\nNZa//hcM6xzWLatJ2hfjA4EMEuDoZcJWHAFxtlP4yLWfKPfRPL9/mXi2c/0B\nWrkjuV/qnIRh+1AWBt+nBJdoChpuz+eMoKpyZdkj25jbGzSa4ebAQPJ2YLWH\n3/STgKFzGaqZ5LW21+x9CaxpFEKU8ZEvdF1i4RwEscHLnqov8d4vf7pqoJnC\nxTX8XiAypQfaidYbNVJVf76+hWGlN9KdW5EzhNB58DPj2W71L/woOe1p4xO4\nhCzxIaDijckauRTf/ejsUEVyUTIOc/SgFT0JOVO6b8qgTdmA+8iQUiyVxTsB\n6Gc812y36lvHNeqrF4aoAzT3f0YmUrFVQuUy9dYLU4dyEqC2PaUhNxo4taxr\ncsW4WdDkHa5BAQpVcTijxjfKNNmU7leC7LY4yYhcaJcC6KqTQkAeFSuZm63H\ndKu9S7GFwkadOwu5NpTl2mJH26XL5lAlGe2WZWAwraEMPsDd8Hwjc5yHvEUy\nSqQGH8XDknYNagxQfFMHvYAX8F3ouHHjQlQxUDcLvL/i7BwD363Fjw6T0t7e\nafaZjbj0MaU8igHfmu5WMpk8AZgvMAhCYTo6Ck08g//Sgix73oQ+sf3cmIMJ\nnrA0tJb3wLyRtdUIed9h+gYluqjEKq9b5RuH7yWYrYtxD1sxUZCZreO42WOr\n4N0O\r\n=NE+m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF+O0sQTQxyZxWxGG/YJ54ltXru1AIUajGCoO74RcRf8AiAVIJuCaJm7KAldMTOlVlHXT8y1nLI+YMEvK/IcXTc/4w=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.1.1-canary.5_1561041291917_0.06649498518907926"},"_hasShrinkwrap":false},"6.3.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.3.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"bff1d8b3862f7a29d0c403d3ed60427046615d22","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.3.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-TTnT6HXkgKPycrQeuoUubym9NMDmDdJNuHksQEWB5i+H0lbiKZM6lnfEK5zRgH8lW38ibyPEq36FfXrR0fiNhQ==","shasum":"c8a8f342b9ae8a37b7b8b0f9d3b692c4c39d078b","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.3.0.tgz","fileCount":84,"unpackedSize":97553,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdC5tLCRA9TVsSAnZWagAAwWkP/1us18ISZ+6Sx3xW1sVF\nt5Ad0cwTRbvY8fo+js6J8ThLVaoFBALyUL2hhxqhOmN4RJCvN4r6v+UnaUNq\nOVsrBp05IIT3v+Vg9dRwjduhJmYZbP7mvz17biB64xrPtM6sQrw3f6ZwbZo+\nwT4AUV1GFE4D9eyBDa4BQXJ3Cq0ASSXvvk/ld7bRQAYtjWIS1BEC42gaocvn\nBXTLVtr/XSEJHpi40mxkOXb3rdh7Iej9G9lmHOf3TQd6y6dDEx09ZqGMbjdd\nraMD/kMkg49dv1i8aIv+IeAJJU7acXS3rGvNqdEm9G3UEsOgnwN/apwCHsCX\nr7N5OPZlZonHLFCVz3+IxgU+H/s+tQ0Rt8gH4UGVhF3gGu9KFkYRiDhu76YS\n2SyMkTI49N1yLKZaexrYp8MzXr6e+mc1PI38enZ6d7jyBgwtKPrRdk2DUxq0\n/mhmyTzAhnB5IDRbB+ie+o0FXDdZcs36uuP2+bgFwefGPYR0Ue7mh7v/y0xs\nXCVq2nlYFteK1cr3depHt9Dnh5aSjlWLTYcFxWT14XmeP8/kDwhPkTXm+vyx\nlOwyHiY1ZZoknfP4i2KMKEUCADex+0zE3xakobP+r7+DotkrgdZbsW+IeyR+\nQvnk2wnPSdjNaCW5RzoaQ/SC4WEMh6XJjaSaOzMsu2IylLQMmZdXOFDjuSog\nfzeK\r\n=gTlP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIwtdZBCT8v39gyny91ScxPx7QGMWgcKUXG7/R7KbjoAIhAMz6IDGUeActBzmzcpeDkZn/oOYA5gClEDLmGIFSaQcA"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.3.0_1561041738491_0.23212741433325523"},"_hasShrinkwrap":false},"6.1.1-canary.7":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.1.1-canary.7","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"c374cc33aeec036c46e0c3a7c591d16ee75ab880","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.1.1-canary.7","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-w7HEBXcQULeVXIVFDcJd7heq+2E+WWRysVAMU4kGnjuOrSudGtFH05dWOHmuRVSfGyhGNynhV6Judv80XxVGwg==","shasum":"feb532dc0d0be0c1f92c6630b02b94ba5ebe053f","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.1.1-canary.7.tgz","fileCount":84,"unpackedSize":97570,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdC51VCRA9TVsSAnZWagAA3/UP/3oSTMOC4doLKmaCp2LB\nWqKEabataGZ1ic/8k8QjvtsDkw//b0D6YQkpX+cEVq8YOwbOGERllkck8WPf\nLr71l4TNQNup+ptFK4EWC9HFFSLG/p3yWc+z3T/lWcvF7wnaeAjWDOIbwX4m\nyWnTMUa1H8LN2Xkkln6yrRI13HvU77vAn3hwr43o3unWbpRM1Nri9PPZ00Fc\nBVHE5ENZ4ei3NF4jYpmU7wZ2CJJl0+XpxsikpYVLdpXkAE+ho+8V0sXHn6Qh\nhwyyrVbzu2brP/3hQfYloSo1TgQK1D1lecnUAByY2rJhxmXYbd/8TCgopDf1\nZ6ARtvmeueo1qHTyfuad4MsMe8x0dLffZuuB8khNP5r1dxd3//Dk61a3Oyho\nY3hPK0Ak71qgnMvVA84RVpO4TAxipgxngMGcwcvyXW/ZItCdie+JzO3CiuJN\n9WY2tJW6zBy2wJ8/52U+vIqE8R6vAipxGsvmlTvZY3zV8SLzegLTUm3wzBgD\nMvAISDKmiC7coNFk6pJdPP8M9VM1k63Uhvu0FEYV4n37JAgV42oJ+lWGEKV3\nb+dW8C6eG+MvGk0lVLqmmZwd15px6NY5Y9MygFQjAH7sB5ttS6g2WbR3ncKo\nD+VSzV9p8VGPbOIqUBAlpY1qUG9VLcRsdZAyEVPeTbio9FPJY/8RNydRCWix\n2dB/\r\n=eeT/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDnQC7F84kXpA/H6QxEjzxrQBwyij7jMj7Gvu+HxcLZBAiB0O2nCCbeawR3UODQ+I7KcPP+K4mwRt7rlR788s/4fzQ=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.1.1-canary.7_1561042260643_0.4120167617584152"},"_hasShrinkwrap":false},"6.3.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.3.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"22614407a7945400acf838cd619f95f26b170c81","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.3.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-pi75AqRrLllBBmKAj8VuhApyCMwLMvU/K4LNs8oP7CK6t73DwfWBGX3CLcE49QlCvjTB25dI211YUG17+J/Xfg==","shasum":"136cac42adec5268f40f261e1aa75dac21a7454c","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.3.1.tgz","fileCount":84,"unpackedSize":97738,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdC59jCRA9TVsSAnZWagAAxT8P/1KvKvJ9cVPaAh+uQ/2T\n/B9G0OrcBM08+14dIxM2iTYsx9vZg57XD1TGD2OOYyP/Q69DesXCfQmKfoY5\nyog/dYlxdc4ggJGguQrNFXqQkuEgA/LX7BhkqZ8BPg4xilgD9p8MSYCeuiKb\nzZp7QUjEJPTIZ5964at/BZkMMa5Ob/nqDEBQRqJZF98eE4MIxjhHO8rMI1an\nHmAq6hI8/2WRYZZhPGJKfg4DbVRtsFCJmAuyNSY6/eEvjtPULmdBEPsaAedS\nWkdZURDtXxiPEJyFqjzVddxD+xtjXvkqigN0B4qyPdYPIJTraJTnh/0Esk1f\ngvmZnc6dpIcYUOvoIecUMyYAtbu7Aip6wb7c4XmwwJUojASqUi5IzNjGffNI\nS7DDA6/18qRGpIZlSnOKwzvPX4AjQMskCA/PeOifVY5LMF87hEIxSsOE0Tak\n/6ALSQvo18Os9/N0Ko72lVjn1wVsMgu75wRYkmFONADz8j4ojpi3uweS883r\nwif9jii3yd79QB3tWFNC/yEoQC5LnnyJ9bq3/OOy/pdINos5r5V+YQL58FOX\ngxkoEtXyHK9uS79MAXWFXZrITWxxZpSul26EEkcql1AXV7cB1StgBCIuG6U9\n0xA6Kqk38HNpRaMkuRuA/pvQI3JWwzO9IfoAWvoiWngowmTSHPx5dS72JncS\nxSU4\r\n=e7sA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGH72AxWwlfMS2ghiyhl1OLhKfKdKY/52OedNYptCpIqAiEApVJ/YxvYFkwCrOs8hyVNKux7/MmMHx/Yl66GHXBPXuk="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.3.1_1561042786834_0.34662522079176394"},"_hasShrinkwrap":false},"6.4.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.4.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"0bc20ef36b57253611295972e7a8f8cc156d87a4","_id":"@nofrills/tasks@6.4.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-0NIAmKiQ+/HBUEu5jlXQyKN608z76dZXQbkL/kWKOWXBiPMisSm9PHvvRoXHQqvjjyV0pBl2TkjPSa0jeqjYPw==","shasum":"8900649ca82f4d1a24af64c4c503d7ac78d3a58a","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.4.0.tgz","fileCount":84,"unpackedSize":97988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdC6CrCRA9TVsSAnZWagAAodkQAIgzSm2/WpCNG2aTwbtv\nlV8VeGp0eQSFgL4E6Vhj2TOsWsdydVbwZcRi8dLzhR1FI8im7nKanS9aK3UB\nEbkAHnROHqyH/Arx3ANyqqAOt+tjm7Utefn87jl9ekYnFteiZFVeobXZ2l9O\nBiSjqDhuBMIvH8+KEuJ/7uk36WQZeF3buK4mTUKuT7AEnYs46iZxCuA5b3nJ\nQhAVCRJ1Jo4UFxG+aFI0pugRv/Df/CUdK/oZuMsp8pQsuLNNQyLkGNnDzt/L\n85G/Rgpgv77jbYQKZqk+ye6aVwxjp2KCfMxmtWmrQrMnKEgdMutqxmVS4TqE\nd6eqqsHUnzclpBjxMTySK28NSXz+6ambui+LYJwDhNjif2/NkZwNeYM+B835\nteAwojpbQiaS8sPtVkFaa9YnQbLgPdb9zWBfdtqjqqmHPuad9/mZaL3zI49N\nshaEzUfxPfGjbKpRa9HN540Zsw2ufxmcrg+IJwfsFQvUadcJRG9j1AbvIYgh\nUD/oUbIhS1uTE6k5kCBLxIbvyHAOYr4OUXIhOdqqyBWmLkifcqWZU5RfyO0x\nLLpRjWEUftOXxoglNups2r4JLZD5KVNc23VsPYKgr0Y/HadTsvNG7hfoGsiI\nu+87e+4gpS+z12WDLDNA5foxGDy5SbvdwHhumgZ0u+UmVUPpHcrF3byKn9OI\nM4PY\r\n=BSNK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8Cra1iETA4WURMto4hDXuRc6ZZ7l45cDY1KSix8h7QwIgTce6EQNBj56tJEEF5BeQq414V6SfDcLThnKXTmiQDZk="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.4.0_1561043114289_0.8970844614601559"},"_hasShrinkwrap":false},"6.4.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.4.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"6fdd2b6ece43c031e2c0a057f2aafeba5602f403","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.4.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-JiDzwpq/u5/u4rx7ZxEAmtOw76hmCj1ze6vgJBt71HynxtzHISFHXUQ/Ob/m9nOPNKqFMFIlFcbv1oeTgyMSqA==","shasum":"d779617a8cfc2e395227a809363dee844ed8ccf4","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.4.1.tgz","fileCount":84,"unpackedSize":98173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdC6FhCRA9TVsSAnZWagAARb4QAJul5nlGBrob+EZtSajg\nC/WpJWXGdPhuQX6xruiVMO6sosMX/KBarhNwu6j0rrqojRV051KDyFbylsxd\nBLQ859S2/DXtMdJK4e0DP1d7sTIuU5hEi+oVIoKWKTi46me50BqA88YY3kBX\nNuQxrQRTAtPNso0BKwqr9wol4elSjIYbK64LEZceJuyoftaTVN3CzLMQ+qWB\nvycVHXuCuJhPwr54qzk/5zeU8dnmWCBU+Qst35FLdLod/452ikdS5l7sWzAd\ntl/3Y5Q/NPLyfzVUnX4Ba8JKil3tkZQGdq+oKBavRx7EdWR0ZJicapvcU26Z\nTppCwSj+Jpx9eQYLqAMs4RlW8gduwLPbX/SbQuCLz0w99w0mA+1JXHekJpG8\nSbIuuSPnLlYk7Qu85YG6SSDj4CTLV6c86i/bsEz/UvI4K+1staIDEsW3Hf3T\n2/CsfUnD+x0Cox0mU6ocv64Ppy/SShkv/PZrgqUAhe/RM/af5B32hLmUxBEl\nITr5agGGnMM0OIEJra39UFn/z8Ro9RMpacLcPyZXK2ldTIz7MfT/75l0EUtD\nlwTCj4PRIylQfq9hxyVXTtuI2q/ChQSbqvwdpV+uynsGIfT8UsuMUzecmfoV\nqbcatwTGFYKZswCAR/V0BVhYfpZolpknCat0A+wuoVUtRhn1oTSKRBWrVH2E\n4ZDY\r\n=k3Wv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCB1kq6mGO22YhNMqHcCa2d4LnDyZtE5fbPljr7o4HSVgIgBkZjLytdSXO8AUfkCe8H0sw8YoUa7V7teoQ9kjxhyJc="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.4.1_1561043296371_0.8362710940786"},"_hasShrinkwrap":false},"6.3.2-canary.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.3.2-canary.2","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"43ab92e418c954bf7816818de729e7bef9229a73","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.3.2-canary.2","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-1MwjTTr22B59QljFbRUaDuKEPsQU9Yu+5F3qsqP5E8y3aSNrCwheTogx18cHpNLwJ4/NWQQlP6x9okZQkmjwQg==","shasum":"5559afed30b007bea60c26e81b6b7f4be7300512","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.3.2-canary.2.tgz","fileCount":84,"unpackedSize":98815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdC/hiCRA9TVsSAnZWagAAyHcQAJczO8p+XmsQvRRtOw1x\n67XUbjl2NruO44XbcV0nhEABn8HLHvPCZqepCGI0xWY4+AT44gi/ZyDLY9li\ny3vkXqnumxpBt1hOv8/ee1cwEhaGBgxVmGHHJ2a/pPpFHHYcN+lN/Hwvnzx6\njK3f+VWfBbJDpYzI0UkrZFD1Z90N1HZsVEx1B9wkM7AjQvJJXAywJRKWUV02\n/2ixope0UvHE2wm4kcEGj9WPJy1MBdln0p89fEq1YaPHX0yGXZQVpipDs//l\nXYP0w3PWHzUEhLbQaJ1T2sfQZ4fzc9PYcuZM0DXe8mLftvilW3IwRXJoN3S2\nHP2qkKChwlXBGWFTDEKq+TdBqEJPFdxZvke9OgzGxtTfepNdT97RUQ0ohT0U\nBXkmjD5JefwXsi/zZEeIh5irI8GuXbQYQxOldL5Q2+RzXVtDnNFBYO6GntD1\nJYU1uYnM3Z3Z7zv31hKKoQ/ewEQOeG8651llIZQQMAjJZURYnv81iF/FjZyt\nUyKG0BMB838SkeOp1P7RJc6kLYDJ2nvQ1fIW+Dw5Vs126bCcRlXquSmuWzbL\nE/zrk+QspP4fUKjY4ru24dHZJItp4xPi4fY8FAl72YGdQepHPWOrhwIOXoEI\nI0cz/NiMgqWepsdy2RoSvK+lwJgKHWIKRXbO8qYcIkAyEBlxPEpUSRDMCci3\nMi+S\r\n=swin\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEk+LcNNR3ZUE2ZtiNO2PhlAEhBZ65WW9Jc+oLeS5RqKAiEAtUpUajJjTiUy0K7ILNkYO5oY6d3DQfgF0kwA8i1+aEU="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.3.2-canary.2_1561065570176_0.47715355431820416"},"_hasShrinkwrap":false},"6.3.2-canary.4":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.3.2-canary.4","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"63951a9c84262da53a9bd0c602690efc15fccd81","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.3.2-canary.4","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-DpZ981PT/P0WeIiZtHJ36WmLUpNHCvVJ45AwNY4RZFngI9kOdKTg+PJ2fI3fr8zRAFjVa6wvgbv+0aobpahmiQ==","shasum":"523f06095621f4888a6d37242f938a641c36dfe8","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.3.2-canary.4.tgz","fileCount":84,"unpackedSize":98822,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdC/j2CRA9TVsSAnZWagAADEsQAI87d6557gL77xWqMGcV\nBws5pbfsWAgWG+QMEqQPqxA2Rq9XlzkJ6QBnWjP49HU62BBrYT/jR0q9G1P1\ncm4SFGrvxEgtkhbcUjYcX0DFd8yVUBQe5K2ARrjnfjspSwBMHStjOeSAC7QB\nkL3Y4UPKVmdbVEPCWZduwY0HiLBuzZhc7UXTKyQVUPKH8pQp+/odO7jtnCZi\nu677sKd6SIULGKIlYD2zsplyzK59QeZLRFDgmtFWechyEnkr2WM+hTbnFIfc\nJsCOyl6JxCt4IqUErsFPEcuRxUWl0yud9w+ftLkc3uMRO/A2eiBPlj5ESk0L\nwIruVvI0OAbIS8iNRuBRry1FuhntSkQqowZamH5s8QeZ23S6hnMdJdkgt2HD\nKMfX6ECZ5RLZUvHqXeEv9yMHBFHTBBmNi/WE7ZzU96i/EzeuptditO8kf5G+\nLQfEE6OU70bUeY7aosg3Up/Nm6GlF6S4w43X4xYdv/lnVRTcXfYFKVUOSkyH\ndfC92mzv+1JZSFV+KOtAwDQco5i/ZTMFBVh0Bft5UqA86twCSjCO92yNzgNH\n42XjeBu5CLzRNRm8hNKBS3Gl7le/5u0gzpVdfSZf11fC56B75nKk9pnLsER1\nap/mQUTlifLmwpffegPOGko6CF5ul6BCoG0guEssG9b9v6VFY+s8wB1yWhXt\n5g+F\r\n=maBY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRBsbIY7hVyeBMLBl21ZX+mFKq83J0b9dJbFjq02oXUQIhAMpLhHr8vzF4/Y4dQj9rVU2VHqvlHndnUaklI4Saxekw"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.3.2-canary.4_1561065717921_0.9779407194222993"},"_hasShrinkwrap":false},"6.3.2-canary.5":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.3.2-canary.5","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"c1ec6ef51e49375127278bc88cf9c8f262fc2415","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.3.2-canary.5","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-KOqa322Iwu3FCnEfDyNaTtPsokTnRSLAWpdmLAUc1KCmj50L1HaJp2jIBYwWQ+l4kMrLMRsa/dO7IsfjW3DuIA==","shasum":"33c2307c03d8fb8fd6a07b14a9f7ec80f4dd4144","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.3.2-canary.5.tgz","fileCount":84,"unpackedSize":98831,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdC/ojCRA9TVsSAnZWagAA5uEP/3nLPOUP1WypLl7/wNyc\nFq5dTZPOMGcQkZgl1Rt9U6UktLQdndEjZVFl7bOfTNVcLxd5oM62uhx9Uoqj\nvYBWzy9yTiBON95jBmAKyWhayXFRXIiVeEN2jTkTI3Tp7ilzsX0QWUpa1qIf\n3mUSusQJz0jimz2PMjPklKKwGOGtwdbKZ2OgH3Z1Sl8JuLVKzGkOqW8fq2ob\nwYL61r79niy89iXnWlwl4HLGJObIChSxhHLV6lJ0Q6P/XUuB5UTYjDT9gO+H\nd4JqfIkWmYhrkC7nobSku0HYA0ONSRLZPjz3Hbjz70rE6rilxRRaEFYL/7yw\na/7vt3f2QywXBKMlLqoEiGzZ4qq6+idcAEPRB2Wt2/8puCKYrfalojs1y4fY\npEIda9irZt5vDua7TObSJFGYLyQot7W11QnncUWsfVzBlnQ3jQnlaxXO93n+\nBezcqqqsvnd0keI8mEKlN6eOD6+E8Ys3ucG1e9odEVmfVh85lJHAWmLfja81\nnWNkSiBet06ZA/rJF/OoOkRr0/+ledSnRgEj7ZwV/0njRAlYeJnwyVD8PxhZ\nhkCEhVV03I4MrzVONEaaap4jE43hNsBJTAssS5eoDPetr7kDpngnFZEI8x6t\nlsulWEZCG5VALKQ+/WlLG9gXfGIaXeYgI3+X896pfpXGg+x3d9+ySATYPAvv\nWN2N\r\n=LuwQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0bmrv9uWv8o7zgSZW4/TdYFJdU0S3sNEBeQwzUbbnDgIgI3zdPnp/rSdHYB/PicROhETxzZAyct0Xs2UxBADju8w="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.3.2-canary.5_1561066019048_0.5780591018772245"},"_hasShrinkwrap":false},"6.5.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.5.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"d1f8775aed272e30ff1a716b6d950b4f237a9147","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.5.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-px0efTAYZKEwyZngTdf1POZbTiE2/iOZTKds559df0ZRNPLWbv5Cb0iKL0h1PbJAlLjiW18Jxkw6dFjSEP50sA==","shasum":"95df489632482822aba9660c8401fa19ca0f034c","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.5.0.tgz","fileCount":84,"unpackedSize":99235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdC/rSCRA9TVsSAnZWagAAvckP/jRPAUWbfnxcH+st5Llk\nZyiWS24PWjlG5NyaAeAimBe6l6GTe+i3YvGNLIiVbWugJtPY3sn0cGYXHoFv\nfNUPDN5Lguzg1fgCj70ihaxEAH3DhJebL/O+1IqVIKpAIXspyPA9idrf6jv8\nGWaQctC2c75kEEss8KXpLgYWY24c5J3n+rd7E/BgyMkO72brwFJx3AGxF0xf\npnfJP8rQxhcfcEvPJCzHT0GDICJiXLUsNK4+C9iRjAwuQwUKRU541rgwWLAj\nx+vHczi1+6v6zVhyHe0wLnGp8EAC1IFvo12vFRfoDsJ16Dj66C/GVsLAr/6Z\nfYzdwPkxICTr/uE5gzJzxWtvApXgQ8JHPR5nPvkCnE1Jbg0LmhlzcJLkjgoc\nD7CTdGzr0k9Cp4A5rjO8IHavm1IBcvS/APi6bFt+d5PDKxUXGy30aLNw4l+k\nwmUKgJXQbSFKFeCIX9EbtLM40QP+s3WwEU32Gxt2wsMmyy4jjn6R8hiDhJNZ\nMchVx+zsI9h9xzbIOWoC5kqwBpwEQ014ArRfzdqlvRbvXHcWYhJgZAJkHDPc\nNvCOvL7iKqsPckzc2kZGOLaR5NQfhwxVdy24GWCUS/sKEGtCpy3NTD1BOGTd\n309Gx+ftENdgafAALTEOOvVBpnGkJt3lZME3+yl/fTQ2U+PIYWkGrDlTCeOi\nyRkO\r\n=yoDX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBDuxRulsOE9ZnGmqyBOX14lK6J/6sKfnSpi8YfX8KEHAiEA2y8d4xzCQW5CWPm1azKuqeF/SDE7BPLFtrUm3qSuWts="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.5.0_1561066193706_0.5942498224010659"},"_hasShrinkwrap":false},"6.5.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.5.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"bfbdb37e8b474608da8c9953c2f231caf16e5d06","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.5.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-qTPTi8SQTAPWFJFnv/3+3iZ51p2dzrl8Z5EIMTVLT17cvuB10FNKIe+owV44XRGO8O3mY6DZg+sz9mcdroNt/Q==","shasum":"0980eb90c48268c96486889e00fb2669cc37836a","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.5.1.tgz","fileCount":84,"unpackedSize":99417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdC/vFCRA9TVsSAnZWagAAAvsP/jPSBSVaeE05tKUHZ3Ta\nm1j7qMK8SbV++7Hr722y3x6gqvXTKO+4FYSzU3uwczxzC4aO6Dip9oTDmBtI\nRJhAZmTnMeMuzBM5wjPgDkIB4gFbVyxgg3EE0fMartIma52b+k9PI+3ymuj5\n9zllgA9fTWnUOYiRCljrDM3Lc4UJkd90XbceqYyv365KqHOdqXz0f7iEa/W9\nfDJrnxnOm7e19trOwZQ2wc9DCszU7hwr5FjXmzrD8zytlL1GGE8FlHV8XwE/\nPf4oluZJHaJhyNytK+d6Xs7/oQqOg71U4MhsmRpDaloFNOd4fhaHCK3cny5s\nt4rQzGNVVEdyZ1m7hc//jlzEe/VFO3PF63mowwnNU61e5XCXy+vLczQpLi0Q\naWB6LFOpGBAdKRkS/ZmwBZKewywN1atIvjhrrmJNuasQeXbgpnJoBirwX4Kr\n+WwlxqF/y7V8TGMtZ+fjxm64xbmSIHRKILyjuyCSTWpHFIfdTviYy+qHjdyu\nBM9VPeAO7aWefXZwhNfgwf8AymG/HIk7B3LzATByLhRKJ9vaJ4Usaa0cAkyr\nUu1RA02jj66PPd1EsV6C2/1m1ra0002OUUvBrUDjmDOgRcty+71uJdfk7owK\nOSiW54mh8vqEvNH1ItjQDb2xPhOJL1OkdCVSS8iHKRd0J9OAlCGsXiDx+UL/\nbto9\r\n=GI5h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMchTWo60XovFxuJtQ8Sl6VRRDvqwVWqvgfwqNAdmnvAIgQ4kVn0vbdjNSUDfgsCWekgbQx9BpaBB9Ny572uc4yi0="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.5.1_1561066436976_0.7367530295950193"},"_hasShrinkwrap":false},"6.6.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.6.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"56e5cc5454093ffd17b9b158612cd1cc961b7b49","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.6.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-V10bhU9oX64ZrZzcEdLHRZWzdPxvvIeZsyTmki4pLzjtCvJ4TQfF+h/q6XiGLM6ql+K0J0zKTvG0NE58GXaYFQ==","shasum":"a1eb7e436a105acbd06da6add6ab5170a6252397","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.6.1.tgz","fileCount":84,"unpackedSize":99892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdC/6BCRA9TVsSAnZWagAAyBAP/3z6FFzN9noFliesJyzA\nePrHsLtOcscK5Ah4sGWQ+gwDQdznWWK8Cguiw3mdClKnGgFGCVNSAUXQPVPf\nOHrp0DMqWCrpda+g9zG9eVeKRC6Zf2r8eYAHEJx86lbxDWL2FE8cdE4BdLuK\nDBG6+bmykJhSSqyK04kQiSVPJGluR5fHNcoGjQ9MEKxTLnxZUN8v2SDGQHXR\nMg8f4pVGY1Sx2O9T6qk1iT+QHspd5yvWbzFu1UuFA91Ll1/guQgCEnXrdlJ1\nkm+RiUFUT91fhIMPF1C2YkSRIMhOPOHZP4iY/QN4t7HnIExaEQepH/wTD2QD\nTbvVQwBxAxJzuUGDMXCHesIq7Taame1pcCUrJ2kH2H30WZjF74Fx1TzhXjhZ\ntT5d4Baw2mTUdRwMceDwOf61uP1QjjhrFNgjgzOqdli8v+y+ToKh435PsQm0\nK9TTrBV9ixQdp/xwkv7hN5ZigM1lL7u4VKIEUzUX/ShiWZ8Doh4Tjjg6LjqX\ngunXYPgWaO/JSC40NPvHTywFBoGa2uVvl63LuqTS0p3ZKegCr6FjkUaLY5VQ\ne+VcvoFkVMdMJGDmH9A15tuZKl0Ir5geb+s3dHisJYSwXXaK7O3xqmvJfHLe\nF5G0nj1LVLh/06CUegVzp3Zty/BLrS2R+XaQ7XSIvOsLpKY9/CgZ2H3yOHFz\ndZsM\r\n=5c/c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHSGv89O8NVf6XEVeGIl/2EMr0uPp6j62VAq/KHwUHriAiEA7XjxaEcz729xnz3toVMihz30GZ8Hq886ykudw5e4U0U="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.6.1_1561067137065_0.9093146323223047"},"_hasShrinkwrap":false},"6.6.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.6.2","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"2da1083748f2d4122b3876d333dc93a9b6bc1867","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.6.2","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-NhzyzfL3ghBTf2p8c5sxkvtsQVM+Pk7TaC8/Vw//al5Sq0TyAi3/JjC6e2LAfAjSS3wrSN5DY0J7IfB+4I5RUg==","shasum":"79608df09a0638686c7926bd8ed27d5742e82db8","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.6.2.tgz","fileCount":84,"unpackedSize":100077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDAG7CRA9TVsSAnZWagAA7LcP/311Ch4LvDU7rF9QWrj7\nkYl7OBp+OxPfQS8PmVn5R6p/siu77nY+iAhMOIndyFqNce2CDIcKAkEh2hmy\nObO+qvnserX6Mp7tniyQoi8UCtZaMQi8sKe/OfrWMcbbwMYwJd7ox3Q+9k6S\nZfwAM3I1bzfokHgw0E/+l63e6NxH/dw4YrwLTUDteCJCfflVnKMhHO4/A4ae\nTtJvRvXbW23lvT+YXXHUAURdxVvLHuc8yD79OFa2J96LBGncofOf0LKDLqbt\nmkxTNmOoV1/Uho2IeWCtXTh7mAt1Qb6qCVmE9i4y5ZMQUkDrIyjYRE4uDn8j\nYDJCGGKIkRxx8RPyP3fXQC8iewABNM8z1KWjVnPMDBlZGXLA2UZ7Gm6LAjEW\nQba361Uhud2i/JYckgdUtx2R7ubYhLzjXZTCUl9qM5LZH3fqU+qPO/2Iq29L\nEmovOBKagXVPfnPCI4V75Ls5iUU7Sy0BqKgksWO6aPlmoxKCaU0qy66Z0tnB\nJz1lBrPN+SCrZuTAV3MULotpCgEVuL/tAOol6XRDJxuri86HMtbCLJi06Esx\nPSwVzND4zGXw5qOgCnwgCmgQtxGBbJwR+3XVKU0q3fKJ2uph9F92XPXbksLM\nerSulLqWUtezwui/ONRQL1F3x5/XO3DO4pn64bPmcRU5sFH9qM9L2ku8W/rH\nbGtn\r\n=A1uz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClGJV30zA/Jh090YqbMGSWEjZEwIG7mb5c/r3cd2UcDAIgZuKK58E/8LT/gDnwTunSp3Qvq+u1eeCGvjPTranLRN0="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.6.2_1561067963197_0.39872907204801655"},"_hasShrinkwrap":false},"6.6.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.6.3","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"7f5acabffea88465b624780d4dcde05be3c2e0dc","_id":"@nofrills/tasks@6.6.3","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-zkrsaMBZdpGFu+aET5JSSJ/gFyFoyXqTcMapCLy0ItPtPETE89jPsOAarfbLFyiOwXg/zUrKhNO5PFaFmfb9+Q==","shasum":"8c62d64a2877f4323c54d2005982a72ee68af935","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.6.3.tgz","fileCount":84,"unpackedSize":100262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDAKJCRA9TVsSAnZWagAAVeEQAKCaRWyN4GFpe9ZkcAAi\n3I75bRaFSyAEx8Blvi1LtSFFpacoXjfCIOKx/fAWKwDml1i2DfPU0g2teKQB\ni3siLiSXufNQTSCcYlVXzcfdp2ZKSXPNnkvYEBWVK08fxI97Zd5INNrr0qWd\nDl05z7yG1TbsnNwhhg/c6p0iMl8roup7XrUBu87fg9/YqAaPAW4g7lsGPXgq\ny/noGU2TwHp+HylOzCmeoizZ5pSWjfrAkU9DWY7vahsiam/7SNajNnigb1Fc\n4YJGROyq1f3t255XGg8PxQJhGgpXoZEH5Ni0kKxE2u+n5tcJpyN0QS/3sUlS\nj5meRhHy9r04P+qbgBWKQJgraMzEsP/vjCVPEGDtGX1fAB1kYQyca1tpy23x\n5XCUpAqYZSxJl++CLM8sqfZ+FGw6iUWIHggTNJrtKaO2sp9N7t/X3KlVivU+\nuhoRm4JO5lLgGR3FEppZsRgXUPzia/6HyMY6Y9qL0VJ5sx0tHZ4SvLfUugz6\nGNUoiY5pgxouB999AWtXXQbsy3R4Jterm5L/D6IT2brF6fAlPoz9Q42fTDxZ\n0j90BU6UwqYgo0is/FPdEP6DFZQr6LDhi6j2K3o1qlR98ALuN2/VruNNSvwn\nuBGGIGOSr2rVRZZymbPfSoYqNGDR6j1DwYRnZVwtlnYw/LR5TFZ+7oe5+CfZ\nbFDQ\r\n=HHg8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICCLYG9z+ta+Lrp2Ql7z3WGwrRRPuAeUYfC2KorZXFXpAiEAxm/NN1Ysq5dskawkQRKARI0LzBaU7vOS+lDjlmASjY0="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.6.3_1561068168440_0.19930345928221627"},"_hasShrinkwrap":false},"6.6.4":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.6.4","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"735699190404daf2cc3ea0b6d1040c9da0d7043a","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.6.4","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-Sdsb7ycJid8feVQXFCZDhJchS3YKqkEpqpDW//LX2CWQ1cmRh5BqjLP1QoyreW+t4PK5HiDkFKg02YYYXzB6/A==","shasum":"e98a61820697216e4150d9015d2a710fd393810e","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.6.4.tgz","fileCount":84,"unpackedSize":100447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDAM5CRA9TVsSAnZWagAAs2gP/jNCJsBQ0oPIEanmFuxN\nVDix2pq91DHhW2wcQzI6DE3HmOnbwru2YMR3rCkm9JV2cgUs5yd3S38YuTsk\nCxmOmx9qBeY2VOPPbcxnrEGgVSsspEQ05gX0LYaMrb2hmBBl5LO5gsdHafdq\nO30D8jXnHWceL+XXaHlGeGMdVwdgnSV4VK3NLjhVv+gqkppSoWssjeqXjMty\nqKcTthzhiQciSCbCF2kn4+NkzqajjnSWV4KyufFc0wS7HAV8sXBZrwzjDSoU\n8CVe9iYZR5M7wDJjK0BHCveCy8/9yBXEyulA1greQSyg0nYkxRGnbwpMEDrI\nGCjjKsV6dOrjV0lMjrNQ4cYZKREbyCn3/77G5mhrvUQc0kKIzozKkC95ao4b\nxQ5xrezjPB67Wak9b2Ol0A8zZHeOWKYiFwol/VPeC5fBz7TPxsa/i2u5F2Nf\nsIPctwnBSvXnTKx+f20O38EhYPd9BwHK87KfMWsSMihNh8oqeJT184d3DrmF\n4UUVAVN43WCZg0ciDRCjDio9/2TU6+gUYaFTXTdqEJTu9RJca2WwbSgtSJCX\nPv9OzZnLwqRMwH2rUCPsHJ+5Og1zWd7oFHnuo9s/lGs+xxklAyAKJy9mFR88\nLCrXrG8orIxwATNSIyrjzfc7nXNqpT85Z288E59t/tMjX2GoBjd/xf4bkGmf\nI7Pw\r\n=Ocfz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCy+R6DbhKQ6rSeeIMOA9oMCoLsGb1duRCikVnXtPEBKAIhALY1gLYe+sw/2HTNvYEGWD3IJGSJB673F2V4rGGT9CH/"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.6.4_1561068344466_0.03599354418018286"},"_hasShrinkwrap":false},"6.6.5-canary.5":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.6.5-canary.5","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"aa17af2f1c0fd6556aa8b8b4d783058b2388d8be","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.6.5-canary.5","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-qikszUFSogdszlZzbVjz+q1Iu8IGC4MUmwjRGte/ZeahptqsYfL/7JpMKM2ybK3ht3BPgpOgMkBkCtfjhwagOA==","shasum":"2fa5946306f617b60bb51cfe865fe8b83378a9a9","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.6.5-canary.5.tgz","fileCount":88,"unpackedSize":115308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDEh9CRA9TVsSAnZWagAAizoP+QBLO99HeaEVY6TRDZvy\nCSlUsk9BpC/Wj1RvZc/Z/y6yZxRW15WLqZ+7zZz6X+0vX2N45EhGHrV90fMO\nTdBNuFwQqUOM7EbYc5V3FjaQyINArfVBcP32HsZNt49L73YLZEloUl366Jt4\nl5zzSLL7/jnCF/NoVNpdG7UXlpknEZO4KGUyZDJmvMyanaZNXKxzFkhyFI3b\nlLHiXGmu4KWZoPNlDABpvoP+dgUdMHnzF6PA+DV7aJ/iWcTg3GgSGrXn6mwg\n5t0M6s0t3HMiLWoV5Q1lR4ZaeSRzDfOcBm04UphWrO+My8HBP+KdePnkF2p0\n6wAtbHAo/4DuOY44C4DRXlLqR3apBVYSiVNma+uEXswa41yZfex3ZlIK9+Bk\nVgj/42160aRb9aVbsf/HcAq5UPoXtfi+UuHQ4xHOrIYrDCPqPGZUhcncPMwv\nfnRkOCjRwtDgSv+5G07tzhv/4KpJYkhIJ28dM0x23OGHES5M4NDjmmbJACZt\nU7htv+RsJXCQ6Jm9I3IDr5+FJ9uqdUPgzIBodALeEJtri6CB1ne5tRY6EF+B\nEbGXifTPLn/6wGStpEIO7YAh71+G3RbZChKt2uwBoF+8rLfw4Ug7R35KACSc\nafq62/VIpTXWDX54nkeqxGPPYRVWysvIY1zV7yA1JxhBqSSbnpwDFo8lgHwJ\nZMg6\r\n=J7g6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDwofbD82n1TB2p10E4AjGZUOyvtjFkmMzlSMQGqAvYlAiBNjFXK2vDL59aMXZ4D2txPeNR+nl+izDmivyaEQPImbg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.6.5-canary.5_1561086076993_0.3856126003889728"},"_hasShrinkwrap":false},"6.6.5-canary.7":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.6.5-canary.7","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"f9574ffb5549f525f44b49033b2698d7e6eb79b1","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.6.5-canary.7","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-dUEg23NRbcI/ZBtS0lFKs6JUfYzHyNdQ1oRo+YAYH+unt6KJdOk+mxa5lbGz+5TFaVH2UI0OaJTpQ4zMjzI0yQ==","shasum":"5a12ac564025e1873a68af386eb4e80fd6851ef5","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.6.5-canary.7.tgz","fileCount":100,"unpackedSize":121185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDGX+CRA9TVsSAnZWagAAqSQP/3ZybjQoBu2zcuHJaogT\nrS48lXpfxAxtsrIK476TYspSzPP5u0ZFsQk5pb9++1ldydkQjdMQwLr7hbR3\ndlnkYbPRKw50GpIFOja2bZqdRW+avJxybY4QkfKam97p+pSZ+TEqWpsj1dga\nsp3jotk6Ax2xrS3JXmgiBWelG3WVPRUuhJTKOL8ew1Urv5qv0LsVCVRglJ4g\nooMDqqwqukS+FtCVQqkMIOzedN1+KCoOOwmsFynYRvSiLseSYV31/CMJwMrx\nMoN7EvEzUvwSyXHH5YzXSjzG3DsbaBjWvJcRj9XksxyuIXF/z3rFAC1o1EtK\nz1W5nrizfRkiHXjtgDb4c05KIN43+vv8WTkI4NyAUelMMep4mhMprfwvGDip\n7ByRwSEJHkBrKRx2ey40lRehXBXSz0vhnwVExBIzgj2N7AvZabwQSfUlZTDw\nNxD5rScoVsiuuGiuC8iVd9ItJjbR1Rumq3Wr/YQBQVMiuA8hQYShDMrrRnSZ\n8vTjIlAx1WrBweUhZGSkYty+VJmvVYz5ePEKcA/2xgYqAstpy2h3YLAoHzrp\nt2xAZDcbcH7BsI3UYrWJPasZioXq88QO4BOxO1hR2Gy5uR9PzKL7I3inwBOB\n2EABkcJmavRNT/Ft40b65a32huYrksFHvlccwtz/8XWpCNFGh8QYkQbYVDdA\nZxJ3\r\n=pEbK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICKNeC47lTI/ltv9ISSbgmo3ZQFv4RhR7sOgvTq/2Aj6AiEAodG4MDIrgiEGyFMC07qP87QlRw+h2WaKgk96MJwdmkk="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.6.5-canary.7_1561093629792_0.6292154595011499"},"_hasShrinkwrap":false},"6.7.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.7.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"cf68830497f03b25e05f2fa74172a115287194e8","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.7.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-sNxyPIk9aHZamiW4lTgNmgfb8FaxFc47HkU8JRVSpWIb/V7h34zrGC1r9DIW94QYmjXITuxPDaUbSRmHiqcj7Q==","shasum":"def8f32538116bf8598844ce5eefb2cb8281c053","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.7.0.tgz","fileCount":100,"unpackedSize":121418,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDGdhCRA9TVsSAnZWagAA7+QP/RK4xGPYgbcfACWnuZX8\ni38ZAMHIdr+4fimwTlfrydnVfz92CQer4w1neJSndB6HAZILohWbLewimdqz\nX2hS6GRjuAu48x1sL+YyY+Ytqd5uPJqRqk7BeuDyiIB7jbBDKsroUmoA8SuW\nPPJqIRtFmrxw3rRfDSQ5mn94Pzmw7q3EM+Bvbf3bosmLFg3EmAXtD8EGY6go\n1SefxIIWo2owiAMwAi5LDWVVYYv1HYk5SGUqvaFNZUd3ZAM233eJrL6bBXd3\nSY1bM1lWvi3HBSjS0y2CG05M3g9kvIhIsgxrljp4N98e1mI4EYsoEPHLk8Rv\nYAv96DOvhrjBv9BvwyXIPxekhrKTxUfsjOWeQr+5Le2jHF9FD8AJdJWULT/F\nyEz0pBycmbGZ93x+XJ08hrlf2wjsoSiZvg/DoStqVsS/WzzVOU/CJXfs+SGA\n9oOKi78CmXHWvCkG7zJ9duxTkx+s34DU3S2mBzICdJgxfJjZrFRjSiHK4Ls7\ngFYZcNOWg8gfn4GY8o0Z2R/Z+GXKAMWGvQgnohXjMVgeTF3BAuyowPGF+/Fr\n38o8l0oGEniENOXQJSV7hjIk2UsOuamQqTXD9DKZSsbUeKyxsvGRb3wD1k55\nh4P55qsW5JchUJ0/ES2cWxMZ/u2Xvu9wOHXIy1EzwaIsui30uluS5yqeqz6Y\n5TxK\r\n=PW82\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdV6loAn4GzutXYX5ioN1aMarFF/X9IUYUa4rr79LaqwIgA2eKE245/nPEg3hZ7b2a4qIN+J7/gcC/1+scKd/CI3o="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.7.0_1561093984997_0.20077708552242957"},"_hasShrinkwrap":false},"6.7.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.7.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"2b22d03982cdc2cece19ace4a113a689593f1072","_id":"@nofrills/tasks@6.7.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-1zjEtH8oytfWmlr4MjdUdxcAkiHcSQHvI00Sq7mjzNY8O2rh9CPTYezmNNgvJi0NWnCB61g/t80vgDOR+iBK2w==","shasum":"98230a954dfaad142b3da7350d98a3a42012f996","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.7.1.tgz","fileCount":100,"unpackedSize":121603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDGf6CRA9TVsSAnZWagAAjswP/1BxFlBlXdwEzU2E/XJ3\nAHZIkpWLPQUxeFk+NbiyGv/sJa6Av7A+9eWaHNMtPMtLf7YKcF+jrRvCrtD7\nIrRjo1dfk1kXEZEQwGNp3x0yC9dKfY8qF5lcQkv+GHd2fjqBt1S1jRDnEU5S\nNMUdCDpjO9fM82ZI7ijp9CL6FDB755YlzGorYQ5GCbN7sXpXvOsool3LhGAx\nHVyvlaIfJbACJ8oc4Gh/lD6Km0WkU2i5jGK/SIjAfznV1dK493fq5wAvB//K\nDRDb9e/J/wOcjctG9/bj58G1xgmhb6xzsMTYG4IGxdCNsYo7HdPbZ0bchsJ8\nh+ggro37AX3FkqsqcdNTio6Va1BbcFmlT4+QpzRbRQIWX71AvnkLmUVLPRAN\nU3dJAVJAaHhRcG9F/mK0DGbzjbfejuwSaB55Li3CClIXHsBAqpwYUiLP/0w7\nOG8TcffvXvUgptD6xPdDVQ/LfTGuipBIYWuaXz5bIHE4sF8u71NvHAym1DDx\nyjx/WQHD0xRbLxVuXzPLMkSWVPJLZhYpxGOrwNDD4wCqeeB+cvJr3X6HEL95\n74a5YQWgZBoxg1mKd0232m1wPpxV5HmPNBRC0pl8Ov+4tgMd/pYCrtZe27qs\nTRVMGiDliIu0E9qswUsP3OS6RkvxknteM7Xxhs+lOhfeziV6abqL17qtuBl5\nTzGW\r\n=W8G8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDd/hbeeLChA/8C483psCD5tA45UkLxoAiuXTvGVtsGrAIgBTEc3STWxzuW1h9i//pbebFbVNmsgEJW+6SPAY5Hh50="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.7.1_1561094137703_0.01064456994278662"},"_hasShrinkwrap":false},"6.7.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.7.2","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"3e233fb9b814b1c672237ce587c9eca523961ac8","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.7.2","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-q1SCQVpHKF9EnhoLjJDrPAmEn01aRNQOnYe9gOBMx8lfSG8E+78lzibwjrVthbqkq7hRU0+4JsvPrx5CNkQQhg==","shasum":"cae92c8941ad2491f60e35d8824d6237adb13f38","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.7.2.tgz","fileCount":100,"unpackedSize":121788,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDGjzCRA9TVsSAnZWagAAUSsP/042CyZE1NZUecrBcA+b\njF989hkvIe0G6mFG2/xzcZd4kIbn5Yd+MC9YF0SKO1vPTiAA8MCHUrskXBEs\nMPfrUUDsO2neq9ZSzMS/KbDkbks9bfEyNSiCeTENBQwsHIgtAATjk82R8/6t\nQaXiW6AjroZYNjNtggaucnsT9YSK+8ovayFkhEtKBxEDVIuVFWZ6nvC7rllc\ni/MLXuvYs3WR35z0b24n2OSagfc6PGG1ipvhh7DTYs4gfeE4SZx5C6IFNCdL\n8r8pxKatKvd19L5acCODjwnqjP7oClu+0UnuOAv2WPVktfRQwfdPc43rv5rg\nceESiRfTNQ5xld4hDx6Uk1GZU5E/2LdF8icvkRnpygc1+3r0OgOv/hnRQk/E\ndMAVVKlglFUWEaD0jRkuHfKUbDAsKaS6b7Vu29BHAXwf0eBXAQwW7d1n880t\nrDSxpJKp2YH5qr0MRLHDEBPIepy/+WBVyKhIKt6jk6KudHXVGJUK3OH9rpQ9\nVeIiDZa/Gm6sivpu0RR4YECoaJJSbPnuQf11OmJa7kLBmzhSEqqZ4i4gIYE7\nYYjj/XnDOaSBlU4n3D4dDxsNAw8ycFLVOjn/QiigXjCKt+YxXtw61OXbQeX0\nhhotWaMqzsRqOYWbtbcplb51WZth//tozG9tSi2RkWDRDsCbAzoBS45BuB5T\nBfZ/\r\n=Ut08\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDii1ZF9n0xmWeqMkJW9OnG3LBBv1t7YKAJOZI8RlgsDAiEA/d6UoGXFhNQ8ixynozloZw4bYQfxT9n/g84RD3Aup9w="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.7.2_1561094385971_0.7105979146162531"},"_hasShrinkwrap":false},"6.7.1-canary.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.7.1-canary.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"c5ec2f01146f9e6237efc0c2081b212bac431467","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.7.1-canary.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-2WVF16OMkUlZK8+CvFfX9qLLSg6GZbqjKECy6MLS641L4/AyLwMr734bNzwkz3VosQejw3Z6SnBHvY+OMYaQZA==","shasum":"95b807a910cbc26d62ef790691ceac40cb7088e3","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.7.1-canary.1.tgz","fileCount":100,"unpackedSize":122325,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDGvgCRA9TVsSAnZWagAAVUoP/jrp9EqH+BP3vDzIGJAk\n6Z4EQxw/c9OnXQcIfvVCNrR1Z0eYOuXXRDBtL3kgfKW7e5pkoXbPfQU2qHx/\nlP0PxZZIi6WT/QPUcV334Sw6MhAftcXfBLnlSouUjrWQ7z2NEt20Q0oVp5l1\n7JiilqX+JsuIyrf0kz8ZSEa0iWyYNB2+TCnyLaP7V7geVFpao63xMGuWOcTC\nELEpcU31BlSozXcKD9KV9V2OGhAOfhe49sQWZURxQP+TmBdYkdUcTqsaJavF\n/SrAjbcSneQxHqeaY7zQvin3IMKlU/kkjQijHyT1GmQVYYVpdfECEc4b9afk\nbVKwCC4Yd9UzxFQ45wnJgq+K4luBuweUk7GFubkHHTeCY0GUmaMLZaeIuBFk\ndM7AqpDXD9YZBtbWahPOBX2+oj+7/gFa+ABkuyyID6UIXtxODr1CTx0H73sU\nd+9Fu00i2IvyE1wDo7+OHPNJTSc06j1KK/Bwt71y6SU/lYL/MrvzSo4xishd\nkeNyrwIuVA7VhhVGFNlRkaj31OLpsf6ILUsLGm8YI/yJZciyiW0iP5+gLInZ\nklJSXclN59JSwiVyy6EHmY829K/HTqy+6zvIS+jsWn8QoqWOxZK9WW3rzzPV\nDVbHpFPbJteX3OS6JZQC1cFngV0P5EaTEr1ADV6uVzAdRgQdFRJdok8b07IJ\nrd3J\r\n=XbWa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChyxfIF6ffoS8zh/+L4Mgk908qdxRCOGnA6aymAGtFSgIgeKn9j3/gYikEwziFmiB2UIBtpeSMES2thhHcZ3B9K+U="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.7.1-canary.1_1561095136207_0.49140633246254106"},"_hasShrinkwrap":false},"6.7.1-canary.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.7.1-canary.3","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"8bd9868b5ef17b39384dc83c8eec17e64787cb8f","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.7.1-canary.3","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-qiZzIUYQPZfbxwFa4rFGjTBKOh78BdyuA0EMupdcimcBCBC18vd6Zati7+twxJUWjYvC8LSQyeaImEyhjrj7Gg==","shasum":"b1133f1efea83d2bdaeee18c26f43c9c40a0e183","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.7.1-canary.3.tgz","fileCount":100,"unpackedSize":128759,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDPMNCRA9TVsSAnZWagAAsagP/0IGSjFfhSa9Ou+WPFOw\n9tyAb6DloB76Rl5oBA8LsNA2UxKe7affSfz6tPDvOLJOeF5pIxmq7RmRe2I9\na2ocLTsT2BnbNNUoPSVFJJRn2QSBNphUQpwXIxQ7aoEkJA0nzyRX+eYXPrQ0\nf8hRUMZA5j9zg6RsSA16z1kyxS3Fje3R1ZbXXRVINmscfPjXXee0DRql537V\nH9aqZyC02bhsgACNKfzgAqSqOw3WuAmIBcgPoPOHJxOEdTVGfjy1oldQQxLz\ne3AGfKVTzESZ/YeKUbptKleww44wijjodn/bCajVuK6AnShVi/h+v4gLqtzG\ndbAmeBqW9u6DPLopm7C1rAgstPvmkWdAj3XKA6jUamiy8fWs6T1uUb+1S2OH\ni4WrGQiygND44yGLSRdlGEN5TX0hzWX6ojdjtDMuASrnajpyxEVzKd/J6oUa\nSmLDkSGerJYy4TZp4tFpjIEpHWxrfPXYqwL59YaG3Gu/s6XHUEei7Te2tXsP\nYBXACTqzdkjjZD9JEKz4OGjxNUzlcubPZ2LkMVe4Ttthqka+JLbfZna0poFR\nquESQvUZ+lFvaZ6qkrR68vG7yzZs2mKQc7WnXbECvHreqZUraeS12qEpAz3G\nmIbBExRlJhQtB7lXo4lVtPHN/LwiasuIpYozyUrRSvYw0fdNlyRCQij6bZct\nL38g\r\n=U9QE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCu4xG9zC5/+h+fWWSIA/MrxPOydA3uUp3X7CQ2OWR/egIgVMAB+kldfuXYaLG+9HaZAN1S3GS3nnTzS8baxE8X7fE="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.7.1-canary.3_1561129740831_0.9656343886503123"},"_hasShrinkwrap":false},"6.7.1-canary.4":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.7.1-canary.4","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"5a015eda2be376d4ad750e1009135c32e498e48c","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.7.1-canary.4","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-Im4/L9soK6DelozrhQlhPSjzCekj6YLWGhJ8suSgK+KedgY5pCV4/3tfye5B1tnncj+oFxDEYfGloLm16BhY+A==","shasum":"1814b38d1ee46394e6fcbeb359575f3a403e5d59","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.7.1-canary.4.tgz","fileCount":100,"unpackedSize":129123,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDPesCRA9TVsSAnZWagAAcf0P/3Ich2sfH82EntsWtUvG\n8GClmREqqlLJVV3DZw8dQswX2INM6GCpiJ/94AJdEqeJ8U//ChJcbBzRk5cz\nCwzFtIkVg/4RdqZR7zSK2KnMmTIUNM0TgHRpOlkZJEl4XVKCR1VkcSQFXrub\n3ujQGNJ2z6GjHL8IYxx0bO6dLzvia9P3S5mZwX0LgBRwB6LQ8JGGDnbCgsmT\nZ0aFPn26gs2gQqwBvQ1Smi9UY62pYtbIg0dv4ChfI18SUEx09GtSxtYQikdR\nJW5l/2htzS1fE0kVFUd4ONNgBbSlxjmB6T1xNEJn4SaR4WaRDT227E+HsvGK\nv5r8WoE1IUiQ047atpvkIqHmFhZTmqsQD4f618OQGpjLG106ybxQ1Cyk0LFX\nIBOrcaC3NrF+qDwb4NBFLxLz83GLkRBIXKzOLAH0PIl0T20RT2v/skGRbpes\nUZnOdKFx+/X5VPjKfFGSWBbOx532WrsJiqDiveiujHf/g0orm4LnJPKf+gRq\niRLtAOTeOaHIGilQI7THM7eYixFsosifKI2L0TK17DrMy01QGpl7Im3n7xMA\nHlAuSa76F3sn1ksxYknlP0eQLXuw4glFnmH06sEdelO3cvvu7Svw9lE6DV00\nx7g7VucNDMKJRpsPW3aFUyLFvvzTsRzcxSqdbjZVtN5Pcd8S9fttS41KJgrb\nKHgP\r\n=yT6e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqgN8xMpGVa9hNVDMXB9rs4JV7as6pY4Cx5+K33YfI4AIhANLYXZa2x3a4VR4uNLW4h3sypVjWNnxdcgIprdcEdPrY"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.7.1-canary.4_1561130924269_0.7054191137737578"},"_hasShrinkwrap":false},"6.7.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.7.3","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"19fde31f842161780681cda1feef539b8b47141e","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.7.3","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-kEcAIZwK4WeEgyvl42YPN9xKd4SjarhxeBwfXjRiJeVdf+P8HYe+Vae7X4DVF9WkOL0y27WTlFMuUWDavX1Z5A==","shasum":"a9ba9621097bce1a3b62507f6f4d36cc266e5a24","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.7.3.tgz","fileCount":100,"unpackedSize":129476,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDPgiCRA9TVsSAnZWagAAWnQP/2WNj66gOjZXL9tT/TE0\nPjQCqNkBD4ov9F/5xV+2BZgnoSQPtWbEU2CYkGZaXf5PNFsKSgaRG82b01Zs\nXOYjB4dNlXegKY+3ofDxMyUfP12pwXZ3RmauAQM1UoD4JfGZtfTs7QI1wYcY\nRdXKCP1XaVODPblMW9zwL5SXIUlGfWKrOxguu9W0jtpGDudkTeLzBLZI4On/\nAfCZbcxck6ZhYrCGbOGKHTthK9qqkX51lp9Txc044cBAlNKS77FdK2y1BzU5\nCTUFsZTL3Mk+T9idX6+R4kQ72zuQwT0UJ8nOR51eXF3s0ZcrVKIoTDWialVk\ndFn4OZFHeO492Pamih+UZJIb+yXiBXiQ6N7V+W0VDxha+XWIeeG0CxPpTTRh\n3VROqYIjHbchmu5QPdVrm1bHOznnB7u8Im/t3Nw+IKOTxCpRRgqWbrv1ygaa\nb8kUkpQaF2a0ZZvph2v8es8RY2CnSoudBDpLUWgrdillcTkxhfXQddxiqUXw\n3J7NzoendukDBhzEuhcPnJggrIpigF+C1RiwP8gnwyKVbmtLLl20x8FxN1Xm\nUN/i5CAfc2j84i0t6z5SqbHvVuXJQOp5dqIvwZsStopSQAFpDPaecM3wNypv\nzi+OQBVK7IubJrSNQqdIt9K8CSEfjZKftcJoYQD1qbsgsXvQE6Fk17rRk69W\n/n9O\r\n=0lt1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4B4yg2e8ffIxIXCOosQPqULHyuCa75RFUqyWJH8lZ+QIgbuwYgEuPM/9rDfDnJxy/3Cf3YARmeQMOnZY55+G+N2M="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.7.3_1561131042082_0.9326688868799937"},"_hasShrinkwrap":false},"6.7.4":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.7.4","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"e576cf0e9bb72b675c2fb8cebdedb19784904a5f","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.7.4","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-+tgaXabn5CVX+kMepEfUErGEZmjHXmxZmlEwm7MD/4NdK/V0teMoUAVf3VjS3llyrSwpqAwAylBwjfWnkQ5QAA==","shasum":"5ed0ea951839f82e45e2373be0a39d5d255f3c68","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.7.4.tgz","fileCount":100,"unpackedSize":129661,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDPltCRA9TVsSAnZWagAAqIgQAIn784C12UYOX+WaI14H\nyVUoCCQgRRZkwWbfCLr1lwiU4MJE0fgDvdiCqXJam0yUVpoJSCWyL77XRRpI\n92m5vT7dnwQ84SiJCaHfNRaylofsBf1ElK/zKws9184H6QiFdxkRVJw5/lQH\njLCuz9vv7jnW9/V1XQ1rnzOY1ZRB9JJ620Sx157mx3wwjyNQeauja73VZW2b\nQ1eMwZ/gpidZkJ7Pdk82c2CNSLTq6optTrVv0mNZFzSE9+1VpbmP0SeXmCwG\nTnlxtJkkQbMJuSDvsy41yYFchxaBluAEyht1yXhIkEQ1wZjkUC0Jzks1KjVr\nKeKeGSUSM5FKPjd7dzptj6eZ0L5y1OT+yrsqG7aF+72SFqYUvZYEwZb1BoiW\nRNkm11EBDAMsllaAWqfGMXcJN0js4yz0tzfepScGlAmLn4eKmlXeUQBYKNwx\nvdyECZKufA/EjRxAKUOGdbomyyGNVQp4+tzBm/xPp9hlh+wppHRWRAiukAjS\nuA8T2urHGxOT6RWkLPyO+w3W7Hn09T1GRYj1mMM6++wYEV4LHzQwrgOz/LDq\nV91AIkEzbE9Lj4SQ367rU/wYdRTgbVjfFnk2SFsJTWsxaQPY8r4cow0SJruG\n9BCYa9IbpJE2vlNThdiyWFdSHYnzZBHBegdMcgfo8w0VPJely9ljFLcYsGTI\nLDiA\r\n=wj3q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCiQEJ9fbrzyUQ2eH8MR5EkXmItrMEeFE2pWvyPWtmTHwIgU5ZdOoqheBrTRJIUJnGDhcxUAHPEJrIRIVsbkVtuvNk="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.7.4_1561131373077_0.9656518072534859"},"_hasShrinkwrap":false},"6.7.1-canary.5":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.7.1-canary.5","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"2a7261aa99b13e2177deb32bbcdf33f53c009d2f","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.7.1-canary.5","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-/jVbQCKMIzeNXdK/pKoCVG8LWvN0QKcNFdhC/cvK710hajLiBWmXkVz3e4KeYEIFqGX9MUEydO0yQ5PFIWlmiA==","shasum":"bbb052a998f3b053c37fc20be4f1bbaf8c200f2e","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.7.1-canary.5.tgz","fileCount":100,"unpackedSize":131207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDP2qCRA9TVsSAnZWagAA/14P/22UGJitFgDHSKaHoLw0\nmjvLE/iqMY/1J2Qmqj0b9X00Zyfwtv/oBA0rButl1DoTvMkmg5jGTUW7qQGG\nRVVY/eIEwIiiL7wZdeN4AmX/mD6QsF01TYJmmgOxkNHlnx2HRmr7xkQR1m1O\nD+GlvICLMr2e0EJB4Jke1GwwcLYn8vAcQujsyg2R7P5YiEt4FV7sHI5g8WQN\nUoUj+5teZ7Tx8um/P4HaaE9GsV7vp0q0SM0HTd94VblkIS337OiV80hIPz4y\nmWZKboJkVJBfTRt6HEKuoIGoeEc4B4veAp9ws/zi3lmuq43pKDPXHwRhEwOl\neK2flfbKXYVBV6M0g5dbY5lUMsFmaV7A794YOkDfAcWn8ZSLV2oftiIbM0tL\nEalhVfiQWhhYPdhLQiwh2SNDOeZ9lslZUOBWCh10CXTjy+QpJKc0n350iM7w\nMUyJrIr/59a3i4QZZvNc1Hr1RRpthg8QWi4MnGR9V9CZBXYCG6depb6q4Vnn\nvBDbzNmZ9ZRNNZmYlZKgWl1RmP1B8r1SzCzANSp6WITVmZeqr+VvQxWCSUHN\n/GcxjkA0gs8IBJBn2Jqc9vtPcijd8tH1VU6tL7Waavq3oqMRyjhuFvN4kUkT\nE8BqOGqM6Xpes865jIGESG2weB7k9sXKHHPshWBthHNG9n3BKUAq4ZisMQQk\n6Bz7\r\n=MO/1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBbHWa4GNAzfgMV5/yhQ41NVoVdZ5iyX1hnE0N/gygxXAiAiI2pNLuY9FxN9VeiOwum90NBu60PMxsvnizOALgLtfg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.7.1-canary.5_1561132457866_0.8639893885457006"},"_hasShrinkwrap":false},"6.8.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.8.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"1494377e81c0f280a72fb95adc4311002634c89d","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.8.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-2uCiUmdJyfoXT2mcYRt2wJX6i6EOAvA1aqHepem3dv5tE4ZGIe+pEr1/tY5+/POC/8BjhQz3x0kh1TFqSRkxpg==","shasum":"e791c9b8b3f91aaa1dd2e0ce1fcf0d7847902542","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.8.0.tgz","fileCount":100,"unpackedSize":131575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDP3gCRA9TVsSAnZWagAA/2oP/1yqWogbTJVhwJz8T4um\nVqatmNcrEM8fiRrWm8iK8lKXcJyPA5Px1/j1yXVswjFBGUsrS0t+iAgy5cZB\n0ZuqCAAavDvkH3CpYr/fyngNwdZg4c3w++/2Aed9HgJj883TJ461wVlTDo/X\nq9h7JWcXx6jFacfjF3LH8KqXbq73xkGQT7XHo+VKUp0nJJfj7EJcFsKA94Nm\nv0RHqVdta69mlKxrWPwqadXjge8LWdQ9G+4FzpmPIJMoZxLOwjYCuxJ1jYMr\nh8D3GSgCeq/ELvwPATM8p2pTMPkHcEVWfxXHyONAQwKH1nv+LMBO4lYA8BD8\nhq/34SqUrkYIbWT3zqY15bRwBrMCrnkhlwXBIu4JKUpGxIaOQVuXTdnhkg9P\nvZTZmDpcX0SN4lmWOiPLIDUTG7Tkpv3ZGk2/WKPVMTNDNcOUDhvuWB5iQjSf\n/xkT+BBXVTs7VZPCuu1WhQcFEd2WtPLskl0qLUcv8yGujyAJz5u4pifFHZXO\nO+VDtqHgYNu0/TnW+asbWalotNrLCjSsCGQDdEykr0S1l/f6HxWL7/mG1A+Y\nTNLZG1b2U4361BZsZZP0fDgQkZiY/8vSt2s+G4Z4r+Lm+EsGUES9HrZguyvp\n9MjxSFQadjLTIXIKRg+fhrhLPzrxi6mECQn35RTe61HT23UwYzoTYmufxLJd\n05gJ\r\n=SkbZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDOfUmrlacig7O8/uKOt35xX29KG1BI0gFFGlu3pAs+RAIhAMU65QFLikeZ+WJ/wi+e5vL4NpI8N9PpRApwPrHAW+HN"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.8.0_1561132511617_0.8474739307792296"},"_hasShrinkwrap":false},"6.7.1-canary.9":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.7.1-canary.9","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"0eaccf3c1e149126a5e80221bb2291c7e0edd329","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.7.1-canary.9","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-ZhFAEqSrx43oVxb6seZnZC2NIbBzvnhM5kCKkb82EHolNcSgX9D8r1DiVxlBSX4Np78wbH3ZCLRlqHkdjGzLKw==","shasum":"a38e7ec3921ce0e7026a42b0219d9eb93878e81e","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.7.1-canary.9.tgz","fileCount":100,"unpackedSize":134484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDRc+CRA9TVsSAnZWagAA/isP/jxgU+OY+/sabzdmofTw\nkwl7/9PHoJEtS9g61000sMqDtFxd03roHFkXp/BlCepsuNusF0FT4KNb1MF9\nlds21GH2PAzW/YRxI0b7Dp8seONR8ooOwt4QNQFZglU8ST0yQeazRQPLsM6y\nvK1oYX+78PRt8zg937tf8VY0IKHylp0rrnzEdaZJl6ndnKrE5V9juJPmUUSo\nfQUfSHNBCvNUwhkiATNJw7pDjQkOEdrjtlLv54itXgCrblrREOoX4ELqBuDR\nihAkMS59lfcDWg3RXLg47jTZICXs3eiWtNl90KO+8wThdamDtIcG767rGMka\nON9LktnNqNR/2Cn3S5FlBoDdX/XvZhNnEfkr0hZgb6P/8phGWvcsU5yGErGS\nztAuhPYMUpkNpK/pufOgBnKemyfw0gmfaiql4H30C7IA2dQ4YZN2a6crIc/n\nGHb9o7xw/An/owmtuTNIvldrM2jyaahMPuSvs5WlsIARF52QlK0HJayfRQdf\nSHks7Zqxv0B3dqdl6YH8e/WBeGDuT/eUfD3A/73zmRqjkR2qOSBq4kFfvX7r\nXTp+75jCu1HbfKc2MMSnQPwG27eXNl9vte+2BeO3WF4ccW+gtfdvat1wuYop\n8eB1HFRmO9saLn73mwMqx+mKSDyh2g41n5s6sUX59IYEQqsyvQrz+0xphCPj\nQXD7\r\n=Dc92\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCywFqVMwR87/wN6hQeaxTY1svHVT73lo1P9q6SYw5XGQIgMxtrh2CVPq1KJLtzPGS6CK/x5/gDGUFbHcbNpkEcsAM="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.7.1-canary.9_1561139006081_0.6471223882509296"},"_hasShrinkwrap":false},"6.7.1-canary.11":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.7.1-canary.11","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"371d48866f25e783ca1aea9b7b53f33cff5edced","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.7.1-canary.11","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-AHwGl82RRvtDS+UhdS3D5nheSse6KGDI/7qpK3r8tDdSzfGQKs2KyE3bNVmwoT3vsAhbWn1K7fLueklpsG+hOg==","shasum":"68ae71bbc5df089018b647ca73972c30785b3a12","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.7.1-canary.11.tgz","fileCount":100,"unpackedSize":131391,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDR2GCRA9TVsSAnZWagAAG8oQAIoFT4yz1KJ20aIu0QY5\nrY/m6ID0jBaZbXAYvTI1K813whjARJwgg1pHt3KDvqpc0TOyT19pthnsC1bh\nU45rORvwLjSz69m4y/IiCB6SMHEGKCQSSi2YF/zv6G9ShsTBKrO7TYuwqUyn\noMLMQ8UUx227Q/X6iwaB7gCXs9LqCU6rQbnEkfcmWeIkx5ComBvLd592sJMl\nNrxFN1aje/1F5xl2DG+wmGQY1LYu9TJTr3l4eD86ome3ft+pS2jzM05UY+sR\nGbM0KurXfs5DyewHHd0nbOtapmfK3nUYgyrZbIMc16sVJSQglVCuGfgixOaQ\nz8huBeo+/wv0K9mEB5ikl4RJU+ikc23iUakvp9Tjpdk2G8QTSbkmAc7nmhcx\n8fTNo1wNTirq0AFXvkz03DrUxUyrdOQpH77F1+In2g0rAwl+N5yQmmvLgDm5\n5Ohqz91b0M+59FR79qtSfoOBo9sIWcyH28ePaS8j4TUTFbAi8vG8BtRqwByZ\n0+tKEf42mRlzuKvHN+ppBVPhYwfwrouNkArMSrd3dxFpvfahthtY+/PemMRl\nnz2p0FjTlRTKeDZwIKugotjay7pgURqM/QIhcOgEsA4k14dB5iDwUeTTiNbh\nvhfI85JoP6PqEGBHK7BHv1KQwnBxrWC3VaXc8ogic5JROHDgwDKuJTgwKZj8\nx+Va\r\n=owBK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVA2lmQAkoYmTlDSLDhNGzsy7Bd1M91Fn9l9BDvleriQIgEbL9MMZtI7RVwqJw2tlgRPKXfCNSKbLPiEjgvz1ySyI="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.7.1-canary.11_1561140614047_0.15783379918270657"},"_hasShrinkwrap":false},"6.7.1-canary.12":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.7.1-canary.12","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"6007f74eebb965ee791cb2d7a501845df326145a","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.7.1-canary.12","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-eO+JueCuY8BXEh5cBimnyUwiBLBfNinL5iNMAox98kw6E4CbKfSfOKJOvQnhiMx9mQI+rKCG+97NFPuN/ea6pw==","shasum":"940477d77a6ba81778603eacb6a5b4ce68780425","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.7.1-canary.12.tgz","fileCount":100,"unpackedSize":131622,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDR2aCRA9TVsSAnZWagAAy7YP/ieOVSPKrkAQDH6PHetU\nW4RbCl2EPmS15M9gPJ12xCA0bYsbI94Jh07ReeJWA6m6CVLuS4RyyoWeFOPE\nSm51ryvD+3AWPgEQ1bokOHnHiEZd1+H2VNDSRES+ItNi7CcdX8ALckaW0Tty\nGfacNHAWn7czR39U6a0/KeY/AX9aFFbpaGgYXyBg1CZgOG0OSKcPaPciHeJA\n+IxLkfuNUOIM/59YheD54NCfZVUKigh7kaWO44LDnCBSamnCchgl5QDJn7Cz\n8R4rPvF2qttsMhBL7raWPwxSE5+/YItDf5N4om79CKNuyCUxmp59LfV54M/W\nlgmDwEiVyyJIgkKgCiITMApgdyEJzmMvZy6sQYLw1hLy/bERtwuFpEFweuZR\nFhn8yo+E6x440Z6a9GXXycNAo7QZPzzK1UONDFXEtfMFpZOh35cu3RC8XE3M\nLN6P4HbJWICECzDlDnGeJXcC9/l04tFc0OsGafV1ssmX2sxQgP77zdCw2FPT\nmGrTiySZxOJmplB6zv+ANFhbekhAs9KGSf1L5aGhklKi/8oUQ64AcfobaY87\nLF81KkXJUA2URivXzWK0C3sHE0CYcuIhoPaWrTJ87Kfry83/0m7goGc9AcAO\nmOl0cP6QiZs7gQ15ky0oeP2PAIFBvCvFsgW5bf4u5Qn/setBx0v7hazWZqS7\n3+tW\r\n=AnWl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBtST5buG/zPilIWewMYBEjgBMXQqCilldEw3BBUYWw3AiAIp5aktd0++fMGbqk6BEfVGb/cmqMctZQ9uAtMy72nJQ=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.7.1-canary.12_1561140634213_0.6406012703240396"},"_hasShrinkwrap":false},"6.8.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.8.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"de5f6231573bc669252d195bfe0375983183a7ed","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.8.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-Pu2qBPZj3uFHYE+sgF59L6XAXP108DDTo1DGACY72WIpwhTktRHlQsiuatTtTXnrtMcGEYg9NC8yWMx2TiAJdw==","shasum":"2ffae298090c241c20acc413b2c50bcb508180c7","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.8.1.tgz","fileCount":100,"unpackedSize":131789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDSBlCRA9TVsSAnZWagAACLAQAKFRS9fHeDS7cmF0bDNg\n5HoBlg3FyKgP4eawn/GRpdTALBx2OLflFMd0mSc9TbkMM6vPdEmu6GmCijcc\nIRWBjf8jGaTO1zZSgLx67Bg53pkXMPHqIFo6gvugjCnTCAn5BXTiUFFi6sh/\na3RZLVC4lVoVT+gBdCATY0BoQXxayIb1YlfdWcp6FxR1364eke7L9T65jFa8\njFQNHpNT3A06MW8Vjmt2XtzloP7Z454lyWbAdEFjw+rOU6kb7/ZHIeFiUseF\nLl/f4M734SXtxXzBz6YCSTpEAlrs5aEEfaE6dQ0i8i+0ENZ1BeSH6m1UJBoh\nIKh3wY4fMNq3Ns0DILTHnxFmfbuJgl7q16qMfXqMW2eA9PHjmpYm9/fThUFn\nQMTbLJDU78YShi49LISbHqNi7l/aB77htFt7U+V5tC0xAbu7nqO8ubvMZ4rq\nYphFDd+/Vx9QsatcF+yMsGCrQn7PnCzI0Fs1sI/tLQuaFFUYvIffBdEF6uOl\n6EyySQJ2ujBvQaKqLV12DDj7kwQ7MZHzlbGwplCiDA44rfjVC42Xcv1mBiZ3\nresBKlEbPQ5oxoxrAgwWdILLFtV53quMHrbiFk8Lp0RrZ3wDkChLpaIX0UDx\nY+7EFsIXtrPO6PQRAVb2LHjhqjANAllX54gw5eN1i9DfL/igC9WgTDLcyhmM\nKGyo\r\n=68eW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2XCNmLGteb9+PxfH5U7TX5Y+97hU+9puqG3eTlyOhNQIhAOiQ4W0se0B7mC1qh1+niNqVB0ccxO1naYeeEtAFJuQb"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.8.1_1561141348703_0.5881605347630428"},"_hasShrinkwrap":false},"6.8.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.8.2","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"dfaf18a3d29cf3533e485c96200b2ec9e89be7fc","_id":"@nofrills/tasks@6.8.2","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-059VXBgu0BTKn49TNt60O7oCPTyTHJeONJTHShdhoHAPzbeaUKzBVowhlQ8W0EgDIOoxdbfIafmwqBmGBKzGzw==","shasum":"bf4cd7121205016d21ebdfdbfd14b18a189e77ad","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.8.2.tgz","fileCount":100,"unpackedSize":131974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDSILCRA9TVsSAnZWagAAxX4P/0a3eR5ch7w8vd45UOp/\n0479DtPmXGPh2VSjEjHgKsEpx2DXDAUsLrdXEgO+PCQlNyTLjSpR+g3BWgMT\nqv2jiTJPxTEewvV+1hhWo+fZakpWEn6wE5Q6IGHHsnUlZoyzvjyH3S6npwXp\nSUMKQRYgWK4twJOgDIZ2Vi5seQOHTwY3BBl4PeXEeDiuViPxPopmDll+ofOP\nNXc4v8bMKBrx+uE2nEAvilZG8yNIft/FPeBao1Kt7emr6DlXHMpklEq7Sd1k\niHmnVn6OWazzt34x8A4iOB79qSU6B3Bri01MSIXQ4yigK4qHof7ppH23E70X\noKaXMQCEQLku37xT1xSTqVL6FromUraImiM8wbVSfXvIjAfGQYX/dega2D0i\neB9ov8TiNUA6FA4GOYaG7vtqkOj69OLHYwQNvkWxH923Oacaw5yRT3OsvAfG\nWJQ44SIJUduSrBALVIiTnldTn5ax3zijRHwwcwD4UwDpGCoZpCKZUfhDBgoF\ndCbAYvABm8ECwaia5t6oDuCrVTswCrv2SNoIdUAQogFGbB5L4arNW6pw5W3I\n/6sNhNCGHwp+RNb/1A5j5vFwRV6rf3/A2z9HYgXiljC3Qsv3Ijxk0degSYax\nvExDlHffzuU+oOIp8Ci9eGCVUrUfdxA3zIK4A2gU59TJcjlJJRBr6wYRYh8I\nGpsH\r\n=8/+/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDxyk+OAcKPM3FygLoc383osUJauTTMdmetQGqav45oBAiEAyecgqqC9wkFtc0Yrq73K8skp+MCl4hfBpDI8+L+V8n8="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.8.2_1561141770667_0.21582336161360116"},"_hasShrinkwrap":false},"6.8.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.8.3","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"8f60ecc3133ddd28256a7b28dc1b8ff49ab9aa36","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.8.3","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-V0YODZ6YlQtIGymfLZmk52nxN7Be+WNB63ENGxdrQgjWOTaNIRQb+bNBmLg5bjBtx8YSqtVLh6I85mIrJCesBQ==","shasum":"b9c2269c9f2713ee7b3457984e76c282d8f65c2b","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.8.3.tgz","fileCount":100,"unpackedSize":132159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDSOkCRA9TVsSAnZWagAANbwP/RLIlBHg8v9/BUk9TteE\nAzXPirhMZwFO9DnvJbltB8fqwg7ecyQNM5T4bHPc5Iykw84+m8XQ7FYlatOo\npVMaHMPN5WCZO9WPz947Ld2t6tJlh6wsbiAfvt6XKuLuZNuZYJW0W+Vp3QWi\ntu0o375RpSyXdZXpuFFYH+THIEUtqguCymlabIEqdR8wd34T89PelAqGGDyU\nUPxSxDt+nOf3BSKPOMC9pKV+SBdlJRZaMpkyO0ENnt2nScuHFoSy34s9vFjq\ne0of5Snjp5qGPhS1a+GOj1ZaKJtVwYlb71cHe6kFo7pROWvcJCxQJD/McXFi\n1CqU3eAHcvjUE4Ot/RjOciUjlMEPGucBYlPeTf+MdTDXrKURfU4tGSxxlefz\nkVW9ORSALvv89+4jejulEJmpATYgf+a+a/eHlSOn0eaYyIvFg2PuDExPk95H\ntqo3tBu2HEUHKFQIa87z4+bLgqNSOfDfgY3OXKuRKP+3JTVNRSwhAuGjpMXR\nsNVnBSu2zzjB80fpB2k2LD+JeNOv2NiODv9enY/wa0Ngq5R9P4xMKORFg1PQ\ns39iiYVTkGIDHCSYxrPV0FFpvE2oefRO0+H4uJokTI8uIQFA8D0nA9AqrKVh\nDQIYKlXMs+Mvjw9YlUWk3lcctt5IEbB1gJVDhP01U2Ti+ePM8KxwjEfDk62R\nIvph\r\n=ihUS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvsvcdEW2koylpXUtiVLaQcjbxUOcfzZi2qA6qxUwqYAIhALOKGhLUgV6eEJPkY1SM+gyhb4qwe/Jiy3wX8FiAuMr5"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.8.3_1561142180119_0.0062258169841804545"},"_hasShrinkwrap":false},"6.8.4":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.8.4","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"59ec5c31a5fe3606f158b3a23794a6ccabdf8fb1","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.8.4","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-wZe/mZ5EZEio+fWWw6BNNrRkeC2mIepaMjVjDsFALGmNsPgDDwIBfykwwkMEaH/IGz9lE2dgG/HdEExXx97Y7w==","shasum":"c58c2629d80561b2fe93c4d03999f259e5c2486d","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.8.4.tgz","fileCount":100,"unpackedSize":132346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDUa4CRA9TVsSAnZWagAA1J4P/0LTQ32j6fswV3oNUMKU\n32VJ17gSl7nFN9YKzSzXkIpOfETCbv2KMUhdXgvWvDRLCeNik8JDVc/LEdR6\nVIa8+7aNFkmOOmrm28CKac46zBaIzuY+Mkvyka30ArlNLqfF/mFSaLoJDBVo\n1lOvNsAnOSRJ4V9ejoZ5b2pfSeymaI4+IdX3NqML/jNg/bi0HuZaFTaWV5OL\nhJ74TxWtO6jD37tr4GiprgT1eFB3yVQHJKzSaWqTnZ+r23wlcWObeZR2v9FW\nqraaiB00NzyOuu4CxNMsH+i0AkSiSvjcRBaM/rBkdFjrtud57LVKXXbEd2t+\nNdbKtS926DjyOX3jXYLShzXZ0JTXtJanm0ygDuYkwiHkG3N4RUpKApYP89y+\nZ1G9ht9p5WcDn3qv/uBWqSATfEofDqd3KA3aoB0cB3Qir6GdCTOHxYWv/gdH\nTg4ezSG/RpxhhhvpScxQKDKKRaUNqb9RVJpvaQLAm9BrMDyMUFmfF0C7cEuG\nijwRhdMTYNw7s6PhMWFI4VO3t2PeXHj5yBot1fbsEyRvoH/gUFJ+/P2jFBLY\nCp0fPcLWmURdIrNxUwH7xcP04rv5/NAhBCvg2wSKnWEK5eFZsQTQTPAYasVm\nc8W+f6KscbNMEXoY5SWrnApYvhUsbexKF6K9AQvyxLUXCck//0tiKq2xwgiH\nbP3/\r\n=0nNg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEQcwVh4MAyG4NwvN5s3m/BxWFqnWYQrRt3AIy2zXl3eAiBTw0EvyK4SyyMaJ8MHaViH7Mwdy6h8TlxPlf0sEQCvyA=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.8.4_1561151160100_0.2183443289424909"},"_hasShrinkwrap":false},"6.8.5-canary.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.8.5-canary.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"c2495055c130e8ebc1ab079fbd3f138720680fd4","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.8.5-canary.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-nZ4NceyEWNpTiC5y+PdHA04+El0PbE+WJPyy5KAj9B4MQc9bNnvxXsRNBJll6xx6hI+GD/5WSHSmN4uFA1JLqg==","shasum":"51fd85a5e9fbf4bbd717fb55d1cc6a60bfd5250a","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.8.5-canary.0.tgz","fileCount":100,"unpackedSize":132416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDVySCRA9TVsSAnZWagAAbYgP/0/+k+879hBCciwX6xlI\nb31OiCFUitTtGF2FzlEYPcyePLVMx7uO3W0f6sCzNlgQW90cDLjmQj2qCWKE\nbV2pdMkdQsgUJL+bfd/IrIYoureS1opec6vBZOnA+BOZdDp6hB6NoMjwEy2Y\nvQ6YZwB21ylIEVaelwIGZ8FkqkrzI1DL+HPAP7RuX7BoogzUNtmO92BgP8zd\nzmfH2LGfkcVbCJMeQ9nclvWEjzluW7AyDUtMpC6J5NxXa9DExmFd5gebWDAv\nNwyPpZKrw9IvAca1I8hB8fDzlFk7dwKzFkfsIWzeMwACdgRaNTC3UuODq55+\nnJESFfksDui+dRPkPQsArh07w743JxKeSYUSCL5F93unkVdxVslgQHRQJRnY\nIZ/tT6Uw1OSE8UUNll25s+nVd8VErV8pad8vaxuwQS9l/x+O79imLf2eOYS7\nHptrfuw7UnmPDFt2uAS8fGrehxWHbxKryJfDDe1TnS+PrS+GNeph0ZxTxTaO\nUr8EhxrHXrk+iQOtHfmFfomFvclgqpC4+Jgk46N2Br9Gg6bB60gG+khYy2rw\nAflGsyO43OdKYEqBv3OZa8oRIp3aZ5BX6U1rkcD/2CIaSB8jtCv8Wq2xYddT\nNp/CTiCkdh0O23HHvr8N+qGbQJca0PkXcJD30NaMejMijCdfFhieHEkVZF3l\nR6cd\r\n=Qfdp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEV60rJEYf3GIL9WnMDPyi1KTAsr3oiu2ukJhKyueM44AiA06ReENZPlYMUEv98Bxe+GrrA8SV4nldac4y7xk/acXg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.8.5-canary.0_1561156753911_0.8614057531185375"},"_hasShrinkwrap":false},"6.8.5":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.8.5","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"43a79d29c236fcbfac1c869add735c66387117b8","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.8.5","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-zxjK59lm6UN9LlPhEoxW4DeJh9c0Z1Loq58n8Yput1ehWlrNSu8qM7kV2iHMhjFko7t81S+oU7eSxSL09PkP5A==","shasum":"9d583dcc3c12dc692510354a678806b8bd386d4b","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.8.5.tgz","fileCount":100,"unpackedSize":132632,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDVzxCRA9TVsSAnZWagAAx5MP/jDTuMT1p9ND+3VQjeLx\nEcZh+JZoxjK/I15bngGG+Tn3vaL4f1IF4t8SLDwZMD7QaoYbtusE8MroMoxf\nl7rg/3drGX6q2kwyUctI4736Eb6z32hWZbOBIQdnMoAvvtjeJRuu+swGXG4z\nXnNm1SWA8ar80Betqq2Io2ufG1RPh5MTXlekYltAXkp3yroIiCkEnxrF/oW/\np3lUiX2gELL9GiO0Tv+HBCPFxA3544lK/UmXryNpBPQp3YF9KYR5bpjKcnBt\nDKGBsIzcdqrhdEdRKjqsYW9Bxb6loZRmkaZEFlrTim2+u6LLdnvgaUhwJ+ya\n2GcLZk3+2hZUVhSOytv0Q0EcGsEQtKTDxYgqb33/VEyKxciJ3XU+ETJBpTTp\nW6gNTfHss5vO9mAUTCtamh3P54I3nBfFkMDeN7pnmKE627pApOuuidG7+P6H\nLXsf6uwDzcVs3bREJ3b0smuWES1cjz+IbSiqtCU2oHRAPxOE/16W/ZWEwP+w\nx5JwKeMs4d4pNWPeHczNCr+N/TbjOG99EJXKHINsWWUskZIQBekBWdsE5Q/h\nOC3HdzDNNOEozp1HU2+cuOE+/Pxn+mybJTpjrduyF/HOSBHJ1Pti2foRyh04\nXZHBC6AkX+d3eewNCO1njdyNz82uH+tBlpD3JCiFbHZsof01a72EDZakgfZq\nncIK\r\n=jRSn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3KE4EsFwmLoi0Wyu3SYyF1W+oyegcodB9A9g23COpHAIgB4u5AF3Xmi58qvCKer1KvleTV5aa0YXuvDLTfbWMBE4="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.8.5_1561156848424_0.559595311593126"},"_hasShrinkwrap":false},"6.8.6":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.8.6","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"6179a973445cf69e570433b673e626a339b9bbda","_id":"@nofrills/tasks@6.8.6","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-h3xYlOhl1kq5bnJ7inuRsp6VuV6FxF12MFL1al4rpl78Rk7VAVphTmj8tL7FmA7jzCMM01jZY2HiJH9k1XgLaw==","shasum":"22c3d293a3702577fa4690da392b7d132941c121","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.8.6.tgz","fileCount":100,"unpackedSize":132817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDV20CRA9TVsSAnZWagAAKegP/2KUGUvBxbJGctoPR5T5\ntr+VobqEzHc8Hw9/hnVDs72KkhmOqViRENp1LdS20IG300hLfW2hrMsbnD82\nqUEAYTdajGBRCpOfS5UadX9a3tDMdAtbBht6+f1Kvrn5MIQbhc4I7Kxpc2aP\nUxqUKG8uUAkSaYT4TZPtRm5rUIDIbpYP2S/rw0FnGBNklpctdj7f+R/GoYg7\na3beALl+OC/pNAA59vphWFBgYMAffr5TGiK0sbhXhXHxXvAJbHpMpKGCVBZ/\nVl5EAz8J0DOcBfMbhdKIStLi+Jvn6QBYV9K4y2znmxQQbbSEU2rZ7vp65iGE\njW2Y01y4DvWr6yNJwZGELQSKx25ei285JAh2GYB3udJ1Js5kaS8lxJFFv2Nj\nia2x5HrQBsZ/L7bpLFpfvve5pFFmzL8ujqveIKU+C2ZQ1AhQ7Yg3/9Yx9CHW\nmKY20niKULikkkicPlq881P1u5DuMIcvLXzC230lYclsCG3oi0BOBnedSRKj\n9rrWo5un+YKLFuIvtCoDyZK5ofcMsxWTinbBA+i99IWX2rtMhi3w4boNq2Pe\nCb233CTtuwnaiLIXxgBQ4XqC4VkzIaeZ65ovD8tet0Mq/ACupvT96+T1TEDn\nvVkL38JzRL60UXicuzuI2852vgp9GK0DmXWMYHNubl0HjnzR04JWxD4x6yOG\nFmGB\r\n=j9De\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmHosgWxONxLmJ2yp2XlUoWdoVxHRxAN55SAlymod6IQIgPD6xqW7H5+qq7aqdxHjHQh2j+ltTRHx/bkGTraweAzw="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.8.6_1561157043913_0.9157395248116738"},"_hasShrinkwrap":false},"6.8.7":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.8.7","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"34e7f6857106cdb3ca3b8d5a1664fa06f3550150","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.8.7","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-pcGE3C/q++N0YxiAfXjlKqsgqTQfJqVPdmJ46fGGaM4u2oul3F41Sr8gruZu4uN4ruDp31T1bhKa4dk2VDhFXw==","shasum":"cc9d47b3c714ef1ea4ebf822d62f0fe3b649f541","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.8.7.tgz","fileCount":100,"unpackedSize":133002,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDV73CRA9TVsSAnZWagAAViMP/iFfuW4/Ii/VTGm/XODy\n1rEUCY6QsLSKgcfGVqjp9kUG5g1p/nApBffDMM7zk+HJO1ZB40kcZ4UevAXu\nYEtzBwRYPBKWoIpwiWbJrlIilDkC2yEl318VB7W7OMPvtToKQ1LHPfBw5lA1\nnepxLE1d2KcoOLyXE8alDO11cmOXewMXR2qdIBpMYMwYGK/CymIUBTtddYHz\n5nAfUIA//DCC3nV9baWGhnpZ1OPG0jtNRoQ86rAZSJr5Pf2pexeF43zkVTOp\n+/sgzhcdoG6S204Z+0pcJrxqak5R/qfosj1T051QTl+6MQRyH1rZBWD0JRTt\nS3seXA5SvGZ2bH8blAybg41S4QW9RRYWmk5gqkC/3/cjSBEZZc6zoCc9StZN\nJhnDnZB7M4DwKkOt3UtQgZx/tzQAAXRR9C9mRqMYc06sl+NOT8B8unV5LII6\nl2N/WVaTd9eqc+srHgdg3mKiwoYWUXNI7TbJINoaktqa9zgHNJ4anwQ1Dt0G\nvFEI+hmSfWnuhCqNWFutpQ4N1pM4rQAl3C8uDPRSBkqjeToaO4hA5+KnNk3w\nWn8NeQbOB6EHDqVlc16W3iDoGMfuLTtdJeQ6DcbazLgQ5lm526YiTmv7SRLH\nzj3QIb9wi7Ykua0pnMqCC2JLnM1MWYVUwrUu/Rg3SJqKmy6kHOSMRD64MPdY\nN5I+\r\n=OLEl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmrcjR/ksvvAdDlthxqekP/B5JzjvCrb5/aKSbxjiTGgIgeIYlAQ2HCTMFujjXhLe/yG4bHoE5TbxoqS2xpQ4rA6k="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.8.7_1561157366527_0.43935949081465075"},"_hasShrinkwrap":false},"6.8.5-canary.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.8.5-canary.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"810a566da2034a1b7dba6282081b92616b336af8","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.8.5-canary.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-luLhdVqTTBQWhx2Q/phaNwnmQvkbNLma3XQB2Rd8TG73Y2o4468uqcDv5IFRe/BFDo59v6DA56YOOGW0NNU14Q==","shasum":"ba5d96db0e83ce4a8fd2bd5a225006103889dd35","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.8.5-canary.1.tgz","fileCount":100,"unpackedSize":133019,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDV/RCRA9TVsSAnZWagAAaB4P/2Jl/Tsxh5tMoR97TcLb\nUwoQuFIVV6exIRllN+e99We2SF5zjWMwokOh/MZ8iibjRelsj4MouROXZrxM\ne4+SelMfMcQbPhFj2gfEH5sRAXapG4gwl4eS7kzNSuMCNSMISuTePNT37rbf\nKMuinUB0/qbrY1dQ4oLVHPJmmB3Qg0Vou/NhHMen28dRCZ+Tvx/ZHiznOY6g\ngNZow2WMfVyHEm7c+50a0bxc2CXQ18bTBR6UyokZXmopaXQTgA8V/MyvddYE\nlI1CvYzvdzjzkRIz3gf8cExLGtBT9/+GWzEpAnm8MAjpuyxrtvl1i3aEGe+f\nbJxvYCXah/xz/mOYqflFFtCkTxtutpitd3smh2dfDZDI4I4UE202gYL8dvOS\n/CWfXswf2n4HrQiV/e7Ey9TgMDH/VRdbFL4tFqhSZcW61BGaJrF2XA+7QMuH\ni+ZZlpxK5JMOz28FzVAftbuLsQIdiO+yyi6Csa74mphx9bY33eAnGiIFoSuS\nHtKUYS5fNWirDQ4BWs83zgcmiffT276t2zqTp4Je9IOlCJWHh1r0VwyTORx/\nEC5bdlfcfp232Bi31oVgRL+bEndlwSWs/JZGPGWFoZR15JEOXCMoHwXBP+k0\nWfGDta6fwesv9D9y8XEMQrZ4eLnmVHYNCiszZKiWqnRms2THL6paLTteGdf1\nCGjO\r\n=r2/v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCz8J6qqG1+hH51wZCPr1fbSU+uihVuGGaP+wTxbN4wvwIgB9CFJ2CCOaWZ1UWIwbsdyIr7ZJaWK/RaS6iRKn7RUvw="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.8.5-canary.1_1561157584810_0.3953809945473221"},"_hasShrinkwrap":false},"6.8.5-canary.4":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.8.5-canary.4","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"453bdaa199d9270995d0da4ffe84243e9d0fdc4d","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.8.5-canary.4","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-sKH5lt99q8RGLhCIsdzg04Wq3FQPUITbxSCz5k0IaiKPgL/PmKutCRO36O0gjuAU5kcr3DiWecVwnm/6JhlW0Q==","shasum":"89e4f8ff91c4c2912b9854618b3dcf1bfe7c0594","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.8.5-canary.4.tgz","fileCount":108,"unpackedSize":136817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDXQqCRA9TVsSAnZWagAApU8QAKCv6tdN+zhDGDuewZnz\nT9uAyOL52fPauzT5DRftb4/Tk1nfp5pyH4uUjWo0Ig4VTBt92AwFDbEpgZk3\nYbuwdNqlx6PueM4tH+fQg1VGhNFdDP7XaGvqVrVeDUqXJjO+r14KybTtqAfr\ndgJ7isMEUjn3x46u17jWYB6wBlnHBHiddpygs9sDQo2y/5FwW1OB8AUX20+d\nJYo8xFLBPW8IYpyb0evHZWuydNwYCcs5S3uXyekdJqvF2UBlOHsNnhzlsSxt\nwe8PjXAuHLeYWYyBrxBxogfLyHtJcHuJVB7B9fjS8bZCwNCLNrx+Dbmnnbek\npt28H4ktDB23PzEy4XvkRgcSwHndBF31nO2aPYoTpVotSYE8Gf3Ov//GofqU\nl6SfW5QB/EIPSOSae8Zaxj2X3rkclThko5Uvuoc7brxPATJgsDd7olSbVgQE\nqiBvKkRVrOrUiF/pWXRlRRpIiEUB3D77S5y/s6qCa48nBxh8diOzTFIJzqf9\nfmIYtERJPQJ/ypArw7NpUy9rPOvKAdCDBuiuyqL+RSl0SjpVHHAf3ZQ7YpNk\no4i+7iDzB/fP/K7nEgl4w9DDSZDurLs6R/1a41Oh8afQVNjCWiYHhuqTmmvc\niGgAAp4Me1gtnKxi3Q+9r3ucM0j5fn29WAlCar31MjO/xEWl/P+44UdYfgQ9\niV4r\r\n=8CLR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEyvvqmy1FSOsAz/QT6Z3ewyqUwhLFwhC2+HvlbSZRn4AiEAydDJ44JwdHTjPu9q29NUWV36nyp3I6qQJBkQ+53h4GY="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.8.5-canary.4_1561162793575_0.003778248611026047"},"_hasShrinkwrap":false},"6.8.5-canary.5":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.8.5-canary.5","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"498b0b337c6768461dd8db101ef3b328bd42cade","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.8.5-canary.5","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-nm6aSi/cNqa4+5RPRCsvBTsw4YoYG/aM5zhuT2b08flkMAYQ4YsNip8HYH/CwjGWAO4KIjeaMj9xaxUAph2V1Q==","shasum":"656e851c8937bde9839f22b53fc4782ec474f164","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.8.5-canary.5.tgz","fileCount":108,"unpackedSize":138341,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDX1wCRA9TVsSAnZWagAABbcP/irjDXfkxf3pruzmjfUX\nDz072avYkogOKXcQLCn+jBfsDb9/n2j/wT9JHaml8FIKZbWHuQCyPMqx4vWL\nSapROgv7YNGiAF0l0w8hqRKDEyk6Xdm+vCr7l6X5Q/YcrtBq9CiYrw5h6szt\n9KQMil+EjwZRQJy3UjH/mQW41wzAce3Vn3aRkRQ1MYLGuMKNEhCq+NwwxogA\nc1YssE0TT2OV+7BRSMdCJ8skW2vO8uQe7B+H3q7lW/5eHmGY674iNb7uET7y\nz+USACHJNc9ygwsR0urP1/3Qzqi1uOq40xOiZTLCtfVHBwVKJNFMe3HMmazL\nMAQSK7WNggA6UXkdORlsrssPrxK1q5iY5P6k0N/mLfBLpjRa3xzifnXwjMKP\nGHDhFxoGzSgZmIZUrPDrprIrnztVBk8Bj7YMmTCrrZx2aVu1xv3jO5zSJ3OO\nVQQEe1rBn7MNQViMQR5iaCeqPi0cxbRrvNeKRtqedWvgqbFjWrufjh0WtM49\n/mRxlLKwUvMDSrxkBIRWnGFiiW0tQE7pY//6bR2PEqCKYQHzru9I15f/ttjp\n6hsNGtoWotchZnNM40oSsQVU6XI9bf+9hLAGd7TBnYSZ+aCx+DwThjorb4Ev\n263hGsbkCJa9AIWVGHckq4y7DWoWUjdMd93avnFDqhKu+T4sRb0LMq8KFI7v\nJpgS\r\n=uUj0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBg4HKEdKgOTSOzc/mk9NjrVI5UcQHWBEnFBdj7w25LQIhAOrftMzm0ltuz2ic3jbX6Hk6UrYqwgPScX7rS5FEpEmk"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.8.5-canary.5_1561165167336_0.022872054025078414"},"_hasShrinkwrap":false},"6.8.5-canary.6":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"6.8.5-canary.6","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"44a590b210cf045ed1ebde6585ebfb5525a11e3b","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@6.8.5-canary.6","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-CPkrqkLtnrsxdANkcRDCDek1kR3EVBS5gy+ubj3pIgL7ECzPxzp3EW3I5S3DGTw6Px387Hf11MW27YTL5w1nIQ==","shasum":"c4d6ea2a1a27f609f9aebdf8bce12a8567bc3839","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-6.8.5-canary.6.tgz","fileCount":108,"unpackedSize":138465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDX99CRA9TVsSAnZWagAA8AcP/jFpZcn+I6dIdS32DkC9\nYkz3TX8ivi0HiA4wdEOc2sAVGkrcg4TIS9ikZw1Ec1kDbeEcGHjZYB8gXnBU\n8XOTfP/Zy+H/U3z1ItON7LqmKgsjtAogZ4JnKwFek/8LaUf6iz5QgmjQwh+u\nNQeJ2A2yAIzQwupT+NAZir/UVYD5+ostWJOig9N7cFcdRvcD1/z2idHsnESv\nFqNom9Om27GYCCgBF8MMsQIZtxdzk+IpxFBReJHo4+6qI+CGLN5YnYZW+K04\nEuVP3YMQxsHfaCYawREKUbv5VG09nzams9xufXOKR9L/p0u7Ay5I4GmrC8BP\nMn41cVz6th3CycHTOMRs78f1oCn7xWQOKeJGw+RC+9UGV4iZGsyq6VAzj8l9\nHs0NLwFv+mO53EvcVhC7RZ5zSv3Ixj9rYY7bVTI3yTzxCyF66mICxqi5+uJC\nckSSkdNY4wfH8oXz0T9uWEs2wicmOVkBfhxWHX1kqhHriW/E3y8L/D0idF4g\nKATRymSwJvK6aLYxpyqV0qQGwau6iGBxTecVHlKAetc/j/uj4Cx0vkGk0N1f\n0epaKA29JBVq52+5rHIqcNGKd+7Mb4DPawX1hel1FtX7zupKOVmWBFF4e3Of\ngLaRUkhUmMfDnyXg+9QeMbSxuY1X0+17WAdWZJTn51LDpXDY4djunzJdJd2U\npaN7\r\n=vqj3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGbPKakLYJdqpHIQRM87t0wVfvOOpQpQMGd2bVSi3msgAiALJ+pnfUBiREgs2t6+br2S8+hIQ9MQmkkg/HNVXzm8dw=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_6.8.5-canary.6_1561165692497_0.008631910752994632"},"_hasShrinkwrap":false},"7.0.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.0.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"d54fcd119d61723d451e6977a2e26c36b3cd0d7b","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.0.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-uSfTKnm/DrseNrz6C5J+o4AB7s5UgHypSU2MgXAB2tnlnVX/TPOmCSFGxmAnfk0j3vNhXfKku3cTGiNk7WrxhQ==","shasum":"48d60d027b291127afa8eed2b2a1ec7fb3188b4c","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.0.0.tgz","fileCount":108,"unpackedSize":138794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDYFHCRA9TVsSAnZWagAAilkQAJs1C5BBkXqRg05LAvar\nlB4HH+ghREn30yQK0ElngI46+nCM1V03zDJdltNOiaXOGDY5lwgQ2OaISPr6\nAHN3YxcEMT/i/ItInEhuRsgZdUbquZiX5ewDJUFDcp+u40oeRwHGmyRhPbHU\nuEW54gjeukzsztw/d0lfhLroATdZYE68lDkMe3STwiRVNqtHbB9RBYybMhJc\n2/vBbtaMO2kCxHwra4JxTWK33sD/P84pYrGK1FSY6v5lmW9CTd2Fp+oaPO7Q\nExFwkD9LGsYysLga71vwKi27iFZiuGZAIA82n0duVG7pYTrLX/rTVwCTu8tJ\nmb51qg7trayYtbxxpzcoXsjt7dOtrASlKJFlNMOaZDl+3j0xkipcfMFrNHTd\ne7ANkih1RGk8LDPo+bA+d515dqoKWfwg3RIKRJgRzwKJ37T9RzMcfwq3ICxp\nC6nXjCLsCkhPbrgSVeeQaHt4KzhtCRhfEmZsw0OCSiPY1huRkYmiqP2wnmEV\nE7aryvCA/6mfVC1K5dsUMAjWBKdajjBe72cGl3qBzlrqwFB5wnSk14A8k+fK\nMcxwcp5UsEcTyrRitGqJ10LiMcohB2GDiUtkdS6zXcZc655c14gCUnTM4WcN\n9JhAdBn9kDIV32o7jhj9l5G/14pqMTqikqLNSQw+V7Om+KK4K0cKi8OsrXOv\nrrJ4\r\n=lVIc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEczYhqc2IL2vLc7/tHyRHP9xvF51YWuhL+mnYl+IJMEAiEAzv+xEJV1kinXFx3P7LpRFdWytq6NdDyalYn7xsIdnus="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.0.0_1561166151372_0.8752176321342344"},"_hasShrinkwrap":false},"7.0.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.0.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"0282b88e579c40a6338c7bac1515abbfb4d1786e","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.0.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-f07XGgGzBBepAyaQXdZvo/7hJN80yBiqGAtyEypXgg2QYWhD0T96Z5SoQDzCIx3+YFiULipvBzp/kZu+OOINDw==","shasum":"d2bcd53b3b7d1723f931f114c3844da96add821e","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.0.1.tgz","fileCount":108,"unpackedSize":138982,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDYJeCRA9TVsSAnZWagAAZZUP/2KpE1pt1vYdb6ceWq1I\n2FrFOYhB79zqaS+m3qLIJhi8l5uknq7lQz7P+anYAag1dr22bdQbYeKE3SOl\nvBVZ/MWiPyjZikz7czPEhA8AaLW/RLo0U80hpKcDwONTXR1qyH7cz51msfy8\n4UZ2sEzusT2dL84/ddFP2sIbMAKhWSmst58zWTx4SXk//N0d6GRL+9FQv8W1\nlrSchwXoV2Eg0x8wN+B6XpFLzhego9ZqMmwlHYQ7Xx7IZJ7CMD1mg/VbzZBa\nBoBX1KxG9EGpuRCj/p7lKiKnsyP+QdfB4/NPHZGTyviQ5nCWqetskK37zXhd\nYl8VSwpixtxdq+VzcAoM2Q2BfB5DO7ZXyySXCZ7qmoAwhv1yPVHRDC0fadoZ\nPTJfQ7wCHAWEj4XTwvOQSZYPGVc3Tl4aeeku8wM4RvVhwUaD3M3trRh8bk7Y\nhGpG58xHaPc1Ife2Nd4OpaGADMo+omxdUElAajMhhsGOEDez+av2tFnD8CHA\nhfjrF4aZe4kEdY+0mJI36ZLJwp9Uh354qOtOt914qHD97c+lmkc0OK+Hlaz5\nisPaKtAHvuhj5Acv0kpiPFeP9MDAIrL0uJTIX1yp1rJJDm7zsD3/lLxXC3w4\nAKM6EeOBAFuBgE06jm7qYH8EAmgNJua26XVSXyl3R3sMV69RVMBmGVoxZ0gD\n+gmB\r\n=VD90\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID2RjgnmMg3qjNHT5GNEbkfkwi8jYkTdt5PICUaZZ410AiATorC8cUeDDReWytBXglR+ghUqI8rI01/AXKFyivW0PQ=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.0.1_1561166429892_0.7407146309306689"},"_hasShrinkwrap":false},"7.0.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.0.2","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"9e05365cce26444600c070fbf766308327e34b07","_id":"@nofrills/tasks@7.0.2","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-mms+D8oebfsv/ioXWA6YlRAIUws2rdy1SsMCpPxhHzGoDZ6csJS6xJgsi4uAMg97YwIyArCl7CzZ7llJ6p6u/w==","shasum":"fa8f30d8e33cda2001f2ad408315040960978a7f","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.0.2.tgz","fileCount":108,"unpackedSize":139167,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDYMcCRA9TVsSAnZWagAAK68P/RMcIPdGDRRKFLudiSXB\nk1/xnQv4LQgg0V3Vf4xOh5SR89nWAjquIZtGENmkFlekkMPUo6Wf50ddsrsw\nv7TfAqxBoWkchn5AGSoPyaUI8c72odSvk6ogk0EyxQIL5WFIjU/HVkixpuEE\nF8Fkr+w3ZlDaurNAB93A02c0JHz7fXG5ZY5GKoeUoitnWSzqKW6XyNligiys\nzV4/yekTo3TJPgSUThu8JS4HndHSR7HXXSXv7eDqBZvgRK+tpfQXXAfF6Hyp\nlc2KdCVxeB3dZaA/JqAX6cLPMT51nlYEv9OFD3cTdDmX4kaimgcNEBmNAswE\nzgNrs7ANuR9qhoBRm6mnq7kWFdu/SPBEsODq3Gy2Wcp9f9muw5Ea1wxe2Zld\nv7ijy9VS7g/cN1QFV035NuFUyYLfTuJmOu344JC4eSpiX9bmJZH68Ti6+eva\nieQZe4Z3bUSwppEenSaW51VcjokIO2pwNI4dVnj37lYDCc1vWq7iFXPaO+sc\nZdoyE2IemHkmvPWVjpT9y55/UAQphGGJY1mBLBj0bS7k288n7DoSAPQTvJPf\nhUYvjsTnTQ9XgMh5HXKhraxpgs+iM0Wu++0FGddC5x0iYqMV5bVTKuumrQYI\n9qfgHbvSoJtPfgfZAYAQjb8BOjqvNZE49EJQvQgZs2mpxdSa4hEaKDdY7MaB\nvMBE\r\n=SHab\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFa2VhmRtLhIp91YS/LiRYQUWaKlbD7Emvo8Yv+5QBF0AiBsRw/dXrGv5ysDWdqg59fyM+7EhXiRTweK/+W+lBfOEA=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.0.2_1561166620201_0.03551426645163058"},"_hasShrinkwrap":false},"7.0.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.0.3","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"3a4fc4105f418168a29e1af1feda563ebeebc40f","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.0.3","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-U9w6he3njEcPMHYdGn/QDjlbBvQ6ZoLhkXCEm29tSOBaaOEkAxM4XIZ3SOj4PPtxt8nKn4v3LB6poW+QGtseBA==","shasum":"d0a594c4ab4d4c5a879befcb99cfc1a818335423","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.0.3.tgz","fileCount":108,"unpackedSize":139352,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDYOrCRA9TVsSAnZWagAAoyoP/3QC3+zjEb3Ar0YWcsb/\nHcrTRHOeDNPH01mJQqlaKZc8GA18Zj99d4bB6Udhgz96tBIdAeb+PrvFw9iq\n6CvUANjdWmulLDvw1r5ltl5H+KkyxuUxafhZFOXQGc8nt0duIKa8+CwXfw/w\nCGaR/xsvXfsujZAnHSssuPhsIB6ocZrgl0MzTfoNTBvpjvFpSZbkLAPnU24N\n5P3htDWn2Rr73ZRCROMgfrX6FLFSwgXGp/wExPXdNTKsVhDWYKxgKHNYxZaq\nghIN6RR6nJVwZaV0m2RTqGlRxc2ob7rWBU6oQv7vyCu2Hf5QFrjDYhl6B6sA\nykCXuL5D/shluTvqyXGAzsM9eMCfyYrzXCeH2wp+tZ1O82J4fN2h83wtPx2m\nnfNpA/VYKZ+y5bLVLzUSJwIeuDygTP5qMnq6j9iiIZJaZAw91hBCWjR7jDUZ\nH2WsYVlUN/LIMuuC2aW/Y5fdNguMgt4+G6/VB4BgT+k4yvXBeSwh39muK/sQ\nzOqdy9JL3IQtSp8mKtDsveumT84FUxjHhbcrZ24CSv/HPf3vkH+tkOTf7ODZ\nyKYGSnGVCJHB9T7ZcJW6NlBmJNsANhreGZhEPQfZ5CrMMo294vwJlMrkhKnr\nsUgQTC3r3ei/F1OEaQmvkby6qLxI6vkTFzktYwS1k/GXyXvqpQeMSA56Rg/f\n7V+J\r\n=uFsQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFZqkH2rtK2shKlPo3Al1T7glYdUEAfOrJQzViK6762JAiEAnku6fRDiutCjvWr0I5ekwzDSufga/sTW+Bu6B7Y6a/Y="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.0.3_1561166762883_0.010035530931536085"},"_hasShrinkwrap":false},"7.0.4-canary.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.0.4-canary.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"93af674aa290fe51a788a8c01e2d95eb0cc00c40","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.0.4-canary.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-ZtAxLsc6Vt5eSSDxkSyoZjOUuTGSJlD7Rcv/8Iz8EqJ8+mXNreeAGtyl9Aacysl7BhGXiukjnJZ4Ixfjono7QQ==","shasum":"52339aaae5256d782b0ddf69329dc0f1d54a3566","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.0.4-canary.0.tgz","fileCount":108,"unpackedSize":142075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDZLeCRA9TVsSAnZWagAACjkP/0umxIofqUvSipwVfu2Y\nPpQKZQBfETnUJ6YA2oVON9hL4qs0VGYiVxgoHAuXPYmo/7JQqhpjudxQh7pK\nwOvpuAUSE4dmpOpFsQ0wip8uMk20b1rJ7/wi6BazYBZQLxpH3uH62H5f68SO\nnY0Ms+kCB5rkbQsBYvWVk72+AaGPe1aCOpnENBxqzT4OTEzW6YI889uu3J3S\n75f4I5Etqw+qjtRuGli+zR5Fd7Qr8EZzdq/68ubh4tmVZ7lxDcguAqL/p0p3\nlyAKd5XCdT59Ubg7EzEjwJOdY5L6nbmKwc8ppBHfEs6nHp4aXnx0Wnk7m0v1\nr1gS4BLlZc/FnCxzh7JYzmD80ZBDxofm2Wf/hxhIJwTtJWZ+B9UwQf7v45fr\n4bMnkpeC17ocweerwYv6RVBjdf7FS1PwPO0W21QOqPC8+gScqRoK/Ga4Wn3C\nqH86cTvI4NkTK9AQnOU08wfu+Q79xELuK34XnemSyjsCcGBpp93510ky8AP0\nG5vMHWOGmTY296Q79JcZb7j9/7VLWXhgqLH6a9jLLMuzq2+9m4eiXS3F5vst\nqZZo7eZ+S8hvyjA294QJPZdHc29dOiuuX10HaGHkfJV14nEty6v5L7uLmS0i\nYpi7cB9JAMbT4z/HYT9Jj9z2M3bM5MasMANOaBLwZGsLRjuFaWc556NvpeCg\no47G\r\n=xPGx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICa6Mn9G2egM6q6RJfolS+o6bYj0gV43z7y3U7DGKWFuAiATwujcw/bsocfecM65aqx5YBAQBOQMFeo0WTi77Ru2Pg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.0.4-canary.0_1561170653359_0.9929308014988356"},"_hasShrinkwrap":false},"7.1.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"97f193305fb7bb399043d8eee2f7055f9e27ef74","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.0","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-EtUHubaWVAFBMwdoyheGR86KC73Kc1AOFdW8qF/gmLAV1fmwTGO6d71IzmxLPFMHF3diAzj7jnreM+kSdJJrIg==","shasum":"5552a7b04c7ac278cd34e2a96866482476f8c9c8","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.0.tgz","fileCount":108,"unpackedSize":142299,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDZN6CRA9TVsSAnZWagAACYoQAIsPo7352jX4VZdmrp3v\nNeKB9Decx2+gAtyDT9BEqsubusSdCW4/EFrrn8iEWngjlNpyTfZr3hR1LMUg\nFNw4tMhttybne9ZlY2n7riztKT9wJnfwUH3n3ohmBQ0+pTLVJG+GyBeSd2xd\nH+W6KswK5NCxtk0M6lXshxoQhbhGj2E5omM5KPrRh5l8VWdwJCdZEy00xiIy\nYPk/inRS1RhzIWX32bArA/BQlXlOhUIs5IzAOZwARlcNNivpM2GjtN9PNG3J\n1VVfz6UCoMs92xCPWbOaZMB3rrhcY0wsWjLAcyzu1tZAIyX4F5VqbQfkU3d4\nHOwe/hnHnU1tJVg2u10h4UJjx6ii7aEJX0qUiOpI2H3WiJdHmM0+cLRh59LT\nV3aAZyaddgUOe9G356c9QJzfa3+n/LxxP1dPhi/C2U4ONEm1ffTtWDVtdHg2\nv3SmntrSmLnc4h4sSnNxr0Qk8xVgFTCU2N3NSBjY0HUfNjsA+pkYL4iK1dDq\nEG+GABaK3OqwhNRpcqu5XKO4zXD6i9CQiMhQhVo6MbBBB++vGGwdWHUQvyXY\nbSpmdXC37lci4sVC3XQrWT2ibkhI8O6mKWLIWTws9Q/DO+fSz0hf0ugypHN3\n1qDgMSYCN2Q94ErLeY6T2ypgEatsMOzpQdZsuNpmA2fDcshePjCEAZ2R0r8B\nYJxA\r\n=V9W8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBh5s5iXygd7NpqQrh2R7jWtgisuPIOTIpH+71SKqwPWAiEAwQAsfBduEvUs+gfgQljoxoI4qxfmAAU7Zh92dFcu+2o="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.0_1561170809473_0.30222979174028164"},"_hasShrinkwrap":false},"7.1.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"7800465ffd9cb65b872c2b5bf8d814fa369dffe0","_id":"@nofrills/tasks@7.1.1","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-SQGw6Up3NLX8C0nbJF3Qfa167B6PGX8Zn/2dVQOWDY674R18HTdwz5G/DRxIPf5Z8Rb6Qir+Ve0lpzdL0BYljA==","shasum":"2e89079cb6971f910000e41e05139a70758d5765","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.1.tgz","fileCount":108,"unpackedSize":142484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDZRlCRA9TVsSAnZWagAAUv0P/R3eAfGZOjak8q75+hlZ\nYrzrpzNY+ofhbdPD49+YrNHKhfgKLBhO+rTtTwzcU4C2LYkJbYodyQEXxppo\np8NJU8te5m8CJ0qFNi4e61EsBr5oKz5n0VhzE0Vz44KWV+7zrMx+FwhvuUbT\n/aTM51oLqlnFLH5e/qcQssNHarzR1Hldchu/uo++1Rt6/bfhpvqD++Cb1Z0v\nGtFHb8Cgq6jE8uE7/p2fzOPJJ9N/sXvolsY/T6f/VAkYA6rWkhpqP/1eM2mV\nHbsOCh2xKMtfieojz++4NVxULmap/evXWLFLB/cLofnRcDr2mbv8hcUKT+zL\nqnS4bCk15Ndr1DPNQQOzeINSSLHaPm6O7mR/la5jrJpwHvIDa45jEKicxYGS\nZu4xTOh+Mvp+XlqVPkKCcHUfi6NvOMO8AbJJtz1fCt5jdSVSy/aXH/IUU5Sw\nRHllI2BUbdVI70D/FlGNGrlweuIMk/ZFmpZ2Kv0bd3cC/XAYQHpgrQIxlHgw\neilrjqF0dNCkI6Q0El4Mgc9o3o+hVXmGkYFWCc4tgZHDsw5Pc8ndFemuLuCo\nDrAolIE/Sk5cczwD6L12ukSDjaltZjyL5aE8qGZ10KT5vhgxJfWae0MKvzKq\nBr+KULEfivXim6MB0Y32lD13MaaErziO/eXiGnFipNiVCpIYwV/kn0yP/wgb\nLLYe\r\n=MDH+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDQWBhoyS3lXkNXlnUppr9xNycUx3lM4SlYmagRwyhPxAiBezwg2p2BxhEjvjQeXCOkYO6DyFv+ZQiJw+6kBcOCb1w=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.1_1561171045177_0.6869357081998004"},"_hasShrinkwrap":false},"7.1.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.2","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","clean":"ts-node src/cli-tasks clean","exec":"ts-node src/cli-tasks","shebang":"ts-node src/cli-shebang"},"gitHead":"b85f7f8d7065576edce0fdc4749ef7c40432c5f0","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.2","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-cM4JAECul/JQchDtFxiIniPPDjvZNxIknhY9LIHLpMqMUTRM+RmIEdFgz8R+kY4QtfMOLrVLTf3JMCnha+6AUg==","shasum":"02fac1fd3e14ba3631c356102f3a6cf91a84e3a6","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.2.tgz","fileCount":108,"unpackedSize":142669,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDZU1CRA9TVsSAnZWagAAwC4P/1i0avnBhHckO4T2LbOA\nsT0BWjLmXzS1sYkH4ssovVSA7+NKynytIYZPmp3M4IeKTUDdvBd15o0ZxMaH\n8kMFzi6c79EAFJvuqqw0udovTwWJ0AJ6gY32yodtuU+FOqomj/qEY9FhFn7w\nJ+IzOoHLaR+fb41+JewuGjIrJzprhTdXfx6olqet/4hCNk/GtE8wWptWaUhE\n/8hkd4KyV4q8clbXuHoslrdHibeiIkamHESWn5yE4EsagUlsX7Ee5xr7HtVd\ncnc96zexh2Fl5MUNJrRV5edJkwhL934HNygjPImLpalSR1qRomrK5UTJlmgo\nuzs9xMlsxmbnm4qRoU2ek3Yie5AmC5usfoBDAm2Mx9xxeWPpGUoBxhoNqbvP\nr8CZcQlguVGSKaW7ZwHGruBJyZulLxaqNXBlN/8Wi+l8CujWI//AK0cEgi3O\nJFoi8WoUNVbdjfb0nj3r7oM6p+5EhCoORWYcKHZLBt/AiNbpoJxh3OgT7GQM\nyB1SZf3lNhYNDrJZkoPkNyW08FxLXNC4Q0OpoEV8dJSph/SapH+z+MzW0DQs\nKFJBPupehp7ArCnGYpl/UEbqCoLJyleRYdMOedbYVXMpF65RaH0HhyeOkRyq\nl7IDZFzzkIkwmProMRMafbgG5f4X75subi2txbkvr4meq2qK64jnJaWaRh5o\n4Kz3\r\n=bVJg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFKohJ5StnZMOcYlK6KstPDGBYbtJ9RWHI/QZIjw42FyAiEAxIKuAf4kEV7aTUb50e7oKTTgZMGReKQ6cyKFjUuRhT4="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.2_1561171253124_0.18545977353237442"},"_hasShrinkwrap":false},"7.1.3-canary.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.3-canary.2","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^3.6.0","@nofrills/fs":"^3.5.1","@nofrills/lincoln-debug":"^3.6.0","@nofrills/patterns":"^1.5.0","@nofrills/scrubs":"^3.6.0","@nofrills/types":"^3.4.3","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^4.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build"},"gitHead":"a39708b8aaf6fe4eb5ae3f4ab509e11d98c55fea","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.3-canary.2","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-r/TTwfaJvwLtwi+/LIfytHqR3yjeBJzsfcnf3F/rmvfCKFQ5vLS7a1knRQxvuSQZCOjZCPzqVndMVmBDf0tSwA==","shasum":"b47965a00bcba1478e119ead97e2ef16dd212e30","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.3-canary.2.tgz","fileCount":108,"unpackedSize":142629,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDpovCRA9TVsSAnZWagAAOhMP/RpkiaNFuaJOQV7AOkVT\nPwzqXD2KPWPWe+hPjEttutUNdxGD8T9Xck9gKiX/rJlttqAQHW4kn2cjdYFl\nFXqrvYnev5gBYQ8oMqRBD3ypLLdBXzAaD7H1TpKeSs2f/zQDgMeoSGunYCJf\ngscLkv/WG07loMXoTyLF5vHE3Mt5Ymp9q9aTWcgIBK/E1fPlPiZ/fdR7nhQG\n+syuKQTkh3DLZt5ZL64QFOKpHiICx+q7t/dXLOjq/Clvn3R52jjmpGS6nG4+\n2nF+z6KQWE0r9ztALMB3rwpm8Nclo4KZGu7D1OsxKv2hibhxRF1NMgv5olSU\nuNS6Ynxpx7HS2y7AQdG6zXDHC2Jj3EGNf5UTrbKSKFR77hBFC6C6DBPuNpQl\nGWitJIuPP+zKXDW9oVcpywAwzEIyhS4PXYSnsONAAgENMqqy+19aBChYPv3z\nqyfQkzAfMRx8xYXbtC+pRY3AtAbAC6Ta585DJwSZdz2e6eb4yizhsx9sicEj\nQZxRrlS/bFiHPpn91qXGm2fct9j/PfpaaWrxwaOUiy2E2lQEtlfn9ueg0lEe\nz24bkbjqrR8if8LGasLLxybGLrGHI5pkxWeooFJP7j64CPm4JGOHy4MLGBW1\nYjeZgpt/p9+iC+sYBHbcbANZF8rOW3QOnVKMcXIzxPYe1+M/hS6eSx+FznUv\nMta4\r\n=H1Uj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE8Uzpp/m9KeDqJzOvbHCG8+QYQIIA9zJsngybhN9qb/AiEA8QxsklYX/8R57VIbhw57++GzZD7x1aSlL1IeBmZtqbU="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.3-canary.2_1561238062814_0.4631094441114305"},"_hasShrinkwrap":false},"7.1.3-canary.6":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.3-canary.6","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"18dc19e7ab84438aaf845bd8e766cc1fa0b5c6e7","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.3-canary.6","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-ZpKFKoTRMJirW6P6V5rwW/IoYQQf3yqNOIzNGc+mipyoZaAcAWp2etN8ryrOJvhUJY8ZpDdh5H+eRXHVu4D90g==","shasum":"23842d316ada40fa257ba18534a7f5500be6a5a3","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.3-canary.6.tgz","fileCount":108,"unpackedSize":142798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDsaOCRA9TVsSAnZWagAAVpoP+wbsQXM3yzL9cOz2spGc\nsdDBAe8uaFv8NwCKMDGzgUvva22Xp2Y+D3hli28PAbd4oy5NYlPMBeccAMHL\n+MFSMw+sXi6us3PmPl7V6YRHuQu52TdPuEIDwfgev3ivrG3ei5DIweAA5wUp\nZMKmPD68PneG9iKQU+wvOVzBLDyp1X582/5+BTg6AWqXAPIUM5wVBrCx3FTP\n5Pj9h1+WAYYtHmm4KJg/vnj6DTs+wboX7C9C4UDIx7zG0bU5pjy6LMH7Q/Is\nc02xgEThQrf396Nag+ugesto+U/qLZh+OjBWh6aKgvQ16LEygz47nzM8wE45\npE2ZedtrtxKGfXr/SiPA1xH/Isb21Fbxe+QIer/PHRZrISBPCVo/BGeoYI5a\niTpWBHs+2vGfF540Yj/Kbn+m/IxKyFH23hcf5tNipQJh1TBEi6RwO6wvIMH+\nRT7UYL8eZIRhDk75bBQb4ELByITUoyLvLe3c44sc9vlFhAjBKtLBRgsWgRUB\n2M04MeXu5pxfgqXZLv1IRmpo89fc0wyaU50PxZwNALETbg0PjCLhX3c3L4e5\nGzXdYBc84BCMc6hWoYUu3fhlrHhFhTX6pLRjFWmAx0/qKSg555uOg2uqBddE\nzMP6bQjXjzkmOrUV2YxnSV5TpEHPJhIOMhF+IhylWypZgsbfdlwRg6AtS6qZ\nfab8\r\n=CFog\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCKIUSQ3cx53m+FYSJ+i4zu+IFR+bTdaIV+tIVv8NY3AIgSDcARtspq6025AoUpvbUaCsdUaS4b4Vfd8kECU4Rwlw="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.3-canary.6_1561249421639_0.9675600891160685"},"_hasShrinkwrap":false},"7.1.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.3","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"a50c3d568dff9f5bbe9f22acf5759ef25fe3cf6b","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.3","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-+7CH+BobUwV6iRxGWmcTFzCeH1nbbA+XezDIRc2Ij5+rR7CeKMWwjf72FWQW5FZ4cqAY3lZpyfsiy7TBKkIyVw==","shasum":"7f073e5d0fb6cae00897ebeee9cdc0a0300ac131","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.3.tgz","fileCount":108,"unpackedSize":142966,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDsfGCRA9TVsSAnZWagAA42oP/1JRYV5YT7C8lqMgywnX\nJsOkbpUPH0GyNYyDdXCf3teT3M5T6gh6xWOHH+NVIDQ0WAFg/8oEdlWMAbaC\nblyosS2JzRWPcZzok0er0jjzRzDceZpRpa++4llSDFIZJU+qYkosEuLH+hjL\n7gPmmVM2HIuQRhz5aftWl1Pnmw0LmZhV7kJnAgdNJCaKBDVx0LdxYGSFMs/4\nilyYuwhOGFMCIlD4ekYpuSBM9e0z+e2GccF/ZWnzUzQ2D+DsjAdkYQk7+ESq\nrbBtJ1n0Ccx2b3tnLRe4Rfpah9qSVBaibbNcyou/X+AM5ovEjAM7bpKqNmgu\nEkEJHfXYDeJHXMwijXbOHyx4Q57CeMlJioXnidSL4Jnq0VcgQdO7L60NLmlS\nrN6GnUrsPUw0EDbllbtcQP9LxNRQPOLPWeHnkxiGvpFEV/bz5WyI+s/ws98d\ndyxwWf9dwbzEYWaYPC/LNXPk0XLDY6uRhkjoTg6w+CZt2n5+Wou/FB3twSjL\nmIOySS2aPdnR6Itc9h+AwGyzgu4e0TZL21vUPVow8C6JfKdA9x0l0HOZcWBa\nAtogP3Z2eSQK3r/r7TRIgvG2Sxd3wpz/ez8aXZZlo2139sPNZ+MKADVVD28O\n0Ofp3HM7wlrb7/9i/m3hIk1p/9Jh0ZldSGX+ayVsviLo6LmVMMJ7l6WCTXIR\n8oBe\r\n=A0zQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGiJYJsrGfrATmNu8Fc/+G16Wh1XnvDbFEPQBRf1wOG2AiAxKsC7AoAvE4WkWsGVNkVBJX88gUd25RVnXi6y0FlHZg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.3_1561249734006_0.7398945573688978"},"_hasShrinkwrap":false},"7.1.3-canary.17":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.3-canary.17","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"c5bb437fa3f9803f13891d05a30fc933c0828fb5","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.3-canary.17","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-v3xKh+12t16tceerkpdLP61o7tDqCYKzwlG72fLt6OEGP8RklgbZ26Bqx2RBCoQ3JfwYCIgImrazoWIPVMd94A==","shasum":"19df8be600dd4ff7b3aedd0358b804f2e0605bbf","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.3-canary.17.tgz","fileCount":108,"unpackedSize":144168,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDt0PCRA9TVsSAnZWagAA3BoP/0VGHIpbap9nGEN1ISXN\n4F4o0tdh8PJ+irjbob/4/YurK+LuDe1nx+GQU8ftI/BtDqG/8UQkMeAooif1\n/g2gCaeMwvhCvpT2iq61kTkyzcxzkGyGlB85IBR2dqCEJmhN3dRA1A6xDitg\nTk4i2Gpe+vGwAiaS5j9srbKVi+NThLAIF/vpMCTtArmsXF/ANDgYMW4T3sig\nFbRFGkAZI6YF2X6GjDhrzzrIjcWzXDbnHukLUGoTQbtPpLRurh5wLozR32eX\n09Hg4GxiQ3wafYWbQHow7PRN2oFvKn91HoTEyDS30KbjaNl/pJhUs5bURgFE\nhNpEbRtrK5PwKFegre8dhkC30v203t0u7z+kte5Ng0p/VCVBTqyDwgGnsUJB\nmXWz42Vm/5eN12cEIAULN+fXFmyV0KxOA2eWQd0zfAy+SL7Noj0JfxP0y8Xk\nbkFpnNRAJ+g2SNSer3pfwhHuQWvw8eJKMgo9+uBGn+y4qeqZsUFswcQ8y4og\nP0ZD7V6DX6gFg9rG3aLu9SgTsbPy8UM47/1eokb9uKusI59VnZG29IjPZpi7\nxYaq0aZymdQJEIANHuNoRiy7hN9gqwrmi1bzmF9sQfDA+3Q8vLcak7xIXj00\nYw8vJUfI14q5IJyGmkH+uTiaj9HxuLWzB7CKzQFm2mnDX+yXz+hVQJ1k9WRL\nYrG8\r\n=2f4S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKtzVdLRd1Ur7qyjFCZlTHG6dAOkh1WGnF5sYeh+5a5wIhAP3UdB9nngNgmGpWEo2iWMeQb/TmqmtQ/kbhWRjibzHN"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.3-canary.17_1561255182787_0.10926450144371125"},"_hasShrinkwrap":false},"7.1.4":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.4","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"54ae4e0cbb4b9cee3757c225a4d6186145ba9bef","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.4","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-r2X1gU/NX7SjjzjZhPhmPKr4hbQEhlDoQrrFvBTDxxEgVp1NshtMnxyG3fGCQc2qgbKgDphtpVoVnzbbfCyywA==","shasum":"92669d1e31ebf52b2bfb596ac767479b5bfc9222","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.4.tgz","fileCount":108,"unpackedSize":144335,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDuDyCRA9TVsSAnZWagAAkPYQAJw5YQtKnliEtY16FzFd\ns8x+HBwddJ+TsZTtHEXArFpB+3MMOWL8S9aCtlVqi2PUqw7DJiIn6EojVHJc\nh1jH5EoVY6+d126YkkDbRGkTMCO9Dnd91B4eThIwrptgAT+FWXKrFhoTzi9A\nrY0HoxYgvYcnYHfB4D6Iqq+BxySoVyrCmgwrm9qA7TUgFLLDlo5T1Nsc59Gu\nRZjNixArAuJa4qnqIk4DgYFSIaLgQPf3SopoollCp+5r11hTTbVENUqAgi35\nLBVpmD9vQOSjpWMaEnGRTjD2KzJUFPQFSiZ4+g/Bwnc4evMyEGoR6mxlTgXj\nakMUEcuCw/pO/z7MgN8eHq2j2vY4+u/l5XLuzO01pMPHEAYLPEaM+nZXVsWw\ndjLWUQPlgS9FT8C3Z/gJsQWrDUfH17IaPI+2Xi7VnxbENlwVgGPl3uwuz4ze\n9LWHcsplZb6xbD1LnOdokqQLuUshxSS9GiAES/ew/lKGLHnUSWWCx8yCnFl+\nRKD1iOK8DStK6et1gE3Bx+Lu7Pp4erOgb5CdTpp788+SgnL6F/B4G4M10oHS\nSvEBzWCnnbbK2G5xaRY3ZcVvDXbmvs3YfadSMNNaXGSc5CZXGs7nwxVLW55/\ncxLSiOkeECNWJTTsPyT8pckkEUIHKzXWBPDMiMXZAZMccfWyn30+Trky1uDa\nxjuX\r\n=xA7D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZvddm71ClIMwKj06D3pfAEk0vAAdhvY8hNXOp8Ux/ngIgFLLP+aWKNb+cw84NejmqlnkSq+duehaC2xC8oXtvx9g="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.4_1561256177685_0.579944666469165"},"_hasShrinkwrap":false},"7.1.5":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.5","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"e1832a2231fc6cce7179647fb845336270e41c5e","_id":"@nofrills/tasks@7.1.5","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-D9Py377v+UFGNGliR4BpFvUnb3RaNOV9mqYDj3DkDgKyQCuCkoMb/xUxf5JmpMNigk/L/XFWtmBGtDl3HBC6DQ==","shasum":"694fe4632d21ed3111bab241beabe170b028581c","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.5.tgz","fileCount":108,"unpackedSize":144520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDuGRCRA9TVsSAnZWagAAxjoP/3iTpkI/hIqtyNTHb2zQ\nPqlDakenWrjvwlP4ByckYGsqALiREf2GmHSaRXn/RGqjWSWoHIUaEXIzll7G\n8I64srkIzNvR7v+iCN9iHQoJvUVtFs4cDn4uRN1mpVMbCJqob0s31lBGTzrH\nOSOfHQoyteDnbmmhG9BhLyKio1u8U69GGLkqsKxYGMIwZNZ9sWHg5vMoMQdl\n+2HRMeGgybahiT7q7QZNTlqrcG3TAPCwL6HQ4wM0k3ptfdZLrJAX24KCa5Hm\nPFeLKu1DoR3mxJsWnIrn8Bn/WYlVmNiVKw0d3T9t0lP9urOBBzd57cmoauLG\n3TLK1dIOP0ohNchvCCehvWfBREJervS01pj5kF3P+YlaM0Z3cCvxUgm199v/\nLVpIGXiWylhGsF/Q45kx/qxXsViIxUHYjugsPrpOi4K28bwwXvNuzR5I+3nX\nemex6p6s2JXI1I4fJhKyRIqTXL+OQ1kcoBWtVk9mgKV9BNnRuaQUjq3FMPGi\nHJesYTvLsmW9TZRgF8iolQOTprrtGNNPHz88x+DRIsqyUTAiWxdl/4LdT0Uu\n7OFqeI9tpdTEbPS22xUHf5AadVgC0xYBmWqbLOT0qozlTP9jIuXe+Ut4F5TQ\nNtboInf/Zludz0gzAM6IbZ1TBTtmBAUnzgdrm1dgy57ObnAxZ5/gTCX2QTSn\n0Ki8\r\n=7VWM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWnjGgA04xnv03NvyW0KqhBBNxnu//9GV0t8oeQ89UCgIgEMDOmkbrJivSgctT25Tt185II+SeJyUQGEZfz7keAj0="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.5_1561256336849_0.0391901133985888"},"_hasShrinkwrap":false},"7.1.6":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.6","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"0b17e85897f0ff778cd785010c0cfeff53eba725","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.6","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-CnLyZjqZo8Wkla1lpgQ6O5d2zgJE6lkkAZV9g3HCMZNlb9lYNb60P8B5ugK7wln8ZhrO0qjm9SLoM7CcqfTdWA==","shasum":"1adfbfee641594ba05bd7bb6f5b6c9849a8b3202","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.6.tgz","fileCount":108,"unpackedSize":144705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDvkdCRA9TVsSAnZWagAA9KYP/2VLTYD49A/32xO8MLpo\n4ljMsaSqHPsenZgRqgEtWjHQkkKcExkgtPAxUdQ1BK9uNgqCFFj2Mp/G7GPR\nTBx0sL6rrBW6mSPZO1ImAllOOiTVkcTzL7g4K60PKUO6iGNEvyEwHQNZqlr6\ncnzJ07xGFekO48eCFtOmWnD0VsFKga34hzx7ZDxuoZoGn170bJUD+JYYsPVN\nLnz4w2X83puE0xhwmXZR2hnnH698jSAWTCv4p5Q2IbjM50QKCaXh4icOOzq+\nO2krJdxLjbjURXtG34166iKacF5me4z7NDZ/GMujequ8NODDfuKOaJMypFGu\nQT6CC6FjDMjSs+lFTI8L88F21YjsJKA+Nmly9WWehYbsu/752FWErThkpX3p\nGMsWmQGkUkaztk0AAuxiNoMRV/PQYXpi2xq6qVY5gBVP1MX9Vj5TlaVVl/Ef\ni6L/AVztYHaYAOC2ijJppvEJNNC/RCCRo9p9A/03stndgmRiuJcMkNIBLIVP\nyuxC9DZg3E2MjhFOfdkyQ2YrtB5ZnDLMZL251jEnlEDMUDWC8PUJ2w5TeQjT\nlKrwrQR9LNhojMHKMruH7YvlD5y9L+v/W2VlfmEt+0YOY39G9VL330LeVQI3\nPzBDl7EKV35YbR19kQG5Q87t9dIQCVyLFotS53w7DRpPNthmZhSNumyfJ4Y3\nsH15\r\n=Qs/Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDKFicy8e0B+dSZHkCZ3PLABYXOxurhos7ODXoYBA+IQAiA5HJsyHk6AFJxNvm9HZCow2+Egv2VToFRYYHsSXHYUgA=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.6_1561262364478_0.22828934721266392"},"_hasShrinkwrap":false},"7.1.7":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.7","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"7e8894e87298515f084dfaf3014b16de7c83e512","_id":"@nofrills/tasks@7.1.7","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-Cl0R7814tXnYcX9C4rj6ECOLRNxJdPDeWwsbbWNXMxGv70FXTk5kmDAG2PevEb+mWl/ufGvuNd2bS0tDrri+yA==","shasum":"d1cfb52363c1f1e65b99fa71c2a12056c194eec1","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.7.tgz","fileCount":108,"unpackedSize":144890,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdD4hfCRA9TVsSAnZWagAAKtMP/1Nbry5bfpQ3SxzM31F9\nxcuBNdWnSEGXbYdlQmQiovgHpUfrfqzxoXRlhI2/NmvlmeITXLt9kldGU+Ec\nRdHKrrHPfTWMVwziEfVrgRIfLjQ32/bGIhvmb+Gw0G7C+XNozuAyG663WQ5j\npwharQI9lOAuxiKyb977DHlMPBOmu7tpzmGML+TQwoT9MlW2z7xBKSdXD1xY\nm3OlygQypZjb3Acyezg55uZQ/nODvQhozcBH4YQXxGcKolaa1BdmcyB7We9E\nbcRqvMspxtjjGsXEPLLJ6TYo+g0QjsrhJbOlE1L7p1kfylnyx/u6bBPK187/\nRK3k5j860AYfDEvl+lGevi2Fi+Ox/5rHUSwE3tAN13Zx5mQQ1NCCi3zxh381\nKxFHmFOin0Kvod96QrKDc44PbjPevqrUj+BxFtvsu0BGUA+2ZTgpcqh1ybJf\nsHgEp6x5Siq1nDHWUDoM6U3fBgFaJ0eSemcPhEi9ezSnwBphH1xXjC2vpmGX\nsPCvERyzZph0XySxgW2fNhl+bejJRxM5FCzeZCWOnHIOhw+8ushm7RskKErG\n346ddtgX2bdEr718Os+23Kbbl3oI8FwIbufc0L5O54l1DAWBgE742qFffQGH\nT9JfapoobBaes357mTFeqaaWrgvXOe5lNM05HiX3KEjR6uPlq2r+orG7+4Ka\ngNk3\r\n=5xFf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLYLY0t1jGo51neBemkKGMprmzJwZmcmL+KRLu/PT3JwIhALNPWd3a99W+g8H476PrE+aCBuqC4+2L33mGsEz356rN"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.7_1561299039180_0.24757518270342072"},"_hasShrinkwrap":false},"7.1.8":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.8","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"40c7d8daf85d4c3c8c0884f6bdf8422f9a63c4b2","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.8","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-ZcK57lhMQavrf5wVByQmIM6EIsfz5FYXGrbvHONbpTgzmnczZ5ppGJh3M1kc21vnKDdgK2gIZtmMAfzpix0yBw==","shasum":"06cb68ade4a02ebe3632d2da36f551733dbeb8e4","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.8.tgz","fileCount":108,"unpackedSize":145075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdD4lhCRA9TVsSAnZWagAAGYYP/RVsK1U7xOSHyoxH/o2D\nCVHv0wBFkxVOPWFf/91J6w/vL1epoGcbLQJEz03748TnNGcGySjJ2pM8YM52\n1Oo6264Wa6GCtQ9Fx5AYTDuvkz52RnT7d1ntRRNmP+BZF1RmY/ZCneX3jEaY\n7NYI0EH2yOWabiVOpG0vLfIEM7s9P7iWp63v0u6pZHgKG39VVf8ZH572vCu0\nfw/V9whxCP4Kg2oBeXnDWsiQVPfd7h1XNWj6YES0oEn0k/yUU2l2LUGYvsVg\nBrXlZUnELcLZQg+ylqTRXOEQhf3D+hJ3chILz5m4r0dHXjyGSQuF8yRWE2Vp\nSF4heqEaD79B6swnW9b9csrqrE/74uqIiW1GJ0yLYrroACdekCmXxi7qMMWH\n1WjRxZAH+ONquOXlL8pq2pGqzcydmhNeuc9RIFwHC0kNsFScj6yLJe3/MYsr\nM1NMgLh+lilgwK/sXD6VKXuve843cwjnQ1M7bwiW14EyfGPSI4Pf5CX221R/\nsGdyrgXKzNXqvRL7UOKTkaSmiNX8+iBCHCX+qRY9w+x/FkU33jljBrotjTPh\nupme/FrMfKD7DBqmLoSn6rKRg0ND4lSppmY+Y/ARxsGWa3f8uU1YmUeQx2pg\nEDte66VK1o5TeQ2FyoUkMt7TtnjdBk1K6SdNtkrgCQkAwbMUmKbp8yjf/jdE\n6WUI\r\n=tFCr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsoyl09X0oIGey3m0C70/YIL0bEtRi/KZuTRhERrczlAIhALlxnwvRiRwjgOdfdFQhbn+kvfKV2BVPdf0SI/wV8bMu"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.8_1561299296724_0.5776390459163656"},"_hasShrinkwrap":false},"7.1.7-canary.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.7-canary.3","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"24f864ed6f6f82b421256500f7c57c14d4d7ee10","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.7-canary.3","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-s5lJ+ItTLgyYUcyXcBjk/0D3sdw9aiWNABTao1eWW1vfflIOf3UWGPoY7K41evvJIxVZ5Zga/gTlUWod+wgKpQ==","shasum":"d8ac5b3091448ea1402a498bd40bfa3c3dbdc5bc","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.7-canary.3.tgz","fileCount":108,"unpackedSize":145092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdD4paCRA9TVsSAnZWagAAjsYP/1oatfPbYsLKf8ZsfJ/A\n2fLHN5di06voJ3JVObXF75I2pYJTLlexAnrOaypiksx1UyNrgaa7B9qoSiEn\nqO84ShzYoTmMon+ODT/J6kA+OrC/Bd6u927lMp5so86dd4o4FqK43nhnMtVQ\nBf4g8xgIw4iyuB5FqZVxZnfozINdAMkxoGoC87BcBUfg7C06gFHFxFQ6VREP\nUb+cWZZyaWbQh/dTQPOnX1AIjMBBj8qzThVplLoF36zCdymAuPETXVp5ncVF\ny4CDLT2K37DRZHqOpKjowyDIGMCnujaVkgpB9XyVFBP+SWz0wZSbJJKz6xS4\nr0s2HO8G9PFExG+j9Kjw8d8qJ7v9dDZw7AOoc/BY06qhtmvGO9La59glefZZ\noyw6iTej2+JWdqQJ6TM5SFFAJiqWV8FkXUmaF9oda5MqfuMnFrzep8wcvnfW\nalaCudidu0iCz5MR8ZmFab50iZiSbgwd774t1GpOSQeRV9sq5jv4Ygl6MUIq\nbKmrDUUl+etsUD3tOjn4LVacnIAa8C2g4P5is0fVXb2Hfeufkc4wMdgTP8O4\nL5MoHGZYz48LUYoLVrEO/qmk7UI9WYZvfU3DZAh8glEY6qNXrFP5DgsyvEsc\nmWLYRrIk0YFDAGYZfkajmmz51Z6QmyF/7+ESquhnyZ/NGioEGOrz4w+ELcV7\nUVI5\r\n=qa1s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYnEdUaIXXITEQCuBxsaJhn/ZcXn5dZFDEkXNcNHNF4AIhAMbFNj22LNtZPYfSCf1xVaAMWy5jHHRmm6QohlJf16YJ"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.7-canary.3_1561299545961_0.6698031334627559"},"_hasShrinkwrap":false},"7.1.9-canary.17":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.9-canary.17","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engines":{"node":">=10.0.0"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"8d4b021f26b9cf92a37a12fc829baed695734004","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.9-canary.17","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-SiVhfnvHpSv5kmXGctHAIAeieFNJKUslQoyO8j/NrSpRhsTbg9397AS64oykB1QDv83j5/ulwc6OY0ajZ4mrwQ==","shasum":"faf9a3de2ff11d570b9b437310fdddbcb9621635","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.9-canary.17.tgz","fileCount":108,"unpackedSize":145136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFHoGCRA9TVsSAnZWagAAt/gP/0j8vSBc7/0n6vb8kp2Q\nRnRJWz+t3uTra7FGQoQxNZ1qmARxlluYrwJOgnDsahTLX4MHJbWphlcZ8DSS\nlgs7sZmklhpmopS/35S4JrymjtHtHyFw4lq86sfwh+8nO5YPWDumPEI+Y78x\n4ZKHwEaqgE33fUY1eQ4klq5HZCp4zCd8U/PUPxKUCmMEFC/EkK/S4t2UKEBR\n5dTr/9UOq5Qc92b8uo1g8quBskPv187y7Gf4+ouLTNkJ7FUvpcdn431MS1WK\np63zt6HKFiR9lfvoxwv4D32OF2XL27x0FBxxPMy5M5UUavut85xHPCzPFX2r\nPrDS53duiBVsUTuV0pltMh05jcCAZIAP+iUYZ0PqWODAfrK5CcYl3+oaOMnn\nfb0gQ+5IXD36+1bldC4Sc90GbWqR4iQCS1fVWMlFykQ0xJfIJf3wXusaAXAX\nCKSwcxaG7KkVxMHv5G3OufbGpPKwVIwAp4NsbvEoOgeuZEiY8eXP0mvlzkZC\nNKqsysWzVNkB423EtUd4n4Fcf62hEMn2JUdGXFnDVdKt1xkVxRQPZmSRCdWD\n46otaEA1dKzUV8yD+7WyBsKIfed1QZHM0IdmLYWUxPtcf3FjamEH3g6AcHVY\n08rvy7ovaPNEu3bN8rmMm/yA7m+W4lkoKhpSo2XHMBDRvaRm05YzNclVGmHz\ndG3v\r\n=SBGb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHmpaOTjBdlQ+rLX8G3K4rSDcLqMp0a9qt5AcgPLGoU1AiEAsRP8xAuxlHPWezClGhjn17nBvhRnzNi7++vFLzRsiQg="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.9-canary.17_1561623045676_0.866129615025071"},"_hasShrinkwrap":false},"7.1.9-canary.16":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.9-canary.16","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"7eee535d8d63af372d1b1544800e1501654c9d92","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.9-canary.16","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-J4K1vz8bPTJBwM+Yptk2O3BHBKmnoVNn+DhnU3Y8zYJd1pthbS6Oj+dOLi/bYm12wWAWrTnvcqF3lQfOVWuYBg==","shasum":"ed5d677ac05f40bd81990061b98c84e8b538c7d8","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.9-canary.16.tgz","fileCount":108,"unpackedSize":145184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFH8jCRA9TVsSAnZWagAAJIAP/3+3C2zH0rTYKu3k3dMY\n7k0BnEVG+ZwR3ZZhmjPc0o64xKiQkO2ULczDcPrGfifsn3xe5hHd24B0pK6k\nu6GskvB+uSarqwyFya9C371x6eXn9glptvqf51AGCRIaXBirfuI6fOqOFRae\nY/x+bDJFF9+zNyfhINoZQr7oZf1CMNi0FpH8iDS9mSXu1cUKuwk1lwrPKDRj\nyFubgboJ8OROQbnFZLDNuB1vwNh5dPO0GmyLP2TlJK0gp5exeIWEyPff7VMh\nxeNmrE2FeNE+PbU1xxicWCNfehUFpIiPLwo6B63XP82qMf0LZGkN1dF4KVdH\nsa5w1LozZdmRa4nrmhzRsyrCrmD/Ul8pZd6HuITHI49wrOgGRrDN6pJ2cI44\ngT2OxVfEq+KgWbW7ywGhFfC3+v06T1CrugscUV47R/kDU1TGd5/Aq05wokVu\nXkNzlTd/anRx0gg85KseOOIgwxOcszQbTGTGwpv6yayJp6KdpCYF6Bf9wAYk\nnx++k8AcDINAs+8qmwoWBtihy3VxU5H5YMr+cNie54/PzCw9NM0cM+KgfZFv\nFpazOMGr8WHzChjy7wXBskd+OHiJdut6ptbZn0zHQILTnnnUDbRx322o917i\nd5XQSQ23eM4pLYv/lKbUb/Pw1sY2jeST5oTIkjC+bN8Rba+zgPfriOHrXaJX\nWVkO\r\n=P30U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH0UcXNVXPI0kY/9oCdkje7A45BxbXZ7PHS7FDKR/f7FAiEAi7+phZPII3YtMMT1PY0Sca7Wlf2YopGUIvG3a0EcutM="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.9-canary.16_1561624355005_0.22686163737923337"},"_hasShrinkwrap":false},"7.1.9":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.9","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"b1977e4290ac36245b7441dbb1f103112cc334c1","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.9","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-eXwCq/nMlwxJe+WufcYY49nPIEoSc06Xxo+s+eXGD1sFoskqwP0sfe1elz00iwIMwt9wQ7aYH+TW5jXV0NWGGQ==","shasum":"2f8ebae634a1a57f1b1b69390a78051a680a6d39","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.9.tgz","fileCount":108,"unpackedSize":145408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFIAgCRA9TVsSAnZWagAAiAsP/RXoRPfAGRkAuxP2d04+\nxkBUQ3dZ/MLkNl1NHNrTKKHf1BZpXcDr9rWB9ZCpDXy/MeOwlsyWrpRs4ogb\naOtUF8XwMxtbjx6cTfLDlHIHRI3in8qlDrxUCcp6fA1YHh+q8P0ZDJ+DPrKx\nDCZljuG6zO39BLmd9o9mSFUJSq1k289sd9pIl9V1bBcjSFxKCh3cfZvKkV6m\nyPp7MMo1dkrnD3dg/K9COW6Ss/c5VEV9uYuB1kzGcDOrIbORYoAHwdfmmNSd\nXESl+L6YD6uI/2XEN9LHXD8mejjfA+GhwXFlajwP/MQccQytzVBBUxhUN3mR\nOZqBKBU3WNiNDme7zOJlhBsveKzM6TZEMA5YN5ctlVBHDmMI4nuUEsE2GVhE\n/zYWiVMHnwLTLgy+XPD7/0cJEeHpuLE9o9LvLUjXTByDojEEHtUwT+cMOzqz\npE14IkFQNBnyOFlg6B69ZN59UBfkJPQL67hL2K8ullZzmmlFmNNtpCtXeED5\nka9OmlHyXm4pcQo3+NDKRC3ruhCzwolrK4i7nKEK+7m4uaeRHZtL/w7GZL9V\n0A0hJjRbuY3/b2uT5jE78dmkjaQkqSRB4HGAABG89sn2PmhRBjZ2GofnMAVY\n+F6eNrTeKbYeC+o0dtNpG5EEkjHmcsc2jI7JaaXuyNfCtSTkHZhHoJAyRTDk\nPQEV\r\n=YutC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8saFSmfKCcEtSEbcd9Ox0bQH1+1iN6B2gm4xXQS+zDwIgRmcLLH+TdLjYwMDpEMWzR7RLxZEEehhLJR4yIoNTaFI="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.9_1561624608231_0.0869855503580228"},"_hasShrinkwrap":false},"7.1.10":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.10","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"*","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"da201f5dd8ba6c9ad46742e0add6f6360cc0567a","_id":"@nofrills/tasks@7.1.10","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-npczsy21US7Dd+brLqR/jxwexYQFUaF/sofWxqbeLxxHItl9sKuMHX5gaO+SmuMVb8M+tPYOPWkulYtgzrm85A==","shasum":"8a2071be67e16686571fc47449f99860edd16bbf","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.10.tgz","fileCount":108,"unpackedSize":145596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFIEFCRA9TVsSAnZWagAASDEQAJN+s1KuyIZz7eumUtQV\nWJ1WVGZpmUsGArCyEvH9rgZ6xKesYwf8/pUCo3twWxx+FCT+0uRUzVxhSeqg\nF5BIWQJ8IP2L9WFQnHTKDJM3Vwmc5h+5HtnsUpyZ+V1RnshsKjdSTzPIkdtX\nAIguzJ6AgqZNdSPxyobdBUWtBd5wpc5Qc7UJqgIaB+yTtMTJKzV/q+bF4lTS\nux7gCOc4VErIkJF/GW3qTcSNZWA+mL/25PeMhWGKQ29Av9lYQUPGCueqypKm\nYZeqO6iGcc5amzjTpIXkMgMPfKTL1UflWQ9h9lGRWFEORvtj3mqhpEbh3ZSN\n4d4IX4J/g2iSIgnWf1fpQ2YzI50ingdmzAF13c1W9i0hNpkkiCeGAewNam6t\nsmxJhYZnbI/1HPyq7PY8xRh2rZtvGOM/X12tzx6JtE4SPVmqsh0S01nDepSk\nOJw9QhJGTR03WsUp66E0KYGRW98++OY4ylWXwBMzZD3j1V4aadzCFA8kAZst\nubZENedk/WXhNqe8rW+8VrqE/ayBpyXW3Mu1UXOzl8L7DUwXjgdU3/4L6ER3\nfRcpGLNWk+Mj5NevTS2FW5j97pDvADEq05Kg9wtIu9OSwpXXzqVeJFOQfGv3\nVbSQ54F20vEKd6Yju8GmKE5Jm38LMCbfdYajG06FvroSiMwIynl/qIMB85W1\n4l9Y\r\n=kBXt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID7rn8T41zEEwFBKEhT7yQkpLdQpM8Rm1+EoJPTxf5EIAiEA1iWWm8XNMD7rmyoRhPuk5FSzTNDe1/6J9BOnCYNmWvk="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.10_1561624836744_0.09784919063583097"},"_hasShrinkwrap":false},"7.1.10-canary.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.10-canary.2","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"^8.10.49","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"d65a28b38e9eef895082abd2d8ebf6789fd79c52","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.10-canary.2","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-D+dzLHwmqUP6VW0bJZDCuuMDSa8mZcP1021VqX7H74ra25+ImAb5yIcqv2l916PKl4RAVJysuCiVeAp1Jg9osw==","shasum":"cd3d864054e9e3f88832139281a8bcf30a776b7c","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.10-canary.2.tgz","fileCount":108,"unpackedSize":145433,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFIzFCRA9TVsSAnZWagAAKeIP/2FyPIexAWczM8sunzRB\npITi33bz/+3zdM97zwcAWmLFEwq3h/hwiM0uzfV3/A21sP+7R3q7RDASGX7a\nMtw1XzMKA6vfHR04nwLXl4+t6hlmbcRYbRNHcJmfPlex9gRXAlky252qO/CO\nFjRy5+ucfSF/Pak3Kzp73sLEZ5n5h8MOITjo1dKJcjlOJ0qYgQUtela1qjOY\nmDTmEEullT/cjwdtR4LBGvpG13TUH57vNVDHBewhl/FLai61OceevPJJuxR5\n7Bivrt4tY2vIbh1JoeETMPsu0hGdCPTr5P9AAX123sm6eiaBXybZs319Bqxa\nxkq69rYxQm/KuW7HnvVzD4aCOzXaoE80gjlJ+yWkh0NscW9gt8XaEkLI1Q5E\nYgRl+hYbF5y5x0ld4YY8ovIcPFCgfRbGUFfceuHmTN112XAdIt6FRWDRHLFd\nV19MKEIKwY5HRafavdhiozJZ1Zgk3EADSn7hZ6WdmsMQG0WXCDYatr+AwR3b\nC/z3BaEzGJx3DLWqMK5jO6D26CE5mr+u1ozUG0yHAxQeCC799AEs/TFrdt2b\n2uk33wmpXruGYSfvcOt7ba2oWp0cmBTapFcPZ/fKdGaoDToG68Q6mnKCD3k+\nN5di9bqi0PNtpVYJ+jja7fLzhtjIPeyLXwh4pGv4Ks5wRcWu+5K3mt+yS/2h\n4jLY\r\n=j6yf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbuuXktRzmEPGedcDl5c11ZWYSHmZdAF15cXjs58RnnwIgId1dUbUxKt88W7WzCks6trFuR/e/aShSg8lccoNpdiE="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.10-canary.2_1561627843285_0.3230270702428435"},"_hasShrinkwrap":false},"7.1.11":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.11","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"^8.10.49","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"e88cc322b89f7a489721376a44cddc250900123e","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.11","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-BFiE9EzIimOmk51GZe4mP5MGr8N0L4WuXgcHrVFMjgC7YYWWSQX14IH8K9arH8mJzMw3SL6mWMidMkCsXE1w9Q==","shasum":"bbc444c9638a0f943d7195b9f179671dc5ae3c68","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.11.tgz","fileCount":108,"unpackedSize":145790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFI+FCRA9TVsSAnZWagAAG70P/izyPkeFRULDaE2ZfbyH\nW+tN+yk+0CvJOvlGNWZo9KQ6WCYpafnMzjq07hmlO0p1tfaKHgHpiu487gve\nNZxF0VKxoqHSolrdw0a469jzN7SM/2yZVgR5aInndZIayPuLPcVBrLrWcniM\n+ZAjbj0MasCorRQ4hs4Y1RyP6xTxmfSOleDcliS37LVlIPmjo7S+WoAFndcP\n/X/Go3jgOIV4PvWnQC4YIp9sfsgckVXtuD03jJ12KdR02FfMHQ68PuUOu0Qo\nZ/FBHuTilEewtWoCcCa/brF+JDteYKmkYoJAIl36MjqPZTi7yRomz9MbkiNX\nK3MpOqJw0vXKHRm4MvG0daLEoERfFNVBv3q/5afvLxGo2EbMblTOibZ3IX05\nCGJMN9rkGgJUoD/p/9Tzyfypjh5+N9pWRmQFa7basliq6L4oTHrUTxXqpzjw\nh0qtkHtyq6L2YB3UJ1eW4P+h+v7P3vv8WC14D2Th2KEfHuZYKltGhtlh7U7u\noib/G3d7YiTznw++5mB7npD6NDmEtlePTe+lnOiRF/qC8/UvgQcNQGlkkBCC\nmQqmOU3awREbhJNoZ0R/wThvbyUsH4st4kGi9EB641meRP8jbzhODs8IkDfj\nR6b8HHyCppioM6Iuyhdip64VYVcxLJJ5bU/0i+bKqLtyqfzfAfwrRdqUkLuc\nW9hH\r\n=vYsj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3jVLYf5FJ0kba/Q3B5jq69yl5FrZTVglgpql5RH2xegIhAOmWCySS9ZtvYF9SK/ttcdwAjZSoPaZkBOvsd10UD/5e"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.11_1561628549420_0.05399415773509153"},"_hasShrinkwrap":false},"7.1.12":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.12","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"^8.10.49","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"b073ed57e2a153e553c7f5202aaea834ef63feb9","_id":"@nofrills/tasks@7.1.12","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-gX4EPZtjSiUBumByrY4FRAxMzKWeVcpZZCY7d38cGzj7etirBUbZIlOyGoltiKKtk4o8cfLNRFZ1a0b8VgXtcw==","shasum":"c34415258a99e03ed4b2fd309f5bd0e06f32aa8b","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.12.tgz","fileCount":108,"unpackedSize":145977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFJA6CRA9TVsSAnZWagAAUdQQAIbwQTT6fDxwBYdY2VGP\nXhtMCwW3WewyFyyrdnnH4GgzZljssVmkr3o0tKiP0EtZY6MR8SGEXxuJ0IFx\nwbocLQI6nHmZyjHxhoaWGDcvCqq2JaKm8EOcDL3UqLAki3xSRg14vxHsGa1l\nE6qMaO8W6ixdIGX3IzeLNnP9vX6c0mC+8ys61/mLvCSP6VXujWZlcgyW7jTl\nfyH/3IF/kJTzwA15e7/3YII7IbhQqb3qzHSViX4QTTel+f8ycp4p+4UP019V\nIvzoff/H8G+dC6BtZnfUw4eRQI+n/5wJGk3Tza2vUxJmBcIoo1eBHk4mhd4q\n28TfeBQASVkmu2d7lft8zhezq8AfvdVEjBUDQjk0hlwqYQITRkROSR/fjM0P\nO4jli4CfXG+E9lky9CSqRW26cNt7v0Xw0BDvakqrs87yDKJyjzlF05fDpKNA\nWctDGoIkzscZ5yAqkI4UkN9wy/RJiZnnH1I2nJeWINAAnTVRUJsHw5nOAc3F\nIYB2WGCs8K60+peOUJdMcNbVGb9A+lGyO/lzlImQO2TfStMDzg2eYAHjpqQC\ndiXe3x8KtxPa1i22gpA89O1ukARp8FtuHH97zrqBgKkDYsjI8MXg8jkWuD/W\ny9Gju4myWfDcvZK4fGvL055BwqHLI/R0XyKRhOVJpBtD/saI4h9v0pTW5xH3\nN+PG\r\n=40jW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9PMCQMenLuuqSrF9sMyhRYk5Srx3pw4iSqGCKuRJX9wIgYv0DqLqA8c74XyMCiINogGtVfjVHw8FidHwiIK2go3s="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.12_1561628729604_0.5698931398329965"},"_hasShrinkwrap":false},"7.1.13":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.13","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"^8.10.49","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"c919ec9ef277df313e804954b41931f4da87efa5","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.13","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-76N3is/jlc2ki3k4ryJmQ1bkS5YTrxM5Y7qn0P8LZnXSX+jhMkDppi7M2KK98PATjv1Bbu2DYFQ0GhQm0jGJYw==","shasum":"74c180c5fa126f290f4ef8067b127591da3f01d0","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.13.tgz","fileCount":108,"unpackedSize":146165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFJC8CRA9TVsSAnZWagAAzZsP/3Yiq+ZH8EEUecFPN2YD\nvYzMZfaDYhO53hLNPYaaffNoabRShAG+MFKtK/8m0mOan1rII4hOa2MRNUN4\njxTVedW1CBl/hDwSGS+5ufGd4DBR3LBI3QuVYi/Dzhi7EF6V8l09uIqay/T2\nHcb2ZlTlz+/ijAsaJlN+qkeCdwchZWEK22TvVAjRz473h0nJ7y7EENYFCQcS\nIgIhZTHiyPkJ8jFnRhbAcB84uOv/2H0IAqf6FNKZJlqObP8NxLuhvxagmAcY\nfpdksEeBF43GDWI7P71HpdTLXqN4QoNSQwfvDlLl8mQVi2LEsN6fqbtRwtMo\nUwI6IHoFO0s03321tFI6DlYN05g5Jj+sBtmrExQ+gljFizOSI/B/vJI4qOSd\ngVtN5ssDyiXG4KmlQkGkPwmFzSMeuw2UtH7dDOdpVgR9Zbvvt1nIOGBOHcXv\nZOkjXthFEol81r9MnsDsZEMzfGizlRuBAfRQXmaIPTu3UznczpEh57p7YZT/\nlI3tfRejewoCx+K/r2SMQj2cTWZNNO2WUwP78MkkpGkpRPknsjpZiC7tpFR+\nGSm0iUzLFIfhv2p1KTS2+fVzZ4k5fjJkiZKQGZtjojEfahZfbMTztzYZRRNM\nQ6C97I7fIp72kd22FDt8VfryeOgLGBPWXgcZMWmiugEcJgOKC27DPOwBSHQo\n/v+k\r\n=NrRV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8FPY4pVdTHejkdRMgwm5ZyZxgqejDs0Dc2kVzZioZSgIhANA7sCsAjX3lr5XSS68NF90kI8iP9yC5BbQpfUqAiEpA"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.13_1561628859547_0.6720925259928414"},"_hasShrinkwrap":false},"7.1.9-canary.18":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.9-canary.18","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^4.0.1","@nofrills/fs":"^4.0.1","@nofrills/lincoln":"^4.0.1","@nofrills/lincoln-debug":"^4.0.1","@nofrills/patterns":"^2.0.1","@nofrills/scrubs":"^4.0.1","@nofrills/types":"^4.0.1","deepmerge":"^3.2.1","execa":"^1.0.0","get-stream":"^5.1.0","yargs":"^13.2.4","yargs-interactive":"^2.1.0"},"devDependencies":{"@types/execa":"^0.9.0","@types/node":"^8.10.49","@types/yargs":"^13.0.0","@types/yargs-interactive":"^2.0.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"5fc0c3799347066da6ea90cd41a8d8c0355a3194","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.9-canary.18","_nodeVersion":"12.4.0","_npmVersion":"lerna/3.15.0/node@v12.4.0+x64 (linux)","dist":{"integrity":"sha512-AEmZzPxfL5sKoce4OXLOQWY3/SmZG3QQz/ezhM4bLCYHM5n+qUvA/S/AwEwjZAcCLKq8KHBYQr0CEPLBvnT5UQ==","shasum":"9444124469e715ee3077b1bf551fc21e0e24274b","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.9-canary.18.tgz","fileCount":108,"unpackedSize":146182,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFWNkCRA9TVsSAnZWagAATwMP/2gKBDkgmz/jOS/hHNFS\nKqpFoBRtIHQB8TwvWivWyt6sQAA6nh7y5Fbsy233SMhQF5SHVfEBpwqouGiI\nPdeyeeoXuNjqbr9o/TJrp/9arbIR6hE5Cmc8fQfx4fMchLHLpNWQd58wxa6L\ns0kgxIQZmJj2/MkESdiXb9oaT6AT3ACplGbNyMLQ7TGthd2b9H0rEw5xXMB3\nyL8CDp/dxaODdRWqvjUnZb8sRVRQYDRTo+TUfuHK+QNZ+n1N7/ing6PSWy02\nk2676sUwGa85+uqlJntAuc60IJZYP6UZbS9yMRE3eu1G3WtE/BAFSuYtb6kX\nRJ237ObjM3uS6IoLLGdJcav4QJjKslUpguI76zpqOsP1bPfghmZoubnqk4iX\n/NYfmNiQoEvfKCJgL4B47ljO6BldljihoCFRiym9GiOvGkSybbuyC0d9pHOh\nWc1cGQje8GrPrhRN/oq7lScFJ9sAZc9QliYh2YMAypeePAiqJJaNS92bjwnx\n00q9TBgciM3xSXTrUVmjZyb+IbrgfxXA6p7Df6GwjA2zEUCl1rr1aNbBh7TC\nYsHJWaUvr1SR2xwWnF7EBkZ6FYCNDKXTFraksMPRE2Lpq6/R7V6OoGnYk8Ve\n3OZBdrEMgigSXpQBN+m5BLin2Wcvim9ydxTMEQeniYs06F6tTFsAT1J4MhBf\nchYn\r\n=xYVk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/KOextnkRJvmpInuuXxeMXUl0Nre3PpzbitygYg9RlgIhAIkUJqBLy5DO4wTDjUJIE0k0W08ZW5rIJ1TaSx2xXE3U"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.9-canary.18_1561682787779_0.6279066619714444"},"_hasShrinkwrap":false},"7.1.14-canary.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.14-canary.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^5.0.1","@nofrills/fs":"^6.0.1","@nofrills/lincoln":"^5.0.1","@nofrills/lincoln-debug":"^5.0.1","@nofrills/patterns":"^2.1.1","@nofrills/scrubs":"^6.0.1","@nofrills/types":"^5.0.1","deepmerge":"^4.0.0","execa":"^2.0.4","get-stream":"^5.1.0","yargs":"^14.0.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/execa":"^2.0.0","@types/node":"^12.7.3","@types/yargs":"^13.0.2","@types/yargs-interactive":"^2.1.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"8f37cc0fddf97829bcdfe3d7a3e6a6987229d68a","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.14-canary.1","_nodeVersion":"12.9.1","_npmVersion":"lerna/3.16.4/node@v12.9.1+x64 (linux)","dist":{"integrity":"sha512-weCTYGB+v//DU5GjLeJlNkwKx8J5828XhXSN9Xg/yZSWibJUj7HaPD6LOK1uajAPz+Kj2/PnFTgCJu2WXpmkuA==","shasum":"49ae474500856d5eb669701442cac82cabf9e52d","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.14-canary.1.tgz","fileCount":108,"unpackedSize":148395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbALzCRA9TVsSAnZWagAAya8P/j0pZVLwZ4AZJ0/bp4x4\ntNv0G/tx0kDA3E8iJEwrQpGwOipUMQLHxkhSC451dWzfUKO3Fdre8XZEl4wl\nZV4jc/XXyENLrgq0M2pMuwsxzSPBfRou4/nRyJERNcoVRmXR+maVT7r+STpf\nUEp8Ns6fVd/NgI90HuoahG6eb+K0ZY8zBDj0iIsA0b6egK1FgDvr/glipovy\neU5fXM/mxMfL4kY3S0wPbdeBRlIfWRWdmu2F2BYqmzbdGgMOgpdhUzci/1nt\n2xiQ1hmbd3q5ubxl6mptNY2yds1PXq+6nokQ6C1u/rgYqrLCXRPpv/gy6t/R\nzTegI+QsP9BvQrduK1FLoe2L5yRXrMhDw5wmlKMbTlbSf93USlQKBUGiN1gq\nBOOYfwaycA9Qv8i495szmPVr9HeHM/St/y7oK+umjOSgInqGn/bYZ/RFzFtN\n8k0Y0Y+BRSHma2dWAqkD92yXFF4cdEmsZZ0wn/JMhZQ5kWqM742Qlt4d8EPk\n7j7INP6Zwtfl7x2qdMrUkonPiY+Y4x6szTaceyYQwnL8ggQXYTg2dTkyeg5T\n1kcQFqdDggEfWVI2vl6X6ZjGyoShEp6UY1BiPtayf8bYdbjXTKKA8WzyfcpN\nPoQVC61Yyu6syTLxprygiRFQeJwH8fGZPTDBLEBhazX4ObY+L3hij+n3OwIx\nJ+uV\r\n=jgfF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCh+VcNAuUORZrZPyLgw+PuDnyw8mkp9P36E+O1sWICtQIgT/En9F11FE9T+A9ZFmjpR+PLjAGfYgCwi6UBMIkxj64="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.14-canary.1_1567359730467_0.9319183496386578"},"_hasShrinkwrap":false},"7.1.14-canary.5":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"7.1.14-canary.5","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^5.0.1","@nofrills/fs":"^6.0.1","@nofrills/lincoln":"^5.0.1","@nofrills/lincoln-debug":"^5.0.1","@nofrills/patterns":"^2.1.1","@nofrills/scrubs":"^6.0.1","@nofrills/types":"^5.0.1","deepmerge":"^4.0.0","execa":"^2.0.4","get-stream":"^5.1.0","yargs":"^14.0.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/execa":"^2.0.0","@types/node":"^12.7.3","@types/yargs":"^13.0.2","@types/yargs-interactive":"^2.1.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"f7e04be1e8e37c911a7a49c0432879119752cde0","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@7.1.14-canary.5","_nodeVersion":"12.9.1","_npmVersion":"lerna/3.16.4/node@v12.9.1+x64 (linux)","dist":{"integrity":"sha512-x28Qs67IaF7ouq0Gfu7r8xMdGx9K5FhxDbkicT67SNHqXKjk2ZTq6fk5oNg6fgPJ+Wlc9AH/oZlnQCIakl9LtQ==","shasum":"66f6f85e9762898b100e54b086093edfba65b29b","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-7.1.14-canary.5.tgz","fileCount":108,"unpackedSize":114548,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbA/HCRA9TVsSAnZWagAADuAQAJmvdtfbn90A0KNPypz2\nUErRb3lGg2QEh16AZ9nskteTFLTuDG7G7OxyKIEPAeFloGJWwE8Z0mPfRfms\niCQK/EghoZMKXwbIM8DGpy3OOL6JJ+rWQEFnk6H6P73dl8tWUNOY/LvEODV5\nVx07YHxXBPielpC9jWwk8EW4kF4UKsvRsr7HRp6SLmg9zd2Li8G1BFBUWCPk\nsoknFsRxU97KBbUc3cdX1dvnliGpatNG0mkJhTTSuQWT1uQwUw7F3LbmzZZr\nPesDzz78IIeX1Slq2T3sJLmR1AMtxC4TooBqbyae5se/m8okytrDFMJaSUOB\nH/tI0N3Nlg+LKVgisRIfr04kzX5wnCRSNdW/TqGiM/3BwoBbFU+ROIkX7AWo\nL+SUhe8RVyw9woN0hKoCSMQTGZwC6lOhm+b/TVVAD+9nXHz0m6t/274Mq8Mh\n3gESc6HEroKjD+BMCQLo/LRe7LkLErshOBC9xKGLT/UEk3dByxWX75n38gR5\nnhtUw5g5PCKzn9ize7F+AhyF7AFqIE/WeOSa3cM2eQX7SGmsQ0FCTmwuzsV8\nHasHzXcUVhnOd9IsmTaAdslV8JrPrW54v6EHcAl26utvYYbn1Y/f0Gxtji3G\nkpVHiIIrZZLaASO2XK6O5vdFDQhDbZ/1/xSI1yVnteL0QfnQPH6Y4VD35B+Q\nvFab\r\n=4s7K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICRYtqyibFgcfaM1jR7AUvhFgl6FzoBUjV9QyHXZsRLAAiBKsGVMinwKBEDnlgrof+gMVCU5AvMEAeqW8M7z1QfczQ=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_7.1.14-canary.5_1567363014636_0.9721557248773869"},"_hasShrinkwrap":false},"8.0.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"8.0.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^5.0.1","@nofrills/fs":"^6.0.1","@nofrills/lincoln":"^5.0.1","@nofrills/lincoln-debug":"^5.0.1","@nofrills/patterns":"^2.1.1","@nofrills/scrubs":"^6.0.1","@nofrills/types":"^5.0.1","deepmerge":"^4.0.0","execa":"^2.0.4","get-stream":"^5.1.0","yargs":"^14.0.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/execa":"^2.0.0","@types/node":"^12.7.3","@types/yargs":"^13.0.2","@types/yargs-interactive":"^2.1.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"de67ea45f3532a122f13ea28aafb7d45cb616b2e","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@8.0.0","_nodeVersion":"12.9.1","_npmVersion":"lerna/3.16.4/node@v12.9.1+x64 (linux)","dist":{"integrity":"sha512-dcqtTOcF1e9P3NqbmxlQPOiDA2jxbwACdYomVgDR3sM57tZzsnUDRlZqGy8yiIi3VZJhlGr+DT4sQLxhESofCw==","shasum":"279244bee442e62d03fdcb2b2715bd9f3a2b8d6a","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-8.0.0.tgz","fileCount":108,"unpackedSize":115211,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbBBxCRA9TVsSAnZWagAAhl4QAKUmW5KBM1zHAWI2yWgE\nmCqHXLJTrAMhseDNGoLjg1hk4TS7CjvHMjqMnqS6Mc0a96W4pV4990gso1M8\n0l4S1EeGGpik1xBUXl3qFEzAT7DCxYQEoBrOMuP6ko50VkTVFmYG02vA4wpG\nl6BWWI92s4bjgxwy8dYIiT+R9UGENC1aGiziCmMvU7pL47EvglMnpCl5suYk\nLheGyO+0wCyZZ+YDxaWLZEjpJdIFdqzw3SuPuNVJ7omLS64R1JPyni7erx7R\nrV5qaU1rsNok5YrrVKw4gEWlZlky65OBmExubb9y+p04oiso2zvygVkZRCvI\n4q/X2JCCHKZIZQCpuk/saB0a0ArWO0F9csdM8H81ZM4YlyNrljkHujZr+Jtg\nhXZErnlAaCTsE+qRcpo8asODJnEMfYRGn5lW0r3hSKidXuOjeuk0qNKFM5MD\nbuKTwGnm1umcJbM/uTQk9HB0u0o96Z3t0X8Jn9WvwEWREJGWIWOygaZD6DSN\nqREbPiAj6+Y3BWcQEiJmgOtI7NQkuUmJYQxcF0f+NTnxkeBRCpMyAfm553Hm\njrWU1IERPNInAokw6zwCtqz2NaT65m8HrvifRHnoOtG6s634KwM1aw/RXJ2A\nxGOc3t12ihpSxBcpCZCHdgChalXZ82zGYWZWNnNvHlqtUH3F75b0Gju9BzoQ\nBe9M\r\n=7tM+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICsdC3Mo6Si1pHqvqFT4yDOQtLsvznHboZoSKB7zUQv2AiEAlXl0RS03jI92XPcc4LyTRusPx0tbhQjQrSkQDu7ZXGY="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_8.0.0_1567363184752_0.2056205865378704"},"_hasShrinkwrap":false},"8.0.1-canary.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"8.0.1-canary.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^5.0.1","@nofrills/fs":"^6.0.1","@nofrills/lincoln":"^5.0.1","@nofrills/lincoln-debug":"^5.0.1","@nofrills/patterns":"^2.1.1","@nofrills/scrubs":"^6.0.1","@nofrills/types":"^5.0.1","deepmerge":"^4.0.0","execa":"^2.0.4","get-stream":"^5.1.0","yargs":"^14.0.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/execa":"^2.0.0","@types/node":"^12.7.3","@types/yargs":"^13.0.2","@types/yargs-interactive":"^2.1.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"ea6667d3fb3735aa2c55b308bae4b621148240c4","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@8.0.1-canary.0","_nodeVersion":"12.9.1","_npmVersion":"lerna/3.16.4/node@v12.9.1+x64 (linux)","dist":{"integrity":"sha512-YXqkhmRXPH2mwmPCD8KjpIQX1BXALPT6g+La/bIjDn84Qpl4h0gWspN/fJL9SW5cbiOZqn1F2AABD2IETO7ylA==","shasum":"67a5ace6854d442479bd443d7de1fdce277f5e38","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-8.0.1-canary.0.tgz","fileCount":108,"unpackedSize":109458,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbBf+CRA9TVsSAnZWagAAA9wQAI3ICWlGuIKZEoo06RFb\nJ6G3E3vDY5U9+MY8M3gQuFoKO2sSRcEX6eOGYRcggiEoNROxGymjhuRmZW7y\nKVL3k7ivKGVL4OTOjhGFTswdSG7yjoJDRh3c4qMoLcuMCl9hLBeTrS3TGTrn\nNIM329j81767Dw4fukaCL+GgQQloiRZsHbxgCyV1dA/mctPoaL8AUj+0ER9P\nwnBsQXmggHmHgHpGIR6uhzCeD3uxp7U8HuHC9HAmSThdzAFojsNawOfcLrjl\nqSMg8lxuGDCC0gPEWG2LQuhvxzwYDzDZrNKUSV0Nr0wUl6BlRDcEHo5+oxOb\nyN0MIBvS9e5K4IKTdQGpsI0prwzcX4aGUWQmjR3RTncFoaTfaJcqFtKGvNop\nVv3iuvat4FFrmgPesE1wS0PvzY/ZcCvn7lliuFEwGhGFYPnmI/VfxPfYmYSL\nOYj82G8W2JJ4wdFQczMOOvgRr2r3xCnMOmah8d4GUtk202Jybm9cXQOVeAFB\nPuPtXZeERB4fxcyO2BR2xv82iYr5xWs19t5PwMma+F4GUqGQZgY32SpkA2Kh\n6pUZXRQ9YLzctB5VX/M/DIFKqJwRg86MPRpllEA/g7UkNyqvRjpAtYzV4Y8L\n+jziE5TgzmSu0Ukh3TcUOuM0eLkC/plAD8hWxZSe5xr8fi38SyS+vYWWXHVh\nmTDC\r\n=Z4sX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWe+eHp7p2fCqW60Oj0c7y9BS22ywW5Y+l5iv2us7xhwIhAIDiNcR5PUlyM7ZdTxi8cXXqsTA5XLzZEEABvLlMkYQi"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_8.0.1-canary.0_1567365117470_0.6423755017408854"},"_hasShrinkwrap":false},"9.0.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"9.0.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^5.0.1","@nofrills/fs":"^6.0.1","@nofrills/lincoln":"^5.0.1","@nofrills/lincoln-debug":"^5.0.1","@nofrills/patterns":"^2.1.1","@nofrills/scrubs":"^6.0.1","@nofrills/types":"^5.0.1","deepmerge":"^4.0.0","execa":"^2.0.4","get-stream":"^5.1.0","yargs":"^14.0.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/execa":"^2.0.0","@types/node":"^12.7.3","@types/yargs":"^13.0.2","@types/yargs-interactive":"^2.1.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"0f5424b135c26f5c1e3d68fa74624e91809cff10","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@9.0.0","_nodeVersion":"12.9.1","_npmVersion":"lerna/3.16.4/node@v12.9.1+x64 (linux)","dist":{"integrity":"sha512-2UlQ7L5ZXgQxRqRPHf0tRfR9zHsIDulfTi6fnVCyC6hK2Tu+yl10bF74qZTmMrNMFIydMZgPEr5SNdoWb2mqbA==","shasum":"d5b59945c675976f5a3d9f10a4414046bdadf530","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-9.0.0.tgz","fileCount":108,"unpackedSize":109766,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbBiECRA9TVsSAnZWagAA/K8P/2CHUHnPBVJQYL8SV1GV\nxdsSAXFDziYLHsSi/YphANQXQvJZrkyHV97Gyu6S+u7axWO4pxEVh1iS6Upu\npOs0NGVX5J81+sQ2KbLGRkMtyQNP31d6iZABPcS/MABenxJDRzI8q9KrQbCu\n72YHhf0roqe63wEg2wCilKy/gWIYqqOZSGSkKHbstv2k2ncNUY7Q/QWBcClv\nNaNsX7CQKeA1LQ1ZWrf0GsOA3kVkF/0bhdn834kFkPqaXR+GOfZ5F2iGJ9r3\nWsg/etUdRVUKA7eA8X9K11qZnqJMFbUsS3Fa2D7SixekGrjnWTK5ZWZDZ8dP\nwape7PvfCm+6kxL7CkWJEKEXx8EOVSvUKBo8UJobSA6sAehAzRjh+HWou9wa\nXT7c1zsHvqwDJBSDqgkpcnnqOY5Yxz5h32T/h8T4/K8n0kDHYV98O2bMLe6F\nwFh9jHfXt2BcenFoXKGSoF//P/jjv2OeK1MSI+Wlo7OBaHuomTJTEu4/TVO9\nih7pR2jtHIkMwzkQdRaJSJKGcg0mWu1+Quee9/d8EcmKjtrqYkEyAyf5p9z3\nBxcBJsr34eoMPfcV6aWnL/BZ1hMfcJ9N/CsqOqUQnJ6b1RkT5XK+ZPDj/tOU\nQveUkWWBPAuPD4f+afMwKhiDnJ6JMpS16iGmsorgaEVsvPgRxD68k1PX42Sh\nzPI0\r\n=NlML\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDEf9I+ch0OnKpuaFyhlAAZq4yWgJevBFK5fUeHrUv5dAiEA0H+N6QxYLVXM8PXruCRm206tONq0wLZP+eCZIFO1wV0="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_9.0.0_1567365251658_0.14038162061550596"},"_hasShrinkwrap":false},"8.0.1-canary.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"8.0.1-canary.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^5.0.1","@nofrills/fs":"^6.0.1","@nofrills/lincoln":"^5.0.1","@nofrills/lincoln-debug":"^5.0.1","@nofrills/patterns":"^2.1.1","@nofrills/scrubs":"^6.0.1","@nofrills/types":"^5.0.1","deepmerge":"^4.0.0","execa":"^2.0.4","get-stream":"^5.1.0","yargs":"^14.0.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/execa":"^2.0.0","@types/node":"^12.7.3","@types/yargs":"^13.0.2","@types/yargs-interactive":"^2.1.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"501901c108e8efc42443e01ef0a62c56b64e3d3c","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@8.0.1-canary.1","_nodeVersion":"12.9.1","_npmVersion":"lerna/3.16.4/node@v12.9.1+x64 (linux)","dist":{"integrity":"sha512-J1t/nQbTKTtHXPB2SP8dIgr+/T8qSHQbrqNaEGC/cyhGpvmx0TqJ0L9LuVQgn3UnQUAmCTXlCPwuuCy1e2DzsQ==","shasum":"eec4ff121fce48a7afd35627710f3f26741601ff","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-8.0.1-canary.1.tgz","fileCount":108,"unpackedSize":109706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbBxICRA9TVsSAnZWagAA5EAQAISKDd/QlwazKhUKt9Hd\n0uAbigtpHhSGbIb9w0gkLprTENirVAKOKBOssEFNa1KOziMV/VtzrB6cy4Rg\n0m5x81XoJFqsrGgDl5r2PppJ+wwDzqi2n9UCBWkdfktXQdc6Y1K6IZkfWoaJ\n6eVRXdFhK6mMiLFTMGUdp9yNiXJT1CrUEE1deWLWJURqaHvxptCswZGb1yjb\nSeabemHs8tF/Yo1taM8xiUpHqrJ7/BGZlBHrpg4YfOeLjReyHzuvij0SsEKO\nPBFKsnK83NgvHOn1ZUA8Op+CW5XSwmykym+nbjp6RQOfItzFSFs+WuMu/VN7\n7fwkQgzAMPDVJFvr02DGBbDJcguNGtORRqprqIDG2zndfMGJ8SzMocZsGxZK\nIW3iE5HdjmRZTCrvcwf6vaHHtJr2c0OGCvoOKGWsWz0qSJhp8q81ODsWDKuU\njnPWFPGFy71ChfNTmS5CUd0Zr+iTeOsebWvt8acUXKuNAyJ2xK16tv7CGntM\nTY/9VBCR1TaxcRCV5ne9BQDYF3cvborm0BYYD3wMswjfoRzH65mgulDf9w+p\nFlIj4kEHSXS1PBVCqh74A+4aVEuvNpT6RCnxvDWD78F2V8bwLpSNuwffGTOQ\n7MCGf9bl265mGjN/kEVxWdfSW4JKww/UnThPRJ/+GiWlpZ0YBj5r68d12+pE\nJLTL\r\n=VClh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDeKap3Clzf0fj48hkiVDqMR2v0pLm8klXFKRxSS86mIAiA6txVc8NvlwVclq2ucmro739lM0DFME6jNPNVO3P92+A=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_8.0.1-canary.1_1567366215869_0.8868566071990458"},"_hasShrinkwrap":false},"9.0.1":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"9.0.1","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^5.0.1","@nofrills/fs":"^6.0.1","@nofrills/lincoln":"^5.0.1","@nofrills/lincoln-debug":"^5.0.1","@nofrills/patterns":"^2.1.1","@nofrills/scrubs":"^6.0.1","@nofrills/types":"^5.0.1","deepmerge":"^4.0.0","execa":"^2.0.4","get-stream":"^5.1.0","yargs":"^14.0.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/execa":"^2.0.0","@types/node":"^12.7.3","@types/yargs":"^13.0.2","@types/yargs-interactive":"^2.1.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"d5518dcaa92093e749589e300d4b8130089baea5","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@9.0.1","_nodeVersion":"12.9.1","_npmVersion":"lerna/3.16.4/node@v12.9.1+x64 (linux)","dist":{"integrity":"sha512-6kNj/rTUrqhGU0VSEFryoAJK/xAEQ8FpFJiqUuFqmDw3l7ylu4D8FBAVMEJkNiRqQnia2rpqfOQtcsIMKmQVwg==","shasum":"c4336adcec2319e92754ffe0c7b762bb99e7a0ba","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-9.0.1.tgz","fileCount":108,"unpackedSize":109939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbB0XCRA9TVsSAnZWagAAlqcQAIY6wCAzU29WA4o108Ro\nTaHGNa42vMQ5BwbspFxfG+BcBwNJAk8w5NFvFbBdceALUIpozryfK1u6RAyD\nFUuXNl/q8/G3DddYdisxF2WuxG6q3/pAlDbWEvm5OHBNr+G84rFCzXO27Q8T\ntf1r9DG7R86Q5KqT33vxNdZu1RwMOWqU2YYPDN2cfxX2LxS64zrqQgxoWeEU\nVKoc+VGJlv1QwIeED+6jXP82F+HjqujzAwG0GhQFIAemZfwDOl6f6I3cWNA7\n0PYkRziiNx+bmLgdCN39GkSCL+ABakNM+pp813MkHvMdwkist9z5b6e+BilJ\nra8nL56Pjo/QIdUkh1zvDmTzr5QRz6+yFzJCYMWU0HbCdxoQOFkO4pRE7Ozd\ny05VeesbuyptvV4QWTK8kSac+JvLtjEUTwd5Vj9QDSXgbIiiwE+1trl9i81S\nYxrnHfXMF8bQakuYSxLY2lEmObRoY3eLySwWDjRk/JIBgQ2M0IIDtJ9Vm+lx\n1mlJW5raknyXNcvjfkvAfROHGO6bm+aHhx/R/YDXIsogXIvx5ZR9Mx7ro90v\nRXaKB5cYiBs3vot29y9pexo1KGk89o06lT3Z2UDkDdnwBGadlzEnvyy/u1AS\n3DceU0qKszQYMkzzVKnkfrz1V5SYXDr74iaOW4Jkc5K3ef4/BB7m1dxIAAQl\ng5y1\r\n=fpoC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEtPYSHoU0RIB5Hfy45SkLvg60kcLVO245y6VQMA3qEQAiBedtDK0mbOyvXwkvysYWzpI0H6ex6CzOpdwMWIFTYM6A=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_9.0.1_1567366422851_0.07810410329763084"},"_hasShrinkwrap":false},"9.0.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"9.0.2","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^5.0.1","@nofrills/fs":"^6.0.1","@nofrills/lincoln":"^5.0.1","@nofrills/lincoln-debug":"^5.0.1","@nofrills/patterns":"^2.1.1","@nofrills/scrubs":"^6.0.1","@nofrills/types":"^5.0.1","deepmerge":"^4.0.0","execa":"^2.0.4","get-stream":"^5.1.0","yargs":"^14.0.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/execa":"^2.0.0","@types/node":"^12.7.3","@types/yargs":"^13.0.2","@types/yargs-interactive":"^2.1.0","ts-node":"^8.3.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"0923165ff713aff7db9eca154506c9c95b4a9e43","_id":"@nofrills/tasks@9.0.2","_nodeVersion":"12.9.1","_npmVersion":"lerna/3.16.4/node@v12.9.1+x64 (linux)","dist":{"integrity":"sha512-l4vBbbhQKU2MUy3k4QspDbvTqm0vtrp0V9h9JZmBRVq6XsfXdzXyvNZyJFvUVppJLrfE9TiA8Sm2FoUwaBWNmw==","shasum":"595a0fa39e5aba05d4c06e7285252036c2b16bff","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-9.0.2.tgz","fileCount":108,"unpackedSize":110124,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbGDTCRA9TVsSAnZWagAAlbUP/1gpSH/ESBQm8TRG1rK1\n+CGoj3JBU5+lBaA5VE3bBEeJFmn+RSXgH9StPxFbhbSV6Z0CZQUAVaep9VE0\nGjVfYWnSc6mzW4G+4MjhRZRiegMq5yNZfb8IZPIbHTPumCZRqn9u9sFl2O/s\nHXn3r/wjwEVpYljWBnhuCLTxLXYQ52hhGy6OlzKfWeS+FLHp502cVAQ0QlrZ\nexpgDdd++XXeCf1QxN57wSjn/P+Cr0Y8VaIGaMaaODQQMR1wOou4TPmFqkMS\nhjDPNS3BX7xIFKrOIbfBqUMVUnYy929zAkbMj16s2Eb8jMVBGhg/qudZ2FmK\npPP2nmn+d6WmE3mXUsiPohwBwVf27VXukKf0ds5blQ8zf/Ue01Py8hIaNOzz\nl70IPQ7vYkJoBnPneQUlXDvPthH8DGpDhhiJ0e/SEXJN2mLvX1HxEyMHKj+6\n6Ql+454r0JcpyKWgkc12Q6CGQ8mFsJ/ZqEh9C/v81m5Vw9hM8zc7vZASvPCT\nD895REL4ClXgrMbuzd7P3bfaAAiGxfxIFg0eTYvKkw/G7DNJehJNvNCIFwxd\nfw7eBsadmwzo9XwzYuEvn02wduABw7ZlB2HGufFb/BCOE4ZWF/ONtkFDHeFB\nSN7aj1VGxNB6PaX+O6UAbdNJFcX/2sqZkdW2+ed8fsrl/VwXv58qNCPh/I0j\nX1aj\r\n=kO0a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB2bQDhTxlsqYW3UMFlvwkvANAiTQAfoirlgTVWjmWPqAiBtMUyOWVdNSMC50TOYHhU5Q/15NhbMuViD6hPDdl8pHg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_9.0.2_1567383762451_0.14968821593340875"},"_hasShrinkwrap":false},"10.0.0":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"10.0.0","bin":{"cli-shebang":"./bin/cli-shebang.js","cli-tasks":"./bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^5.0.2","@nofrills/fs":"^7.0.0","@nofrills/lincoln":"^6.0.0","@nofrills/lincoln-debug":"^6.0.0","@nofrills/patterns":"^2.1.1","@nofrills/scrubs":"^6.0.2","@nofrills/types":"^6.0.0","deepmerge":"^4.0.0","execa":"^2.0.5","get-stream":"^5.1.0","yargs":"^14.0.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/execa":"^2.0.0","@types/node":"^12.7.11","@types/yargs":"^13.0.3","@types/yargs-interactive":"^2.1.0","ts-node":"^8.4.1"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build","upgrade":"npm-check -y"},"gitHead":"1a4b76a0b1bb17b739662a5ddad31a2f6c3265bb","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@10.0.0","_nodeVersion":"12.10.0","_npmVersion":"lerna/3.16.4/node@v12.10.0+x64 (linux)","dist":{"integrity":"sha512-gGPPcUEVBhv4eLLi6qm87Q1sPy7ijjiWlRi4phff2Wgs0DmJc2AUkV+Ncqlh592DBWlFVHKvhF5i59FWRJF/Pw==","shasum":"f94174ae9b8a9daeedaeb0cb6f00a300a23f74f9","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-10.0.0.tgz","fileCount":108,"unpackedSize":110465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdmA+WCRA9TVsSAnZWagAA87QQAJeQ8VD0koT2zxauCBR3\nr3ui37vDdLKQUolorbR1IwYuDQuuX4bxsI9wTuKwtX9VtvT80+6ZqGvWyYCB\nOW9dI+hwtKE2rEJNuCkkrDFIg5gcsTXFc8HEcduR8nUzIuX0hcM+q5wViu8+\nuofPN3rxuA1RptPanRHa0p161ps+WR+BIhgR3gLf+oBVwh7flX9+/FTjcji6\nq9mahz79n0X1vn54rRXBReobVjFhxUjAg1XpzJoTjgHJoI6d54wY4hxr2nll\nzgLDQWt37QXpUEGWRP4kYn98yLf2zMxxwZyj+xpQSXKl15U68MLABg+hbx0F\nOKb4KxEpOeGew8zF58O7vsMyMxp2wV117yqo9neEWbFfEjN6k//XPSz8GwZm\neQSntUEMvakUMwn+owAvyCDgY1D5Td3b39+zledpQdItM+5J/Y65tdANrR6H\nYithFvEsVW+GaZexfUkvVakgFX0uIsFMEwhBlmkdhaICnX8Z5ZY6Pb0QQcNj\nKFdwZyHTD4x5yhRXDkGJQAcP4Os0gLTN+vYLV/yjkVBDJdSwod7i36DAhhL8\npLrPjANygeFGXFTINsnm2OQDf2yU7rG0DDMclrlU0eTrmLBeJ3T7207FSt59\nED2sdt+Wu/twlGT5CztVfPgtv3vKHbhaWLZ0aocBaI0Ebezk1YQfxCBosQF0\nY/7y\r\n=8SZE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAYXBy3lQ8aIGXwb0Igm7z7ApaLlyUL+UqvDhcmnHMW+AiEAon5KxXIETMR8GVgiA2HusE7QBjGcPwqFhiNAhAM7nkc="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_10.0.0_1570246550294_0.3658654073124823"},"_hasShrinkwrap":false},"10.0.2":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"10.0.2","bin":{"cli-shebang":"bin/cli-shebang.js","cli-tasks":"bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^11.0.0","@nofrills/fs":"^11.0.0","@nofrills/lincoln-debug":"^11.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^3.0.0","deepmerge":"^4.2.2","execa":"^4.0.0","get-stream":"^5.1.0","yargs":"^15.1.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/execa":"^2.0.0","@types/node":"^13.1.6","@types/yargs":"^15.0.0","@types/yargs-interactive":"^2.1.0","ts-node":"^8.6.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build"},"gitHead":"558bc2114ed46e7c4315b6a733d0fd0630884f1f","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@10.0.2","_nodeVersion":"13.6.0","_npmVersion":"lerna/3.20.2/node@v13.6.0+x64 (linux)","dist":{"integrity":"sha512-s3wZicsBIeskDwSdiKhtG39/y5v23W4OhSnEtiTVDscmTzTHwccifF328OzLK66inV9sCNGS6I+2wrW7ISdq/A==","shasum":"75171eddd18f942b7bf213c6211542d7a5b88b63","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-10.0.2.tgz","fileCount":108,"unpackedSize":110061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeGANWCRA9TVsSAnZWagAA3FUQAKD6Xho7Naw2Ogg0SUOf\ns6MKfmNPQu7lIEy1yWlaonTClBr+GhJ7wKnUmJAeUELR9Z23pIJWyx9ktHgh\n+kX7BKPkXICTJ+FaDz7q+V6l56GNI2iizD7QH3hkaW/lQlGN95a2c0tmit5C\n/vL59fExFtB94p5T5nee2wvN2ssh4ZywnnV6vhFtOBqRRWb6i0whQkpltXdn\nm0f8cz/hHWRywrE4Obv3RlRSjsePaXPZSz/PEDwRbrLnMK7mN+6JFh3L8mjz\nJN3L8cv8O5QVvN65OR61kaiBJj3cDHnTJ0keE9XjmjsQtN8OtarubAVI4b4r\njOHFvJi1maC178MpSIMbEBr7D89jQwwktF3D3OaykT28RFBs5qBvDBoFgrns\np4Rdudcm8Ef2qs5fiLPLXgX9NlkHkjdbg9Cr13mFKY4Kl4u2P4kvfUcPrZlY\nlrlk0ZfVbgfPhBmZ0aOT1zFXLZcGNoXQCdT4uZBbz+eMlXHfqT6bekbZneta\nIUcSTqucdTNAGd/ugPN2LT65lQGcaOvBSaKeIdg6tPLft9ltDIGXhUGcDFzW\n3LR93IEjSgCEk5gsTa21fRDcMKoVdxA3qIzW5jfDkWvMdEXAZw1Ub18gDogS\nFnSnI/Ukxwv9J9+Q4yQec8oC7+C4ePYxkfB6Y+E+SaQLsPcTPBIw8Qml1aGg\nQeJY\r\n=4BMk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbhBvSwzxWkblWChhUMR1B1sN02MC3AYGCTVtS7NJ+xQIgehX7ZF0IETspzbC51YOe7pqNNsw3wCflhJgXVrwcxf8="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_10.0.2_1578632021711_0.2817637505378132"},"_hasShrinkwrap":false},"10.0.3":{"author":{"name":"opensource@nativecode.com"},"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","license":"MIT","main":"./src/index.ts","name":"@nofrills/tasks","private":false,"types":"./bin/index.d.ts","version":"10.0.3","bin":{"cli-shebang":"bin/cli-shebang.js","cli-tasks":"bin/cli-tasks.js"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"dependencies":{"@nofrills/console":"^11.0.0","@nofrills/fs":"^11.0.0","@nofrills/lincoln-debug":"^11.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^3.0.0","deepmerge":"^4.2.2","execa":"^4.0.0","get-stream":"^5.1.0","yargs":"^15.1.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/execa":"^2.0.0","@types/node":"^13.1.6","@types/yargs":"^15.0.0","@types/yargs-interactive":"^2.1.0","ts-node":"^8.6.0"},"directories":{"lib":"bin","test":"specs"},"engine":{"node":">=8.10.49"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"scripts":{"build":"ts-node src/cli-tasks build"},"gitHead":"c05015d54bf22a6f4c27a76b0b7f5fd4c941d36a","_id":"@nofrills/tasks@10.0.3","_nodeVersion":"13.6.0","_npmVersion":"lerna/3.20.2/node@v13.6.0+x64 (linux)","dist":{"integrity":"sha512-Hr2+8VyHtd0HJyTDOp5mUVWu6q3VXe0T8ex+5oqs4ioabAdrhR7MCPIZXG8h5zD8EiQO5eBL0Hsx8+AP3HhxaA==","shasum":"17f35899a988fb29819ba82721036e1af42f6996","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-10.0.3.tgz","fileCount":108,"unpackedSize":110249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeGAQKCRA9TVsSAnZWagAA0UcQAIHw6Shd+71F7clFIXvb\npXmhKVMUY0/LCMko2FSL+2rNiwmNQoGsp4TJ5CjDs3T8iFNXQjlaerum44Xt\nQrUC8MOnRMumjKoPr2eFo2ZTHShpoXkdEOlLaEP1s+1EUkqTkhx0Mc9eu5XF\nFtitBsTke5x4+lDc+B0wfl5sls4K9F7Wn2W4YT/Ok+dybwAxsQm3jlQ08FAY\n6OKF1ACfWrol8EWngatcoeU1e7/9/H0JIU6xEKQLSYb+SuKD8AaAUdrG5ljs\nvV1F3Q37JXS+hM9uA155kn6TVbeKoqgNKmku+AW/tqxha+iatWcPcVEG6v6k\nT6QKoO7gWohm8QVszL2McOLjL2YnV/7Lo4bJ1QLagarWmaJh0bCjEAO9b5p0\ngZdxyj7++eWDMQId9xHjdYpqoO38SF9fL4JX32Vq5PW2y36pJdbQx8pGDa6d\nv45z1aikA44ZnzyrK3LrXjDDYhP0bTvVtuLxQ67ZHrrpWwho86+hWS3MiRDh\nQx6KPCFGViW5vHtU/6mPDEHq7odfpo4q1LZOs57zafI+uYUWuk+0TdiTNt1r\nJObUtCnosH7+d6HuUzRd+KjCGD6ecKlWvkBuokQR8JYGDUJiG9LZLOLyHAiq\ncAlsyrnpR7P170uDv9iLN3z8pxO7O2bCa8Haa0e4NYtpf1hh6Qdmsgs/LEPW\nj0hW\r\n=YvVF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA/t4WkrbquJQEhTlYEnMHL1R03Bp6sfb1XBclTGYPiHAiEAkWo/EEL4/4pMBW2hUS9YujTmTHOr5xkD8btyMqWSoIE="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_10.0.3_1578632201667_0.9468693251715061"},"_hasShrinkwrap":false},"10.0.4-canary.18":{"name":"@nofrills/tasks","version":"10.0.4-canary.18","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nofrills/fs":"^11.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"~15.0.3"},"gitHead":"3131b4b6153747a28eee696d88d27937be614660","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@10.0.4-canary.18","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-WwyTalmkdymf/TClXCWcq4PEnGWiY6BcxUQzvjLlUOEWtZlzQvKtPvTdxSW2NSE4AX9ufTtmWJZkMIzhel44xQ==","shasum":"923e1ffb6dfd7da26abb90b241ad4cc66b412136","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-10.0.4-canary.18.tgz","fileCount":4,"unpackedSize":26552,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUgivCRA9TVsSAnZWagAA5+oP/RTrinXWHsuHtkI1Gm+3\nkzqan/nwyhtYrY6oKCVpEv+MPJ7qiQAJ9g+RUhcCbDvMInOjW8Pr+s1/EJaL\nwxFByYN1wZ+cbzXUS1hdMaR7iX8cLZApH2daM2qrD3q8dNXTdHf3MCIi5QkD\nSOZpbQ0C/AfqLQ2C4yBAd9gdw0QqIlIHZ4GaDrLjrQbs0x+Up2S6VUF1kd6k\nXNIExyoyXiz4uKT7vCzwD2lTTuprHRQJvbouYfy/g60O1AMnoYon7/5znhVJ\nP8rJMMcTO930cawckZfnF6u3DmBUfDbcC3NPuipZ8+lJBAf8tPCPraAXJzdc\nrCdhy+WANLwkQRMLZBzwbtWyOUjkl8iOm+7BljrvG5IzBsSh3X3ap1bh1Vuw\n+lVyKzXm8qNswzZk0ztE14LwwpWsJgJ2tiqaRf2lK4vwBU3Hm/pUYGKkggyM\nQSMgPnT9Hvc+S/AjSq0DC4xr7FDFlTz/8rIs6Nqj83aNyL3yWileyDjZrsWk\nxqC61hkDQC6VJ5WtNjzMSTCpd7MX9WlOfhnubIDlEzm93myu5bKry3iSsLWt\nACG4eJzGmkCm2zC9BSMp1jQ3q59iEKaycKIxfYaU8Rs1HA/WOFoFTLwUSAPc\ndwMbVCtMzci/iQqa4xlLsXLAOY9ecLRpllKksdTL5frb2YvTQSuNGg7t9CN4\n6Qzh\r\n=Hyx2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDIfLFQXjvqLmuVNWI0X2RXdKtyB4+p9nsV4NJbLh7D+AiEAlTefTC2PWnr04ilhUq9s1ysnHK+EXrfNaCUw7GAzvfw="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_10.0.4-canary.18_1582434479302_0.4734539231581518"},"_hasShrinkwrap":false},"10.0.4-canary.19":{"name":"@nofrills/tasks","version":"10.0.4-canary.19","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"0.0.1-canary.22","@nnode/lincoln":"0.0.1-canary.22","@nnode/lincoln-debug":"0.0.1-canary.22","@nofrills/fs":"^11.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"~15.0.3"},"gitHead":"2e26e63938570429c34b9bdbeb49d030f164a5fa","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@10.0.4-canary.19","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-Rm9Ur49DpwnHDttDXRiQI1uHj+32KXdJetQ4EevQTDOdgBvYG7BV/+i1iRZCJR3q0WuM0/RJEaUCnevRU5G5hg==","shasum":"c58dc2ea095be771373f8460f2ebe49169743d72","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-10.0.4-canary.19.tgz","fileCount":120,"unpackedSize":92991,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUjIACRA9TVsSAnZWagAAbSIP/ReW9eFIwcfRi7HClHTz\nMhNdvjhewWRHuxiDhi1y0QIcySZ5ELmJkMLQwlOyUxjoM4eJhw81lRxiQ0ub\nWG7RVjHTqui/ifMqRFnZElBsrYwOWf78cm+YoCDBv80e5A3OYMqmjO3lLh10\nltUIrMSMz+pWGe8rDMn0s0smGZkh5pPiCIFLFhViZtRL4l+Dczzn5nSqA6N/\na//CAA8WSCjnLpTKvwySmzDmdZh+RZRWmpCKYNZXEv+ubFzjYfa8aG7eI2wg\naS8J9hSb9IkBhdHlPBJAlpTpviP4rmBYl69EYA8O/VYwsrizUVujRtYtoDeF\nPDMUzkh96HcKCqhCs66SgwN2GLEpfJUrIanxmpYT8ZfCiq5bwaYHzkSJnC8P\nqJ4GPPiOmBWui8E5Rk0lrG+sKetoa+MviqYYsarjp35ikJ0oPo/Q8T+3xyAS\nqE6XAJ4p5j9r38vvhHNNHyyEGla0LpmJw6RhQf9VbXaS9x60cCaTmCp4y7O4\n6kUtRmbhbwX/bLUX75/5Z9n/T5FXdPfQKw9F8Df2i/Dfe8lVH0AwfYOXHJkC\njJ/y73v/sdvE4bSrb4m5iroVa6hisAsy6pxC9hFhMi+ofAxthJvASFJlbb1D\nbcNyiAZXT4g0cVGSB4ufiMTtz5tDlTxJCetrLNk7QbsL4ApsFlZmbTXa1EiJ\nXtnh\r\n=aDsd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC9gbW2EQLPt7ABfKDbnYcViH9YTdKgFwNrdaFIhEZbjAiEAy+6REwJU9r3kM9LecfwoWygBg+7nOft2pNFm2/5vGLc="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_10.0.4-canary.19_1582445055749_0.3998833765653713"},"_hasShrinkwrap":false},"10.0.4-canary.21":{"name":"@nofrills/tasks","version":"10.0.4-canary.21","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"0.0.1-canary.22","@nnode/lincoln":"0.0.1-canary.22","@nnode/lincoln-debug":"0.0.1-canary.22","@nofrills/fs":"^11.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"~15.0.3"},"gitHead":"a653703af469f5510e302f4971121d4b351f6fcd","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@10.0.4-canary.21","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-6qj25LQb+6SrhdlNOKOSlbnhUtSR5G7+xJWCFKYVUITo+3PGXjki0/upP+OSmCGIv5sMMEOlsXool5pNgPRyWw==","shasum":"4a817e39902d9cf92b16b8f1c833c15e01d14e14","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-10.0.4-canary.21.tgz","fileCount":120,"unpackedSize":92985,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUjKwCRA9TVsSAnZWagAAnQMP/RL4cF9QVwetwC/fLj0c\n2Bc1xWibYVXQ2JpI3te9ks/S+zurAmkRODuPKwCGbGqnKPdjMry+XsixOoKI\nGm+r+9sNkx5XMYEZjCxLMcJZvJYIYKBMRklWpukHYLyaCVuFgY0VVcFEkXJF\nl8vmv/Sef4fDBkni/KAtgyTv2VT06qKmOhdnHQjwj15IeRLBD7c68GCZm4ch\nAqPodsnxDX8FmrQhvS+lMHxyN+7eXZRswUlL928GBgjvj8dWa4ceuzODHBC5\nLJikUBdxTqi5OrtKayTDhlk2c68VJqG5YONmrLbRgKqU0vq4HAvoLUzBcEqh\nU7dtRwhBnWyp/aIWB5vKW9R5jjhzaqQvpaRZnr6kKeaM5K4feo93GncZK6YH\n7SPx/u/9cM6cmpPAEygAY39xxh4t6ITrUtG/5SKMlMYfd1VdGmDboYOwi8bg\nZdeci/prlhlSdZdXv1qbheL8koQEDkjDJjRInjIJ8C6DdERMorpqvvXfTfgk\n9mw3MSmjStSdsiXg7AMwzFd3WHQzTxFJtk6LXv4e7qQ2rKIcyYGq8672YNRQ\n/ipPf6TjTWDX9d0ArJX6Xz1qHrebCj5xYWf8oIZUNiWzn6LUckFkjpj11Nhh\n+QvH2HrqflmTvk7wSWFDA4Z64DfXGVBXqvuywabYkXIs2f2iktI7H/K7+PzG\nwFru\r\n=aRuS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdnmuxRovOEf48WBf1w2JdfxWqSuz9AKvhUoPlPIDakAIgRfO/Dol2cNrCPSRSF56jriunHeuLLeU91XdepkqsmjY="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_10.0.4-canary.21_1582445232090_0.874654621835415"},"_hasShrinkwrap":false},"10.0.4-canary.22":{"name":"@nofrills/tasks","version":"10.0.4-canary.22","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"0.0.1-canary.22","@nnode/lincoln":"0.0.1-canary.22","@nnode/lincoln-debug":"0.0.1-canary.22","@nofrills/fs":"^11.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"~15.0.3"},"gitHead":"95cae7e4abc75537c53295669dbbc112c091246d","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@10.0.4-canary.22","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-fCvVNyfUWtANzQmRIpCfVmntHl9l0BhNJ5uAWJa7mJeTepcJ89Pc0QXP6KuNtQsF34fBJ5GGyv99DAkvSOvOvg==","shasum":"863397e78814b1092f98f42fba84d0cd194bf544","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-10.0.4-canary.22.tgz","fileCount":120,"unpackedSize":92985,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUjW7CRA9TVsSAnZWagAAjlcP/3nLF8Dce0/XpQV6zeKc\nAJaGEQJyk7UNMCS0oRVao9zTOVd4cesIPlgtpM5UlSFOLoc8pNrQiCbMPpWR\nyjgbzhVQDjuUUuDN4oxXnXQYH1MlIEC2vrkONh/cLAsM3pXMRMLzhFxDZR0F\nwfZLGfC8QAQgnfeXCSuB2s0NDx0pjLMouRbYzfhJV4G+jowcBmtR7Xv28v0O\n1mc1dxM+TwsrWmlQyerx0oEcD02Cd8591Hh/x7YitMAxY+Y1TpZ9awqxZT5b\nkUzwaPAl3J0N1vBXm5ikUGOxzCtd1jhuqVesRIAGurojtYiZbpve/yw7h7Ix\nR22bUvFh5WFWBxbFhTB5CBb8h0UAvIxYncjnIvcK8k7xrJt5oco4FxXalJXB\n9Vxp1OO70w8W+5ytatwH99bJ+w+mLkAqAjKlrkXxbwT/Wju8YoAa3D7ODqj8\noI1KsXycJ7GE0/7lbNjtYBMR2/SZBhw9Ery8TptNB44UQx5j+nhnPyTNQ+jN\nQECZHk3s/w65PSYGaw0F3m4NAcftKSCtHaObsvfvl7+dHYL7SbiKrNrsgCjQ\n6zMgR+sseDMvYXZCpvVffvu1OBSVpmv6ydP7K2oQv/jYkVAEFv8Vxg075u2z\nBLQ7Vd7sdGDHuXpz91Jb79f0OrjsFV0nXBQ47iGsWscFsBiaMhQtLjHF4zqq\n2RA6\r\n=KQTZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBIr3EQQ6CrQhgvaUDgPu6uJ9aFleU7fzLpWpgZU5a4lAiEArf29xFymo252IWxvVvWSuhWf5/ugDPDdAeGkgnclElY="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_10.0.4-canary.22_1582446011052_0.7146469009786742"},"_hasShrinkwrap":false},"10.1.0-next.0":{"name":"@nofrills/tasks","version":"10.1.0-next.0","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"0.0.1-canary.22","@nnode/lincoln":"0.0.1-canary.22","@nnode/lincoln-debug":"0.0.1-canary.22","@nofrills/fs":"^11.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"~15.0.3"},"gitHead":"c78424800fd2f5b77fd93f709861726d72ae070e","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@10.1.0-next.0","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-X16TgdCSwD1BNdCSvUHe5jLadf598MbCgTnx2VNcqcm9uYSPNfsr6qqNx5i1rA+zV2gE5AEx88Jk0qrkQHfYHA==","shasum":"808674f2ec19a8f5733d372e90101aa63f7dfc09","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-10.1.0-next.0.tgz","fileCount":120,"unpackedSize":92974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUjaeCRA9TVsSAnZWagAArPAP/1OMFF1no/QZy9az3YWY\nv13TPdmt9H0RfEopkCPyYiI2nvZOuN6Z3d+ektzYcocEuN10YmafLOy24N+t\nxfsxf30xj3od279RBj/zGsMy6x8ppRUW3AWgY6593BA5uf5mTFAJ8ZluOBlN\nJmMx/l+0Ao5Y8RV58kyY45OeYAIiI5mk8W3ZM0I2kYtfhQEkPu6egEfHq/3S\nqH2Rgc87LdWCmwwhGEWHEAXhnHei+PVGZU/NsqutNd7vRrPxzKV3M1yE5cG8\nVigIuYbnY8QkTamIhL8dWlP3dLUigqiBKwAzZDGs/AxzsHj/8s7wWftBnPuV\nM/64ZVdegTE4f8zVHlAL4p2vRWYqu/lmKlmlQxdpqaPdrnYSIN3R3L229ol+\nslawZW6WGstAHZjVXgCJXQaQlB1nSBsXNtxfMRd+4ArvhoY5iyDIGLt8yDW3\nxjWDYHTu6gqqG1BSXIFzgeC8cpx++X5ICA4xBrO/OhPqdG49mwqmyJtqXZtY\n7qdeU0ypv7vhl7VAuJPLH+Iawr2OkWwYM95ZpfeJRMcMnYys0JQO03AToy6Z\nbWbvSJcDFrL6Y/9JhCgTcZYilK5jWUlXeuhIguv/uHxJPUzTtNWXKqRh3vjo\nsq9QoICdW8iEWO3waWqKRkPov2q0rrWVWou6wnajTWXFaqazZS6e80NRo1wX\ncG5R\r\n=20Sf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIACkY2rStckciTzgF+GsBgg/FWyrNNDQuu+RpG3t33yyAiBVCfFJttesc2rVDeBsmXGltAH/6YIG3NTLB9ILjFNmlA=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_10.1.0-next.0_1582446237971_0.23961108846441448"},"_hasShrinkwrap":false},"11.0.0-next.1":{"name":"@nofrills/tasks","version":"11.0.0-next.1","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"0.0.1-canary.22","@nnode/lincoln":"0.0.1-canary.22","@nnode/lincoln-debug":"0.0.1-canary.22","@nofrills/fs":"^11.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"~15.0.3"},"gitHead":"ecace2c60a4acf022086a790b4941ce0f6ad4298","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.1","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-3fhREXDdEVelTxbWfxbs4s9mMr8czs3q/qzVdzC3mMJQ13UgvLwzqGz6B3n4Ym3oIGoibsk9j9ShkPTidrpoiw==","shasum":"57e0d34bef3e5108b5d00aa3b0af9e9bff58e496","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.1.tgz","fileCount":120,"unpackedSize":92974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUjfgCRA9TVsSAnZWagAA7loQAIVD9DWeq4XwynYHIXiq\nrkQVNoOqZtOnFveOro3TwocOJg3x+d0Y/5Rs3BEmJxcI47itGqW5CGoUbWvE\nbs5ZAIZy01DUDa/owkh+/tMP1ziGYpIlaNBEVSwxm3j7s2YMhmFamyKJx41Y\n+PWCKYMVVKha17mNP3lv80BtyDV5K1wdgy3r5m0k/MnzDVgig9lcV0BOLu3U\nZLNLo7wMqZjCiPtk7VBS/1w1LrjcQM52kENZv3do7TdGBYCXutnyEZ3wBT9z\nmVLtU4ifTRMgnsY+NubM6myngGBcS1rc2O1btQcuhUdO1rijjWmXxOYLznjt\ni7pIr4iJkCt2CdMGXHz1iBKPcsFZWQSuvXi8LJ6G3UvO7AuMhpqWpunNaXXb\n/LcE4lMU0YWkEK0KuJ0WiqL3fZkEN712VzRHXtakOzvHfvbufHYvrBxjLF4J\nwNNkYiWDRjeFKvyzPGCUjWDhWRdzL03cAw9jd9v79+d8a33FGQa9YXYFMRK+\nPx1xsuw5bsZTLu3T15BXjjd0z8cBa3rEmg7a5wr5b4qgxF9kOlr01emXLi57\nYX/6vYMKOOyckgWY3ZQDQ60BFhOBTYz5IrB7tLerS53gFRQ4gkDNffrR+CMY\np5rWiYwrkzati1F1o3yxlbAsgki13o6Crgzn/nx+ftfo7dl6dded35VU8FuU\n3Jm+\r\n=c+a8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD65W41Zq059sd4JCMHK9lZuFzt5kXWx4aBpFv/p8/ixAIhAL9Q7fkIY0/9idnT3YwJ5BH7KFYckPuVC9dC80ORFfDk"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.1_1582446560305_0.7031140118676826"},"_hasShrinkwrap":false},"11.0.0-canary.1":{"name":"@nofrills/tasks","version":"11.0.0-canary.1","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"0.0.1-canary.22","@nnode/lincoln":"0.0.1-canary.22","@nnode/lincoln-debug":"0.0.1-canary.22","@nofrills/fs":"^11.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"~15.0.3"},"gitHead":"db7cd7f0beca05f52f2cacb491a7423ae0cdb763","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-canary.1","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-4rMaCG9wuYw37xYhbs5fhgFej7TiMwzWr8MjedWj4ZFkWEJ8Ps1NgUbmir5HaFXH+Zks5K0RXszBGPKmJWUNDQ==","shasum":"069372cb5927c1c4705b6d164c229c597670bccf","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-canary.1.tgz","fileCount":120,"unpackedSize":93716,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUqTUCRA9TVsSAnZWagAA6ikP+wbdUcLwczoqVLd/a6XD\n/JcxrHxxB29qlzr+x8kOIK71f/9E6eA4YL0Nc+WABjgDLu32J4P60neOHSiS\n1SOVTUN1yVlJTw38NnTGTld6hBw2v638OfakERG36SsMI/3DAVvZQwNd3/cu\n49+zV4JnbCP9d5/avj5WgJcnZEBkx2FSHlhuT2hzWX7yVenNfLMRy8R+3b7Q\nGT94N92LjSOEoJ6wOmI8TYkjGHr0H2VFxlNzHxspAPgGYjAX9lJC8SoxTVZv\n7lbzEZ26OXzwJzfVUFL14Dbo3STtUkzzZYisqufZ/75MMDa2T8JCTNMuHYBf\nkzKe185zZwJI5u6JL16hURT+d2lwKZRu423NItRDk90eldAcn+LDczRpDXuf\n9jaW4Z3+Ij5CAQano9ETUeWinnXu5WL7G/pHfgypVSMz5FRkizvCpXo9QXvb\nbq7uMC5Cf4tMlCGxh096fOHih+Tdsbm4q7oN2cIdZiArcLW2LJGWdihvdxhq\nQT0TC+CzbYQLsgogcoHlA+inB6KzkNDVByUctLMTT4flPVDYaUs7meFeyNiT\ny/p7qCLRA/BKjvGwbwDyO7pOwJ11Cao1IpxCrdv4KICWlHSPI/IDPRHcZ/Uk\ng1sY4en4mtU2hicYZ3mlRiDRL+SPVMpfuCjpTDS1Xk5up8F9PKbJ1rJ9E9+8\nDGm1\r\n=jYMv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHAv2L0C5hXdFZ8b7kvO4FJ4pIEG6ojlku2jpCGSkf3jAiB5Bx+rpH0GhviVvLMgiAK2ZVpABytUnyXmMUhteytlcQ=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-canary.1_1582474452009_0.2324199280923247"},"_hasShrinkwrap":false},"11.0.0-canary.2":{"name":"@nofrills/tasks","version":"11.0.0-canary.2","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.1.0","@nnode/lincoln":"0.0.1","@nnode/lincoln-debug":"0.0.1","@nofrills/fs":"^11.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"~15.0.3"},"gitHead":"db813731b99cbdba6d4030ae5afeb14aaf957252","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-canary.2","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-jD8/F77YAjvuMHUnQkC8JokVKSsSwVCy3caEx6tDxRboFaF29muiG4oLF/YWpnfDMi4Xisp+nBu0CUWP5ftWoQ==","shasum":"35a6f5fe5820a0d0647d2fa2937139e374779340","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-canary.2.tgz","fileCount":120,"unpackedSize":93687,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUueMCRA9TVsSAnZWagAANYYP/1C5liOe1QQk9REhn5FS\nm3O353jpmPDMlSbHCBJOWd4UTpUNSr/1Ud6T33DAatQp2cYPav0LSg/TDEdZ\nHUoz0SVYhPEqe6YZanWyRR/nwguA0R9xpDHe9Wl1L+uytyki5bSK7o0OhH3W\nOMG+19ARzGHBF44I1bu5djY5hDopvKB6ftN7gl+1M7bVP5Fjymn7uXsy9aFy\nUnSowbfC3ujuET2GnkDWfQZ9m4xSPX0W2GTEyy+zm2fgL5IhQ/ypP2TD/lKj\nPvac4XJiyxg9ffULloV3S7J9BN7XKBLc1cTV0as8Pev3T2ZbND6LHH+PKL+a\nWHbEMxrv10T4nweaaX62Cfctss0YK4otm5SWuE1VI6w5Hcg75zxxhQPucCeL\nlSX7NE3CrXA+mFx8e5V3WRx71LqzxSubyowkvXxP3HRztzYMqaihBbrItO2w\nwwgo1mrvlLXQ03lUUgAqRr2uH/ziVb1OAgtbiUcA/cwfb45SdB3LdKKorTWC\ngAvNGwFD3OkI8Db9JANqvUU+C0vO4zWZLee96hAAdk4bO6MB1VAyN6X0XqZK\nIPdfaZ7Xppkmyp9pyDRZqY1ylijVllK8xYr9GdMI4PNkVHrH2my9gnnzR9/Y\nIj4m2783damV+EayZufXqdk6GlV487OaztbDgO83ru9YZZzTH8C864uZPReh\nMDVL\r\n=f9JS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCW0pamjMLIMv04fp/4sD5aJALZlxfuwpcjOp1oa4/4EwIhAKbtghYtRrS65U27ljpTGN59w9F601KhXnrIkr7YZDvz"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-canary.2_1582491532018_0.49979882979216006"},"_hasShrinkwrap":false},"11.0.0-next.2":{"name":"@nofrills/tasks","version":"11.0.0-next.2","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"0.0.1-canary.22","@nnode/lincoln":"0.0.1-canary.22","@nnode/lincoln-debug":"0.0.1-canary.22","@nofrills/fs":"^11.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"~15.0.3"},"gitHead":"fe313f90309e45211ba7f1cead236b3ae4b17359","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.2","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-TcluQhHUe3dOgM9ltPxQj1JhDpt/dfLGSjb7sAd1bWAluVCfDlXLw+ZG9RCiqpB/FMfEbrLs+xtcYU/oZjPeRw==","shasum":"5f04c157bf8941c70787d21b2d264a8a1ce6cf38","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.2.tgz","fileCount":136,"unpackedSize":97128,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVcZYCRA9TVsSAnZWagAAgN4P/jUFTPJN72iygIVe5Emp\n1bS6xv6xA8Fqdw0QisQxxZoe/o81CXHP0qj0dqlFUYSW0iDxfSgbb37rfnKh\nS64cNPVWJtEj/TuO8i1Lh3YnzJONBo8MAGBBlPkGzRMvdRdrtqamws7HQ689\nV70FVaRN+q+1g3Bg9lvSKQuvulZqYwELBL1O+jzr+6I/l/n9sIiqcJbbTLPx\nZbHnbqlZ7qGpsV1Vf7Wb9oNOG5eCgmWNFuUaGGVnopUNwa7seNJHNvvvlp+1\nV37lRFwVu9agyOjVrnwsYat5uQevf3u8VhxEx8DhmmnBNOWn+wWstLfci2eJ\nbhZb2+H/04PZPcofBU4fxsOUeK5l/L0dNaGwDKtCq+jHugk+WJL3R00YscuZ\n9b5yLs9rEmhEssRB3m5OjLKgrSNGserrw7iQ3insYBMZ7HClbC/aec6guE3e\nDKHqrP6vrC+NwNQbP/gWQ8dyrtX0LV5Lf5VE0WLnkkO2o/jX51mWdEp5EUuT\n4ak63SpDju5ftkQ1PsVSmNvC+c6/zmQeAyQ+UHSscp62CvhPcpRO5fohiVxZ\nBic0P5kugCiyTUvG410cA2ka9cdEVRejWhjME/gT4PXYCCIajaEobPZ6VOJf\n8WPrnF0dDx5daxNitz48lU8MuuVAEFZMOybsx+LHOLrARhzfBXfDTwyjKNs1\nhhxU\r\n=1GdJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClLqSODCmEb4diOFWThwxJb+RSrJ0fskHGAgH2hLk4XAIgDXy88hAFmB3TXYSjxg/6a0O5RSLkiM3CZBRTPRJ+Z7c="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.2_1582679639614_0.14111745221004113"},"_hasShrinkwrap":false},"11.0.0-next.3":{"name":"@nofrills/tasks","version":"11.0.0-next.3","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"0.0.1-canary.22","@nnode/lincoln":"0.0.1-canary.22","@nnode/lincoln-debug":"0.0.1-canary.22","@nofrills/fs":"^11.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"~15.0.3"},"gitHead":"ea1400b0e176be75842ead2ac0511e4926733593","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.3","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-jA2dQU3BLYhJjGEi7o2lpTyKhNPzMlo4SihCFg7QODzdEcVL0ymeVM1rJ+YZ55GmG08UdtVwpw62cfwG7SXr2w==","shasum":"e1f985f60bd20e73228790863f311bc998eb8d11","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.3.tgz","fileCount":136,"unpackedSize":98122,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVdFBCRA9TVsSAnZWagAAkZ0QAIHb80tC1ZoOS97pTcKE\n1GqJnIGW+1kpz+q9rTwovISPrC7xVtDCBlN+pXBBj4Xz5aHeAIdH0BkNsLqR\nA36rd/3WUbTcd+a/AzJorIrGIDjvL+ZPClxC3SoQ4AlSR2oMfLV4AxlCsCsF\nf9e3AnZ4L7SXqUp4MOnnIG8ICEKiBltfQslmIYO6hjVCewBQxSIN/UkgqH8z\nhEjSU+tAAxW3iVVGgFDBQp0EjOIqjCwwVt9K02QgoROpNFZd0AdMlgUqqUJI\nqlELJQbsv93kc1MTo6zoLJz2bdGUZDPIDQFhfC/50CyzF1p8UCVLl8J9iH2X\nCEBemRfkPMMO+S5y8hmGZ7GsQVVUAdasiP9eEeBBYSG5DtZ7wPSwjyoPWIGY\ncknnCEulkd9VrvKnGtKwEqBav8OlynZKHJlleG7LxBppkWYtE1kUu6en5HK2\nPG/t8K1GBn/DN9KtY2pkeZug/SkJOr7LuO0IYAs1FpWtzaFOECmDXpWXTo9L\nWfgvBWl7GW922eF5v61TJMMEnqMVwPitHLXnswh24mMA2gJE8t96BoNR5Q1F\nX3Vurs3M2gi6Bdpq5wnPGEB40p0kFcookPuS73XVO9NCM2qTI4QfZgCxeTZn\n5AzwwZBWiij4Cd2kO0E1GR8iDhGRPUAAdS8LZjaf7l8tD9QgPt2NxzGJhH3W\n6Xgt\r\n=gqPX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6SVkmetfMIQEnWv+BBGTbyGSMBz37mwnhA9UDDaCctwIhAJWuf9yvmDL2WHLCRi67cCA2kekTe+5AHMWP5ChTSYnS"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.3_1582682432691_0.84402173828268"},"_hasShrinkwrap":false},"11.0.0-next.4":{"name":"@nofrills/tasks","version":"11.0.0-next.4","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"0.0.1-canary.22","@nnode/lincoln":"0.0.1-canary.22","@nnode/lincoln-debug":"0.0.1-canary.22","@nofrills/fs":"^11.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"~15.0.3"},"gitHead":"f41f5123ba6f96144f424b2062f5c0e9dd85ffe7","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.4","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-ggs3Y88dl4Th00B5NPHBoJDcaTwZQuhUZaTb4O+/EDHYzCeeeJTT0waLvlgZXWT8iSbGGYcW3OEmYvqIXzOgzw==","shasum":"1b3796a8dc7a386d2db040726febc61ac16c61b8","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.4.tgz","fileCount":136,"unpackedSize":98445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVvVxCRA9TVsSAnZWagAAM0cP/0l3X/XqmEnAnp/ht38I\nJJN43jnXQYO2IMVmsE9JMdPShHMUdjX0U6fwTldWvsbuHpOEyH00wm5t1W1T\njq6m9obGTYZQxWu69lpV6lHQns1RhAOKcu+vFUAy2fEFM50z25RRKZXNleT7\n+wDwEvdQUVzwRTPib8+S53gVu/R0vKssKKSPlZSxZhZ9pj+1EWaVUMrUqQLw\nIiYuPl6KCoewVr6t0TOVV+/qRWIbx7oIQRYlucxdFE/UtgFJIBcTmW1JTYD8\nszkfGmqj9jykSaJ/G8gnM1exEG+RofbueUwk74qMMkor8Lo3Zwixu/SWVCEW\nFZIogJ1+UWrKWHRNPOpmiwRatTAR05saLYMgRL4gKpp35nnqUu0i3ihagYr3\nqUggHUo7O0BiK/o8kej+mndkaA1zBdoXm6uLOghablCq0S+hzgkK+613xyZV\noJ/HZQvg0lFrY7HKaDgU8zVdADKukDPMjSiAUdDqmzBrS69dMthmtgzKH6kw\njcLFwrmJBFalgc+WiqEwvrdXvjYq2t3NsWxpsT6CL11PpVWh91OX6ED9qfGq\nI/Jkb9vdZR7gVr5nZ5l1sJvOohacqO8XSUFlVi9+j7ibHM5kL67pIEP6ZGXi\nIaoFJcXNELK3fRg5u+kgaJhUVgM4MquJFfXIYuxSsWmfMNrk4siiabN5FIVy\nMlsA\r\n=K/0Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHqzbZnWgMf8XLjRoUbyst1LAEiIJ1dS2GKUAXWteId4AiA7k/TOgO5LtBlkW1p8UD0V40u37zca2v6II71q7oBTBw=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.4_1582757233261_0.25059281933023514"},"_hasShrinkwrap":false},"11.0.0-next.5":{"name":"@nofrills/tasks","version":"11.0.0-next.5","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"0.0.1-canary.22","@nnode/lincoln":"0.0.1-canary.22","@nnode/lincoln-debug":"0.0.1-canary.22","@nofrills/fs":"^11.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","jsonschema":"^1.2.5","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"~15.0.3"},"gitHead":"c67459ea3244877e4cdd091dcd265939b7a272db","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.5","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-IImhWAf4+/Gr3bcQ2hXvljNbHcIvtFKJZC7bKMLhgdAv1AO6ZrpVboffWAnjQlWISkbMw9HjjD5S6VrflZpp+Q==","shasum":"05fafc85f1c05e885705d0c5c4fb240465eaba46","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.5.tgz","fileCount":145,"unpackedSize":107388,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWG/fCRA9TVsSAnZWagAAb8sP/1XSFxSwbbknwqvk6r5H\nQxefucV6zwxpo25FcqgY7q8mNYppSM9+tLXrGZwt+9IY0aNVVczLDoYdy6+7\n18h2vAFo13vrtlyHRXt3trDIibVCM1JCx+4Z3mpf9yunRBp8KxZZ/aQ+62I8\nfZdFGmbztT0nEicKrdqa47KAfYwNBDdAqYM8QV8QlU1/c7xxJakhB5OJJ9VM\nTIpAyY+pDPcRpMZPU2hmOS3hiwWQf96dO/8sC/hFjyu5bdY+pdrS9mHEq1ds\nZupgQHSovb/STyTw+d0xyZWCjWSgKb8z0W5mpvyv/0s+aW6uGIGPrWC4ZrIy\noO0Hxs1It8Hnf/HubFUof8d/WxHNXlZmksjjdShnA+9PYKtBx6EkN9kUZMQO\n7h30aUvFO1ESZHyO93lxOtRiRZB6Dcf9f7QPznfUzCyRcaLv/iNzfwL7ZWvX\ngprgcd60sJ4/TwE9jqCZ0LIoTykwR7jg+R69wJd+QuHq36IEkBMKXMh/ThE4\nct/BynrV6icFxOkqivWriDkoSUX6V7McjEHhYs9pdVhez0SpeN3aCZubbvsa\nUILsPJgqYEHJi3NxUOJfLlekl8E6cNSVRru4loA8MXZaJntlhD0BReLb1yz2\n39UKY+J7ciS2zi1LwAT2Ov0l6bC3Xh9VCBoxuVkXKs/FBvcyIDF3/t1H1sxE\nVC9A\r\n=S9v9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBZfJQGIQ4PuZ4oJTqXi2oip6Yp/avDropevDZRMGN3+AiB/LPFwNxNuUwc+p1XdRDmeKo4Wof2MBel7/pCt4DyMSQ=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.5_1582854110852_0.2327187318952586"},"_hasShrinkwrap":false},"11.0.0-next.6":{"name":"@nofrills/tasks","version":"11.0.0-next.6","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"0.0.1-canary.22","@nnode/lincoln":"0.0.1-canary.22","@nnode/lincoln-debug":"0.0.1-canary.22","@nofrills/fs":"^11.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","jsonschema":"^1.2.5","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"~15.0.3"},"gitHead":"7dd52e3d67a80efb13c5e7e85bcd7b87977d6588","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.6","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-uk6OYTfoN6IjqbA6Tmt2lcLg7HfvFdO8W7RJ816uxLZ3PcvN1TF7Cj5HZHrff/jBKbYkxPyo58jL+qXBrPmaJA==","shasum":"cf11bfe3188762904e6a2535787fdaba3acbdccd","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.6.tgz","fileCount":145,"unpackedSize":107388,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWHEYCRA9TVsSAnZWagAA6+EP/39Ng0vlU16eyq045cxx\nqks6VRxm0QWQ0gIsEefDbkxPKlzJ2A2OXleuyLXan4qHfWU2IGe4ytBjZK9k\nnYm+zN4l7xbTCMIRJnpNiRF4b7cpz1eIUmN0UWHez+dH7TzmrIWvmgxgdibF\ncsnLHAxlkIZfPdbJWd14qZ3ebUwviLl85S0G0FclWHhU5rV5XPoAxH7mbb7/\nUCYtgqdU1oW+k9vb/LFV0rhc8V01sSZQMWZv73yz8XJwycwbyFT6g2B/jGQf\nVbB9B9S01fNm/9IsDQLdvXQKUM+eY/byvKXx15M2r27YwiSpZArFfY5sYLTw\n/qzaSjZWYQvG5DBzeFCoRZOOsm2ID8FUdCqvO0ypFnPB/ozAAmq4ojyaaZdI\nvPDZazWs8nvl/h76qIzAEYWx0RRjecF0zZxhIvmTgh0z03E5fb33+q10TcP/\n3m2U4xPy1aTF2+HIxapFtQgQ080mVyLF66I+TboUIQLlPn3DbiZ9O9tVJiuf\nOFZex0as9/iYgIryhbMQIxoOOs/3FGrgI6aLSJoYCypOB7n4SPhoDWpmV53M\ndHk4eOC6lDP8UproSS2r6bHkMRABHmyND0WD/CSKipyUuivuBBwKaxZ2gSEr\nry9ebjD1mczZOsmG1HI7kOG/3PEh7g9L4MY1WP5sruZZz+sOF+t3ELqglEgb\nSvcT\r\n=1qqZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCV7/HeoWf5IN5qMZVpZYS5+5sm0Bl/G5cGtToWn57EhwIhAP+Ho8MVLCpa4cHK/ITMUKXWQO/lPipt/3rUAKXB9Xjq"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.6_1582854424363_0.2838396148344646"},"_hasShrinkwrap":false},"11.0.0-next.7":{"name":"@nofrills/tasks","version":"11.0.0-next.7","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"0.0.1-canary.22","@nnode/lincoln":"0.0.1-canary.22","@nnode/lincoln-debug":"0.0.1-canary.22","@nofrills/fs":"^11.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","jsonschema":"^1.2.5","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"~15.0.3"},"gitHead":"26960287ed4d0e230dbecfc79a1d2b87529e4c02","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.7","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-sTn++erehV4gOaajx1TjzNWoEISHLIAGshPz6dWHJEkfnWYv2yIqOmSUCBkIPAp+ywZ4tKN53Ciup9JypWOZ6g==","shasum":"ef03a7b8a10fb1a2c85967f515c95ff8d598e46b","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.7.tgz","fileCount":145,"unpackedSize":106896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWQoDCRA9TVsSAnZWagAAScsP/0/Ba8hC0E2qECKIBHUb\nSeT8WxYpe15B2RLUotUFkFF14/qA15VM487wiaKVUYS545YXEzZl5aHD8Eww\nHo3Jcc7uOO/ISzJlHU/JMrq7kTuVNcXRUjHzC4dPOgOGtmHT3PwFPr6f1vPz\nwB4mdXNSVPIqdvkH5b0sLWDmL32hhH/CW0ZizmBko5mCkOdsjxORU8CaeB/7\nzJP7urUwCJl7i57czP9OxxmS60JgJjgyM/TW55dxKoXKM3m7LVpWSR58iLId\nkTT9An3Y4nH7Wrz5CmTiSUVewFvVYK0tAazGSOt/g+Y4RuCgSCJsibKIRbNI\nQyN0y6LpxRyt9el7z7bQcVbpUo69h4v0+fWKfcYjy7lyl8kD+6N45N017275\ny0iI5yLeNmd2ef/HoPWh2Mcow0ERJVgJGyq6upCI/kHmS9N0/CDSv9148k33\naJufX83Ml7jSIOH89SaOpObEIdNlQjtN41bZBR8T6N8/FgcwHfTMWwQFwoTb\npi6BzpFzf1Qm32AUpIOCiwZyDXhJlN9DdUqyHKKOsu8F7IbUPMUNEZUVFI0z\n8/2YWDQSQ5tC/KFbSLhuyzFlK+WjD4eN3zcg0uYCYWnLuOIDXyX6q3rW3PyB\nXHbBBA17094DOqLqB0z9kp9ZpLzuQAZtc1i5v15lUjFgZJQ9I+CAb7HwKX6r\nB/B6\r\n=5qys\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxGXZ6RrIjFo63TITGBRe1WJL4vd74vysHwScztO270AIgMKnsYz7hoPSYm/G83ViS+SkfpIkCQRzKmMqCemOiHoQ="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.7_1582893570972_0.6001985964629242"},"_hasShrinkwrap":false},"11.0.0-next.8":{"name":"@nofrills/tasks","version":"11.0.0-next.8","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.1.0","@nnode/lincoln":"0.0.1","@nnode/lincoln-debug":"0.0.1","@nofrills/console":"^11.0.0","@nofrills/fs":"^11.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^3.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","jsonschema":"^1.2.5","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"^15.0.4"},"gitHead":"02c905ac7f22e05d07c435acc844cab5720640ca","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.8","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-s2nnCFD5VuVtPRqtuewWzbCEirHqwiKfosmNqKcQxpYlsn7amDu5/Y7l57fI+bUx9N75O13a6PLm95NBoax2Kw==","shasum":"cdd83ff512970f6a32b76951de9c705c19c6f093","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.8.tgz","fileCount":145,"unpackedSize":107067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWUXdCRA9TVsSAnZWagAA410QAJ4lKfMGKceeK9nXZKeV\nWzV5no6Ncw1Bp8OsL/8Rqf3hg18CVQ5A2r2My+eFhJsodB/mXJT+pmP4gWcR\nRg3ckGbDFYvgTcqInbjYYmHQyjBpPk+Cqld0jEnA7y9/ihkE1PAKeaGpJfef\nzj8/iK94n/Vj9ecbphxT5B3JWQjJRl/JI7pC1KHMn3NfovbX3mj4f7XP1HjC\nyNVeBtF6Q1iHfw1Bt++RMqfY3usBbGkb9BASdn8p24UE3E13uyFuDpTznU8H\nCVT2qe68MfvILjj8mswsnd1Uv0wdupuLQr0Ui6B6ypZPnhKAkazfXSiny+5j\n8Q6GUXkPl6llwmrGAAwsb5WdsWUQfYBFuVa/9JMLZTu0L8/sg76xz+iuLzUy\n5i/zuKPzqZfAoi+64rw9k/tckAqrg3znKeP3u4EfEjEAFWlzK91sYC5pKHm6\nV5za97i57armztSK+KAMsSxtv6oNeLNOsaGM0TaQOQCrFALt6i/zEDwuLpw6\nCN2EKGKCEyc9J4K3fQmzSGbXV4CoTKkzwpKyzUDdYgOA8B3yWc75P4zj1Obu\nJRjLSm/bBS4yepQxJhtWtkmtkkGwE+mHEXHRiI1Y1rzextgrJFnzfLCLVWy3\n5RwSe6Js4r4iGzencJa1HvtExFCiCWj04+PGpD33vXC45sfu0rBaNCZEAAOB\n6HHZ\r\n=N9AV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEXmLFyFkq+7dc9OYBkP8zoGVnPUdynxYF1rOBOQ53kWAiEA/a8b77MdC1e8VfFVj+ED8+n6nIZ8DIGfk3H5oepBg88="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.8_1582908892968_0.600352767415621"},"_hasShrinkwrap":false},"11.0.0-next.9":{"name":"@nofrills/tasks","version":"11.0.0-next.9","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.1.0","@nnode/lincoln":"0.0.1","@nnode/lincoln-debug":"0.0.1","@nofrills/console":"^11.0.0","@nofrills/fs":"^11.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^3.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","jsonschema":"^1.2.5","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"^15.0.4"},"gitHead":"ffdc5611919e1cf7f69057ab7c9cb82f5a0c62fe","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.9","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-2Tpp3QCisASu/33hJOwVxeYMFoS+mXLXgrFR4iMJw57TuE6nlF3X9bmeALuvvA+Y+xT6Hc6yE99hVVOwbn6SNQ==","shasum":"4e19bdead5bb08cedf75784f33889d52061dbe96","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.9.tgz","fileCount":145,"unpackedSize":107392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWVYDCRA9TVsSAnZWagAAVcgP/iXMACUCYXzY2p7iB9ho\n29v/ImHNlwNs1TgqapsogjCqn1ZFk5IT0rW5rI9OtrLmIGzA/0qQi/rxLtzg\nzncmW9QbIWv18oUZiMkWUkhmzRH96u5r4EpCqmaOE1/oUbqtC8lcUHjzb4m3\nDt+RdDu1dgKvehvGiAe2Jm5hrNK+Ouwxe1jjo6R4P23ZABGnfAp6ngr1T4He\nnwM8O6xfwLCwnD1wqRV1UBn7M6h5ZBMq1W3XqaW/LGJ8n9RyIbf3q+4+NXER\nAseQMSxLNGJ+6irOzPRT/sPCpSWjsttteWzim8YSVeJE5koMWjC5d57bbtUW\nhbCIyn48Sm2XC0KP5LfLJ2dMSLyUG0ZevR1PY0DTZEg2+fV1kzhBVJLJecK3\nTwmrWQj4tGPvLeoET/aQ94mKtMbW98RbYeG1JUogex1G4hraFumEp5ctFO8J\nxE+AXYn53irXTgRplEsqgIGFvbDd2AnQxuxxcynj4tULt80iFwvUNSxzd2lD\nkHgkVZXCXrjWfAhp2A+IziFc1II6FRu85dWPbpmfAjgVLaulyeuBnJskskL7\nQDj8XNQK4193t+++175AzgNASgqsOr03SyBhYZqcre4bMylZ/dhUGaYA8AAT\nWI9owjiq6ZWgleHb8fZZFgHcU6W12yxIwlWq/zrHWu4TcRNL0Pij7+notv4/\nRnzC\r\n=qKOK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCasGYwjOQzV9Kq8WlwpQKzSXfIRBlT7cZbxpYfnv5y6AIhALMolnJVmn6ZGIG5NLTmK+pIuY8O09GQY+4/6Bj/LW8E"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.9_1582913027009_0.5144506799044066"},"_hasShrinkwrap":false},"11.0.0-next.10":{"name":"@nofrills/tasks","version":"11.0.0-next.10","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.1.0","@nnode/lincoln":"0.0.1","@nnode/lincoln-debug":"0.0.1","@nofrills/console":"^11.0.0","@nofrills/fs":"^11.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^3.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","jsonschema":"^1.2.5","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"^15.0.4"},"gitHead":"ad239af8d01342c51b3e1cf1afaac8e08da2a5ed","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.10","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-i6UT0I/RUfg8efQWU1yy3vBCtLip6tJFJ3cqlkz4sQaJWA1R+zLcqsscoqycKUdwkF4GfaBV7alCGP9nGXIERA==","shasum":"96672cebf7479cdc533841c654e398fbb1364a37","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.10.tgz","fileCount":145,"unpackedSize":107393,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWcbxCRA9TVsSAnZWagAAhD8QAKEKjYWvAxrRgJja69fk\nEgwU9IkAX34BefMbNUP5xFsTI+iFUt6aQrOLstQ287BPcZikh6JaRJ25irSU\n1NrS8mFxoeRvaHLF3avx75ZPY30Vt/tQRuVERMIkE+0CygpKQj/QmwFQq6tw\nlu/4qi1DxRSYkdHHeZZUDybHa53XPluiNW1tQ6L2Y/NrtquYx4e+qQyH5p/h\nt+fPLEWmTZQWACDMQz62rPmUgjUM/UXiEbm+KQIWZOG0ZZ60/7TItFS5orhT\nOdjvbf+gVpX/zQkEiFhs2BcNvmwmna6nuxju5oJPgZcIGYatwV09S18wgcxc\n/wIVDvEr1H0sovmNIftiBEsfdqb/HfXc8RSl4s6bPva02eq7bQb2v3LpiZdz\nwxwQ2m2LWWHe32HvOq7tmuVGQ21vq/VZGN0XCTFIfKCS49Qf3AlqfWqs+XXN\n2NpWeSpxM/sxUHYgDCDHymxMdoNjKhtDkJVIb92DlYK5IeoTYE4f7HNpDclE\nXuEQkERCmFfXBVgRCiT4CQbBrfGbVA3bs4kwbfTG5dsG4GlXD+GglkAmkRAL\nxXX78x5N73VVnTSBxybt51sRzx5Z+LENmal4Y/9KaDzOu5QNuW3mCzgc9Yv4\nZo8jUHAKkmZAWWswDBFZG47HhRhKPO4qVHt7Wlwla4DNOs3Dczpag5sE0YdT\n1PA4\r\n=G1AG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHXW6OFTXP+UyLjZaMjHsH3/lq4sdKtkVa8xjsMaJQUBAiAYz/xDwBPKyFjrwe9A+vsBBRWx0WFwAXU3As93HcPVeA=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.10_1582941936895_0.9456685120726509"},"_hasShrinkwrap":false},"11.0.0-next.11":{"name":"@nofrills/tasks","version":"11.0.0-next.11","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.1.0","@nnode/lincoln":"0.0.1","@nnode/lincoln-debug":"0.0.1","@nofrills/console":"^11.0.0","@nofrills/fs":"^11.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^3.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","jsonschema":"^1.2.5","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"^15.0.4"},"gitHead":"52947ea8a320314220a807cd332c708fb61c9240","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.11","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-MgqGaFrTtEcYOs43KQ+5l1guiYj4Z9t6ctDQ6Z5y5NvI6TWUxcMVyC8VPTuxcKUMbHRO7p4TSUzjCv1eRlR7Hw==","shasum":"9b760d2e0eb49d2e51bbad610e837264e15fbeb4","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.11.tgz","fileCount":145,"unpackedSize":108736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWeFvCRA9TVsSAnZWagAAPLwP/34BNXnDFl4NKiQxHG0r\ncTuzdt2OMae/Vi6Jfxlo1leZGZke5/6nEkvlaa8SIbZHOHi81s1FRaTBENn0\nEbDPsnaTwPGnc2opIiYMEjG3LdcAuyXCCx25t9XEL6r60n9+Bd1qPE241EEr\ncJcOBe1OjV+jw8JLyY1L+xxHj8xh43akMqCXF+hFtwo9U+RcgLEB9wa3WuD/\nmQpbsooxxlAzKZAw9zNW2AMksUX56lRFYx27PTM0EdGBmg1Ai0kE0AJ3MUNC\nrIytKchpK5O3c8/QDstOzZfRCDKcvULCUuABA15VHdMUlr0/zvLep1NuLgz3\nQB7wKo/8h2nIr4HIcrX2IIp7vu6jzAkQSbKqOy+KNb6O6WpWcNqVfib6N5h+\n+rht+NP1C4z5MGx+4f1Bi5v5JEd1DG37wa5PiolyvHgP4uWA+DexPYx00eAM\n8BRvF6reF5stg2nJaXBs/NNhYbD5uczXbw40tzvK0Vnfbd4ZVeBzRu5WShRd\nEO3bY0TkbIIHWkBMyzCEMu4CtN4wUW/U7l2Ef/tK6ACn8MbkZ++JeRyDN5sx\nzt2Qraha6PjwWYNGv7bncaIG6x0OPac+qj3ucwzey+QY7T+SDfzdXjZ0gI2s\na26CW4qyM56V2MRhISbbQxg4wLnGR8WN3gC3FFqPeAYe4RZ8haWNIZ4mO3LA\n435g\r\n=EhV+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNOXs9F7op+n3D6YZpVXsVvmzzviw3LSRLANpY/CithgIhAN5nICC2PEPGOx0Gp8PahCaKDibRIPhlQCN4KSjy/KJz"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.11_1582948719400_0.5380635355462984"},"_hasShrinkwrap":false},"11.0.0-next.12":{"name":"@nofrills/tasks","version":"11.0.0-next.12","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.1.0","@nnode/lincoln":"0.0.1","@nnode/lincoln-debug":"0.0.1","@nofrills/console":"^11.0.0","@nofrills/fs":"^11.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^3.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","jsonschema":"^1.2.5","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"^15.0.4"},"gitHead":"01f852745522132cd924958c32935be5e4929461","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.12","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-yF1rydTYPu8r6XRmsxFIFTSNwGIwK51xnx5VmsXTpAKwNjsMxMO34p6h5zLnHV+e0Ym3jqwbPw5AgjpH1D1Z/g==","shasum":"139eb4bc709543c8d61b90805928630918210f32","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.12.tgz","fileCount":145,"unpackedSize":108736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWeJeCRA9TVsSAnZWagAAwmgQAIXAldu8y3RD5jC9SJpw\nL6ymNfBHKZCAZsg1otKMWyVJFqJwh7wsxMmRPJB0pETcVhlvVnHuhWzmy7LF\nJSDv8CNhHIvFcjeFhzd4R9He2TgkL+DEWfV1ttDVqC0XB0Nrn4NqUb4sQzxM\nnEDaALT10Y9Som0qva+bUN/AMDdHMJY/J9rRu0R640+Dkf5QzNov3ESlhULg\nS0pnuBKnoWYFO6RBxThhkUgJ85oRkZMK6XFq9ZdzR+OX2ROlhMfNlt4avj8n\n0yNXnMdXILq+WZAYsczL2C+3XTsMe2Ckd6ApR2EVCheR31ZqIEFZJyf5BAkk\n1p/SJN1rOGRMNjSAo5hS/cg2C9VAWkJ0ygCSJ67okfXnANbt17Rz30b+Etvs\nVlJXcJ4ATo5d61kDapR8Iwdnm1hBGV+TLmma7ooUCFuVn8tEnh/iBaCyk36B\n7k2ymxQ/ijiGozeZW6+zfFSk3NTfc5P/S7khLFPMzlNlxHea5YYrHfOsZdIC\nHyBc5oEOkfhEkdo4Yq+YNL45cwspCM4islbR5zHjw5zAl7UXsBLRDZrEe6wT\nJCINC8kYWGfPz2ue7+iv+NVzZt5G9W3Vq6eKSKGzehabJjm7rsw9b5/Ct/mO\n0OLlmYbJ2wqZMOq3gXCjK/pfFsqhyd3jUQjIlPYNHlAItxAHUuScWyWVUYw4\ntCDv\r\n=W+Iy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgI+xnc1jXaobaWjBRyb9IyDiTE98XUlTxVHZgcKwSLgIhAPVqeSiDOQCx2YlWFxa9qU5KrIt8IlPDSMdfsz3QoDub"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.12_1582948958142_0.5032970219082853"},"_hasShrinkwrap":false},"11.0.0-next.13":{"name":"@nofrills/tasks","version":"11.0.0-next.13","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.1.0","@nnode/lincoln":"0.0.1","@nnode/lincoln-debug":"0.0.1","@nofrills/console":"^11.0.0","@nofrills/fs":"^11.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^3.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","jsonschema":"^1.2.5","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"^15.0.4"},"gitHead":"50ff3dcf3f36c4afd55a1e85d90a6dc658438e74","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.13","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-DhQDvZeoYBal00vCCfd+ElToEkZS1leTUoSS7MeoM1VHuQhZtmoPjnExE7p/GJd9aJeUTrOlDpbh4deCCAQmQA==","shasum":"70281820d2ba511fc4cc97cd0dc29556a9ac5a18","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.13.tgz","fileCount":145,"unpackedSize":108942,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWeaVCRA9TVsSAnZWagAAiGYP/3WgnE8a00DIti96cOEk\n7UYYGAfDJelS1FPINqOQOYXosnDlPZCZyVQxhvx1mbhg1iS3vK4CJLVjTTYH\n9hHMzmsRV/oFVjbAIZAiG+RcAuoT2Ank37TDtw+qb5Xig6MIWX/bbGY5vTEy\nj1wPdmOhshFWIctn6kI9feXTb15SqAP4PL9PQN8hkx7ON6Z//gGtgZ8cd52f\nYbrBvJmOrt+ocvuOwb5nR+F/LAwCT5GSqOaJum32NOpv95DvwTp4wjwKzk3x\n+8+/50ZHL0BI3G5LNf9cfft91rXfSnM4JsnlUBqASh7QbN7vF9ZhivIzM1XH\ni6U1S+3iEcnfAR95L2DaZ3DQ+SXiYjhh8q1lp63I5eT9qnfClMV8krlNWweW\nd/C+9eRsl6sWnnIn6QSiKsw1RLfvZYIZ77E+XZ56Xw5HbJD5Rmu4Nxd32077\nGNQuJbWytYlk09KWQ9dmwwQTmksbm6xmbg5dar/y2GKH6zCWLEjN0BW3FJvf\n31nKjug7GN0NykiYVSz5XPEHXP2UroZaME8ntS1+s6Jyd8f5kH4dWfVrGoEN\nG+TmUs4ZPnu7t7CcTbg3rAQ6A//GCuvPqXWaQOTrp92Gti55k558o2nw1ZnD\nsQzYuZ236vrm+Y+uluGpRfcEgP8VGh1rojQ41EEtY2x2BzertSf8BNLoB3y1\nQqUw\r\n=FQX8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA7Ihi52bGjgaOP2tXKtuc/m4bBEHYZmpgVfB1KPS+fzAiBZtPsf0dRXeoQqaQrC6/xVrIwPEsd/9/0z+N/IIOx0Qg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.13_1582950037230_0.029571642469919945"},"_hasShrinkwrap":false},"11.0.0-next.14":{"name":"@nofrills/tasks","version":"11.0.0-next.14","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.1.0","@nnode/lincoln":"0.0.1","@nnode/lincoln-debug":"0.0.1","@nofrills/console":"^11.0.0","@nofrills/fs":"^11.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^3.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","jsonschema":"^1.2.5","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"~15.1.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"^15.0.4"},"gitHead":"0551b43debfcd8f27574c7be5d83b07ccc03fe8c","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.14","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (linux)","dist":{"integrity":"sha512-8GVTz58xrNEBse8P7MsW8Ml8x3g2sqakEY0TFbUW/pwEbSgqteFRs2r7/alK+v1Mp5aJSCqAoHO/wxbbD8atrA==","shasum":"0fccd91cc359950303a933bbe79d36788b33af6c","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.14.tgz","fileCount":181,"unpackedSize":128403,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXymnCRA9TVsSAnZWagAAj8cP/AoCg36lIglSFhjVSw58\nTjolrs9YUG3W2fO6anNXg6Ilqv3aJiX+LIihZ7c7OuN5sugk25k4v6wL0g4C\npklFVQvH6uUu3UG8G1/wzoJWiIQCk9Fx+QERHfbdxDeFGdRQFbskVEDVyWZJ\nL4wqjVEDCkWzogVX16Bb9/flX93ckx4dMcSvfY17UDPoIlvQ9BQ47B0gEtn/\nAXSQM2mX5hmBVyWbv8Xu22Y78t1+D5mSdeJeO/m7CQ14c9nbeqxad2IrNq/+\nXEGB9uEnYXDGJz8vDIoqajvPPLZ178iboOJTxk1sgYDmDmORStAA74kB3l41\nC/Tbs7xLqmC9cVa35y5hYw6oj+9W8wKlV0befXGYNCk4zQhFu10otTJbJDAL\n8z0Q2hlnKspzUuVH5ZRjcTo/SqwP/Dtid2vrqHSWif4gJlAiruAl845QAYNr\nPg+cz+dBtzM98z2jgu5OoFcurPBG3ELyHCsL/VtIXwtAtrGdP28kexllVhCX\niVUK/ftAh0/O88HJi4lYr1aWkUB2shah1M9dwLiA5PYHF0OW/FHFxMwBpco1\nL7ibNl4ODljg4qqIPi1C8oUc4PfRQLvZzED5xB8GVFFFYApFd+ma9OCshmAV\nhW7a6p0y0kZ3CI9+v7NnH0fBoFmxg+/MyoLIxIEPvNH6XSKwX1ALNVp+YwO7\nDT1e\r\n=dGn5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEzemD38CZxZjaT8ZkHUFbrQz+qalSYC5T9XH7ghqqtuAiA+Aj/wJBdGasmbGDiytM6VCXsMFVe9a2ilmNbeau6lDg=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.14_1583294887195_0.8673778807577206"},"_hasShrinkwrap":false},"11.0.0-next.15":{"name":"@nofrills/tasks","version":"11.0.0-next.15","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.3.2","@nnode/lincoln":"^0.1.3","@nnode/lincoln-debug":"^0.1.3","@nofrills/console":"^11.0.0","@nofrills/fs":"^11.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^3.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","jsonschema":"^1.2.5","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"^15.3.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"^15.0.4"},"gitHead":"b1d85344d021505e33671356d1f40f5684bdbf62","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.15","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.20.2/node@v13.10.1+x64 (linux)","dist":{"integrity":"sha512-x+wJcxgwnP/Ik5PtvlSe7v6MWDxZSZ1HOhLctECFDDCfRUlD/WpnrmRkNitApVRfaU7BARv8Xur4pXc+e6evaA==","shasum":"6ae0f513c7cf587f49c21c783d2c79da94eec94a","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.15.tgz","fileCount":181,"unpackedSize":128405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaOrLCRA9TVsSAnZWagAALzwP/iIzdzcC4Rdt0NbvTE95\ntO3uWkd8Fp//1rSiQdKyQlPxjgzNru3PsmVF3+WnkJa+Jnfbe3l396jKdQAQ\nuLOjc6YJfL4mkiEFj56Xj12snHY1JNmn5mUyL51ynlLofs4GxPxvqzMrN/ig\nf0NUN3vUI23hPDxujYITqYgzZMaCNkjGTNsCo35+KuV1QekQ+syf/5KJyXj5\njh7f/rBCLljMNuvJvOSMsoY1KNP8AJfoZZsH5PEaeCCrdrRNC5HpAC7lsb2K\nWAINdGpsQA6+Qwg5PbLKaChJASnsnFmz71OHMhze8dCEMGpuH6C6J6pTeCZW\nb0e2Opo/oqbL4lkQfsAGonLyGw7A6qdynkyyQFJaf21mZl8JDfdtKQ4ORJOX\nkEmz6aVrfiAtpme01JlPjbJDAciKVozmOddeOXMSkmiU/RJYYSlpAlgJlX2r\n7tWvMpXqMdOAYk6fZO5z2NI2VkTKqM1ZU/Uqw0ToVG6ZHLSP+fluLUfjz/SI\nePJLgzaskPVOpX6zrSYeYfdlyLD9nZrEzrermm6VVN0ZsFtjf8zVkbtpJUuQ\naWEH+ZfupaMRBFkWlVF7eAY2XMsnWO+zZDbu5zMfLio0HUAzRmoRddoCy6Bv\nv0DhInucnEB7VZaMz0nr681icb67JA3qPqhGy4fRd6hE5V4EZ2lX3xo9cFLV\n6LI+\r\n=Ey9W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE6sT5o3q3oA1OM5tzZGtj4NfkDVvfk4Eg12VQz+HvX5AiBm5C/CnMy+ARfw1xYhj2qbNUAkEn2RNJaxckMDSc4cNQ=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.15_1583934155288_0.6261689527885257"},"_hasShrinkwrap":false},"11.0.0-next.16":{"name":"@nofrills/tasks","version":"11.0.0-next.16","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.3.2","@nnode/lincoln":"^0.1.3","@nnode/lincoln-debug":"^0.1.3","@nofrills/console":"^11.0.0","@nofrills/fs":"^11.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^3.0.0","cli-progress":"^3.6.0","execa":"^4.0.0","jsonschema":"^1.2.5","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.4","yargs":"^15.3.0","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/cli-progress":"^3.4.2","@types/yargs":"^15.0.4"},"gitHead":"9e02d905b8632c25b211c08db1f49dc75098bbce","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.16","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.20.2/node@v13.10.1+x64 (linux)","dist":{"integrity":"sha512-kSyUgNR89eVSnblqXgBlpgRyiq7Z3T/D4OipX6NKD7ldi85Y7eWs/y0Wv5YOURfu/EFGDyX2Y6Zea26R8nvTvg==","shasum":"1561ee264ff015913f444a89da2b3d3afc51b1a3","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.16.tgz","fileCount":181,"unpackedSize":128405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaOxvCRA9TVsSAnZWagAAL9gP/jEI2kbyuafeXLA3noqq\nTVoEepoJhix39o+LJ4PLu6wY1QGACyjJ6ygAEUoRmsgJ+RPJXBH0W9c934rx\n1xVyhjdYPq/ZYtJwQDMc6bgzziKEIEiomX5tZhAcUs5pF41aLxSCqqvQTT64\ngCb2iJENnz8BILVDB8yo7Hp12+DTwkDcg6bqY/Icu0eiIJ604YBwqYz4jLvY\nlMFRH70uwqn9oI+1EuC7xM2n2Yd+M2QNTEq8zhwKBIywo7oA+zxZAN0QQFjQ\nTL+EUKaHJGj0R21USnwqVgIXgv4TsUlY4Nr0G1205XMPNoGHvVMhKDfN8Yyi\n4IKVFZQ4hcgDUcLkydM3z6x3BJJIVx0xUzsKa29VbP9kwGs0vACsbaVrBBX2\nbE2+AHrqA+oHjBqNXUtGNBv6f7phwGH7E2nq2POFhYj/4Ea47mLNmzNfiMyH\nN+7m6GJoTyVXPGpr4eqWgJ9W/K+3ZozBQ0Tv7sw88td2irFWdz+EAh5Jislr\n6xB4Qi7/p23GQzhU7h7/A30qFElWpf553JTalpCQOR9MpVjtrDIO6nue00l2\n/tskjTnTb5eP2UTkyF7vJO+qD8qlHKIUUtLUY5DMeEUcV3JDNssYskKm8Pim\naQvjX6/tv7LRMf0UfhWfV9KYFv04J18XfBJCcwbcI30U4qociB85EDTEWCjo\n/ftv\r\n=B2gt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBrfeL12zhdwISEEA23aUw6mOpT5HgV01oecjCjfs5ZvAiBwxjRbRvCmhC4q7ODu2TQ658PQlW3NaeSscwYhcizSoA=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.16_1583934574846_0.08337058420408172"},"_hasShrinkwrap":false},"11.0.0":{"name":"@nofrills/tasks","version":"11.0.0","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.5.7","@nnode/lincoln":"^0.4.3","@nnode/lincoln-debug":"^0.3.0","@nofrills/console":"^11.0.0","@nofrills/fs":"^11.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^4.0.0","cli-progress":"^3.8.2","execa":"^4.0.2","jsonschema":"^1.2.6","promise-parallel-throttle":"^3.3.0","rxjs":"^6.5.5","yargs":"^15.3.1","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/cli-progress":"^3.7.0","@types/node":"^14.0.6","@types/yargs":"^15.0.5"},"gitHead":"d3b82ceab38e8b9179a3f8630c58b61ad0031962","_id":"@nofrills/tasks@11.0.0","_nodeVersion":"14.3.0","_npmVersion":"lerna/3.22.0/node@v14.3.0+x64 (linux)","dist":{"integrity":"sha512-8g9oKmil0NYeCWNO1DdUQlC0rguFs2HiGCIfA2G4pvlRCAC+d8ETo2wgb6jiiQYGWD8PqhWwb4aiAL9FmOoIgw==","shasum":"f7cb2d1f66bcdb38c4b09eec8ad9fee3eae81b35","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0.tgz","fileCount":181,"unpackedSize":132322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0ht4CRA9TVsSAnZWagAAYK0QAIPGz7rfIBtfYeTd3SNJ\nbWGOBUKwzLhdxVGpM63gLHKEEHWH2SyBut5zYzrKx9MN4ymPq35fCmYGGqfK\n8EEHVssIz32UwaYie0pWpj5XRhaZVRWmj5ZkTcKLF40dvfEZM4Iz/MBbTMZm\nh6fHi6lhOZKv7UT8TJM7tRSz7KVgEePEqrxGqeF1gSv/ivxtKW6TqlBV26ZX\nx8njynxnG5/Nb2jN5N3xozvPfgLb1TQ4fM4TjgnMuHujQKyGW6pArXDqrFFn\ncG+cgM+zE7IYfL/nVUnX3wVrmwDnktfeBZ4M/RhDP2g2YO0TY7gg6SKmUufF\n7hIXbAKzNS7whO9ibyhps4j5RxNRbtpRbLhqVaoBtQ2BQWJ3eq5vPdW3XnPp\nH1O8oDF2BySFPH1pGl8wlnlaNInqHHYX9hpNmm7W0iGaxUk98r8akUzaiOtC\nlca/Ptv/TOAoujl6Q3Lmg+yScWPkVFj3Y5eEKUUtVME/8j5wXJcm8Fdi7/eO\nfuWbtefq8kHYV26vZ4yZLnJwcAooBGRk1Sf51IskeXUtuQGACT9cWifwPpYZ\ni/YQAm9O7EGDQnpQQdofxozb0NO3sWdGS+6ig03eRWnQ4DNF6Vn7hNOwWCtu\nxUfNCdKR7KgrUF7xZwTpe4yXh9Kil414T0XXmFdIaKkEeXmd6yW8+gmmaEia\n0C6b\r\n=clBP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDs3BgNaLAz4XZp/7hTOM6izRcB2SSixn21ElQpD/iLdgIgFFpkBLA9Y0p4FM8IFRiEP95JTnJMc8WBJxCckutWu34="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0_1590827896153_0.028081822540976464"},"_hasShrinkwrap":false},"11.0.0-next.17":{"name":"@nofrills/tasks","version":"11.0.0-next.17","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.7.0","@nnode/lincoln":"^0.7.0","@nnode/lincoln-debug":"^0.5.1","@nofrills/console":"^11.0.1","@nofrills/fs":"^12.0.0","@nofrills/patterns":"^10.0.2","@nofrills/scrubs":"^11.0.1","@nofrills/types":"^10.0.3","chalk":"^4.1.0","cli-progress":"^3.8.2","execa":"^4.0.2","jsonschema":"^1.2.6","promise-parallel-throttle":"^3.3.0","rxjs":"^6.6.0","yargs":"^15.3.1","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/cli-progress":"^3.7.0","@types/yargs":"^15.0.5"},"gitHead":"0d4b762232bad3cfdafaa723c39b9219d48cfa1f","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.0.0-next.17","_nodeVersion":"14.5.0","_npmVersion":"lerna/3.22.1/node@v14.5.0+x64 (linux)","dist":{"integrity":"sha512-9wH7vgDGfLzUKiNsUUu4+Pv9sPfjxs8oxibDiZGybQgAteORT6kxrtqHsQPNYr18WQANq/Jex064S5nPQimedw==","shasum":"f53ac9d60295a2baf7ee96f6184f70c5f1ab5e1f","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.0.0-next.17.tgz","fileCount":181,"unpackedSize":131357,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/VLfCRA9TVsSAnZWagAAbJIP/R09hEjxVjtb/WqA7Nf7\nsoEL+/N279uCcDBszyb3sB5UmhmSYIZr5Rx4xeEoMNXxmTSToHeEfN/eL2CS\neuH8F3QxALKdDgS6pa1LYCO24l0cSwdDam7/zlAPNEH0S/bILP9MTPGZ9P75\nUV/2UsN+9aLBEVsNAMMctXzoo6xUJfW4ZAMAWKM/C38asSTSqjITptHqfp8n\nECgSBOj/lc5c7A8i/dY2MM8qOknlahc3/Dj1VYZxzws1kUe0qtPWo2Wgut88\nKYvOv8Tq2azNt5GcEcjdijXWuj7BtpNcvjQYtsgkN3rVQMhFJ7Gh2I2dxS3w\nmT81zp8CSEAF77+xfbCcl92AZ+UwBUQKikFekCt5JUlny6PXkHiSbPGqrMXo\ntP9JBsUm2Dw7GRNu4LAUJKzm8vwhRyFnaPvN2kkRvfUTkIoT2WTNGXuhaApZ\nIGDdiNA5Fc16aBr5rLD/b3cCNwC5k53gpkp04pSAloAEDpK0qXYpqx4XInr9\n04UFxvxfz9Laf8CAmsz07peSRlTb7EB8EhDeYzDsO1f3XAGmqIG3DdQX7obJ\nShft4/JAGvi5B/xsECSledqM5352pqLBHKxsgEw4glZGKAnspGD5IsiDAFmf\nGW49qzocaRH3c6wEKQBfyuQcvs1CGfscQeLDWFaKKI1khNTVAT5/d08t/cV/\nE0Vn\r\n=5yBu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuPSM/XDZBoa8/+/meoZBRD9a5PU8c1F1OZPZorTLdJwIgNezTdF0SmOBMRPtmYaWItFvJ6TQdZ+3WKJp7ciKSHVE="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.0.0-next.17_1593660127094_0.523152510810837"},"_hasShrinkwrap":false},"11.1.0-next.0":{"name":"@nofrills/tasks","version":"11.1.0-next.0","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.7.0","@nnode/lincoln":"^0.7.0","@nnode/lincoln-debug":"^0.5.1","@nofrills/console":"^11.0.0","@nofrills/fs":"^12.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^4.1.0","cli-progress":"^3.8.2","execa":"^4.0.2","jsonschema":"^1.2.6","promise-parallel-throttle":"^3.3.0","rxjs":"^6.6.0","yargs":"^15.3.1","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/cli-progress":"^3.7.0","@types/node":"^14.0.14","@types/yargs":"^15.0.5"},"gitHead":"cd257524632b78d01c27542b76cecbf8d869864a","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.1.0-next.0","_nodeVersion":"14.5.0","_npmVersion":"lerna/3.22.1/node@v14.5.0+x64 (linux)","dist":{"integrity":"sha512-qjC4YbvRBGrxjVjeNrvIvCD8QEe5N6O1qcfDHCJFCKZOc7GtFjtoV8O+aXrtl02nsJKHGUTmNwU6xf31mB/nfg==","shasum":"defd61f27fe6719b45667640f621539db35c1679","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.1.0-next.0.tgz","fileCount":181,"unpackedSize":132330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/XKeCRA9TVsSAnZWagAA+GEQAJMm3Itg7jQyXunYXJKf\nmA4lYfQDn9K3jL2uunY48n64CvsL2ONQcbMoiTq2bHmx0Nqmi4x9WaInrHfT\n+oBxjs5TXJEFbdVhPiqmU30jI7dM515LuVO9kO8blPyKMTRLil827uWn9jk/\nE4TgLGP5NBPjEWAoO00Jsa4LdcNwNiCCm0iAKe0WNmAIJQHUcay1o2vTbYB5\nMBA2MbB2DlCAfYWQ/XrmAjHTQjmNsGMZeCFfVx2ubJrJbdKcaTQa7WjMrw1e\nUO7OTny5VywC1XMtEnzfd/RKapGkNLpt7BVp2K3gCQxm6HOcYMxYzzAM8hjD\na36ciC/HAK4OwAaRiuZWbdUSNSurWa6g8PHo/sS/YSEkKEs/L8HnNwoCFzBv\nJmMg9SbCHqkXYdSuDtrHJ7pvY8IFmK2h+SsDKZ47UBobT/9k+CgnM8NicvTQ\nzbyFai4wzHrfzeJka9uNjSjo0s0rk1cdYLQ+iitZytz2A9EbYvVyk8cm9Q5o\nDvi04wWakEDgon0/MrI++F7MI1bGLHnQM+FovWH5ChHNXH+qRQXkWaVRPFkN\nauub+/CDIkI+kHf21SMX1H++eRW7pbQUOYSUCeg2LwMl5j7JcZrJrc87fWqR\n+2aW1aFTYAQGpI510ZOQwBBvxz59zaCzBRv2w7PdMEjVfQ6qH9ZKrdQbF12y\nPaHq\r\n=Vsof\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCl5enFr1wkHq4gBwZAF2n0OL5fII+XJJ7DIm799h+lgQIhAOK2w5tRZlI/ve17UKXPMDl2pTniqpmM3nCJd0btePJT"}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.1.0-next.0_1593668253725_0.6146167281673778"},"_hasShrinkwrap":false},"11.1.0-next.1":{"name":"@nofrills/tasks","version":"11.1.0-next.1","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.7.0","@nnode/lincoln":"^0.7.0","@nnode/lincoln-debug":"^0.5.1","@nofrills/console":"^11.0.0","@nofrills/fs":"^12.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^4.1.0","cli-progress":"^3.8.2","execa":"^4.0.3","jsonschema":"^1.2.6","promise-parallel-throttle":"^3.3.0","rxjs":"^6.6.0","yargs":"^15.4.1","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/cli-progress":"^3.7.0","@types/node":"^14.0.26","@types/yargs":"^15.0.5"},"gitHead":"e9ee6474e45bd2d3493d1441425c36f049cdd89d","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.1.0-next.1","_nodeVersion":"14.5.0","_npmVersion":"lerna/3.22.1/node@v14.5.0+x64 (linux)","dist":{"integrity":"sha512-rXr30ubf5E4xJN/vk6GaQn7MbmsEMOOvfYMcIS3fbF3uE8BN3gpDemQ5RpgcA3bKhOTqH5l10ITx/ViC5eeUQg==","shasum":"c83de434527191e43896f9edc837105b0397b0ea","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.1.0-next.1.tgz","fileCount":181,"unpackedSize":132315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfG+b9CRA9TVsSAnZWagAAU1QQAJQD1LDZOe+0swo4Ps97\njc2o2YIqTIo5rW8f5/ToAuIIFaAHvxZ6WYlHKUIknLq2kr/6YtjB5rNMglHV\nTFhd2rV7nIrzlfIM2xsLeUCGPx/rrySVEmZirf2ouFIIRh64Sg+vfTMCkz7u\nqD3y79aP1kc4PlbJYXlMJPt/6IGpFYpvckKLZLqAfh/nST6Aok0nfRFQC5qH\nGBwdZob/MBePghfXwrZQ1WNDqjNHdj7vtPZ6Yp105+OQUGyY7TQMWvMiaydJ\n5OBNQOyY7VBN1oYvfz+zRPnW+1tRqG/iMLEHs9TKru9MB214UHFsubut2I5K\nyPjU40u5LfvzpktR8ah5e4cexsPRZ2e5YaUW4SI0XojmW4JD1IMZFK7fVMcn\n41P87NO1LijPsjadiSZK2VBRd0UQJVpegM1eJVmNf9Y9bymS3mAOptCGLsCM\nz0U+LqLHTd8KscgEKC8FGW3bGiNyUP3+VYA51OrfBn1NPElAort0fG+iBhc5\nfsocTuqLdYOhXlOfjb1wDdyMFtNC0opaDQE7et7ixyGiAFOAr619xtDdKCEi\npay/XdaV698hrMlCqATJkD/N3MZ7g7i7piQId09C0riihdoeToSSc12w/sBg\nxywwo2/vce0X4Zjb6iQDpEQMvzidHJ8IrM1dH6nCIqA/RMfC3GsWxtbDXeBU\nUS6n\r\n=FKzW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1Qtr7BGXLJCbn014Sb2QU0zc3IRr1PRz47xV00/yzfAIgOYZzK5hbQd+ySGZxDWGrvZxMWonUnCzR2yL6Me0euOo="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.1.0-next.1_1595664124737_0.9635144970628826"},"_hasShrinkwrap":false},"11.1.0":{"name":"@nofrills/tasks","version":"11.1.0","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.7.0","@nnode/lincoln":"^0.7.0","@nnode/lincoln-debug":"^0.5.1","@nofrills/console":"^11.0.0","@nofrills/fs":"^12.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^4.1.0","cli-progress":"^3.8.2","execa":"^4.0.3","jsonschema":"^1.2.6","promise-parallel-throttle":"^3.3.0","rxjs":"^6.6.0","yargs":"^15.4.1","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/cli-progress":"^3.7.0","@types/node":"^14.0.26","@types/yargs":"^15.0.5"},"gitHead":"59ae9490438ff94bc3f76a1eeb15815cce82b87b","_id":"@nofrills/tasks@11.1.0","_nodeVersion":"14.5.0","_npmVersion":"lerna/3.22.1/node@v14.5.0+x64 (linux)","dist":{"integrity":"sha512-V91Pjd6YlH1APj//SwUwoC+1ybvYwn0iLKxCsoQ56KjVIOFISnXVccMyQIDrG11ZNAjSGs8nfi972hB+AgZvPQ==","shasum":"62ba442e6f21df533032a9e6118e51ccc119f6ca","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.1.0.tgz","fileCount":181,"unpackedSize":132724,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfG+u9CRA9TVsSAnZWagAAR9AP/RZY+rTkZwchagFsGSVp\nWmUB+a7HQoUj4KzyDa1zBKjp0EB8NfOITGeNYpEYt7dm7zzyMYbjz+7qRu4Q\n541iodf7N8/rGK8l8Zt6zI4X9O8OmFBud9VjMx0UYsJlh7J2hGKENXLhYVfq\n+4PgOgdUByMQj0k5m5TdqmTxpOb7thCjK2fIlHcn3igKkx3EKwv02FT3lpBl\nxqY78exbIHoOFp7WaxoeJRw6uCOZavbwMlIp2+LwB9RFLd1/wMaS1nzdFAqs\naNNrsL8Wq7do406PJa2NbfeIQQPn/n/XoUd61wjWZY2PhNm34wdj+KWmh+Vb\nFxwkFVXbpVPGTRsA5YO3HCtVz85Zk1HLXrNYYLDGZp1hN9S1LTAiZIUVrHch\njHecCNxwUME0yOxH/RJ6ZegJvv+Ny63lJEesnsIVn4sRsE6ERQ2ECwiNgFc0\n8zzWBQOGV6RKg7HjhyYSMK0syjvoXZ/LxWCV5hcGSJeUdlLdQqe267HMQCJL\nj9Lzf1sqdu/tLECORQCx90Xfr5d6mFJou9Mxdazm8yFgW+tkYYhjKsGcUu/k\nkYYuXZLAaiSbariyfgrjKMe8W6RbXhPnzW7uiW+/5am9/a8Dyx6uZj6itM5K\nWVEPzCScO5DlZ0I7MDKxkB/CI7iyWth/uyLzH3Dbfz+cLLLAAYvn1ehAAcwr\nvCAA\r\n=Zu76\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHpLkdhXgY2+WefKgGXMuhk09h9HZRXpAtwF/PibsPccAiEAq+XFg57OZ9caICF/AeEFrAvQm/Ha6USK8OZ9VpwtAZY="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.1.0_1595665340999_0.6115979544103767"},"_hasShrinkwrap":false},"11.1.1-next.0":{"name":"@nofrills/tasks","version":"11.1.1-next.0","description":"Simple NPM package task builder.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"homepage":"https://github.com/nativecode-dev/cli-tools","author":{"name":"opensource@nativecode.com"},"bin":{"cli-task":"bin/index.js","cli-tasks":"bin/index.js","tasks":"bin/index.js"},"main":"./src/index.ts","directories":{"lib":"bin","test":"specs"},"publishConfig":{"access":"public"},"scripts":{"build":"ts-node src build","upgrade":"npx npm-check -y"},"engine":{"node":">=8.10.49"},"types":"./bin/index.d.ts","dependencies":{"@nnode/common":"^0.7.0","@nnode/lincoln":"^0.7.0","@nnode/lincoln-debug":"^0.5.1","@nofrills/console":"^11.0.0","@nofrills/fs":"^12.0.0","@nofrills/patterns":"^10.0.1","@nofrills/scrubs":"^11.0.0","@nofrills/types":"^10.0.2","chalk":"^4.1.0","cli-progress":"^3.8.2","execa":"^4.0.3","jsonschema":"^1.2.6","promise-parallel-throttle":"^3.3.0","rxjs":"^6.6.0","yargs":"^15.4.1","yargs-interactive":"^3.0.0"},"devDependencies":{"@types/cli-progress":"^3.7.0","@types/node":"^14.0.26","@types/yargs":"^15.0.5"},"gitHead":"241262fa9c15701ab64aefe2c1f6155bbc6bdfb2","readme":"# @nofrills/tasks\n\n[![npm](https://img.shields.io/npm/v/@nofrills/tasks.svg?style=flat-square)](https://www.npmjs.com/package/@nofrills/tasks)\n\n# Introduction\n\n`tasks` is a simple to use task executor that can work stand-alone using a `tasks.json` or in a `package.json` file. Tasks allows you to specify a set of commands that form a script.\n\n# Install\n\n```bash\nnpm install --save @nofrills/tasks\n```\n\n# Specifying Tasks\n\n## Simple\n\nA task can be as simple as a command to call an executable.\n\n```json\n{\n  \"tasks\": {\n    \"echo\": [\"echo $0\"]\n  }\n}\n```\n\nAfter saving to `tasks.json`, you can execute the command by running `cli-tasks echo`.\n\nYou can also specify multiple commands to run for any give task.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"rm -rf lib\",\n      \"tslint --project tsconfig.json --config tslint.json\",\n      \"tsc --project tsconfig.json\"\n    ]\n  }\n}\n```\n\nWhen you run the task, it will execute the commands in order. Hopefully, you can quickly see how by using just this construct, it allows you go string together any common operating system task.\n\n## Injection\n\nWe can take it a step further by supporting injecting other tasks together.\n\n```json\n{\n  \"tasks\": {\n    \"build\": [\n      \"[clean]\",\n      \"[lint]\",\n      \"[build:tsc]\"\n    ],\n    \"build:tsc\": [\n      \"tsc --project tsconfig.json\"\n    ],\n    \"clean\": [\n      \"rimraf lib\"\n    ],\n    \"lint\": [\n      \"tslint --project tsconfig.json --config tslint.json\"\n    ]\n  }\n}\n```\n\nBy using the `[]` syntax, we can inject another task's entries into the current location. When we run `cli-tasks build`, we expect it to run the tasks in order.\n\n```sh\nrimraf lib\ntslint --project tsconfig.json --config tslint.json\ntsc --project tsconfig.json\n```\n\n# Prefixes\n\nYou can use prefixes before a command to let the runner know you want to do something special with this particular entry.\n\n|prefix|meaning   |\n|------|----------|\n| !    | bail     |\n| @    | capture  |\n| :    | exec     |\n| >    | spawn    |\n| #    | skip     |\n\nWhen the `bail` [`!`] prefix is encountered when the command fails, all processing from further entries wiill be stopped.\n\nWhen the `capture` [`@`] prefix is encountered, it will capture rather than inherit `stdio` streams, save for `stdin`.\n\nWhen then `exec` [`:`] prefix is encountered, it will use `exec` rather than `spawn`.\n\nWhen the `spawn` [`>`] prefix is encountered, it will use `spawn`, which is the `default`.\n\nWhen the `skip` [`#`] prefix is encountered, the command will not be executed.\n\n# Advanced Tasks\n\nSo far, we've been using the short-hand for defining tasks. However, the underlying library supports a more descriptive structure.\n\n```typescript\nexport interface Task {\n  entries: TaskEntry[]\n  shell?: boolean | string\n}\n```\n\nThe `Task` type defines a list of entries in addition to allowing you to specify the shell to use when executing the task.\n\n```typescript\nexport interface TaskEntry {\n  arguments?: string[]\n  command: string\n  name?: string\n}\n```\n\nA `TaskEntry` specifies the command to run.\n\n```json\n{\n  \"tasks\": {\n    \"build\": {\n      \"entries\": [{\n        \"arguments\": [\"$0\"],\n        \"command\": \"echo\",\n        \"name\": \"current-shell\"\n      }],\n      \"shell\": \"/bin/bash\"\n    }\n  }\n}\n```\n\n# License\nCopyright 2018 NativeCode Development <opensource@nativecode.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the Software without restriction, including without\nlimitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the\nSoftware, and to permit persons to whom the Software is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n","readmeFilename":"README.md","_id":"@nofrills/tasks@11.1.1-next.0","_nodeVersion":"14.5.0","_npmVersion":"lerna/3.22.1/node@v14.5.0+x64 (linux)","dist":{"integrity":"sha512-sBCmMRBsHgTt1x43/c9poPVzJd8e49dszh5BtI8aZigHbD9cRdRSOWSBHRXpOky4K9f579U2es0C282JziZD/w==","shasum":"f9b31873d56477f488e11436c2cc0c8e7f626815","tarball":"https://registry.npmjs.org/@nofrills/tasks/-/tasks-11.1.1-next.0.tgz","fileCount":181,"unpackedSize":132731,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfG+x6CRA9TVsSAnZWagAA1t8P/i+w6Mis6uQdz1wg0eT5\nPM9x5HvnsFX2Va6d766eTrSBe0v7829ZRrsc2m1BWFEMWT7KglDzumf1mgrX\nU2gscI1P/p6SxRu5tAhOLHflJSJs3N6uNqdlzRA2zkA1S8vxcXup02GO23DX\nxo0Yu4nvR+98jTHbBJPgU4Ar3xZ7eWAv+LC6v0/Duen++nmoI5jbeqZWCbs6\nWa1HiQSGwR+h+j4k1JqOTH99wHdzsY2s5o8j8R7jSAIye6M8xtoogzzNHNyr\ngNqS/4xQjSFGr1/0Hw4M1yeAXKcWt2YF8a/vylIYyExHigaSsDCYEHiCzMKR\nJwgqw46I13WHRAoZb/aSlHObvVzQCZe2axPapf2YYmxORYwFnRLD6FPNLKY0\nCioRFP1oXj3Wb+3m+PZCNMEey7xCynUw2zRF4ylyw/u9qD5EliuIG2hnnyeQ\nsQnRXLAGLRjNWI1g65HzNo74Yv87zhTLDJx3aHrIpEqMC0eH8Ual7sVMC3n0\nYKKHIILJPh11vBn+jl56SWpQw4FZbb2k3bmaGwMLWOdUzyVPkmDnCTIPR1Zn\nqx2IqtRrbFGYSvpNJZhNZIedEekxj3qKlSbqDYiDkTZ0WICItXXMZEnGBfxd\nhLuOPVqcWm4/6EIrm/vPZaq8INvgt8vjzoc1+w8hUqr/GNa30nNq/VKxGc1K\nBBLH\r\n=uT7D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAv0EtKqUPrN7p7Ggl+qY1Y3civgrT0wq37f54JMIOUmAiAnVU9Wdx8Tm2Zv2CaN0vGCRbpMg1dBn98jfWb4LmsbFQ=="}]},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"_npmUser":{"name":"teegee","email":"reginfo@nativecode.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tasks_11.1.1-next.0_1595665529833_0.4555436142087532"},"_hasShrinkwrap":false}},"time":{"created":"2018-09-10T16:15:24.026Z","2.0.0":"2018-09-10T16:15:24.314Z","modified":"2022-04-06T09:26:41.880Z","2.0.1":"2018-09-10T23:36:22.119Z","2.1.0":"2018-09-11T06:09:35.082Z","2.2.0":"2018-09-11T17:25:04.411Z","2.2.1":"2018-09-11T18:08:58.689Z","3.0.0":"2018-09-11T18:27:29.423Z","3.0.1":"2018-09-12T18:13:22.421Z","3.0.2":"2018-09-12T18:28:25.884Z","3.0.3":"2018-09-12T19:29:36.887Z","3.0.4":"2018-09-12T20:11:22.383Z","3.1.0":"2018-09-12T23:13:39.241Z","3.1.7":"2018-09-13T03:14:03.708Z","4.0.0":"2018-09-14T04:36:04.818Z","4.0.1":"2018-09-14T22:35:27.006Z","4.0.2":"2018-09-15T02:30:28.827Z","4.1.0":"2018-09-15T06:07:31.778Z","4.1.1":"2018-09-15T06:33:39.960Z","4.1.2":"2018-09-15T07:07:23.402Z","4.1.3":"2018-09-15T07:26:52.707Z","4.1.4":"2018-09-15T07:38:14.366Z","4.1.5":"2018-09-16T05:37:11.395Z","4.1.6":"2018-09-16T16:00:31.464Z","4.1.7":"2018-09-16T16:40:33.605Z","4.1.8":"2018-09-16T17:34:58.724Z","4.1.9":"2018-09-17T16:58:06.220Z","5.0.0":"2018-09-20T02:17:51.440Z","5.1.0":"2018-09-20T03:49:23.301Z","5.1.1":"2018-09-21T22:42:27.196Z","5.2.0":"2018-09-21T23:23:09.064Z","5.3.0":"2018-09-21T23:53:45.273Z","5.3.1":"2018-09-22T15:12:49.621Z","5.4.0":"2018-09-22T16:44:02.168Z","5.4.1":"2018-09-22T17:20:30.653Z","5.4.2":"2018-09-22T18:10:38.262Z","5.4.3":"2018-09-23T03:53:40.687Z","5.5.0":"2018-09-23T21:56:01.773Z","5.5.1":"2018-09-24T00:13:27.134Z","5.5.2":"2018-09-24T00:47:24.706Z","5.5.3":"2018-09-24T01:21:23.046Z","5.5.4":"2018-09-24T01:51:56.647Z","5.5.5":"2018-09-24T02:09:21.274Z","5.5.6":"2018-09-24T03:20:54.940Z","5.6.0":"2018-09-24T06:26:56.267Z","5.6.1":"2018-09-24T23:25:26.499Z","5.6.2":"2018-09-25T14:58:47.916Z","5.7.0":"2018-10-09T04:19:28.111Z","5.7.1":"2018-10-09T06:14:45.976Z","5.8.0":"2018-10-09T23:40:00.279Z","5.8.1":"2018-10-10T01:10:29.100Z","5.9.0":"2018-10-10T23:22:54.230Z","5.9.1":"2018-10-11T01:31:51.289Z","5.9.2":"2018-10-11T01:51:22.664Z","5.14.0-alpha.0":"2018-10-16T01:47:20.994Z","5.15.0-alpha.0":"2018-10-16T02:11:48.334Z","5.16.0-alpha.0":"2018-10-16T02:55:37.092Z","5.16.0-alpha.36":"2019-06-14T17:27:28.352Z","5.16.0-alpha.37":"2019-06-14T17:44:51.362Z","5.16.0-next.39":"2019-06-14T17:49:57.170Z","5.17.1-next.66":"2019-06-15T18:12:47.294Z","5.17.1-alpha.67":"2019-06-15T18:17:48.721Z","5.17.0":"2019-06-15T18:50:48.360Z","5.17.1-next.0":"2019-06-15T19:43:19.601Z","5.17.1-next.1":"2019-06-16T01:07:27.704Z","5.17.1-next.2":"2019-06-16T01:10:48.345Z","5.17.1-next.3":"2019-06-16T01:15:48.163Z","5.17.1-next.4":"2019-06-16T01:22:38.400Z","5.17.1-next.5":"2019-06-16T01:25:25.818Z","5.18.0-next.0":"2019-06-16T01:28:36.667Z","5.18.0-next.1":"2019-06-16T01:33:23.539Z","5.18.0-next.3":"2019-06-16T01:42:05.703Z","5.18.0-next.6":"2019-06-16T01:59:25.709Z","5.20.0":"2019-06-16T02:06:11.493Z","5.20.1":"2019-06-16T02:10:16.854Z","5.18.0-alpha.5":"2019-06-16T02:17:21.752Z","5.20.1-next.2":"2019-06-16T02:30:26.653Z","5.20.4":"2019-06-16T03:36:37.327Z","5.20.5-next.0":"2019-06-16T03:39:44.003Z","5.20.5-canary.2":"2019-06-16T03:56:39.631Z","5.20.5-next.1":"2019-06-16T03:59:14.550Z","5.20.5":"2019-06-16T04:03:27.647Z","5.20.6-next.0":"2019-06-16T05:40:47.569Z","5.20.6-canary.0":"2019-06-19T17:58:32.958Z","5.20.6-next.1":"2019-06-19T19:09:26.850Z","5.20.6":"2019-06-19T21:07:29.042Z","5.20.7-next.0":"2019-06-19T21:11:45.333Z","5.20.7":"2019-06-19T21:45:05.344Z","5.20.8-next.0":"2019-06-19T21:47:29.154Z","5.20.6-canary.12":"2019-06-20T00:23:22.876Z","5.20.8-next.1":"2019-06-20T00:25:20.225Z","5.20.6-canary.13":"2019-06-20T00:27:54.652Z","5.20.6-canary.14":"2019-06-20T00:47:13.761Z","5.20.6-canary.17":"2019-06-20T01:02:27.344Z","5.20.8-next.2":"2019-06-20T01:04:24.514Z","5.20.8":"2019-06-20T01:06:44.521Z","5.20.9-next.0":"2019-06-20T01:09:14.296Z","5.20.9-canary.1":"2019-06-20T01:23:21.006Z","6.0.0-next.0":"2019-06-20T01:39:33.098Z","6.0.0-next.1":"2019-06-20T01:43:35.130Z","6.0.0-next.2":"2019-06-20T01:58:05.587Z","6.0.0":"2019-06-20T02:00:51.139Z","6.0.1":"2019-06-20T02:18:21.056Z","6.0.2":"2019-06-20T02:21:53.419Z","6.0.3":"2019-06-20T02:26:12.333Z","6.0.4":"2019-06-20T02:29:54.299Z","6.0.2-canary.7":"2019-06-20T05:49:31.611Z","6.1.0":"2019-06-20T05:52:46.126Z","6.2.0":"2019-06-20T05:56:27.630Z","6.2.1":"2019-06-20T05:58:52.460Z","6.1.1-canary.3":"2019-06-20T06:16:12.932Z","6.1.1-canary.5":"2019-06-20T14:34:52.156Z","6.3.0":"2019-06-20T14:42:18.680Z","6.1.1-canary.7":"2019-06-20T14:51:00.903Z","6.3.1":"2019-06-20T14:59:47.031Z","6.4.0":"2019-06-20T15:05:14.422Z","6.4.1":"2019-06-20T15:08:16.480Z","6.3.2-canary.2":"2019-06-20T21:19:30.267Z","6.3.2-canary.4":"2019-06-20T21:21:58.055Z","6.3.2-canary.5":"2019-06-20T21:26:59.178Z","6.5.0":"2019-06-20T21:29:53.871Z","6.5.1":"2019-06-20T21:33:57.155Z","6.6.1":"2019-06-20T21:45:37.235Z","6.6.2":"2019-06-20T21:59:23.389Z","6.6.3":"2019-06-20T22:02:48.599Z","6.6.4":"2019-06-20T22:05:44.608Z","6.6.5-canary.5":"2019-06-21T03:01:17.170Z","6.6.5-canary.7":"2019-06-21T05:07:09.898Z","6.7.0":"2019-06-21T05:13:05.305Z","6.7.1":"2019-06-21T05:15:37.854Z","6.7.2":"2019-06-21T05:19:46.522Z","6.7.1-canary.1":"2019-06-21T05:32:16.355Z","6.7.1-canary.3":"2019-06-21T15:09:00.977Z","6.7.1-canary.4":"2019-06-21T15:28:44.430Z","6.7.3":"2019-06-21T15:30:42.217Z","6.7.4":"2019-06-21T15:36:13.238Z","6.7.1-canary.5":"2019-06-21T15:54:18.006Z","6.8.0":"2019-06-21T15:55:11.758Z","6.7.1-canary.9":"2019-06-21T17:43:26.210Z","6.7.1-canary.11":"2019-06-21T18:10:14.193Z","6.7.1-canary.12":"2019-06-21T18:10:34.370Z","6.8.1":"2019-06-21T18:22:28.831Z","6.8.2":"2019-06-21T18:29:30.831Z","6.8.3":"2019-06-21T18:36:20.357Z","6.8.4":"2019-06-21T21:06:00.280Z","6.8.5-canary.0":"2019-06-21T22:39:14.071Z","6.8.5":"2019-06-21T22:40:48.554Z","6.8.6":"2019-06-21T22:44:04.057Z","6.8.7":"2019-06-21T22:49:26.654Z","6.8.5-canary.1":"2019-06-21T22:53:04.915Z","6.8.5-canary.4":"2019-06-22T00:19:53.863Z","6.8.5-canary.5":"2019-06-22T00:59:27.761Z","6.8.5-canary.6":"2019-06-22T01:08:12.633Z","7.0.0":"2019-06-22T01:15:51.529Z","7.0.1":"2019-06-22T01:20:30.088Z","7.0.2":"2019-06-22T01:23:40.314Z","7.0.3":"2019-06-22T01:26:03.081Z","7.0.4-canary.0":"2019-06-22T02:30:53.487Z","7.1.0":"2019-06-22T02:33:29.581Z","7.1.1":"2019-06-22T02:37:25.292Z","7.1.2":"2019-06-22T02:40:53.285Z","7.1.3-canary.2":"2019-06-22T21:14:22.955Z","7.1.3-canary.6":"2019-06-23T00:23:41.870Z","7.1.3":"2019-06-23T00:28:54.116Z","7.1.3-canary.17":"2019-06-23T01:59:42.968Z","7.1.4":"2019-06-23T02:16:17.802Z","7.1.5":"2019-06-23T02:18:57.006Z","7.1.6":"2019-06-23T03:59:24.703Z","7.1.7":"2019-06-23T14:10:39.370Z","7.1.8":"2019-06-23T14:14:56.881Z","7.1.7-canary.3":"2019-06-23T14:19:06.165Z","7.1.9-canary.17":"2019-06-27T08:10:45.863Z","7.1.9-canary.16":"2019-06-27T08:32:35.111Z","7.1.9":"2019-06-27T08:36:48.397Z","7.1.10":"2019-06-27T08:40:36.856Z","7.1.10-canary.2":"2019-06-27T09:30:43.410Z","7.1.11":"2019-06-27T09:42:29.559Z","7.1.12":"2019-06-27T09:45:29.742Z","7.1.13":"2019-06-27T09:47:39.658Z","7.1.9-canary.18":"2019-06-28T00:46:27.955Z","7.1.14-canary.1":"2019-09-01T17:42:10.552Z","7.1.14-canary.5":"2019-09-01T18:36:54.749Z","8.0.0":"2019-09-01T18:39:44.889Z","8.0.1-canary.0":"2019-09-01T19:11:57.667Z","9.0.0":"2019-09-01T19:14:11.786Z","8.0.1-canary.1":"2019-09-01T19:30:15.989Z","9.0.1":"2019-09-01T19:33:43.048Z","9.0.2":"2019-09-02T00:22:42.610Z","10.0.0":"2019-10-05T03:35:50.415Z","10.0.2":"2020-01-10T04:53:41.922Z","10.0.3":"2020-01-10T04:56:41.753Z","10.0.4-canary.18":"2020-02-23T05:07:59.423Z","10.0.4-canary.19":"2020-02-23T08:04:15.863Z","10.0.4-canary.21":"2020-02-23T08:07:12.269Z","10.0.4-canary.22":"2020-02-23T08:20:11.252Z","10.1.0-next.0":"2020-02-23T08:23:58.171Z","11.0.0-next.1":"2020-02-23T08:29:20.401Z","11.0.0-canary.1":"2020-02-23T16:14:12.133Z","11.0.0-canary.2":"2020-02-23T20:58:52.112Z","11.0.0-next.2":"2020-02-26T01:13:59.824Z","11.0.0-next.3":"2020-02-26T02:00:32.818Z","11.0.0-next.4":"2020-02-26T22:47:13.442Z","11.0.0-next.5":"2020-02-28T01:41:51.025Z","11.0.0-next.6":"2020-02-28T01:47:04.545Z","11.0.0-next.7":"2020-02-28T12:39:31.071Z","11.0.0-next.8":"2020-02-28T16:54:53.181Z","11.0.0-next.9":"2020-02-28T18:03:47.138Z","11.0.0-next.10":"2020-02-29T02:05:37.001Z","11.0.0-next.11":"2020-02-29T03:58:39.542Z","11.0.0-next.12":"2020-02-29T04:02:38.366Z","11.0.0-next.13":"2020-02-29T04:20:37.413Z","11.0.0-next.14":"2020-03-04T04:08:07.378Z","11.0.0-next.15":"2020-03-11T13:42:35.437Z","11.0.0-next.16":"2020-03-11T13:49:35.028Z","11.0.0":"2020-05-30T08:38:16.283Z","11.0.0-next.17":"2020-07-02T03:22:07.201Z","11.1.0-next.0":"2020-07-02T05:37:33.911Z","11.1.0-next.1":"2020-07-25T08:02:04.854Z","11.1.0":"2020-07-25T08:22:21.089Z","11.1.1-next.0":"2020-07-25T08:25:30.000Z"},"maintainers":[{"name":"nativecode-dev","email":"support@nativecode.com"},{"name":"no-frills","email":"support@nativecode.com"},{"name":"teegee","email":"reginfo@nativecode.com"}],"description":"Simple NPM package task builder.","homepage":"https://github.com/nativecode-dev/cli-tools","repository":{"type":"git","url":"git+https://github.com/nativecode-dev/cli-tools.git"},"author":{"name":"opensource@nativecode.com"},"bugs":{"url":"https://github.com/nativecode-dev/cli-tools/issues"},"license":"MIT","readme":"","readmeFilename":""}