# ppft-cli

> CLI for PipeFilterFramework, use this CLI to create and manage filters and steps

Latest version **1.0.1** (published 2021-11-19) · MIT license · 0 weekly downloads

## Install

```sh
npm install ppft-cli
pnpm add ppft-cli
yarn add ppft-cli
bun add ppft-cli
```

Provides the command `ppft`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2021-11-19 |
| First published | 2021-11-19 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 5 |
| Unpacked size | 12.1 KB |
| Known vulnerabilities | 0 (+2 in 2 direct dependencies) |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Arthur, Auriane et Jerem |
| Maintainers | jeremdlcn |
| Keywords | client, interface |

## Links

- npm: https://www.npmjs.com/package/ppft-cli
- Repository: https://github.com/PipeFramework/ppft
- Homepage: https://github.com/PipeFramework/ppft#readme
- Issues: https://github.com/PipeFramework/ppft/issues
- npm.io page: https://npm.io/package/ppft-cli

## Dependencies (5)

- [fs](https://npm.io/package/fs.md) 0.0.1-security
- [conf](https://npm.io/package/conf.md) ^10.0.3
- [chalk](https://npm.io/package/chalk.md) ^4.1.2
- [commander](https://npm.io/package/commander.md) ^8.3.0
- [git-clone](https://npm.io/package/git-clone.md) ^0.2.0

## Alternatives

- [launchdarkly-js-client-sdk](https://npm.io/package/launchdarkly-js-client-sdk.md) — 2.5M weekly downloads
- [@elastic/elasticsearch](https://npm.io/package/@elastic/elasticsearch.md) — 2.1M weekly downloads
- [@c8y/client](https://npm.io/package/@c8y/client.md) — 15.3K weekly downloads
- [@signaldb/maverickjs](https://npm.io/package/@signaldb/maverickjs.md) — 1.7K weekly downloads
- [@bbc/http-transport-cache](https://npm.io/package/@bbc/http-transport-cache.md) — 1.2K weekly downloads

## Recent versions

- 1.0.1 (latest) — 2021-11-19
- 1.0.0 — 2021-11-19

## README

# ppft

# Members
- Auriane LABILLLE
- Jérémie DELÉCRIN
- Arthur GEAY

# Introduction
Ce projet scolaire a pour but de créert un mini framework Javascript implémentant une architecture de type modulaire PIPE/FILTER.
Ce Framework permet de créer des filters (modules JavaScript) dans un répertoire « /filters ».

L’arborescence des fichiers du framework est la suivante :
- /
    - app.js : point d’entrée de l’application (l’application sera lancée via ce fichier)
    - config-filters.json : fichier de configuration
    - /filters : répertoire contenant les filters implémentés par le développeur
        - filter_1.js
        - filter_2.js
        - filter_3.j
        - ...

# Getting started
Ce projet est packagé dans un module nodeJS NPM. Cet outil doit être installé avec la commande : `npm install ppft-cli -g`.

Afin de créer un projet avec une configuration vierge, exécuter la commande suivante : `ppft new`.

Afin de lancer le framework, exécuter la commande suivante : `npm start`.

## Basic functions
Le framework au démarrage de l’application :
- vérifie que la signature de chaque filter placé dans le dossier /filters est valide (que le module retourne bien une fonction)
- affiche dans la console la liste des filters présents dans le dossier /filters
- lit le fichier config-filters.json et vérifie qu’il est valide :
    - il doit contenir à sa racine un attribut «steps » de type Array contenant des steps
    - chaque step doit avoir un identifiant (clef de l’objet)
    - chaque step doit avoir un attribut « filter » correspondant au fichier filter à exécuter
    - une step peut avoir un attribut « params » de type Array contenant une liste de paramètres qui seront passés à la step lors de son exécution en plus des paramètres reçus de la step précédente
    - une step peut avoir un attribut « next » qui doit correspondre à l’identifiant d’une autre step dans le fichier
- exécute les filters dans l’ordre défini dans le fichier de configuration par le développeur
- affiche dans la console l’ordre d'exécution des filters (exempel : “Exécution du filter filter_1.js”)

## Use case of the framework
- filters/read.js : ce filter prend en entrée un chemin d’un fichier et retourne son contenu
- filters/capitalize.js : ce filter prend du texte en entrée et la passe en majuscule
- filters/reverse.js : ce filter prend du texte en entrée et le retourne inversé (uniquement les mots, pas les lettres)
- filters/write.js : ce filter prend du texte et un chemin en entrée et écrit le contenu dans un fichier

# API

## Filters configuration
Le fichier config-filters.json à la racine du projet contient la configuration de l'exécution des filters au format suivant : 
```JSON
{
"steps" : {
    "1": {
        "filter": "<filter_1>",
        "params" : ['<extra_param_1>' , '<extra_param_2>' , ...],
        "next": "2"
    },
        "2": {
        "filter": "<filter_2>",
        "params" : ['<extra_param_1>' , '<extra_param_2>' , ...],
        "next": "3"
    },
    ...
```

## Filters
Le filter prend en paramètre un champ « input » de type Array contenant :
- Le resultat de l’execution du filter précédent
- Des paramètres additionnels

## Steps
Une step contient :
- un `ID`
- le nom du `filter` à exécuter
- un ou plusieurs `params`
- possiblement `next`, l'ID de la step du prochain filtre à exécuter

# Errors
| Erreur                                       | Description                                                  |
| :------------------------------------------- | :----------------------------------------------------------- |
| Directory not found.                         | Dossier du filtre introuvable                                |
| No filters modules found.                    | Filtre non trouvé                                            |
| Is not a filter module.                      | Filtre invalide                                              |
| Configuration file not found                 | Fichier de configuration non trouvé                          |
| The steps key is not found                   | Clé de l'étape non trouvée                                   |
| The filter key not found on step             | Clé du filtre non trouvée                                    |
| The params key is not an array for the step  | La clé du params n'est pas un tableau                        |
| Step with id not found.                      | Étape non trouvée                                            |
| Configuration file is not a valid json file. | Le fichier de configuration n'est pas un fichier JSON valide |
| Step failed                                  | Échec de l'exécution de l'étape                              |
| The steps key is empty                       | Clé d'étape non définie ou vide                              |
| The filter could not be added                | Le filtre n'a pas pu être ajouté                             |
| The filter could not be deleted              | Le filtre n'a pas pu être supprimé                           |
| The step could not be added                  | L'étape n'a pas pu être ajoutée                              |
| The step could not be deleted                | L'étape n'a pas pu être supprimée                            |
| The project could not be installed           | Le projet n'a pas pu être installé                           |
| The directory already exist                  | Nom de dossier déjà utilisé                                  |

# Tools
| Commande          | Action                                         | Description                                                                                 |
| :---------------- | :--------------------------------------------- | :------------------------------------------------------------------------------------------ |
| `ppft add_filter` | Ajouter un filter                              | Créé un nouveau filter dans un projet existant                                              |
| `ppft del_filter` | Supprimer un filter                            | Possible seulement si le filter n'est pas utilisé dans le fichier de configuration          |
| `ppft add_step`   | Ajouter une step au fichier de configuration   | Prend les paramètres suivants : id de step, nom de filter, id step suivante (si nécessaire) |
| `ppft del_step`   | Supprimer une step du fichier de configuration | Prend les paramètres suivants : id de step                                                  |

---
_Source: https://npm.io/package/ppft-cli · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
