A Rust command line tool to simplify embedded development and deployment.

Overview

Bobbin-CLI

bobbin-cli is a tool designed to make it easy to build, deploy, test and debug embedded devices using a unified CLI. bobbin-cli understands Rust's cargo / xargo package managers but can also work with Make or any other build system.

bobbin-cli has the following main areas of functionality:

  • Device enumeration and selection. bobbin-cli recognizes many types of USB debuggers and loaders and allows you to set per-project filters so that it knows which device to use even when multiple devices are connected to your computer.

  • Build management. bobbin-cli automatically uses xargo to build your project, and reads the command line parameters and your Cargo.toml file to automatically determine the output binary to use. You can also use Make, with a required parameter to specify the output binary path.

  • Deployment. For supported devices, bobbin-cli can automatically use the appropriate flash loading tool (OpenOCD, JLinkExe, bossac or teensy_cli_loader) to upload the output binary.

  • Testing and Debugging. bobbin-cli can automatically connect to and display the virtual serial console of the selected device if available. You can also start an instance of OpenOCD and gdb with the output binary produced by the build stage.

For a collection of LED blinking demos for a wide variety of popular development boards, see bobbin-blinky.

Host Platforms

MacOS and Linux are currently supported, Windows support is planned.

Supported Devices

Debug Probes

Currently Supported:

  • J-Link - including CDC (virtual serial port) support.
  • ST-Link/V2 - V2 and V2.1 devices supported, including CDC (virtual serial port) and SWO Trace (optional, requires libusb).
  • CMSIS-DAP - including CDC (virtual serial port) support.
  • DAPLINK - including MSD (mass storage device) and CDC (virtual serial port) support.
  • TI ICDI - including CDC (virtual serial port) support.
  • Black Magic Probe - including CDC (virtual serial port) support.

Coming Soon:

Development Boards with Embedded Debug Probes

Boards from the following product families include embedded debug probes that should be supported.

Note: Many development boards support OpenSDA, which allows a choice of firmware to be installed. Debug probes may support CMSIS-DAP, DAPLINK, J-Link and PEMicro firmware variants. Be sure to upgrade to the most recent firmware available, and ensure that a variant supporting OpenOCD (CMSIS-DAP/DAPLINK) or J-Link is installed. Please see Upgrading Development Board Firmware.

Development Boards with Flash Loader Support

Boards from the following product families use flash loaders that are supported.

Prerequisites

Build Tools

These tools must be installed in your PATH.

Debugger / Loader Tools

You must have the appropriate tools installed for the debug probes / dev boards that you wish to use.

  • OpenOCD - 0.10 or later required for STLink, DAPLINK, CMSIS-DAP, and TI ICDI debug probes
  • J-Link - required for J-Link debug probes.
  • Bossa - required for Arduino and Feather devices
  • Teensy Loader - required for Teensy devices
  • libusb - required for STLink SWO Trace support.
  • dfu-util - required for STM32 DFU Bootloader support

Development Board Firmware

If you are using a development board with embedded debug probe, check that you know what debug firmware you have installed and that it is up to date. Please see Development Board Firmware.

Installation

Note: Only Linux and macOS hosts are supported at this time.

To install from cargo:

$ cargo install bobbin-cli

To install from github:

$ git clone https://github.com/bobbin-rs/bobbin-cli.git
$ cd bobbin-cli
$ cargo install

To install with ST-Link SWV Trace support:

$ cargo install --features stlink

Usage

The name of the executable is bobbin.

Help

You can display detailed help text by using bobbin -h.

Bobbin Check

Use "bobbin check" to list the version numbers of all Bobbin dependencies. "Not Found" will be displayed if the dependency is not available.

$ bobbin check
      Rust 1.20.0-nightly (83c659ef6 2017-07-18)
     Cargo 0.21.0-nightly (f709c35a3 2017-07-13)
     Xargo 0.3.8
       GCC 5.4.1 20160919 (release) [ARM/embedded-5-branch revision 240496]
   OpenOCD 0.10.0+dev-00092-g77189db (2017-03-01-20:42)
     JLink V6.15c (Compiled Apr 24 2017 19:07:08)
     Bossa 1.7.0
    Teensy 2.1
  dfu-util 0.9

Please include the "bobbin check" output when reporting problems.

Bobbin List

Use "bobbin list" to view all debug probes and development boards connected to your host.

$ bobbin list
ID       VID :PID  Vendor                   Product                          Serial Number
4c01a4ad 1366:0105 SEGGER                   J-Link                           000621000000
14a7f5da 03eb:2157 Atmel Corp.              EDBG CMSIS-DAP                   00000000EZE000005574
b7e67550 0483:374b STMicroelectronics       STM32 STLink                     0673FF485550755187121723
a3ef65e3 0483:374b STMicroelectronics       STM32 STLink                     0667FF555654725187073723
cb46720d 1cbe:00fd Texas Instruments        In-Circuit Debug Interface       0F007E1A
8c6bbec5 0d28:0204 ARM                      DAPLink CMSIS-DAP                0260000025414e450049501247e0004e30f1000097969900
f95f4aca 0d28:0204 ARM                      DAPLink CMSIS-DAP                0240000034544e45001b00028aa9001a2011000097969900
c2f3dc42 0483:374b STMicroelectronics       STM32 STLink                     0670FF484957847167071621
$

The device ID is a hash of the USB Vendor ID, USB Product ID, and USB Serial Number (if available). "bobbin list" displays the first eight hex digits of the device ID, and "bobbin info" displays the full 64 bit ID.

Bobbin Info

To view detailed information about a devices, use the "bobbin info" subcommand.

$ bobbin -d 4c01 info
ID               c2f3dc42b4aadc58b6dfa98ce527dd436e3e4fa5
Vendor ID        0483
Product ID       374b
Vendor           STMicroelectronics
Product          STM32 STLink
Serial Number    0670FF484957847167071621
Type             STLinkV21
Loader Type      OpenOCD
Debugger Type    OpenOCD
CDC Device       /dev/cu.usbmodem141413
OpenOCD Serial   hla_serial 0670FF484957847167071621
$

If you have more than one connected device, you can select a specific device by using the -d command line parameter. bobbin-cli will also look for a device filter directive in a YAML configuration file at ./bobbin/config

$ cat .bobbin/config
[filter]
device = "c2f3dc42"

Bobbin Build

bobbin build runs xargo (by default) or make to build your application. If using xargo, bobbin-cli will pass through any --target, --bin, --example or --release parameters.

On completion, bobbin-cli will run arm-none-eabi-size on the binary and display the output.

$ bobbin build
   Compiling blue-pill v0.1.0 (file:///home/bobbin/bobbin-blinky/blue-pill)
    Finished dev [optimized + debuginfo] target(s) in 0.50 secs
   text	   data	    bss	    dec	    hex	filename
    152	      0	      4	    156	     9c	target/thumbv7em-none-eabihf/debug/blue-pill
$

Bobbin Load

bobbin load runs bobbin build and then, if successful, load the binary onto the device using the selected debugger or loader, using objcopy as needed to convert to the appropriate format. You may include --target, --bin, --example or --release parameters which will be passed to bobbin build.

bobbin load will interpret the build parameters as well as the Cargo.toml file to determine the path to the binary.

$ bobbin load
   Compiling blue-pill v0.1.0 (file:///home/bobbin/bobbin-blinky/blue-pill)
    Finished dev [optimized + debuginfo] target(s) in 0.13 secs
   text	   data	    bss	    dec	    hex	filename
    152	      0	      4	    156	     9c	target/thumbv7em-none-eabihf/debug/blue-pill
     Loading target/thumbv7em-none-eabihf/debug/blue-pill.hex
    Complete Successfully flashed device
      Loader Load Complete
$

Some devices require manual intervention to enter bootloader mode; you should do this before running bobbin load.

Note: Many debuggers and loaders require additional configuration

  • OpenOCD: a properly configured openocd.cfg file must be in the current directory. bobbin will add the appropriate OpenOCD command line parameters to select the specific device.
  • J-Link: you must specify the device type through the --jlink-device command line parameter or in the .bobbin/config file.
  • Teensy Loader: you must specify the device type through the --teensy-mcu command line parameter or in the .bobbin/config file.

Bobbin Run

bobbin run runs bobbin load and then, if successful, open the serial console of the connected device to display the output. Use Control-C to terminate this console viewer.

If the selected device does not have an associated serial port, that step will be skipped.

You can use the --console parameter to manually specify a serial device, or --noconsole if you do not want run the console viewer at all.

Note: the serial viewer is currently hard-coded to 115,200 baud

If bobbin-cli is compiled with support for SWO trace, you can pass the --itm parameter to display ITM output instead of running the serial console. You will also need to pass the --itm-target-clock parameter with the target's clock speed.

$ bobbin run
   Compiling blue-pill v0.1.0 (file:///home/bobbin/bobbin-hello/blue-pill)
    Finished dev [optimized + debuginfo] target(s) in 0.13 secs
   text	   data	    bss	    dec	    hex	filename
    152	      0	      4	    156	     9c	target/thumbv7em-none-eabihf/debug/blue-pill
     Loading target/thumbv7em-none-eabihf/debug/blue-pill.hex
    Complete Successfully flashed device
      Loader Load Complete
     Console Opening Console
Hello World 1
Hello World 2
Hello World 3
^C
$

Bobbin Test

bobbin test runs bobbin run and then interprets the serial output, looking for tags indicating test progress and completion.

$ bobbin test
   Compiling frdm-k64f v0.1.0 (file:///home/bobbin/bobbin-boards/frdm-k64f)
    Finished dev [optimized + debuginfo] target(s) in 0.61 secs
   text	   data	    bss	    dec	    hex	filename
   6252	    428	    408	   7088	   1bb0	target/thumbv7em-none-eabihf/debug/frdm-k64f
     Loading target/thumbv7em-none-eabihf/debug/frdm-k64f
    Complete Successfully flashed device
      Loader Load Complete
     Console Opening Console
[start] Running tests for frdm-k64f
[pass] 0
[pass] 1
[pass] 2
[pass] 3
[pass] 4
[done] All tests passed
$

bobbin test recognizes [start], [pass] and [done] tags, exiting with return code 0. It also recognizes [fail], [exception], and [panic] tags, which will cause it to exit with return codes 1, 2 or 3. All other output is ignored.

The test runner will exit with return code 1 if there is a delay of more than 5 seconds between lines or 15 seconds to complete the entire test. In the future these timeouts will be configurable.

Additional Subcommands

bobbin reset resets the target device.

bobbin halt halts the target device, if supported.

bobbin resume resumes the target device, if supported.

bobbin console starts a console viewer session using the selected device's serial port at a speed of 115,200.

bobbin itm starts an itm viewer session using the selected device.

bobbin screen starts a screen session using the selected device's serial port at a speed of 115,200.

bobbin openocd starts an openocd session using the selected device.

bobbin jlink starts a JLinkGDBServer session using the selected device.

bobbin gdb starts a GDB session with the current target binary as the executable. For debug probes that are GDB native, this command will connect directly to the device; for debug probes using OpenOCD or JLinkGDBServer, you must use target remote :3333 manually or in a .gdbinit file.

Specifying Binary Targets

If you are not using xargo / cargo as your build manager, you have the option of specifying the output binary path as the first unlabeled argument. For instance:

$ bobbin run build/blinky.elf

would use build/blinky.elf as the target binary to run.

$ bobbin test build/blinky.elf

would load and test build/blinky.elf

Configuration

Selecting a device

If you have multiple debug probes connected, you can tell Bobbin which device to use on a per-directory basis. Bobbin will look for a TOML configuration file in the .bobbin directory (.bobbin/config).

To select a specific device, create a [filter] section with a "device" key that includes the prefix of the device id. For instance,

$ bobbin list
ID       VID :PID  Vendor                   Product                          Serial Number
f95f4aca 0d28:0204 ARM                      DAPLink CMSIS-DAP                0240000034544e45001b00028aa9001a2011000097969900
8c6bbec5 0d28:0204 ARM                      DAPLink CMSIS-DAP                0260000025414e450049501247e0004e30f1000097969900
cb46720d 1cbe:00fd Texas Instruments        In-Circuit Debug Interface       0F007E1A

$ mkdir .bobbin
$ cat > test
[filter]
device = "f95f4aca"
$ bobbin list
ID       VID :PID  Vendor                   Product                          Serial Number
f95f4aca 0d28:0204 ARM                      DAPLink CMSIS-DAP                0240000034544e45001b00028aa9001a2011000097969900

OpenOCD

When using a debug probe / development board that uses OpenCD, you must have an openocd.cfg file in your project directory that provides the correct configuration for the debugger and device being used.

For instance, for the FRDM-K64F:

$ cat openocd.cfg
source [find interface/cmsis-dap.cfg]
source [find target/kx.cfg]
kx.cpu configure -event gdb-attach { reset init }

You should be able to run "openocd" and have it successfully connect to the device, assuming you only have a single debug probe of that type connected:

$ openocd
Open On-Chip Debugger 0.10.0+dev-00092-g77189db (2017-03-01-20:42)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "swd". To override use 'transport select <transport>'.
Info : add flash_bank kinetis kx.flash
adapter speed: 1000 kHz
none separate
cortex_m reset_config sysresetreq
Info : CMSIS-DAP: SWD  Supported
Info : CMSIS-DAP: Interface Initialised (SWD)
Info : CMSIS-DAP: FW Version = 1.0
Info : SWCLK/TCK = 0 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1
Info : CMSIS-DAP: Interface ready
Info : clock speed 1000 kHz
Info : SWD DPIDR 0x2ba01477
Info : MDM: Chip is unsecured. Continuing.
Info : kx.cpu: hardware has 6 breakpoints, 4 watchpoints
^C
$

Bobbin will invoke OpenOCD with additional command line parameters specifying the USB serial number of the device to open.

J-Link

J-Link debug probes require a device identfier that specifies the target MCU. You must specify this by using the --jlink-device=<JLINK-DEVICE> command line parameter or by adding a jlink-device key to the [loader] section of your .bobbin/config file:

[loader]
jlink-device = "S32K144"

You may view a list of devices at J-Link - Supported Devices.

Teensy Loader

teensy_loader_cli requires an additional command line parameter --teensy-mcu=<MCU> that tells it the exact MCU being used. You will need to add a teensy-mcu key to the [loader] section of your .bobbin/config file:

[loader]
teensy-mcu = "mk20dx256" # Teensy 3.2
[loader]
teensy-mcu = "mk64fx512" # Teensy 3.5
[loader]
teensy-mcu = "mk66fx1m0" # Teensy 3.6
[loader]
teensy-mcu = "mkl26z64" # Teensy LC

Use 'teensy_loader_cli --list-mcus' to view a list of supported MCUs.

BOSSA

If you have bossac 1.9 or later, or 1.8 and an M4 board, you may need to specify the offset address to start the flashing. This is because by default bossac will start flashing at address 0x0000, which is likely where your locked bootloader is located.

These values seem to work for Adafruit M0/M4 devices with their UF2 bootloader, such as Feather M0/M4, Circuit Playground Express, and NeoTrellis M4:

  • For M0 devices, use --offset 0x2000
  • For M4 devices, use --offset 0x4000

You can also specify this in the [loader] section of your .bobbin/config file:

[loader]
offset = "0x2000" # M0
[loader]
offset = "0x4000" # M4

For more information about the UF2 bootloader and BOSSA, see Adafruit’s UF2 Bootloader Details page.

Comments
  • MacOS 10.14 fix serial numbers for black magic probe

    MacOS 10.14 fix serial numbers for black magic probe

    Since macOS 10.14 the usbmodem serial number behaviour has changed. Instead of replacing the last character with 1 or 3, it is actually added after the last character:

    Current situation on macOS 10.14.2:

    $ ls /dev/cu.usbmodem*                                                
    /dev/cu.usbmodemC1CC90EE1 /dev/cu.usbmodemC1CC90EE3
    

    bobbin info before this patch:

    ~$ bobbin info
    ID               6d5e03bb698fa27a2cbf32874a6f5ad062ae000a
    Vendor ID        1d50
    Product ID       6018
    Vendor           Black Sphere Technologies
    Product          Black Magic Probe
    Serial Number    C1CC90EE
    Type             BlackMagicProbe
    Loader Type      blackmagic
    Debugger Type    blackmagic
    CDC Device       /dev/cu.usbmodemC1CC90E3
    GDB Device       /dev/cu.usbmodemC1CC90E1
    
    opened by ijager 4
  • Adds support for bossac -o parameter

    Adds support for bossac -o parameter

    Necessary for bossac >= 1.9 that defaults to flashing starting at address 0x0000, which breaks due to the locked bootloader being at that address.

    At least from Adafruit, M0 boards need an offset of 0x2000 (which is what bossac 1.8 defaulted to) while M4 boards need 0x4000.

    This makes no change from the current behavior if the "offset" configuration is not specified.

    Tested on a Circuit Playground Express (M0) and NeoTrellis M4.

    Also changes device detection to assume all Adafruit USB devices are BOSSA-compatible, rather than requiring them to be enumerated.

    Fixes bobbin-rs/bobbin-cli#9

    opened by fionawhim 3
  • Support for bossac offset parameter?

    Support for bossac offset parameter?

    Hi! I'm using Bobbin with some Adafruit M0/M4 devices, and I had to hack it to add in the -o parameter to bossac.

    Apparently since bossac 1.9, it defaults to flashing at 0x00000000, but that runs into the locked bootloader.

    For M0 devices I needed to add -o 0x2000 and for M4 I needed -o 0x4000.

    I was wondering if you’d take a PR to fix this and what approach would be good.

    I was thinking either adding the offset as a value on FeatherDevice (and having device.rs enumerate more Adafruit boards and fill in this value) or have it as a config that you set in the .bobbin config.

    opened by fionawhim 3
  • Bobbin not detecting arm-none-eabi-gcc

    Bobbin not detecting arm-none-eabi-gcc

    Hey,

    I'm setting up and embedded toolchain and I've noticed that bobbin is not able to find my gcc.

    I noticed that it does check versions through regexing on the output of arm-none-eabi-gcc --version. I think the matching groups are incorrect, but I don't really know why.

    Here's my output of arm-none-eabi-gcc --version:

    $ arm-none-eabi-gcc --version
    arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 8-2018-q4-major) 8.2.1 20181213 (release) [gcc-8-branch revision 267074]
    Copyright (C) 2018 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    

    bobbin check output:

    $ bobbin check
        Bobbin 0.8.5
          Rust 1.34.0 (91856ed52 2019-04-10)
         Cargo 1.34.0 (6789d8a0a 2019-04-01)
         Xargo 0.3.13
           GCC Not Found
       OpenOCD 0.10.0
         JLink V6.44g (Compiled Apr 18 2019 17:15:12)
         Bossa 
        Teensy Not Found
      dfu-util 0.9
    
    
    opened by OtaK 2
  • Two way communication in run mode.

    Two way communication in run mode.

    I needed to send some commands to the embedded target over serial. I found the path of least resistance was to extend bobbin-cli since I'm already using it for normal development. Feel free to use it, not use it, copy paste the code, request changes or commit directly to my repo (I've "allowed edits from maintainers") as you wish (or any other thing you might want to do with this PR).

    I've only tested this with the JLink firmware but I would assume it works the same for other debuggers as well.

    opened by kjetilkjeka 2
  • Incompatibility with stale teensy_loader_cli versions

    Incompatibility with stale teensy_loader_cli versions

    Hi there,

    Bobbin expects teensy_loader_cli’s command-line signature to have the same format as version 2.1 does (mcu passed as --mcu) whilst some versions marked as “2.1” instead accept -mmcu, and thus aren’t detected by bobbin.

    Version 2.1 as shipped by Homebrew is one such version. I’ve opened an issue (homebrew/homebrew-core#17087) to get the version in Homebrew updated to the “newer” 2.1, but it may be useful for bobbin to provide compatibility with the prior version, the source to which remains hosted on pjrc’s site at https://www.pjrc.com/teensy/teensy_loader_cli.2.1.zip.

    opened by ticky 1
  • Use the CARGO_TARGET_DIR env var if set

    Use the CARGO_TARGET_DIR env var if set

    There are of course more ways an user can change the cargo target dir, so for full compatibility we should probably parse the output of cargo metadata. This scratches a personal itch for me, though.

    opened by dflemstr 0
  • Detection of target directory is unreliable

    Detection of target directory is unreliable

    For example, it doesn't work when running bobbin inside a workspace.

    A more reliable approach would be to parse the output of cargo metadata --format-version 1 and use its target_directory field.

    opened by jonas-schievink 0
  • Option to disable -e for bossac?

    Option to disable -e for bossac?

    I’m using bobbin with an Adafruit PyPortal, and every time I flash I get a "SAM-BA operation failed" error.

    I compared how bobbin calls bossac with how the Arduino IDE does it, and bobbin has an -e flag for erasing that Arduino doesn’t have.

    When I remove the -e from bobbin, I can flash the PyPortal without issue.

    Should this be an option that’s available? Would we want to default to still erasing but be able to set "--no-erase" or "erase = false" somewhere?

    With some guidance on how you’d like it configured I could make the PR.

    opened by fionawhim 1
  • Possible `flash` command for manual use

    Possible `flash` command for manual use

    At the moment all the bobbin commands expect a cargo build underneath, it'd be neat to be able to specify a binary (and location) to use bobbin to flash a binary manually

    opened by ryankurte 2
  • Black Magic Probe SWO support

    Black Magic Probe SWO support

    Hi, SWO support has been merged in the BMP, would it be possible to add this? If there is need for hardware to test it, I can be of assistance, as I have SWO supporting hardware available.

    See here for the SWO details: https://github.com/blacksphere/blackmagic/blob/master/UsingSWO

    opened by korken89 0
  • Should bobbin gdb behave differently with j-link?

    Should bobbin gdb behave differently with j-link?

    When calling bobbin gdb with j-link you must first start the GDB server and set port manually. Wouldn't it be more user-friendly if JLinkGDBServer was started in a child process? This way one could have the port specified in the config, and make sure the server started on the same port as gdb eventually would connect to.

    This would perhaps also remove the need for the bobbin jlink command, making the interface more uniformly over all debug hardware.

    opened by kjetilkjeka 1
Owner
Bobbin
Rust Tools for Embedded Development
Bobbin
H2O Open Source Kubernetes operator and a command-line tool to ease deployment (and undeployment) of H2O open-source machine learning platform H2O-3 to Kubernetes.

H2O Kubernetes Repository with official tools to aid the deployment of H2O Machine Learning platform to Kubernetes. There are two essential tools to b

H2O.ai 16 Nov 12, 2022
Command-line tool designed to simplify the process of managing multiple .NET SDK versions on your system

.NET Version Manager (dver) Overview dver is a command-line tool designed to simplify the process of managing multiple .NET SDK versions on your syste

Sergio Triana Escobedo 5 Aug 23, 2024
KAIVM is a multiplatform Command Line Interface (CLI) designed to simplify the process of downloading, managing, configuring, and running different versions of Shinkai Node

KAIVM - Shinkai Version Manager KAIVM is a multiplatform Command Line Interface (CLI) designed to simplify the process of downloading, managing, confi

Alfredo Gallardo 7 May 1, 2024
An attribute macro to simplify writing simple command line applications.

fncli An attribute macro to simplify writing simple command line applications. Example #[fncli::cli] fn main(a: i32, b: i32) { println!("{}", a +

Vidhan Bhatt 29 Dec 15, 2022
Small command-line tool to switch monitor inputs from command line

swmon Small command-line tool to switch monitor inputs from command line Installation git clone https://github.com/cr1901/swmon cargo install --path .

William D. Jones 5 Aug 20, 2022
fas stand for Find all stuff and it's a go app that simplify the find command and allow you to easily search everything you nedd

fas fas stands for Find all stuff and it's a rust app that simplify the find command and allow you to easily search everything you need. Note: current

M4jrT0m 1 Dec 24, 2021
A cli tool to automate the building and deployment of Bitcoin nodes

ℹ️ Automate Bitcoin builds, speed up deployment Shran is an open-source cli tool being developed to address the needs of DMG Blockchain Solutions. It

Matt Williams 1 Oct 20, 2022
SKYULL is a command-line interface (CLI) in development that creates REST API project structure templates with the aim of making it easy and fast to start a new project.

SKYULL is a command-line interface (CLI) in development that creates REST API project structure templates with the aim of making it easy and fast to start a new project. With just a few primary configurations, such as project name, you can get started quickly.

Gabriel Michaliszen 4 May 9, 2023
Low-level Rust library for implementing terminal command line interface, like in embedded systems.

Terminal CLI Need to build an interactive command prompt, with commands, properties and with full autocomplete? This is for you. Example, output only

HashMismatch 47 Nov 25, 2022
Rust-powered CLI tool designed to simplify and streamline the release process with help of ChatGPT

$ releasecraftsman ????‍♂️?? Automate Your Release Process with Precision and Ease. ?? Features Generate well-crafted release notes using GPT-3.5 and

Tornike Gomareli 7 Sep 21, 2023
Super-lightweight Immediate-mode Embedded GUI framework, based on the awesome embedded-graphics library. Written in Rust.

Kolibri - A GUI framework made to be as lightweight as its namesake What is Kolibri? Kolibri is an embedded Immediate Mode GUI mini-framework very str

null 6 Jun 24, 2023
🗄️ A simple (and safe!) to consume history of Client and Studio deployment versions.

??️ Roblox Version Archive A simple (and safe!) to consume history of Client and Studio deployment versions. About Parsing Roblox's DeployHistory form

Brooke Rhodes 4 Dec 28, 2022
Pink is a command-line tool inspired by the Unix man command.

Pink is a command-line tool inspired by the Unix man command. It displays custom-formatted text pages in the terminal using a subset of HTML-like tags.

null 3 Nov 2, 2023
Contains challenges, write-ups, and deployment configurations from b01lersCTF 2023.

CTF Name A template repository for a CTF competition. This is a description of the CTF event. CTFTime Link Structure Challenges are organized by categ

null 7 Mar 29, 2023
A command line tool written in Rust and designed to be a modern build tool + package manager for C/C++ projects.

CCake CCake is a command line tool written in Rust and designed to be a modern build tool + package manager for C/C++ projects. Goals To be easily und

Boston Vanseghi 4 Oct 24, 2022
Rust File Management CLI is a command-line tool written in Rust that provides essential file management functionalities. Whether you're working with files or directories, this tool simplifies common file operations with ease.

Rust FileOps Rust File Management CLI is a command-line tool written in Rust that provides essential file management functionalities. Whether you're w

Harikesh Ranjan Sinha 5 May 2, 2024
Wrapper over MMTk to simplify integration with runtimes: thread management system, object header, root scanning

vmkit A library which provides bunch of building blocks to make a VM in Rust. Feautures MMTK integration out of the box Thread management provided by

null 3 Aug 31, 2024
REC2 (Rusty External Command and Control) is client and server tool allowing auditor to execute command from VirusTotal and Mastodon APIs written in Rust. 🦀

Information: REC2 is an old personal project (early 2023) that I didn't continue development on. It's part of a list of projects that helped me to lea

Quentin Texier (g0h4n) 104 Oct 7, 2023
Command-line HTTP client for sending a POST request to specified URI on each stdin line.

line2httppost Simple tool to read lines from stdin and post each line as separate POST request to a specified URL (TCP connection is reused though). G

Vitaly Shukela 3 Jan 3, 2023