Skip to content

Make tarballs easy to roas-- archive and compress. A tar alternative. [READONLY MIRROR]

License

Notifications You must be signed in to change notification settings

openSUSE-Rust/roast

Repository files navigation

Roast

Read-only mirrors are available on GitHub and sourcehut.

The main repository is on codeberg, which is where the issue tracker is found and where contributions are accepted.

Join Us Now on Codeberg Support and Promote Codeberg


Create archive tarballs and roast them!

Note

When using recomprizz, files with filenames like package-1.2.3.tar.gz will have the number parts of their names preserved i.e. package-1.2.3.tar.gz -> package-1.2.3.tar.zst. However, filenames with letters after the numbers will be removed especially for version part of the filenames are tagged as alpha or beta. For example, package-1.2.3.alpha.tar.gz will turn into package-1.2.3.tar.zst. This is a limitation with the renaming logic. The solution is to use the -R or --rename flag to hardcode the new name. So a command like

recomprizz -t package-1.2.3.alpha.tar.gz -R package-1.2.3.alpha

should fix the issue.

Reason of existence

I am trying to split the logic from obs-service-cargo. Not only is this a library, it also contains binaries that extract and decompress tarballs or create tarballs with the available highest level compression for supported compression formats.

Plus, it has the comfort of being a simple tar alternative.

How to install the binaries

Roast contains to binaries

  • roast
  • raw
  • recomprizz

Cargo

From source:

cargo install --git https://github.com/openSUSE-Rust/roast

From crates.io:

cargo install roast-cli

Both commands pull from source. The only difference is that the first one obviously relies on git.

Roast - How it works

There are three path behaviours in Roast.

  • excluded paths
  • additional paths
  • included paths

Excluded paths and included paths are within the source or target directory. For example. If we are going to archive the roast-cli directory here, declared paths in the --exclude and --include paths are relative to the top-most level directory of the source or target directory e.g. src/bin/roast.rs points to roast-cli/src/bin/roast.rs.

One thing to note about the path behaviours is the higher precedence over files than directories.

  • If a directory is INCLUDED while EXCLUDED, it is, therefore, IGNORED.
  • If a file is INCLUDED but it is WITHIN an EXCLUDED directory, it is, therefore, ADDED with the directory created if directory (new parent of the file) does not exist.
  • If a directory is ADDED i.e. from outside but resulting destination should be EXCLUDED, it is, therefore, ADDED.

Important

ADDED != INCLUDED. ADDED can either point to any path. INCLUDED always points WITHIN the top-most level directory of the source or target directory.

Note

The reasoning behind the third point is that the user may have intended to use a different source or to include only a specific set of files, thereby ignoring the top-level directory of the original source.

Service files are in the following with descriptions.

It maps when you run the following commands

  • roast -h
  • raw -h
  • recomprizz -h

About

Make tarballs easy to roas-- archive and compress. A tar alternative. [READONLY MIRROR]

Resources

License

Code of conduct

Stars

Watchers

Forks

Languages