An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

[![npm](https://img.shields.io/npm/v/pmcf.svg)](https://www.npmjs.com/package/pmcf)
[![License](https://img.shields.io/badge/License-0BSD-blue.svg)](https://spdx.org/licenses/0BSD.html)
[![bundlejs](https://deno.bundlejs.com/?q=pmcf\&badge=detailed)](https://bundlejs.com/?q=pmcf)
[![downloads](http://img.shields.io/npm/dm/pmcf.svg?style=flat-square)](https://npmjs.org/package/pmcf)
[![GitHub Issues](https://img.shields.io/github/issues/arlac77/pmcf.svg?style=flat-square)](https://github.com/arlac77/pmcf/issues)
[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Farlac77%2Fpmcf%2Fbadge\&style=flat)](https://actions-badge.atrox.dev/arlac77/pmcf/goto)
[![Styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
[![Known Vulnerabilities](https://snyk.io/test/github/arlac77/pmcf/badge.svg)](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
```