---
# System prepended metadata

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

---

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

# Personnalisation et intégration au Designer

[toc]

## Raccourcis

Pour gagner du temps, on peut créer des raccourcis qui simplifieront le workflow.
Editer le fichier `dsplus.yml` créé précédemment et ajouter les  lignes ci-dessous:

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

On déduira la syntaxe de la définition des raccourcis:
````yml
  nom raccourci:
    sous-commande d'origine:
      option: valeur
````

Cela aura pour effet de créer une sous-commande git pour dsplus dont l'appel
````bash
dsplus git
````
est équivalent à 
````bash
dsplus get --export --metadata --output --image --ast --doc 
````

Ainsi lorsqu'on se trouve dans le dossier du dépôt git, au lieu de:
````bash
dsplus get -xmoi --ast --doc --job job1 job2
````
On peut entrer:
````bash
dsplus git --job job1 job2
````


## Appel depuis le designer

Il est possible de se passer de l'utilisation des lignes de commandes en ajoutant dsplus aux custom tools du designer DataStage.
Cette fonctionnalité permet d'appeler des commandes arbitraires avec des paramètres contextuels tels que le nom du projet ou du job actuellement édité.
:::warning
Problème: Jusqu'à maintenant les commandes ont été appelées depuis le dépôt lié au projet DataStage. Lors de l'appel depuis le designer on ne sait pas où se trouve le dépôt, il faut donc spécifier ce chemin d'une manière où d'une autre. 
Plusieurs solutions à cela.
:::

### Environnements

On introduit la notion d'environnement dans le fichier `dsplus.yml`. A l'origine, celle-ci est prévue pour pouvoir identifier plusieurs environnements (dev/test...). Ici on s'en sert pour déclarer le chemin du dépôt git lié au projet:

````yml
envs:
  demoProject:
   target: "C:/.../CheminDepots/demoProject"
   project: demoProject
````

Ensuite on peut ajouter le custom tool au designer:

![](https://i.imgur.com/k8MvsE6.png)

![](https://i.imgur.com/qszlrxs.png)

![](https://i.imgur.com/htiLwjf.png)

![](https://i.imgur.com/LoDIDzc.png)

:::success
Cette opération permet donc de lancer la commande nécessaire dsplus lorsqu'un job est ouvert en passant par le menu: `Tools->Custom->git`
:::


:::info
On pourrait se passer de la notion d'environnement en s'appliquant à bien standardiser les noms des dépôts et des projets.
::: 

Cependant dans le cas où un projet serait lié à plusieurs dépôts, par exemple, si chaque grande catégorie racine a son propre dépôt, la solution précédente ne marcherait pas.

### L'argument target

Pour palier à cela on peut, à la place de définir des environnements utiliser la capacité interactive du Custom Tool en spécifiant les arguments de la commande de la façon suivante:

```bash
git --project %ProjectName  --job %JobName --target "C:/.../CheminDepots/%AskArguments"
```

De cette manière lors de l'appel il est demandé à l'utilisateur de saisir le nom du dépôt vers lequel extraire le job.

Bien que plus souple cette méthode poser le risque des erreurs de saisies.

### Templating

La façon dont dsplus organise le dépot est pilotée par:
* l'argument target: racine du dépôt
* l'argument targetformat: arborescence des objets

Par défault la racine est le répertoire courant ou la racine du dépôt s'il s'agit d'un dépôt git.
Par défaut l'arborescence est la suivante:
```
racine
  |Catégorie Racine DataStage
    |_Sous catégorie
      |_ ...
        |_Nom du job
          |_NomDuJob.extension
```
Un mécanisme de templating permet de personnaliser cette organisation et accepte les arguments suivants:
* `server`: serveur d'origine
* `project`: projet d'origine
* `category`: categorie(s)
* `name`: nom
* `type`: type: job, routine, paramset...
* `ext`: extension: pjb (parallel job), qjb (sequence job) ...
* `Y`/`M`/`D`/`H`/`m`: Timestamp de modification

Plus les arguments spéciaux sur la catégorie:
* `categories.x`: où x est le numéro du dossier, permet de selectionner un dossier spécifique.
* `categories.-x`: où x est le nombre de dossiers à ignorer, permet de sélectionner les dossiers à partir d'une profondeur arbitraire.

Par défaut l'argument targetformat est donc `[category]/[name]/[name]`.

Enfin on peut donc lier l'emplacement d'un dépôt à la catégorie racine en spécifiant:
```yaml
target: "C:/.../CheminDepots/[categories.0]
```
Eventuellement, en ajoutant spécifiant le format de l'arborescence de sorte à ignorer la catégorie racine, cela évitera la répétition:
```yaml
targetformat: "[_category-1]/[name]/[name]"
```
