Logiciel de pharmacie
Go to file
florian_briand ca2a0ace71 Merge pull request 'Rendre le système de fichier de configuration runtime fonctionnel en dev et en release' (#56) from fix/55_move_env_config_into_consistent_dirs into main
Reviewed-on: #56
Reviewed-by: kosssi <simon@p4pillon.org>

# Détails

- Rajoute une librairie d'utilitaires crates/utils
- Rajoute des fonctions de gestion des fichiers et dossiers de configuration dans la lib utils, dont une fonction de chargement du fichier de config approprié
- Remplace le chargement d'un .env relatif au CARGO_MANIFEST_DIR de la librairie sesam-vitale par la fonction de chargement de config

La fonction de chargement de config génère une hiérarchie d'emplacements de fichiers de config (.env dans : dossier courant, dossier manifest, dossier système) et charge le "plus proche", afin de permettre d'avoir une configuration stable au niveau système, mais de pouvoir la surcharger facilement en local, en particulier lors de phases de développement).
Pourquoi ?

L'usage de CARGO_MANIFEST_DIR pour trouver le fichier de configuration n'était pas viable, car cette variable d'environnement n'existe que lors d'un lancement via cargo run, mais pas lors d'un appel direct à l'executable buildé.
La nouvelle implémentation est maintenant totalement compatible, autant avec des approches de surcharge en développement que pour de installations pérennes sur un système.

# Documentation

Le chemin standard des fichiers de config, spécifique à chaque OS, est obtenu à l'aide de la librairie directories-rs

Closes #55
2024-08-30 18:29:56 +02:00
.gitea fix: update module options in BUG_REPORT.yaml template 2024-08-26 22:36:53 +02:00
crates refacto: explicit dotenv import in sesam-vitale/build.rs 2024-08-30 18:28:29 +02:00
docs feat: add documentation about errors handling in docs/errors.md 2024-08-20 22:33:57 +02:00
scripts chore: setup sesam-vitale lib with crossplatform ssv usage 2024-07-26 22:50:27 +02:00
.env.linux.example feat: initialize a utils lib with config functions handling config files in local and standard OS directories 2024-08-30 18:28:29 +02:00
.env.win.example feat: initialize a utils lib with config functions handling config files in local and standard OS directories 2024-08-30 18:28:29 +02:00
.gitignore feat: initialize a utils lib with config functions handling config files in local and standard OS directories 2024-08-30 18:28:29 +02:00
.ignore feat: Add auto-reload on development environment 2024-08-08 22:18:26 +02:00
Cargo.lock feat: initialize a utils lib with config functions handling config files in local and standard OS directories 2024-08-30 18:28:29 +02:00
Cargo.toml feat: initialize a utils lib with config functions handling config files in local and standard OS directories 2024-08-30 18:28:29 +02:00
README.md feat: initialize a utils lib with config functions handling config files in local and standard OS directories 2024-08-30 18:28:29 +02:00

Krys4lide

Logiciel de Pharmacie libre et open-source.

Crates

  • app: Interface du logiciel, servie par un serveur web propulsé par Axum. Utilisable en mode endpoint ou encapsulé dans le client desktop
  • desktop: Client desktop propulsé par Tauri, encapsulant le serveur web app
  • sesam-vitale: Bibliothèque de gestion des services SESAM-Vitale (Lecture des cartes CPS et Vitale, téléservices ...)
  • utils: Bibliothèque de fonctions utilitaires

Installation

Fichiers de configuration

Certaines librairies nécessitent de définir certaines paramètres de configuration pour fonctionner correctement, en particulier le moteur SESAM-Vitale.

Ces paramètres sont définis dans un fichier de configuration .env situé dans un des dossiers suivant (par ordre de priorité) :

  • dans le dossier courant (./.env)
  • dans le dossier du manifeste (par exemple crates/sesam-vitale/.env)
  • dans le dossier de configuration standard de l'OS (par exemple, sur linux, ~/.config/krys4lide/.env - plus d'info)

Des exemples de fichiers de configuration sont disponibles à la racine du projet : .env.linux.example et .env.win.example.

Development

Pré-requis

Tauri CLI

La CLI Tauri est nécessaire au lancement du client desktop. Elle peut être installée via Cargo :

cargo install tauri-cli --version "^2.0.0-beta"

Tailwindcss CLI

Le CLI Tailwindcss est nécessaire pour la génération du fichier crates/app/assets/css/style.css.

La documentation d'installation est disponible sur le site officiel de Tailwindcss : https://tailwindcss.com/blog/standalone-cli

La version actuellement utilisée est la v3.4.7

SESAM-Vitale

La crate sesam-vitale nécessite la présence des librairies dynamiques fournies par le package FSV et la CryptolibCPS. Les instructions d'installation sont disponibles dans le README de la crate sesam-vitale.

Lancement

Le logiciel dans sa globalité peut être lancé via la commande suivante :

cargo tauri dev

/!\ Attention, le lancement du client desktop ne génère pas le fichier crates/app/assets/css/style.css automatiquement pour le moment. En cas de modification des interfaces web, il est donc nécessaire de procéder à sa génération comme indiqué dans le README de la crate app.

Si vous souhaitez lancer les composants séparément, les indications de lancement sont disponibles dans les README des différents crates.

Rechargement automatique

Pour permettre de développer plus rapidement, il existe une librairie qui recompile automatiquement nos modifications en cours : cargo-watch permet de relancer une commande cargo lorsqu'un fichier est modifié (example: cargo run --> cargo watch -x run).

Voici la commande pour l'installer dans un package :

cargo add cargo-watch --dev --package app

Le fichier .ignore permet d'ignorer certains fichiers pour éviter de relancer la recompilation inutilement.

⚠️ La librairie n'est pas compatible avec Windows 7 et les versions antérieurs de Windows.

Build

Packager le client desktop

cargo tauri build