Back

Ashita Manager - Package manager Ashita Manager - Gestionnaire de paquets

A comprehensive GUI package manager built in Python and PyQt6 for Ashita v4, managing addons, plugins, and dependencies. Un gestionnaire de paquets avec interface graphique complet construit en Python et PyQt6 pour Ashita v4, gérant les addons, les plugins et les dépendances.

Python PyQt6 GUI Architecture Git Package Management

Contexte

Ashita v4 est un framework de modification de client de jeu. J’ai remarqué que la communauté manquait d’un moyen centralisé et robuste pour gérer l’installation, la mise à jour et la résolution des dépendances des addons et plugins personnalisés.

J’ai décidé de créer ashita-manager, un gestionnaire de paquets graphique complet écrit en Python utilisant PyQt6.

Interface graphique d'Ashita Manager 1

Interface graphique d'Ashita Manager 2

Implémentation technique

Architecture

  • Interface graphique (GUI) : CrĂ©ation d’une interface graphique robuste et conviviale avec PyQt6, permettant aux utilisateurs de parcourir, d’installer, de mettre Ă  jour et de gĂ©rer facilement les scripts.
  • RĂ©solution des dĂ©pendances : ImplĂ©mentation d’algorithmes pour rĂ©soudre et installer automatiquement les dĂ©pendances requises.
  • ContrĂ´le de version : IntĂ©gration avec Git et les API de GitHub pour rĂ©cupĂ©rer des versions spĂ©cifiques et suivre les incohĂ©rences de versions.

Fonctionnalités clés

  • Installation depuis Git/Version (Release) : Il suffit de coller l’URL d’un dĂ©pĂ´t ; l’application dĂ©tecte automatiquement le type, vous permet de choisir une branche, et l’installe.
  • Scan initial : Recherche et indexe automatiquement les addons et plugins existants dans l’installation d’Ashita au premier lancement.
  • Éditeur de scripts intĂ©grĂ© : Ajoutez ou supprimez des plugins/addons, basculez les ordres de chargement et gĂ©rez les raccourcis clavier, les alias et les commandes de configuration directement depuis l’interface graphique.
  • ExĂ©cutable autonome : Construit et packagĂ© sous forme de .exe Windows autonome en utilisant PyInstaller pour une distribution facile.

Pourquoi c’est important

La création d’un gestionnaire de paquets est un défi complexe d’architecture logicielle. Cela démontre :

  1. La création d’outils : La capacité à construire des outils robustes pour les développeurs internes et la communauté.
  2. La conception de systèmes : La gestion de l’état, la synchronisation locale contre distante, et les cas extrêmes (pannes de réseau, fichiers corrompus).
  3. La contribution open source : Créer quelque chose qui profite activement à une plus large communauté de développeurs et d’utilisateurs.

Lien

Context

Ashita v4 is a game client modification framework. I noticed that the community lacked a centralized and robust way to manage the installation, updating, and dependency resolution of custom addons and plugins.

I decided to create ashita-manager, a comprehensive graphical package manager written in Python using PyQt6.

Ashita Manager GUI 1

Ashita Manager GUI 2

Technical implementation

Architecture

  • Graphical user Interface (GUI): Created a robust and user-friendly GUI with PyQt6, allowing users to easily browse, install, update, and manage scripts.
  • Dependency resolution: Implemented algorithms to automatically resolve and install required dependencies.
  • Version control: Integrated with Git and GitHub APIs to fetch specific releases and track version inconsistencies.

Key features

  • Install from Git/Release: Simply paste a repository URL; the application automatically detects the type, lets you choose a branch, and installs it.
  • Initial scan: Automatically finds and indexes existing addons and plugins in the Ashita installation on first launch.
  • Integrated script editor: Add or remove plugins/addons, toggle load orders, and manage keybinds, aliases, and configuration commands directly from the GUI.
  • Standalone executable: Built and packaged as a standalone Windows .exe using PyInstaller for easy distribution.

Why it matters

Building a package manager is a complex software architecture challenge. It demonstrates:

  1. Tooling creation: The ability to build robust tools for internal developers and the community.
  2. Systems design: State management, local vs. remote synchronization, and edge cases (network failures, corrupted files).
  3. Open source contribution: Creating something that actively benefits a broader community of developers and users.