Skip to main content

Bare Metal Development Environment CLI; for NDS development for the practical exercises of Computers

Project description

Contributors Forks Stargazers Issues Unlicense License LinkedIn Testing PyTest) Style (Ruff) PyPI Docs


Logo

Bare Metal Development Environment (BMDE) CLI

CLI wrapping the Bare Metal Development Environment (BMDE)
Explore the docs »

Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

Product Name Screen Shot

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).

(back to top)

General features

Naive components

Each component is independent and can be used individually without using bmde.

One module wraps one software

Each module corresponds to a wrapper around one software and its environment.

Flexibility using backend: Docker vs host (or others)

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.

Config and arguments

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.toml upward 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.

(back to top)

Built With

This section lists any major languages/frameworks/libraries/tools used in this project.

  • Python

  • Docker

  • Pydantic

  • Typer

  • FortiClient

  • SSH

  • Expect

  • Git

  • Make

  • devkitPro

  • devkitARM

  • ARM Insight

  • GDB

  • DeSmuME

  • dlditool

  • X11

  • x11vnc

  • Flathub

(back to top)

Getting Started

Prerequisites

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.

Installation

Install the command by using:

pip install bmde

You may add an alias to your binary to shorten up the command from python -m bmde to bmde:

echo "alias bmde=python -m bmde" >> ~/.bashrc

Check out the docs for a full explanation on the installation.

Usage

You can start using BMDE by cloning a NDS project:

bmde git clone 12345678-A@git.deim.urv.cat:comp_20

Then, enter the directory of the repository you just cloned:

cd comp_20

And build the project with:

bmde build

If the building is successful you will be able to run the project with:

bmde run

Check out the docs for a full explanation on the usage.

(back to top)

Roadmap

See the project roadmap for a full list of proposed features, and known issues and its implementation state).

(back to top)

Contributing

Check out our CONTRIBUTING.md to know how to make a contribution.

Top contributors:

contrib.rocks image

(back to top)

License

Proudly distributed with love under the GNU GPLv3 License. See LICENSE for more information.

(back to top)

Contact

@AleixMT - aleix.marine@urv.cat

(back to top)

Acknowledgments

The teachers of URV who have collaborated.

(back to top)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bmde-1.11.0.tar.gz (86.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bmde-1.11.0-py3-none-any.whl (65.9 kB view details)

Uploaded Python 3

File details

Details for the file bmde-1.11.0.tar.gz.

File metadata

  • Download URL: bmde-1.11.0.tar.gz
  • Upload date:
  • Size: 86.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bmde-1.11.0.tar.gz
Algorithm Hash digest
SHA256 c32a253280d063d33f16c62c3a6508d960e20516f720420de7e25f014f1ce9f5
MD5 f7423a1ed22d4daaa3ca0279d569207e
BLAKE2b-256 bba6fb4e1e06140fdaffa3489dd0c7490d7439c565ad0952bb2feaf5d56c4994

See more details on using hashes here.

Provenance

The following attestation bundles were made for bmde-1.11.0.tar.gz:

Publisher: release.yml on URV-teacher/bmde

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bmde-1.11.0-py3-none-any.whl.

File metadata

  • Download URL: bmde-1.11.0-py3-none-any.whl
  • Upload date:
  • Size: 65.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bmde-1.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9ea7ddcd800a690b9c927ee82861cfcdf07310f3faf6013a4a2d8b9b76c2bd20
MD5 a4e4a704146590e32627a3692736d9e0
BLAKE2b-256 220c061ab72ce7c0fc77be6ea6f30c140f1a8c5bbffcc9767ee5adffe59e77f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for bmde-1.11.0-py3-none-any.whl:

Publisher: release.yml on URV-teacher/bmde

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page