CLI wrapping the Bare Metal Development Environment (BMDE)
Explore the docs »
Report Bug
·
Request Feature
Table of Contents
Operating system agnostic CLI wrapping the Bare Metal Development Environment (BMDE) and other related utilities to manage the complete software life-cycle of a NDS C and / or assembly project using either host or Dockerized installations of the software components of the BMDE, plus opinionated features to be used in the development of the practical exercises from the subject Computers, Operating Systems Structure and in minor cases Computer Fundamentals from the university degree of Computer Engineering in the University Rovira i Virgili (URV).
Each component is independent and can be used individually without using bmde.
Each module corresponds to a wrapper around one software and its environment.
Each module can be executed using as entrypoint the corresponding binary in your machine (host) or a binary provided by Docker embedded in bmde. This allows using bmde but either using a Docker installation that is already provided, or your own host installations. You can do this for each module (WIP).
In the same sense, some additional backends may be provided, for example, the run command which wraps desmume, also
provides the FlatHub (flathub) backend.
A native toml schema is included to provide default values to arguments to bmde. bmde also reads configuration from various sources with different priority, allowing for fine-grained control over each repository. The priority is the following, with later mentioned sources overriding previous:
- Environment variables.
/etc/bmde/bmde.toml~/.config/bmde/bmde.toml- Closest
bmde.tomlupward in the tree - Explicit configuration via arguments pointing to a valid .toml file.
The configuration files allows an easy usage to bmde: Provided arguments via config files can be omitted from the arguments of the CLI call to bmde, allowing shorter commands and skipping the need to provide things like credentials for authentication in each call to bmde.
Default arguments can be customized via (from less to more priority) system variables, global configuration file, specific configuration file of the repo, specific configuration args for the execution.
This section lists any major languages/frameworks/libraries/tools used in this project.
To run bmde you will need Python 3.11 installed in your system.
To run a command you will need either Docker with permissions for the user executing bmde COMMAND or the
software that the command wraps directly installed in your system. For simplicity, we recommend sticking to Docker.
Check out the docs for a full explanation on the prerequisites.
Install the command by using:
pip install bmdeYou may add an alias to your binary to shorten up the command from python -m bmde to bmde:
echo "alias bmde=python -m bmde" >> ~/.bashrcCheck out the docs for a full explanation on the installation.
You can start using BMDE by cloning a NDS project:
bmde git clone 12345678-A@git.deim.urv.cat:comp_20Then, enter the directory of the repository you just cloned:
cd comp_20And build the project with:
bmde buildIf the building is successful you will be able to run the project with:
bmde runCheck out the docs for a full explanation on the usage.
See the project roadmap for a full list of proposed features, and known issues and its implementation state).
Check out our CONTRIBUTING.md to know how to make a contribution.
Proudly distributed with love under the GNU GPLv3 License. See LICENSE for more information.
@AleixMT - aleix.marine@urv.cat
The teachers of URV who have collaborated.
