artefactscomparison
is a Python package to compare and report on two artefacts summaries.
An artefact summary is a CSV listing files' paths and SHA512 sum. Assuming artefacts are saved under the results/
directory, an artefact summary is generated as follows:
$ find results/ -type f `# list files in the 'results/' directory…`\
-exec sha512sum {} \; `# … and compute their SHA-512 sum`\
| sed 's/ /,/' `# use comma — instead of double space — as separator`\
| cat <(echo 'sha512,file_name') - `# add header to CSV`
sha512,file_name
<SHA512>,results/artefact_1
<SHA512>,results/path/to/artefact_2
The artefactscomparison
package provides a CLI entry point that outputs a diff report on two artefacts summaries:
$ artefacts_comparison --base base_artefact_summary.csv --head head_artefact_summary.csv
@@ 3 file(s) added @@
+ path/to/new_file_1
+ path/to/new_file_2
+ path/to/new_file_3
@@ 1 file(s) deleted @@
- path/to/removed_file.csv
@@ 2 file(s) renamed @@
! path/to/to_rename_1 → path/to/renamed_1
! path/to/to_rename_2 → path/to/renamed_2
# 2 other file(s) remain unmodified
You can install artefactscomparison
from PyPI:
pip install artefactscomparison
From the command line:
artefacts_comparison --head head_artefact_summary.csv --base base_artefact_summary.csv
where:
head_artefact_summary.csv
is the artefact summary of the branch you want to merge,base_artefact_summary.csv
is the artefact summary of the branch your PR points to (i.e.main
,master
, etc.).
This project adheres to Semantic Versioning, and releases descriptions can be found in CHANGELOG.md
.
For pyvenv
:
python -m venv .venv/
source .venv/bin/activate
git clone git@github.com:EBoisseauSierra/artefacts_comparison.git
cd artefacts_comparison
pip install --upgrade pip
pip install -e '.[dev,test]'
The pre-commit hooks defined in this repo ensure that code formating and linting is applied on any piece of code committed. This should enable a cleaner code base and less “formatting noise” in commits.
To install the hooks, simply run:
pre-commit install
- Fork this repo (https://github.com/EBoisseauSierra/artefacts_comparison/fork)
- Create your feature branch (
git checkout -b feature/fooBar
) - Commit your changes (
git commit -am 'Add some fooBar'
) - Push to the branch (
git push origin feature/fooBar
) - Create a new Pull Request
Distributed under the MIT License. See LICENSE
for more information.
- Add comments on multi-line shell commands: https://stackoverflow.com/a/12797512/5433628
- Compute the SHA sum of all files in a directory: https://askubuntu.com/a/1091369
- Prefix the stdout: https://stackoverflow.com/a/33139133/5433628