https://github.com/arlac77/pmcf
Poor mans configuration management
https://github.com/arlac77/pmcf
Last synced: 24 days ago
JSON representation
Poor mans configuration management
- Host: GitHub
- URL: https://github.com/arlac77/pmcf
- Owner: arlac77
- License: 0bsd
- Created: 2025-01-15T14:38:24.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2026-07-04T00:17:50.000Z (27 days ago)
- Last Synced: 2026-07-04T02:14:02.404Z (27 days ago)
- Language: JavaScript
- Size: 2.72 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://www.npmjs.com/package/pmcf)
[](https://spdx.org/licenses/0BSD.html)
[](https://bundlejs.com/?q=pmcf)
[](https://npmjs.org/package/pmcf)
[](https://github.com/arlac77/pmcf/issues)
[](https://actions-badge.atrox.dev/arlac77/pmcf/goto)
[](https://github.com/prettier/prettier)
[](http://commitizen.github.io/cz-cli/)
[](https://snyk.io/test/github/arlac77/pmcf)
# pmcf
## Poor mans configuration management
Generates system packages from config blueprint.
supported linux derivates:
* arch linux
* debian
* rpm based systems
generates config packages for:
* systemd
* networkd
* timesyncd
* resolverd
* journald
* kea
* bind
* mosquitto
* influxdb
* iwd
* chrony
* openldap
# API
### Table of Contents
* [Base](#base)
* [mapFromDirections](#mapfromdirections)
* [Parameters](#parameters)
* [unionFromDirections](#unionfromdirections)
* [Parameters](#parameters-1)
* [walkDirections](#walkdirections)
* [Parameters](#parameters-2)
* [attribute](#attribute)
* [Parameters](#parameters-3)
* [attributeIterator](#attributeiterator)
* [Parameters](#parameters-4)
* [getAttributes](#getattributes)
* [Parameters](#parameters-5)
* [property](#property)
* [Parameters](#parameters-6)
* [priority](#priority)
* [expression](#expression)
* [Parameters](#parameters-7)
* [templateContent](#templatecontent)
* [Parameters](#parameters-8)
* [isTemplate](#istemplate)
* [expand](#expand)
* [Parameters](#parameters-9)
* [serviceEndpoints](#serviceendpoints)
* [Parameters](#parameters-10)
* [PortEndpoint](#portendpoint)
* [Parameters](#parameters-11)
* [port](#port)
* [socketAddress](#socketaddress)
* [HTTPEndpoint](#httpendpoint)
* [Parameters](#parameters-12)
* [port](#port-1)
* [id](#id)
* [domainNames](#domainnames)
* [InitializationContext](#initializationcontext)
* [Parameters](#parameters-13)
* [SkeletonNetworkInterface](#skeletonnetworkinterface)
* [networkAddresses](#networkaddresses)
* [Parameters](#parameters-14)
* [SystemdJournalRemoteService](#systemdjournalremoteservice)
* [Properties](#properties)
* [systemdConfigs](#systemdconfigs)
* [Parameters](#parameters-15)
* [SystemdJournalUploadService](#systemdjournaluploadservice)
* [Properties](#properties-1)
* [systemdConfigs](#systemdconfigs-1)
* [Parameters](#parameters-16)
* [NetworkAddress](#networkaddress)
* [Parameters](#parameters-17)
* [subnet](#subnet)
* [networkInterface](#networkinterface)
* [address](#address)
* [addresses](#addresses)
* [Parameters](#parameters-18)
* [cidrAddresses](#cidraddresses)
* [Parameters](#parameters-19)
* [families](#families)
* [secretName](#secretname)
* [directHosts](#directhosts)
* [subnetForAddress](#subnetforaddress)
* [Parameters](#parameters-20)
* [domainName](#domainname)
* [Parameters](#parameters-21)
* [domainFromDominName](#domainfromdominname)
* [Parameters](#parameters-22)
* [sectionLines](#sectionlines)
* [Parameters](#parameters-23)
* [asArray](#asarray)
* [Parameters](#parameters-24)
* [asIterator](#asiterator)
* [Parameters](#parameters-25)
## Base
attributes: as declared in the types
properties: use defined values to support attribute value definitions
### mapFromDirections
Deliver AggregatedMap of all property Maps.
#### Parameters
* `directions` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>**
* `property` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
Returns **[Map](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Map)\**
### unionFromDirections
Deliver union set of all property values.
#### Parameters
* `directions` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>**
* `property` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
Returns **[Set](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Set)\**
### walkDirections
Walk the object graph in some directions and deliver seen nodes.
#### Parameters
* `directions` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** (optional, default `["this","extends","owner"]`)
Returns **Iterable<[Base](#base)>**
### attribute
#### Parameters
* `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
Returns **any**
### attributeIterator
Retrive attribute values from an object.
#### Parameters
* `filter` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?**
Returns **Iterable<\[[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), any]>** values
### getAttributes
Retrive attribute values from an object.
#### Parameters
* `filter` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** (optional, default `filterPublic`)
Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** values
### property
#### Parameters
* `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
Returns **any**
### priority
Returns **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)**
### expression
#### Parameters
* `expression` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
* `options` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**
Returns **any**
### templateContent
#### Parameters
* `entryProperties` **any**
* `directoryProperties` **any**
Returns **AsyncIterable\**
### isTemplate
Returns **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)**
### expand
#### Parameters
* `object` **any**
Returns **any**
## serviceEndpoints
### Parameters
* `sources` **any**
* `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** (optional, default `{}`)
* `options.services` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** filter for services
* `options.endpoints` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** filter for endpoints
* `options.select` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** mapper from Endpoint into result
* `options.limit` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** upper limit of # result items
* `options.join` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** join result(s) into a string
Returns **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | any)**
## PortEndpoint
**Extends BaseEndpoint**
Endpoint with an ip port
### Parameters
* `service`
* `data`
### port
Returns **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)**
### socketAddress
Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
## HTTPEndpoint
**Extends BaseEndpoint**
Endpoint based on http
### Parameters
* `service` **Service**
* `address` **any**
* `data` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**
### port
Returns **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)**
## id
Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
## domainNames
Returns **[Set](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Set)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>**
## InitializationContext
Keeps track of all in flight object creations and loose ends during config initialization.
### Parameters
* `directory` (optional, default `"/"`)
## SkeletonNetworkInterface
**Extends ServiceOwner**
### networkAddresses
#### Parameters
* `filter` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `n=>true`)
Returns **Iterable<[NetworkAddress](#networkaddress)>**
## SystemdJournalRemoteService
**Extends CoreService**
### Properties
* `ServerCertificateFile` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
* `ServerKeyFile` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
### systemdConfigs
#### Parameters
* `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**
## SystemdJournalUploadService
**Extends CoreService**
### Properties
* `URL` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
* `ServerCertificateFile` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
* `ServerKeyFile` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
### systemdConfigs
#### Parameters
* `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**
## NetworkAddress
### Parameters
* `networkInterface` **NetworkInterface**
* `address` **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) | [Uint16Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array))**
* `subnet` **Subnet**
### subnet
Type: Subnet
### networkInterface
Type: NetworkInterface
### address
Type: ([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) | [Uint16Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array))
## addresses
### Parameters
* `sources` **Iterable<(Owner | [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))>**
* `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**
* `options.aggregate` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)**
* `options.filter` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**
Returns **Iterable<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** addresses
## cidrAddresses
### Parameters
* `networkAddresses` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[NetworkAddress](#networkaddress)>**
Returns **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>**
## families
Returns **[Set](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Set)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>**
## secretName
Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
## directHosts
hosts we own direcly.
## subnetForAddress
### Parameters
* `address` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
Returns **Subnet?**
## domainName
Appends default domain if name does not already have a domain.
### Parameters
* `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
* `defaultDomain` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?**
Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
## domainFromDominName
Extracts domain name from a name.
### Parameters
* `domainName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
* `defaultDomain` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?**
Returns **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))**
## sectionLines
### Parameters
* `sectionName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
* `values` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**
Returns **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>**
## asArray
### Parameters
* `value` **any**
Returns **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)\**
## asIterator
### Parameters
* `value` **any**
Returns **Iterable\**
# install
With [npm](http://npmjs.org) do:
```shell
npm install pmcf
```