https://github.com/jordanviknar/stompmyfiles
Universal file compression utility, aiming for brute strength and extreme ease of use.
https://github.com/jordanviknar/stompmyfiles
7z compression dolphin dolphin-emu dolphin-tool gamecube lua lzma2 ratio rvz smf wii xz
Last synced: about 1 year ago
JSON representation
Universal file compression utility, aiming for brute strength and extreme ease of use.
- Host: GitHub
- URL: https://github.com/jordanviknar/stompmyfiles
- Owner: JordanViknar
- License: mpl-2.0
- Created: 2023-10-24T13:09:07.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-23T12:08:05.000Z (over 1 year ago)
- Last Synced: 2025-02-06T04:51:19.639Z (about 1 year ago)
- Topics: 7z, compression, dolphin, dolphin-emu, dolphin-tool, gamecube, lua, lzma2, ratio, rvz, smf, wii, xz
- Language: Lua
- Homepage:
- Size: 57.6 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
*One day, [Jordan](https://github.com/JordanViknar) decided he had enough of wasting storage space on files he barely used.*
*What if a tool existed that could **easily** crush anything in its path ? And thus came onto the world...*
---
# StompMyFiles
Universal file compression utility, aiming for brute strength (at the cost of time) and ease of use. Made in Lua.




(Currently) available for :



## Goals
StompMyFiles aims to be :
- **Powerful**, no matter the cost : StompMyFiles' first aim is to compress files given to it as hard as it can, under the best known method available depending on the file's type.
- **Extremely simple to use** : You give it a file, it replaces it with its compressed version if possible. There's **nothing** more to it.
- **Lossless** : Every single piece of data originally present must be able to be restored from StompMyFiles, with just the compressed file itself.
*Note : StompMyFiles focuses so heavily on compression strength that it's pretty CPU and RAM intensive, and may even be slow in a few cases. As such, it may not always be the best fit for your use case.*
## Installation
### Arch Linux-based distributions
StompMyFiles can be installed from Arch Linux through the provided [PKGBUILD](https://github.com/JordanViknar/StompMyFiles/blob/main/install/archlinux/PKGBUILD).
**Always** download the latest version of the PKGBUILD, then use **makepkg** in its directory.
It will eventually be made available on the AUR once the program is complete enough.
### I want to add support for my own distribution !
Here are informations which might be useful to you :
StompMyFiles is meant to be installed in `/usr/share/stomp-my-files` (except `smf` which goes into `/usr/bin`).
It depends on :
- Lua 5.4 *(5.3 and 5.2 MIGHT work)*
- [LuaFileSystem](https://github.com/lunarmodules/luafilesystem)
- [LuaSocket](https://github.com/lunarmodules/luasocket) + [LuaSec](https://github.com/lunarmodules/luasec)
- Common tools such as : *which*, *tar*, *grep*, *xz*
And optionally :
- 7-zip / p7zip : If the system doesn't provide them, StompMyFiles will download them if possible.
- Dolphin Emulator : StompMyFiles uses *dolphin-tool* to compress Nintendo Wii/GameCube games.
### Manual local installation (not recommended except for development)
Install the aforementioned dependencies on your system, clone the repository, and run `./smf`, assuming you're in the program's directory.
## Usage
```
smf [OPTIONS] FILES ...
```
Available options :
- `--help` : Displays StompMyFiles' help page
- `--verbose` : Used for debugging. Makes StompMyFiles more explicit about what it's doing.
- `--version` : Reports StompMyFiles' version and shows a small description.
ISO file specific options (if none of these are specified, StompMyFiles will skip them) :
- `--iso` : Tells StompMyFiles to treat ISO files normally.
- `--wii-gc` : Tells StompMyFiles to treat ISO files as Wii/GameCube games.
## Support
| Tool | Local Download | Compression / Decompression | Used for |
| ---- | -------------- | --------------------------- | -------- |
| 7z | ✅ | ✅ | Folders |
| xz | ❌ | ✅ | Default choice for single files |
| dolphin-tool | ❌ | ✅ | Nintendo Wii / GameCube games (requires Dolphin Emulator to be installed) |
| nsz | *Planned* | *Planned* | Nintendo Switch games |
| upx | *Planned ?* | *Planned ?* | Executables |
## Compression Test Results
### Personal Files
| Up-to-date | File(s) | Tool | Original Size | SMF Output | Percentage |
| ---------- | ------- | ---- | ------------- | ---------- | ---------- |
| ✅ | First Year of Pre-Engineering | 7z | 579.8 Mo | 431.1 Mo | 74 % |
| ✅ | Second Year of Pre-Engineering | 7z | 1.1 Go | 731.9 Mo | 67 % |
### Applications / Games
| Up-to-date | Application | Type | Tool | Original Size | SMF Output | Percentage |
| ---------- | ----------- | ---- | ---- | ------------- | ---------- | ---------- |
| ✅ | Celeste | Steam Game (Linux) | 7z | 1.2 Go | 770.6 Mo | 64 % |
| ✅ | Um Jammer Lammy | PlayStation 1 Game | xz | 743.5 Mo | 499.5 Mo | 67 % |
| ✅ | Super Smash Bros. Brawl | Wii Game | dolphin-tool | 8.5 Go | 5.8 Go | 68 % |
| ✅ | Rayman Redemption | Windows Game | 7z | 1.3 Go | 879.8 Mo | 68 % |
| ✅ | Pizza Tower | Steam Game (Windows) | 7z | 256.8 Mo | 185.4 Mo | 72 % |
## Bug Reports / Contributions / Suggestions
You can report bugs or suggest features by making an issue, or you can contribute to this program directly by forking it and then sending a pull request.
Any help will be very much appreciated. Thank you.