Scans a given directory for software of unknown provinence (SOUP) and dumps them in a json-file

Overview

souper

Scans a given directory for software of unknown provinence (SOUP) and writes them to a json-file. The json-file contains name, version and a meta property for each SOUP. The meta property may be populated with arbitrary metadata. If you run souper after the version of a SOUP has been updated, the json-file will be updated with the new version, while preserving the arbitrary metadata. If a SOUP has been added or removed, the json-file will be updated accordingly.

Why? In order to be compliant with standards such as IEC 62304, you might need to maintain documentation related to software of unknown provinence (SOUP). With souper you can keep this documentation close to your source code and have it updated together with the relevant changes.

Below is an example of how the output looks like, with some arbitrary metadata.

{
    "src/package.json": [
        {
            "name": "react",
            "version": "18.2.0",
            "meta": {
                "purpose": "Enable us to efficiently build single page applications"
            }
        }
    ]
}

Souper will attempt to identify SOUPs from the following sources:

  • package.json (npm)
  • *.csproj (ASP.NET)
  • docker base images

Installation

  1. Grab binary for your OS from the latest release
  2. Extract the downloaded file: tar xvf <-FILENAME->
  3. Make sure the extracted executable is present in your PATH

Usage

Navigate to to the repository where you'd like to run souper.

souper --output-file soups.json

Alternatively, you can run souper from any directory:

souper --directory /path/to/my/repo --output-file soups.json

Create a release

  1. On your feature branch, bump to a proper version number in Cargo.toml
  2. Create, review and complete a pull request
  3. Tag latest commit on the main branch with the version set in Cargo.toml
    • E.g. git tag v6.6.6
  4. Push tags
    • git push origin --tags
You might also like...
OP-Up is a hive tool for testing OP-Stack-compatible software modules

op-up Warning This is a work in progress. OP-Up is a hive tool for testing OP-Stack-compatible software modules. This project was born out of the need

A minimal and fast zero-copy parser for the PE32+ file format.

peview A minimal and fast zero-copy parser for the PE32+ file format. Goal This project aims to offer a more light weight and easier to use alternativ

Shows how to implement USB device on RP2040 in Rust, in a single file, with no hidden parts.

Rust RP2040 USB Device Example This is a worked example of implementing a USB device on the RP2040 microcontroller, in Rust. It is designed to be easy

Download a single file from a Git repository.

git-download Microservices architecture requires sharing service definition files like in protocol buffer, for clients to access the server. To share

A crate for converting an ASCII text string or file to a single unicode character

A crate for converting an ASCII text string or file to a single unicode character. Also provides a macro to embed encoded source code into a Rust source file. Can also do the same to Python code while still letting the code run as before by wrapping it in a decoder.

A parser for the .map file included in the aimware leak
A parser for the .map file included in the aimware leak

a utility I wrote to parse the map file included with the recent aimware self-leak. there is also an IDAPython script to import the symbol information into IDA.

Generate SUMMARY.md files based on your book's file structure

mdbook-autosummary Generate a SUMMARY.md for your mdBook based on your folder structure! Warning The implementation is hacky and has several limitatio

An API for getting questions from http://either.io implemented fully in Rust, using reqwest and some regex magic. Provides asynchronous and blocking clients respectively.

eithers_rust An API for getting questions from http://either.io implemented fully in Rust, using reqwest and some regex magic. Provides asynchronous a

Safe, efficient, and ergonomic bindings to Wolfram LibraryLink and the Wolfram Language

wolfram-library-link Bindings to the Wolfram LibraryLink interface, making it possible to call Rust code from the Wolfram Language. This library is us

Comments
  • Default meta key

    Default meta key

    Add support for --meta-key argument. The value of each --meta-key argument will be set as a key in meta property. Additionally:

    • Changed type for meta from Value to Map<String, Value>, which enforces it to be a json object (where each key can have a value with arbitrary json)
    • Enable preserve_order feature in serde_json, which will preserve order to the properties in meta object
      • Previously those would be sorted alphabetically

    Fixed #33

    opened by Dunklas 0
Releases(v0.4.7)
Owner
Dunklas
Dunklas
The utility is designed to check the availability of peers and automatically update them in the Yggdrasil configuration file, as well as using the admin API - addPeer method.

Yggrasil network peers checker / updater The utility is designed to check the availability of peers and automatically update them in the Yggdrasil con

null 6 Dec 25, 2022
🦀 A Rust CLI to find the optimal time to meet given a when2meet URL

when3meet ?? The Rust when2meet CLI Install | Usage | Contributing & Issues | Docs Built with ❤️ and ?? by Garrett Ladley Install cargo install when3m

Garrett Ladley 4 Sep 18, 2023
Make a .scratch directory to keep random scribbles in

mkscratch Creates a directory named .scratch in your current working directory which will be ignored by Git. Useful for keeping around miscellaneous f

Kayla 3 Oct 21, 2022
Checks Crusader Kings 3 user mod files for common mistakes and warns about them.

ck3-tiger Pounces on bugs. Checks Crusader Kings 3 user mod files for common mistakes and warns about them. For example: missing localizations, or usi

Richard Braakman 8 Jan 5, 2023
Unify your game sources in one place and aquire more of them, using modules made by the community.

Project Black Pearl Unify your game sources in one place by using modules made by the community. What is Project Black Pearl? Project Black Pearl (or

Project Black Pearl 8 Jan 15, 2023
High Assurance Rust - A free book about developing secure and robust systems software.

High Assurance Rust - A free book about developing secure and robust systems software.

Tiemoko Ballo 1.1k Jan 9, 2023
Goodname is a tool to assist you with cool naming of your methods and software

Goodname is a tool to assist you with cool naming of your methods and software. Given a brief description of your method or software, this tool enumerates name candidates forming subsequences of the description (i.e., abbreviation).

Shunsuke Kanda 118 Dec 28, 2022
Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners

CleanIt Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners Motivation Motivation is to build a complete

Kristoffer Rakstad Solberg 216 Dec 13, 2022
An inquiry into nondogmatic software development. An experiment showing double performance of the code running on JVM comparing to equivalent native C code.

java-2-times-faster-than-c An experiment showing double performance of the code running on JVM comparing to equivalent native C code ⚠️ The title of t

xemantic 49 Aug 14, 2022