L'enfer, c'est les .bats
-
Execution de batches avec une syntaxe proche de celle d'Ansible
-
Fenêtre affichant les icônes correspondant aux batches
-
Extensibilité par plugins
-
Utilisé sous Windows, normalement compatible Linux
pip install git+https://github.com/cube-creative/jeanpaulstart.gitUn batch décrit au format YAML un environnement (à travers des variables), puis des actions à executer
Exemple basique :
---
name: Jean Bauchefort
icon_path: $ENVIRONMENT/_config/jeanpaulstart/icons/jean-bauchefort.png
tags:
- production
environment:
PYTHONPATH:
- C:\cube\python\Lib\site-packages
- R:\deploy\cube
tasks:
- name: Running application
raw:
command: python -m jeanbauchefortui
...Pour un exemple plus complet, regarder example-batch.yml
- Il est possible d'appeler un batch en ligne de commande
python -m jeanpaulstart --filepath /path/to/a/batch.yml- Il est possible d'executer un batch au format JSON sérialisé (peu commun)
L'utilisation du flag --not-normalized est conseillée
python -m jeanpaulstart --not-normalized --json {"name": "3DS Max", ... }Il existe une version PySide de Jean-Paul Start
Elle se base sur les dossiers contenant des batches, et un fichier de configuration associant les noms d'utilisateurs (obtenus avec getpass.getuser()) aux tags présents dans les batches
Il suffit d'appeler le module jeanpaulstartui
python -m jeanpaulstartui --batches /path/to/a/batch/folder;/path/to/another/folder --tags /path/to/user-tags.ymlLe fichier user tags représente au format YAML l'association de nom d'utilisateurs à des tags
Exemple
---
production:
- jp.sartre
- p.deproges
graphist_base:
- y.montand
- j.hallyday
rigging:
- s.weaver
- j.rochefort
...Ainsi, les batches portant les tags 'production' apparaitront pour l'utilisateur jp.sartre
- Il est possible de référencer un groupe dans un autre groupe en utilisant le caractère spécial
$
everyone:
- $production
- $graphist_base
- $rigging
- m.polnareff
...Les commandes disponibles sont appelées tâches
L'execution de chaque tâche est décrite dans un module python du package jeanpaulstart.tasks
Ces modules sont listés au démarrage de Jean-Paul Start, s'ils répondent aux exigences du plugin-loader, deviennent disponible lors de l'execution des batches
Permet de copier un fichier
Si la destination existe, et force: no, aucune action n'est effectuée
- name: Name of task
copy:
src: /path/to/source.ext
dest: /path/to/destination.ext
force: [yes|no]Créé un fichier ou un dossier
- name: Name of task
file:
path: /path/to/file
state: [directory|file]Permet d'excuter un batch
L'environnement courant est passé au batch appelé, les modifications faites à l'environnement par le batch appelé ne sont pas conservées dans les tâches suivantes
- name: Name
include_tasks:
file: path/to/batch/file.ymlPermet de modifier un fichier .ini
- name: Task Name
ini_file:
src: /path/to/ini/file.ini
state: [present|absent]
section: sectionName
option: optionName
value: valueValueExecute la commande pip install
Le paramètre state est facultatif, il vaut present par défaut
- name: Task Name
pip:
name: PySide
state: [present|forcereinstall]- name: Task Name
pip:
name: git+http://some/url.gitExecute une commande dans le terminal
Le paramètre async execute la commande dans un processus enfant, sans interrompre l'execution (Popen()) (facultatif)
Le paramètre open_terminal ouvre un nouveau terminal (facultatif)
async vaut True par défaut, open_terminal vaut False par défaut
- name: Launch djv_view
raw:
command: "\"C:\\Program Files\\djv-1.1.0-Windows-64\\bin\\djv_view.exe\""
async:[yes|no]
open_terminal:[yes|no]Copie un fichier template au format Jinja2, en parsant les variables d'environnement
- name: Task Name
template:
src: /path/to/source.ext.j2
dest: /path/to/dest.ext
force: [yes|no]Ouvre l'url donnée, dans le navigateur par défaut
- name: Task Name
url: http://some.url/