Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aboviq/kollektor
Generic file collector, useful for mono repos and microservices
https://github.com/aboviq/kollektor
fs microservices monorepo
Last synced: about 1 month ago
JSON representation
Generic file collector, useful for mono repos and microservices
- Host: GitHub
- URL: https://github.com/aboviq/kollektor
- Owner: aboviq
- Created: 2018-11-07T19:29:09.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-03-02T12:29:25.000Z (almost 2 years ago)
- Last Synced: 2024-11-14T21:38:40.858Z (2 months ago)
- Topics: fs, microservices, monorepo
- Language: JavaScript
- Size: 1.05 MB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# @aboviq/kollektor
[![Build status][travis-image]][travis-url] [![NPM version][npm-image]][npm-url] [![XO code style][codestyle-image]][codestyle-url]
> Generic file collector, useful for mono repos and microservices
## Installation
Install `@aboviq/kollektor` using [npm](https://www.npmjs.com/):
```bash
npm install @aboviq/kollektor
```## Usage
### Module usage
```javascript
const kollektor = require('@aboviq/kollektor');// Read all package.json files in a mono-repo async:
const packages = await kollektor({
handlers: {
'package.json': packageFile => require(packageFile)
}
});// ...or sync:
const packages = kollektor.sync({
handlers: {
'package.json': packageFile => require(packageFile)
}
});
```## API
### `kollektor(options)`
| Name | Type | Description |
| ------- | -------- | ------------------------------------------------- |
| options | `Object` | Options for specifying the behaviour of Kollektor |Returns: `Promise>`, all collected information depending on given [handlers](#optionshandlers).
### `kollektor.sync(options)`
| Name | Type | Description |
| ------- | -------- | ------------------------------------------------- |
| options | `Object` | Options for specifying the behaviour of Kollektor |Returns: `Array`, all collected information depending on given [handlers](#optionshandlers).
#### Options
#### `options.cwd`
Type: `String`
Default: `process.cwd()`Sets the current working directory
#### `options.handlers`
Type: `Object`
Example:
```js
{
"handlers": {
"package.json": () => {},
"*.yml": () => {},
"README.md": () => {}
}
}
```##### `Handler` definition
Type: `Function`
Signature: `handlerName :: String -> Object -> Object``handlerName` is the name of the handler and is usually a filename, e.g. `"package.json"` which will call the handler for each package.json file it finds. The `handlerName` can also be a simple pattern matching multiple files, e.g: `"*.yml"`.
When a file is found that matches the `handlerName` the handler function will be called with these arguments:
| Name | Type | Description |
| -------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| fullPath | `String` | The full path to the found file |
| data | `Object` | This contains `dir` (the relative path of the folder), `dirPath` (the full path of the folder) and all data returned from previous handlers affecting the same folder |The handler function can be async (return a promise) for the asynchronous version of Kollektor but must be synchronous for the sync version.
Any `Object` returned from a handler is merged with the current folder's `data` and will be fed to the next handler affecting files in the same folder. When all handlers have been called and completed for a specific folder the resulting `data` is what's being returned in the `Array` of collected information. See the tests for more details on how it works.
## Contributing
See [Contribution Guidelines](CONTRIBUTING.md) and our [Code Of Conduct](CODE_OF_CONDUCT.md).
## License
MIT © [Aboviq AB](https://www.aboviq.com/)
[npm-url]: https://npmjs.org/package/@aboviq/kollektor
[npm-image]: https://badge.fury.io/js/%40aboviq%2Fkollektor.svg
[travis-url]: https://travis-ci.org/aboviq/kollektor
[travis-image]: https://travis-ci.org/aboviq/kollektor.svg?branch=master
[codestyle-url]: https://github.com/sindresorhus/xo
[codestyle-image]: https://img.shields.io/badge/code%20style-XO-5ed9c7.svg?style=flat