---
# System prepended metadata

title: 'dpslus personalisation, plugins'
tags: [howtos, dsplus]

---

---
tags: dsplus,howtos
title : dpslus personalisation, plugins
description: Quickstart dsplus
---

# Automatisation et plugins

[toc]

Les raccourcis et l'intégration au designer permettent d'industrialiser  et simplifier certaines parties du worflow. Mais pour l'instant il ne s'agit que aspects liés à DataStage, les opérations git restent à effectuer, il y a plusieurs manières pour cela:
* Lignes de commandes git classiques
* Clients git graphique

Cela restant des opérations essentiellement manuelles, nous allons voir comment il est possible de les déclencher automatiquement avec les plugins dsplus.



## Plugins dsplus

Comme pour les raccourcis, on définit les plugins dans le fichier de configuration.
Ici on veut déclencher automatiquement tout ou une partie de l'enchainement suivant:
```
git status
git add .../job
git commit -m "commentaire"
git push
```

Les plugins dsplus peuvent être de 2 types:
* javascript
* commandes arbitraires

### Déclaration

Ce tutorial décrit la mise en place d'une commande arbitraire.

Pour déclarer un plugin on doit définir:
* son type: ici, bin
* le programme/commande
* les arguments: un tableau d'arguments qui seront passés à la commande. Ceux ci sont templatables.
* l'evenement déclencheur du plugin: ici la fin de la commande get se traduire donc par "end:get"
* le contexte dans lequel le plugin se déclenchera: ici lors de l'appel à la commande get, pour simplifier et éviter le déclenchment itempestif on choisi de lier la plugin au raccourcis créée précédemment en ajoutant une option au contexte.

Pour le programme pour des raisons de facilité et portabilité on choisi de lancer la commande bash, les arguments sont le contenu du script qu'on souhaite lancer.

La déclaration ci-dessous fera qu'après avoir lancé la commande (en ligne de commande ou via le designer):
```
dsplus git --job ... 
```
L'enchainement suivant se faira automatiquement:
* on se place dans le dépôt,
* vérification du statut,
* ajout des éléments du job
* vérification du statut,
* commit, avec comme commentaire la 1ère ligne de la description longue
* attente (pour éviter la fermeture de la fenêtre si appel depuis le designer)


``` yaml
plugins:
  autogit:
     type: bin
     program: bash 
     args: [ '-c', 
     'cd "${options.target}" && 
      git status "$(dirname "${file}")" && 
      git add "$(dirname "${file}")" index.json && 
      git status && 
      git commit -m "dsplus: $(echo "${assetmetadata.longDescription}" | head -1)" &&
      read
      ' 
      ]
     event: "end:get"
     context: 
        get:
          autogit: true

shortcuts:
  git:
    get:
      ast: true
      metadata: true
      image: true
      export: true
      doc: true
      git: true
      output: true
      autogit: true
```


:::info
Git permet également des raccourcis (alias), son extension (custom subcommands), ou de l'automatisation (git hooks).
Ces fonctionalités peuvent être utilisées telles-quelles ou combinées avec dsplus. 
:::