https://github.com/chronosphereio/calyptia-fluent-bit-config-parser
🐦 ⚙️ 🦫 for JS/TS
https://github.com/chronosphereio/calyptia-fluent-bit-config-parser
configuration fluent-bit parser typescript
Last synced: 6 months ago
JSON representation
🐦 ⚙️ 🦫 for JS/TS
- Host: GitHub
- URL: https://github.com/chronosphereio/calyptia-fluent-bit-config-parser
- Owner: chronosphereio
- License: apache-2.0
- Created: 2021-12-09T14:25:12.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-06-18T08:06:54.000Z (about 2 years ago)
- Last Synced: 2025-10-10T18:55:55.908Z (10 months ago)
- Topics: configuration, fluent-bit, parser, typescript
- Language: TypeScript
- Homepage:
- Size: 2.92 MB
- Stars: 3
- Watchers: 8
- Forks: 1
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Configuration parser for [Fluent-bit](https://github.com/fluent/fluent-bit)
## Table of Contents 🦫
- [Getting Started](#getting-started)
- [How to import](#how-to-import)
- [Use Cases](#use-cases)
- [Contributing](#contributing)
- [License](#license)
## Getting Started
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](https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/configuration-file).
### How to import
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:
## Use cases.
### I have a file, but I'm not sure if is fluent-bit or Fluentd:
```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
```
### I want to confirm if my `fluent-bit` configuration is valid:
```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.
}
```
### I would like to re-format my configuration.
```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());
```
### Options
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.
```
## Contributing
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`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## License
Distributed under the MIT License. See `LICENSE` for more information.