# Configuration (phystool_config)= ## ... de {{phystool}} et {{physnoob}} Comme présenté [précédemment](#first_start), le fichier de configuration par défaut `~/.phystool/phystool.conf` charge un exemple de base de donnée gérée par {{phystool}}. Ce fichier contient une section `general` configurant {{phystool}} et au minimum une section `db=...` indiquant où trouver la base de donnée. Pour gérer plusieurs bases de données, il suffit de définir plusieurs sections `db=...` portant des noms différents. ```{code-block} ini :caption: ~/.phystool/phystool.conf :linenos: [general] db = tuto editor = urxvt -e nvim delta = dark [db=tuto] path = ~/tuto_db repo = git@bitbucket.org:jdufour/physdb_dev.git editable = true ``` ### Réglages de base La section `general` a pour but de configurer le comportement de {{phystool}} et {{physnoob}}. Il contient trois réglages: `db` : Le nom de la base de donnée qui est ouvert au démarrage. Ce nom doit correspondre à une base de donnée existante. `editor` : La commande à exécuter pour ouvrir les fichiers {{tex}} depuis {{phystool}}. La commande doit être une commande valide où le nom du fichier vient implicitement en dernière position. ```{note} Jusqu'à présent seul `urxvt -e vim` et `kile` ont été testé, mais il n'existe a priori aucune limitation. ``` `delta` : La coloration syntaxique utilisée pour afficher les modifications suivies par {{git}} dans {{phystool}} et {{physnoob}}. Les options passées ici doivent être compatibles avec {{delta}}. Il existe deux préréglages équivalents à passer les options suivantes: - `light`: ``` {code-block} --file-added-label '[+]' --file-copied-label '[C]' --file-decoration-style 'darkgoldenrod overline' --file-modified-label '[*]' --file-removed-label '[-]' --file-renamed-label '[→]' --file-style 'darkgoldenrod bold' --hunk-header-decoration-style 'none' --hunk-header-file-style 'darkgoldenrod' --hunk-header-line-number-style 'orange' --hunk-header-style 'file line-number purple' --light --line-numbers --line-numbers-left-format '{nm:>1}┊' --line-numbers-left-style 'darkgrey' --line-numbers-minus-style 'red' --line-numbers-plus-style 'green' --line-numbers-right-format '{np:>1}┊' --line-numbers-right-style 'orange' --line-numbers-zero-style 'darkgray' --minus-emph-style 'black tomato underline' --minus-empty-line-marker-style 'normal orangered' --minus-style 'syntax lightpink' --no-gitconfig --plus-emph-style 'black limegreen underline' --plus-empty-line-marker-style 'normal forestgreen' --plus-style 'syntax lightgreen' --side-by-side --syntax-theme 'Coldark-Cold' --whitespace-error-style 'black white' --width 200 --zero-style 'syntax' ``` - `dark`: ``` {code-block} --dark --file-added-label '[+]' --file-copied-label '[C]' --file-decoration-style 'darkgoldenrod overline' --file-modified-label '[*]' --file-removed-label '[-]' --file-renamed-label '[→]' --file-style 'darkgoldenrod bold' --hunk-header-style 'syntax bold italic 237' --line-numbers --line-numbers-left-format '{nm:>1}┊' --line-numbers-left-style 'red' --line-numbers-minus-style 'red bold' --line-numbers-plus-style 'green bold' --line-numbers-right-format '{np:>1}┊' --line-numbers-right-style 'green' --line-numbers-zero-style '\"#545474\" italic' --minus-emph-style 'normal \"#80002a\"' --minus-style 'normal \"#5e0000\"' --no-gitconfig --plus-emph-style 'syntax bold \"#007e5e\"' --plus-style 'syntax \"#003500\"' --side-by-side --syntax-theme 'OneHalfDark' --whitespace-error-style '\"#80002a\" reverse' --width 200 --zero-style 'syntax' ``` ### Sélection des bases de données {{phystool}} est capable de gérer plusieurs bases de données indépendantes. Ceci permet notamment le partage de documents. Pour ajouter une nouvelle base de donnée, il suffit de créer une nouvelle section dont le titre est `db=nom_de_la_base`. Ainsi, dans l'exemple proposé, la base de donnée s'appelle 'tuto'. Cette section contient trois réglages: `path` : Le chemin du répertoire contenant la base de donnée. Ce répertoire peut être placé n'importe où sur le disque et son contenu ne devrait en principe pas être modifié sans passer par les outils {{phystool}}. `repo` : Le répertoire distant {{git}} qui héberge la base de donnée. `editable` ({code}`default=false`) : Un boolean indiquant si l'utilisateur peut modifier le contenu du répertoire distant {{git}}. Si l'utilisateur n'a pas les droits d'uploader dans le répertoire distant {{git}}, ce champ doit être `false`. (physdb_config)= ## ... d'une base de donnée Chaque base de donnée listée dans le fichier de configuration principal possède son propre fichier de configuration. Ce fichier nommé `0_physdb.conf` se situe dans le répertoire principal de la base de donnée. Il a pour rôle de définir les propriétés de la base de donnée ainsi que de définir les types de {{pdbfile}} qu'elle contient. ```{code-block} ini :linenos: :caption: ~/tuto_db/0_physdb.conf [general] auto_latex = physauto_dev private = true [pdb-type=exercise] pattern = ^\\begin{exercise}{(.*)} [pdb-type=theory] pattern = ^\\begin{theory}(?:\[(.*)\])? [pdb-type=qcm] pattern = ^\\QCM{[^}]*?} [pdb-type=figure] pattern = ^\\documentclass.*{phystikz_dev} standalone = true ``` ```{important} Un utilisateur ne possédant pas le droit d'écriture dans le répertoire distant {{git}}, ne doit jamais modifier ce fichier de configuration et cette base de donnée doit être chargée avec `editable=false`. ``` ### Paramètres de la base de donnée `private` : Indique si le répertoire {{git}} qui héberge la base de donnée est privé ou publique. ```{note} Ce champ, combiné avec le champ `editable` du fichier de configuration de {{phystool}} permet de gérer les permissions d'écriture dans la base de donnée et dans le répertoire {{git}}. ``` ```{note} Même si cela est techniquement possible, il n'est pas pertinent de combiner `private=true` et `editable=true` si l'on n'a pas les droits d'écrire dans le répertoire {{git}}. En effet, si l'utilisateur n'a pas les droits d'écriture dans répertoire {{git}} mais que ces deux réglages sont `true`, l'utilisateur peut modifier le contenu de la base de donnée mais ne peut pas uploader ses modifications. Cela dit, afin de faciliter la prise en main de {{phystool}} par un nouvel utilisateur, la base de donnée `tuto` est privée et éditable par défault. L'utilisateur peut ainsi faire des tests et se familiariser avec le programme sans pouvoir modifier le répertoire {{git}} ``` `auto_latex` : Ce paramètre définit la classe {{latex}} à utiliser par {{phystool}} pour compiler automatiquement les différents {{pdbfile}}. ```{important} Le contenu de cette classe {{latex}} est central au bon fonctionnement de {{phystool}}, il est vivement conseillé de prendre le temps de lire la [documentation](#latex_config) qui s'y rapporte. ``` (definition_type)= ### Définition des types `pattern` : Cette regex permet à {{phystool}} de déterminer le type de {{pdbfile}}. Si la regex contient un groupe capturé, alors le contenu de ce groupe déterminera le titre du {{pdbfile}}. Sinon, le titre est simplement le {{uuid}} du fichier. Dans l'exemple donné, le titre de l'environnement `exercise` est obligatoire, alors qu'il est optionnel pour `theory`. Les autres {{pdbfile}} n'ont pas de titre. `standalone` ({code}`default=false`) : Les {{pdbfile}} qui n'héritent pas de ``\documentclass{standalone}`` et ne sont pas compilables individuellement. Ils doivent avoir être indiqué `standalone=true` afin que {{phystool}} puisse les compiler avec la classe {{latex}} définie par `auto_latex`.