Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alinz/configator
configator is a set of tools to deal with configuration files
https://github.com/alinz/configator
config generator javascript markdown nodejs typescript
Last synced: about 2 months ago
JSON representation
configator is a set of tools to deal with configuration files
- Host: GitHub
- URL: https://github.com/alinz/configator
- Owner: alinz
- Created: 2019-06-04T13:56:45.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-07T06:10:20.000Z (about 2 years ago)
- Last Synced: 2023-04-03T10:09:44.140Z (almost 2 years ago)
- Topics: config, generator, javascript, markdown, nodejs, typescript
- Language: TypeScript
- Size: 1.21 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Configator
`configator` is a command line tool built to deal with configuration. In a nut-shell, it reads Markdown table such as the following:
```
| Property | Type | Range | Default | Description |
|----------|--------|-------|---------|----------------|
| a.b.c | range | 1..10 | 5 | awesome value1 |
| a.b.d | range | a,b,c | b | awesome value2 |
| a.b.e | multi | a,b,c | b,a | awesome value3 |
```and convert it into **chainable** and **statically typed** typescript like the following:
```ts
export const conf = { 'a.b.c': 5, 'a.b.d': 'b', 'a.b.e': 'b,a' }
export const config = (conf: { [key: string]: any }) => {
const update = {
a: {
b: {
c: (val: number) => {
conf['a.b.c'] = val
return update
},
d: (val: 'a' | 'b' | 'c') => {
conf['a.b.d'] = val
return update
},
e: (...val: ('a' | 'b' | 'c')[]) => {
conf['a.b.e'] = val.join(',')
return update
},
},
},
}
return update
}
```The chainable api helps navigate through deeply nested configuration, and statically typed definition prevents casual typo mistake.
# Usage
install as global using either `yarn` or `npm`
```
yarn install configator --global
```compile `CONFIG.md` file and output as `config.ts`
```
configator -i ./docs/CONFIG.md -o ./src/config.ts --typescript
```# Markdown Table Definition
At the moment, there are `boolean`,`number`,`function`,`string`,`range` and `multi` which are supported.
`range` is a specific type which handles `1..10` and `apple,orange,banana`.
`multi` is the same as `apple,orange,banana` but one or more item can be pass and set as `range` only one item can be set.
# Toolchain
`configator` comes with couple of toolchain. As far as Markdown table goes, editing that table is painful. for that reason, `configator` comes with `Markdown Table` to `CSV` file convertor. The `CSV` file can be open easily by any data sheet software and can be modified easily. Once the file is saved back to csv file, `configator` can convert back to `Markdown Table` file.
converts md file to csv
```
configator -i ./docs/CONFIG.md -o ./docs/CONFIG.csv --csv
```convert csv back to md file
```
configator -i ./docs/CONFIG.csv -o ./docs/CONFIG.md --table
```