Our team has been exploring the best solution to make our developers’ work easier, especially when handling complex projects or multiple projects simultaneously, by automating and standardising certain processes in the company. We aimed to make the processes more efficient and smoothly integrated into a developer’s daily work, so they wouldn’t notice them when switching from one project to another.  

First, we tried creating scripts to automate developers’ work, helping them build software, flash, test and back it up. However, it proved inefficient with many projects – to introduce a change, for example, in the development environment, we had to copy it to each project separately to synchronise things. 

After exploring the problem further, we finally created a solution that met our needs. We would like to introduce you to scargo. 

What is scargo? 

Scargo is an open-source tool that we created based on the Rust Cargo package and software development lifecycle manager. To best explain its functionalities and benefits, we must first tell you more about Cargo. 

Rust Cargo is a build system and package manager for the Rust programming language. It was developed as part of the Rust language project. Cargo allows Rust developers to easily manage their project dependencies by automatically downloading and building all required libraries and tools. It also provides a convenient way to build, test, package and update Rust projects using a simple command-line interface. 

To build scargo, we used Cargo’s interface as a base because it’s well-defined and users are already familiar with it, but we adjusted it for C++. Moreover, we extended its functionality to manage the CI/CD development environment. That allowed us to automate what we previously had to handle manually.  

Scargo allows you to: 

  • create a new project (binary or library) 
  • build the project 
  • run static code analysers 
  • fix the chosen problem automatically based on the checker analysis 
  • run unit tests 
  • generate documentation from the source code 
  • work with the predefined docker environment depending on the chosen architecture 
  • Debug the software, 
  • And more … 

The benefits of scargo – package and software development lifecycle manager for C++ and embedded projects

Scargo helps us standardise our work. It allows us to build and manage component libraries and propagate the development environment across various projects (the environment is unified by dockerising) as well as keep the documentation consistent. The work system is identical for all developers thanks to one tool, which manages the commands and dictates a certain flow of the process, ensuring the high-quality code is maintained in each and every project.  

Scargo is ideal for C++ and embedded projects that use ESP32 and STM32 microcontrollers, as it enables external flashing, testing and debugging. It can be integrated with specific hardware and it’s MIT-licensed, so it can be delivered together with the hardware, ensuring the development environment is unified across the whole project, the code is of high quality and the developers’ work is more efficient.  

On the project management side, scargo makes onboarding new developers simpler and project setup faster, which significantly reduces costs and saves time.  

In the future, we’ll certify scargo to match the requirements of the medical and automotive regulations in the EU and USA. 

Try out scargo 

You can find all information on how to work with scargo on its official github webpage. It can be downloaded here.  

Should you have any questions, reach out to me or Ivan Cezar.  

About the author

Andrzej Akseńczuk photo

Andrzej Aksenczuk

Chief Technology Officer and Head of Innovation Lab