a fast enough .gitignore-respecting large file finder
Find a file
Mark Joshwel 500b6067b2 sidestepper: dont start and end with padding "\n"s
also actually error out if we mess up with std::process::exit
2025-01-22 01:09:26 +08:00
.idea meta: add files 2025-01-20 04:52:09 +08:00
src sidestepper: dont start and end with padding "\n"s 2025-01-22 01:09:26 +08:00
.gitignore meta: add files 2025-01-20 04:52:09 +08:00
Cargo.lock cargo: update 2025-01-21 22:11:59 +08:00
Cargo.toml cargo: update 2025-01-21 22:11:59 +08:00
LICENCE docs: oopses 2025-01-20 05:05:26 +08:00
README.md docs: damn it 2025-01-21 14:17:48 +00:00

sota staircase SideStepper

a fast enough .gitignore-respecting large file finder

made for me to find large files in my unity game repositories that wouldn't fit github's 100mb limit, for when i'd push my repositories to github for schoolwork submission

rewritten from python to rust, as a reason to learn rust

this is brain made software: large language-based code generation has not been extensively used here. but i'd be lying if i said i didn't ask chatgpt if there was a better way to check a boolean result lol

quickstart

note: there aren't any releases nor a nix flake yet!

installing a binary

note: all non-windows builds are statically linked

  • Windows
  • Linux
  • macOS universal
  • macOS amd64
  • macOS aarch64

(also available in the 'releases' tab wherever this repository is situated in)

build it yourself

  1. get rust and cargo
  2. run cargo build release

nix users, rejoice: run nix run github:markjoshwel/sidestepper or nix run git+:https://forge.joshwel.co/mark/sidestepper

running it

./sidestepper

or on windows,

./sidestepper.exe

it'll find for a .git directory in the current or parent directories, if you want to use this not in the context i usually use this for (which is for git repositories), pass in --search-here to treat the current working directory as the 'repository root'

it'll then make a .sotaignore file that i use in my other tooling scripts, but if you want it to output external-tool-friendly output to stdout, pass in --plumbing for it to output encountered large files, line-by-line, to stdout

historical changes

  • v5 (i3/a5) - 3rd implementation, rewritten in rust lol (no longer using iod-ttt, just piggybacking off ignore's WalkBuilder)
  • v4 (i2/a4) - optimised single iod-ttt
  • v3 (i2/a3) - faster matching by remembering ignored directories (ignore on demand, 'iod')
  • v2 (i2/a2) - 2nd implementation, corrected ignored directory matching (named 'trytrytry', 'ttt')
  • v1 (i1/a1) - original python script, still embedded within ReStepper

licence

with all my heart, copyright (c) 2025 mark joshwel

the sota staircase SideStepper is permissively licenced, not needing attribution, under the 0BSD licence. go ham.