npm.io
0.6.0 • Published 7 years agoCLI

tranz

Licence
MIT
Version
0.6.0
Deps
15
Size
62 kB
Vulns
0
Weekly
0
Stars
1

tranz

Build status Test coverage NPM version NPM Downloads Prettier Conventional Commits

The framework for transform anything

Feature

  • Allow running shell script as processor
  • Allow concurrent multi-processor for fast speed
  • Support runtime configuration

Where use it?

  • Transform git commit message for your self own processor.

    Use it with husky (Git hooks made easy)

    {
      "tranz": {
        "processors": ["echo '$(cat)\n\nbranch: $(git rev-parse --abbrev-ref HEAD)'"]
      },
      "husky": {
        "hooks": {
          "commit-msg": "npx tranz $HUSKY_GIT_PARAMS --write"
        }
      }
    }

    Then the end of commit message would be appended with current branch name.

Installation

npm install tranz
# or use yarn
yarn add tranz

Usage

Package
tranz(input: any, processors: Array<Function | [string, any] | string>, options?): Promise<any>
  • index.js
import { join } from 'path'
import tranz from 'tranz'

tranz(
  'abc',
  [
    // function
    require('./lib/wrapper')({ c: '-' }),
    // return Processor[]
    require('./lib/multi-wrapper')({ c: 0 }),
    // [moduleId: string, options: any]
    ['./wrapper', { c: '_' }],
    // module name with query string
    './wrapper?c=
  • lib/wrapper.js
module.exports = ({ c }) =>
  function(input) {
    // this.cwd === __dirname
    // this.parallel === false
    // this.userc === true
    // `this` is equals to options shallowly

    return `${c}${input}${c}`
  }
  • lib/multi-wrapper.js
module.exports = ({ c }) => [input => `${c}${input}${c}`, input => Promise.resolve(`${c + 1}${input}${c + 1}`)]
CLI
npm i tranz -D
npx tranz -h

tranz -i $PWD -p ./upper
cat $PWD | tranz -p ./upper
RC Config
  • package.json
{
  "tranz": {
    "processors": [
      [
        "../processor-wrapper",
        {
          "char": "abc"
        }
      ],
      "../processor-upper",
      "module-p-fix?q=halala"
    ],
    "parallel": false
  }
}
Bulit-in Processor

See source code

  • _json-parse - run JSON.parse(input, reviver?)
  • _json-stringify - run JSON.stringify(input, replacer?, space?)
Example
tranz({ key: 'foo' }, [['_json-stringify', { space: 2 }]]).then(output => {
  // {
  //   "key": "foo"
  // }
})
Processor Inheritance

Write the processor as follow:

// This processor depends `./upper` and `./trimLeft` processor
module.exports = opts => [require('./upper')({}), [require.resolve('./trimLeft'), {}]]
Multi-tranz config in rc config
  • package.json

    {
      "tranz": {
        "foo": {
          "processors": [
            "echo foo"
          ],
          "parallel": true
        }
        "processors": [
          "echo default"
        ],
        "parallel": false
      }
    }
  • Run command in shell

    tranz --input="" # echo default
    tranz --input="" --name="foo" # echo foo

Tests

Unit
npm test
Benchmark
npm run benchmark

Roadmap

  • file write [tranz-globs]
  • file glob [tranz-globs]
  • ignore files [tranz-globs]

Authors

This library is written and maintained by imcuttle, moyuyc95@gmail.com.

License

MIT

, // shell script // get input from stdin // output from stdout 'echo $(cat)-abc' ], { // Resolve processor path's base dir // Default: $PWD cwd: join(__dirname, 'lib'), // Whether run tranz parallelly // Note: parallel mode could enabled when all of the processor is typeof `string` (serializable) // Default: false parallel: false, // Search runtime configuration. // e.g. 1. `tranz` field in `package.json` // 2. file named `.tranzrc` // 3. file named `.tranzrc.js` // Default: true userc: true } ).then(output => { console.log(output) }) // Output: // $_10-abc-01_$-abc
  • __INLINE_CODE_2__
__CODE_BLOCK_3__
  • __INLINE_CODE_3__
__CODE_BLOCK_4__
CLI
__CODE_BLOCK_5__
RC Config
  • __INLINE_CODE_4__
__CODE_BLOCK_6__
Bulit-in Processor

See source code

  • _json-parse - run __INLINE_CODE_5__
  • _json-stringify - run __INLINE_CODE_6__
Example
__CODE_BLOCK_7__
Processor Inheritance

Write the processor as follow:

__CODE_BLOCK_8__
Multi-tranz config in rc config
  • __INLINE_CODE_7__

    __CODE_BLOCK_9__
  • Run command in shell

    __CODE_BLOCK_10__

Tests

Unit
__CODE_BLOCK_11__
Benchmark
__CODE_BLOCK_12__

Roadmap

  • file write [tranz-globs]
  • file glob [tranz-globs]
  • ignore files [tranz-globs]

Authors

This library is written and maintained by imcuttle, moyuyc95@gmail.com.

License

MIT

Keywords