Simple and easy to use command line application written in Go for cleaning unnecessary XCode files.

xcclear

Say hello to a few extra gigabytes of space on your Mac with xcclear, a simple and easy to use command line application written in Go for cleaning unnecessary XCode files.

Installation

brew install lajosdeme/utils/xcclear

Screenshots

Run xcclear -d to diagnose your storage:

diagnose

Run xcclear -p to purge all unwanted files from your storage:

purge

Options

flag type description
-d/--diagnose bool Diagnose the total space occupied by derived data, caches and other XCode related files.
-p/--purge bool Clean all caches/unnecessary files.
-c/--clear string Clean only the specified directories.
Options can be:
- derived: Derived Data. - device: iOS DeviceSupport (The latest iOS version will be kept.)
- watch: watchOS DeviceSupport
- simulator: 'CoreSimulator'
- cache: Xcode caches located at ~/Library/Caches/com.apple.dt.Xcode
- archives: Archives
-v/--version bool Get the current version.

Development

Compiling from source

go get github.com/lajosdeme/xcclear

If $GOPATH/bin is on your $PATH run xcclear -h to see usage options.

Contributing

If you have any suggestions or questions feel free to raise an issue or reach out to me directly via [email protected].

If this tool made your life easier you can thank me by buying me a coffee.

Buy Me A Coffee

Comments
  • brew install returns error..

    brew install returns error..

    Hi @lajosdeme , is this project still in development? I get the following errors when I try to install with brew:

    ==> Tapping lajosdeme/utils
    Cloning into '/opt/homebrew/Library/Taps/lajosdeme/homebrew-utils'...
    remote: Enumerating objects: 25, done.
    remote: Counting objects: 100% (25/25), done.
    remote: Compressing objects: 100% (21/21), done.
    remote: Total 25 (delta 7), reused 14 (delta 4), pack-reused 0
    Receiving objects: 100% (25/25), 4.82 KiB | 2.41 MiB/s, done.
    Resolving deltas: 100% (7/7), done.
    Tapped 1 formula (13 files, 10.4KB).
    Error: lajosdeme/utils/xcclear: wrong number of arguments (given 1, expected 0)
    
  • Invalid formula

    Invalid formula

    ➜  Developer brew install lajosdeme/utils/xcclear
    Running `brew update --auto-update`...
    ==> Auto-updated Homebrew!
    Updated Homebrew from 492ac6f77 to 4484068de.
    Updated 3 taps (homebrew/core, homebrew/cask and homebrew/cask-fonts).
    
    You have 37 outdated formulae installed.
    You can upgrade them with brew upgrade
    or list them with brew outdated.
    
    ==> Tapping lajosdeme/utils
    Cloning into '/usr/local/Homebrew/Library/Taps/lajosdeme/homebrew-utils'...
    remote: Enumerating objects: 25, done.
    remote: Counting objects: 100% (25/25), done.
    remote: Compressing objects: 100% (21/21), done.
    remote: Total 25 (delta 7), reused 14 (delta 4), pack-reused 0
    Receiving objects: 100% (25/25), 4.82 KiB | 705.00 KiB/s, done.
    Resolving deltas: 100% (7/7), done.
    Error: Invalid formula: /usr/local/Homebrew/Library/Taps/lajosdeme/homebrew-utils/xcclear.rb
    xcclear: wrong number of arguments (given 1, expected 0)
    Error: Cannot tap lajosdeme/utils: invalid syntax in tap!
    
  • Error: Invalid formula: /opt/homebrew/Library/Taps/lajosdeme/homebrew-utils/xcclear.rb

    Error: Invalid formula: /opt/homebrew/Library/Taps/lajosdeme/homebrew-utils/xcclear.rb

    brew install lajosdeme/utils/xcclear

    ==> Tapping lajosdeme/utils Cloning into '/opt/homebrew/Library/Taps/lajosdeme/homebrew-utils'... remote: Enumerating objects: 25, done. remote: Counting objects: 100% (25/25), done. remote: Compressing objects: 100% (21/21), done. remote: Total 25 (delta 7), reused 14 (delta 4), pack-reused 0 Receiving objects: 100% (25/25), 4.82 KiB | 4.82 MiB/s, done. Resolving deltas: 100% (7/7), done. Error: Invalid formula: /opt/homebrew/Library/Taps/lajosdeme/homebrew-utils/xcclear.rb xcclear: Calling bottle :unneeded is disabled! There is no replacement. Please report this issue to the lajosdeme/utils tap (not Homebrew/brew or Homebrew/core): /opt/homebrew/Library/Taps/lajosdeme/homebrew-utils/xcclear.rb:7

    Error: Cannot tap lajosdeme/utils: invalid syntax in tap!

  • Remove (purge) output only if data exists

    Remove (purge) output only if data exists

    Hi, thanks for your utility, I found it searching through stackoverflow. About purging data, what if the output only displays what's being deleted after analysis?

    After diagnose, the output is reasonable:

    └─[$]> xcclear -d
    DerivedData: ----------------------------- 0.0 MB 
    Archives: - directory doesn't exist.
    iOS DeviceSupport: - directory doesn't exist.
    watchOS DeviceSupport: - directory doesn't exist.
    CoreSimulator: --------------------------- 9.55 GB 
    XCode Cache: - directory doesn't exist.
    
    Total: ---------------------------------- 9.55 GB 
    
    Type xcclear -p or xcclear --purge to clear everything. Archives and the last installed iOS version in iOS DeviceSupport won't be deleted.%
    

    But the output from purge is really polluted:

    2021/04/01 11:20:26 Purging started...
    2021/04/01 11:20:26 Archives and the last installed iOS version in iOS DeviceSupport won't be deleted.
    2021/04/01 11:20:26 Purging  DerivedData
    2021/04/01 11:20:26 Error cleaning /Users/ppizarror/Library/Developer/Xcode/iOS DeviceSupport
    2021/04/01 11:20:26 open /Users/ppizarror/Library/Developer/Xcode/iOS DeviceSupport: no such file or directory
    2021/04/01 11:20:26 Error cleaning /Users/ppizarror/Library/Developer/Xcode/watchOS DeviceSupport
    2021/04/01 11:20:26 open /Users/ppizarror/Library/Developer/Xcode/watchOS DeviceSupport: no such file or directory
    2021/04/01 11:20:26 Purging  CoreSimulator
    2021/04/01 11:20:26 Error cleaning /Users/ppizarror/Library/Caches/com.apple.dt.Xcode
    2021/04/01 11:20:26 open /Users/ppizarror/Library/Caches/com.apple.dt.Xcode: no such file or directory
    2021/04/01 11:20:26 Successfully freed up 9.55 GB.
    

    I think that the output should be (for user experience) this:

    2021/04/01 11:20:26 Purging started...
    2021/04/01 11:20:26 Archives and the last installed iOS version in iOS DeviceSupport won't be deleted.
    2021/04/01 11:20:26 Purging DerivedData ..... 0.0 MB
    2021/04/01 11:20:26 Purging CoreSimulator .... 9.55 GB
    2021/04/01 11:20:26 Successfully freed up 9.55 GB.
    

    That is, remove only what's being displayed in xcclear -d

  • Warning after updating brew

    Warning after updating brew

    Hello, I was updating my brew packages, and the following warning caught my attention:

    Warning: Calling bottle :unneeded is deprecated! There is no replacement.
    Please report this issue to the lajosdeme/utils tap (not Homebrew/brew or Homebrew/core):
      /opt/homebrew/Library/Taps/lajosdeme/homebrew-utils/xcclear.rb:7
    

    My OS: MacOS Big Sur v11.6.1 Brew: v3.3.3

    Thanks

Related tags
A command line tool that builds and (re)starts your web application everytime you save a Go or template fileA command line tool that builds and (re)starts your web application everytime you save a Go or template file

# Fresh Fresh is a command line tool that builds and (re)starts your web application everytime you save a Go or template file. If the web framework yo

Nov 22, 2021
Watcher - A simple command line app to watch files in a directory for changes and run a command when files change!

Watcher - Develop your programs easily Watcher watches all the files present in the directory it is run from of the directory that is specified while

Mar 27, 2022
F2 is a cross-platform command-line tool for batch renaming files and directories quickly and safely. Written in Go!
F2 is a cross-platform command-line tool for batch renaming files and directories quickly and safely. Written in Go!

F2 is a cross-platform command-line tool for batch renaming files and directories quickly and safely.

Dec 31, 2022
An open-source GitLab command line tool bringing GitLab's cool features to your command line
An open-source GitLab command line tool bringing GitLab's cool features to your command line

GLab is an open source GitLab CLI tool bringing GitLab to your terminal next to where you are already working with git and your code without switching

Dec 30, 2022
A command line tool to prompt for a value to be included in another command line.

readval is a command line tool which is designed for one specific purpose—to prompt for a value to be included in another command line. readval prints

Dec 22, 2021
A simple tool which you can use to move through your directories from the command line

Fe What is Fe ? Fe is a simple tool which you can use to move through your direc

Jan 1, 2022
Lynx is a command line application that build simple golang project
Lynx is a command line application that build simple golang project

Lynx Lynx is a Golang application for easily creating simple Go project Install Just run below commands for install lynx in your system go get -u gith

Oct 1, 2021
Easy to use library and CLI utility to generate Go struct from CSV files.

csv2struct Easy to use library and CLI utility to generate Go struct from CSV files. As a benefit, it's fully compatible with csvutil. So, structs gen

Nov 7, 2022
Package command provide simple API to create modern command-line interface

Package command Package command provide simple API to create modern command-line interface, mainly for lightweight usage, inspired by cobra Usage pack

Jan 16, 2022
Portal is a quick and easy command-line file transfer utility from any computer to another 🖥️ 🌌 💻
Portal is a quick and easy command-line file transfer utility from any computer to another 🖥️ 🌌 💻

Portal is a quick and easy command-line file transfer utility from any computer to another ??️ ?? ??

Dec 27, 2022
Rclone ("rsync for cloud storage") is a command line program to sync files and directories to and from different cloud storage providers.
Rclone (

Rclone ("rsync for cloud storage") is a command line program to sync files and directories to and from different cloud storage providers.

Jan 5, 2023
Command-line tool to load csv and excel (xlsx) files and run sql commands
Command-line tool to load csv and excel (xlsx) files and run sql commands

csv-sql supports loading and saving results as CSV and XLSX files with data processing with SQLite compatible sql commands including joins.

Nov 2, 2022
Rclone ("rsync for cloud storage") is a command-line program to sync files and directories to and from different cloud storage providers.
Rclone (

Website | Documentation | Download | Contributing | Changelog | Installation | Forum Rclone Rclone ("rsync for cloud storage") is a command-line progr

Nov 5, 2021
Docli - Command-line interfaces made easy
Docli - Command-line interfaces made easy

Docli Docli is a declarative language for describing command-line interfaces in Go programs. It cuts down the boilerplate to the bare minimum, so you

Aug 20, 2022
Package varflag implements command-line flag parsing into vars.Variables for easy type handling with additional flag types.

varflag Package flag implements command-line flag parsing into vars.Variables for easy type handling with additional flag types. varflag Flags String

Aug 2, 2022
This is a command line application to manage and fine-tune Time Machine exclude paths.

heptapod This is a command line application to manage and fine-tune Time Machine exclude paths. This repository is a WIP! The advertised functionality

Dec 28, 2022
Command line application based on IP lookup and server lookup.
Command line application based on IP lookup and server lookup.

Projeto feito usando Golang com as packages net e urfave/cli. Baseado no curso de Golang do devbook. Uma pequena aplicação em linha de comando, que fa

Jan 6, 2022
Hosty is a command-line utility that allows for fast inspection and editing of /etc/hosts-like files

Hosty Description Hosty is a command-line utility that allows for fast inspection and editing of /etc/hosts-like files. It is written in golang and us

Sep 3, 2021
🔄 A command-line utility to export Protocol Buffers (proto) files to YAML, and JSON

proto2yaml ?? A command-line utility to export Protocol Buffers (proto) files to YAML, and JSON. Currently supported exports are for: Packages Service

Nov 10, 2022