Skip to main content

A command-line tool for safely cleaning files and directories using customizable rules and dry-run preview

Project description

CLI Cleaner

Tests PyPI version Python versions License Code style: ruff

A command-line tool for safely cleaning files and directories in your project.

By default, it runs in dry-run mode: it only shows what would be deleted. Add --delete to actually remove files.

  • Beautiful output powered by rich
  • Flexible cleanup rules with --dirs, --files, --globs
  • Built-in presets for popular stacks: Python, Node, Rust, Go, Java, and more
  • Custom presets from pyproject.toml or cleanerconfig.toml
  • Dedicated subcommands for cleanup and preset management

Commands:

cleaner clean ...
cleaner presets list
cleaner presets export <name>

Requires Python ≥ 3.12.


Installation

pipx install cli-cleaner

Or:

pip install cli-cleaner

Quick start

Dry run:

cleaner clean -d __pycache__ -d .pytest_cache -g "build/**" -f "notes.temp.txt"

Real deletion:

cleaner clean -d __pycache__ -d .pytest_cache -g "build/**" -f "notes.temp.txt" --delete

Examples:

cleaner clean -g "**/*.pyc" -d __pycache__
cleaner clean -g "build/**" -g "dist/**" --delete
cleaner clean -f stray.log -f notes.temp.txt --ignore-dirs ".venv" --ignore-files stray.log --delete

Commands

cleaner clean

Main cleanup command.

cleaner clean [OPTIONS]

Supported options:

  • --dirs, -d — directory names to delete
  • --files, -f — file names to delete
  • --globs, -g — glob patterns to delete
  • --ignore-dirs, -id — directories to ignore
  • --ignore-files, -if — files to ignore
  • --root, -r — root directory for cleanup
  • --use, -u — preset name
  • --config — explicit path to a TOML config file with presets
  • --delete — actually delete files instead of dry-run

Examples:

cleaner clean --use python
cleaner clean --use python --delete
cleaner clean -g "*.log" -d build --delete

cleaner presets list

Show all available presets, including built-in ones and presets loaded from config files.

cleaner presets list

With custom config:

cleaner presets list --config "./ops/cleanerconfig.toml"

cleaner presets export

Export a preset into a separate TOML file named {preset_name}_exported.toml.

cleaner presets export python

With custom config:

cleaner presets export frontend --config "./ops/cleanerconfig.toml"

Presets

List all presets:

cleaner presets list

Export a preset:

cleaner presets export python

Use a preset:

cleaner clean --use python
cleaner clean --use python --delete
cleaner clean --use node -g "*.log" --ignore-dirs ".vscode" --delete

Built-in presets

Built-in presets are stored in src/cli_cleaner/presets.toml.

Available out of the box:

  • python__pycache__, .pytest_cache, .mypy_cache, .ruff_cache, .tox, .nox, .hypothesis, htmlcov, build, dist, .pytype, .pyre, *.pyc, *.pyo, *$py.class, **/*.egg-info/**, .coverage.*, pytest-*.xml, pytest-*.log
  • nodenode_modules, .parcel-cache, .next, .nuxt, .svelte-kit, .vite, .turbo, .cache, coverage, dist, build, out, *.log, *.tsbuildinfo
  • rusttarget, coverage
  • gobin, build, dist, coverage, coverage.out
  • javatarget, build, out, .gradle, .idea/modules, compiled .class, .jar, .war, .ear artifacts
  • dotnetbin, obj, .vs, TestResults, artifacts, coverage
  • phpvendor, var/cache, var/log, storage/framework/cache, bootstrap/cache, coverage, build, dist, *.log
  • rubyvendor/bundle, .bundle, coverage, tmp, pkg, log/*.log
  • swiftDerivedData, .build, .swiftpm, build, Xcode user data
  • androidbuild, .gradle, app/build, .cxx, captures, coverage
  • latex — common intermediate files like *.aux, *.bbl, *.log, *.toc, *.out, *.synctex.gz
  • haskelldist, dist-newstyle, .stack-work, coverage
  • elixir_build, deps, cover
  • ansible*.retry
  • c_cppbuild, bin, obj, .cache, CMakeFiles, Debug, Release, x64, x86, common binary/object artifacts
  • unityLibrary, Temp, Build, Logs, Obj
  • unrealBinaries, DerivedDataCache, Intermediate, Saved/Logs
  • os.DS_Store, Thumbs.db, desktop.ini

Many presets also include default ignored directories such as .git, .hg, .svn, .idea, .vscode, venv, and .venv.


Project configuration

CLI Cleaner searches upward from the current working directory for:

  1. pyproject.toml
  2. cleanerconfig.toml

Preset merge order from lowest to highest priority:

  1. Built-in presets
  2. pyproject.toml
  3. cleanerconfig.toml
  4. File passed explicitly via --config

If the same preset name appears multiple times, the last source wins.

Example: pyproject.toml

[tool.cleaner.presets.my_python]
dirs = ["__pycache__", ".pytest_cache", "build", "dist"]
files = [".coverage", "coverage.xml"]
globs = ["**/*.pyc", "**/*.pyo", "**/*.egg-info/**"]
ignored_dirs = [".git", ".idea", ".vscode", ".venv"]
ignored_files = []

Example: cleanerconfig.toml

[tool.cleaner.presets.frontend]
dirs = ["node_modules", ".next", ".turbo", "dist", "build"]
files = [".eslintcache"]
globs = ["*.log", "*.tsbuildinfo"]
ignored_dirs = [".git", ".idea", ".vscode"]
ignored_files = []

Explicit config path

cleaner clean --use frontend --config "./ops/cleanerconfig.toml"

You can also use the same config file for preset inspection and export:

cleaner presets list --config "./ops/cleanerconfig.toml"
cleaner presets export frontend --config "./ops/cleanerconfig.toml"

Behavior

  • Default mode is dry-run
  • Add --delete to actually remove files
  • cleaner clean without arguments shows command help
  • To run cleanup, provide at least one selector:
    • --dirs
    • --files
    • --globs
    • or use a preset with --use
  • Manual CLI flags override preset values
  • Many presets include ignored directories for safety, such as .git, .idea, .vscode, venv, .venv

Typical scenarios

cleaner clean --use python
cleaner clean --use python --delete
cleaner clean --use node -g "*.log" --delete
cleaner clean -g "build/**" -g "*.temp.*" --ignore-dirs ".venv" --delete
cleaner clean --use frontend --delete
cleaner presets list --config "./ops/cleanerconfig.toml"
cleaner presets export python

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cli_cleaner-1.3.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cli_cleaner-1.3-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file cli_cleaner-1.3.tar.gz.

File metadata

  • Download URL: cli_cleaner-1.3.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cli_cleaner-1.3.tar.gz
Algorithm Hash digest
SHA256 fb8e3961ede5288fcd8b749f65375c0d28cd859e04be8d2060f29d35e712ef9b
MD5 9331fd79b59fffcff8b14a9dae20ed87
BLAKE2b-256 a3b2b678274c3fb845b29810e1700bc499bc1d680acb0109a85712ad9ed54002

See more details on using hashes here.

Provenance

The following attestation bundles were made for cli_cleaner-1.3.tar.gz:

Publisher: publish.yml on DasKaroWow/cli_cleaner

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cli_cleaner-1.3-py3-none-any.whl.

File metadata

  • Download URL: cli_cleaner-1.3-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cli_cleaner-1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5b33e97ea48550d264d6d12c5ff932d48dbe53e7652fec2dc754aa239ec0c4fc
MD5 52b2eb949b0a31bf4d54aa7bc1af0b83
BLAKE2b-256 dff918d359db06ee091f2a050c5fe4c7689f8ca1713d7e782ee94cbb08160225

See more details on using hashes here.

Provenance

The following attestation bundles were made for cli_cleaner-1.3-py3-none-any.whl:

Publisher: publish.yml on DasKaroWow/cli_cleaner

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page