fluent-bit config parser for js/ts
npm install @calyptia/fluent-bit-config-parserConfiguration parser for Fluent-bit
- Getting Started
- How to import
- Use Cases
- Contributing
- License
fluent-bit configuration parser will allow you to validate some aspects of fluent-bit configuration.
for more information about fluent-bit configuration you can visit fluent-bit website.
You can import the parser as follows:
``typescript`
import { FluentBitSchema } from '@calyptia/fluent-bit-config-parser';
This library offers a couple of methods:
schema: it will return the parsed configuration as a fluent-bit schema.
toString(): it will return the parsed schema, back to a string
source: it will return the config as it was provided.
FluentBitSchema.isFluentBitConfiguration: A static method, to validate if the configuration is fluentBit. It's important to notice, that this method, will not confirm if the provided config is valid. For that please see below:
`typescript
import fs from 'fs';
import { FluentBitSchema } from '@calyptia/fluent-bit-config-parser';
const filePath = '/path/to/file.conf';
const file = fs.readFileSync(filePath, { encoding: 'utf-8' });
console.log(FluentBitSchema.isFluentBitConfiguration(file)); // => true/false
`
`typescript
import fs from 'fs';
import { FluentBitSchema } from '@calyptia/fluent-bit-config-parser';
const filePath = '/path/to/file.conf';
const file = fs.readFileSync(filePath, { encoding: 'utf-8' });
try {
const config = new FluentBitSchema(file);
console.log('yay! my configuration is valid');
} catch (e) {
console.log(e.message); // this message will provide some insight int what went wrong.
}
`
`typescript
import fs from 'fs';
import { FluentBitSchema } from '@calyptia/fluent-bit-config-parser';
const filePath = '/path/to/file.conf';
const file = fs.readFileSync(filePath, { encoding: 'utf-8' });
const config = new FluentBitSchema(file, filePath);
console.log(config.toString());
`
FluentBitSchema can handle directives such as @SET and @INCLUDE. That's why the second argument is a filePath. Sometimes the configuration we create has full paths. These paths will most likely change when placing them in a repository. If that's your case, you can set ignoreFullPaths: true and the parser will ignore @INCLUDES containing full paths. One handy example of this could be:
`typescript
import fs from 'fs';
import { FluentBitSchema } from '@calyptia/fluent-bit-config-parser';
const filePath = '/path/to/file.conf';
const rawConfig =
@INCLUDE /this/is/a/full/path/that/does/not/exist/in/my/repo/config.conf
[INPUT]
name dummy;
const file = fs.readFileSync(filePath, { encoding: 'utf-8' });
const config = new FluentBitSchema(file, filePath, { ignoreFullPaths: true });
console.log(config.toString()); // will not contain the @INCLUDE directive call.
`
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated greatly appreciated.
1. Fork the Project
2. Create your Feature Branch (git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature'
3. Commit your Changes ()git push origin feature/AmazingFeature
4. Push to the Branch ()
5. Open a Pull Request
Distributed under the MIT License. See LICENSE` for more information.