Switchboard - Simplify file organisation on your machine/s.
Tags: programming, opensource, showdev, go
Published: 2022-01-06 00:03:34

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0uifvbqv258c1g2gexfc.png)

{% github Cian911/switchboard %}

Do you ever get annoyed that your Downloads folder gets cluttered with all types of files? Do you wish you could automatically organise them into separate, organised folders? Switchboard is a tool to help simplify file organisation on your machine/s. 

Switchboard works by monitoring a directory you provide (or list of directories), and uses file system notifications to move a matched file to the appropriate destination directory of your choosing.

### Motivation

I built switchboard out of a frustration with the sporadic mess of files strewn throughout my local machine and network file servers. I thought what best way to try and fix this problem then build something, in Go no less :)

Switchboard is new, so I'd love to get it into peoples hands to be used. I'd also love to here any suggestions or improvements you'd like to see - please head over to [Github Discussions](https://github.com/Cian911/switchboard/discussions) to have a chat!

### Usage
See the video below as example. Here, I give switchboard a path to watch, a destination where I want matched files to move to, and the file extension of the type of files I want to move.

You can also visit https://goswitchboard.io/ for all your documentation needs, news, and updates!

[![asciicast](https://asciinema.org/a/cWSUfcUCU4Wd5rQEs5Detf7gn.svg)](https://asciinema.org/a/cWSUfcUCU4Wd5rQEs5Detf7gn)

### Installation

You can install switchboard pre-compiled binary in a number of ways.

##### Homebrew

```sh
brew tap Cian911/switchboard
brew install switchboard

// Check everything is working as it should be
switchboard -h
```

##### Go Install

```sh
go install github.com/Cian911/switchboard@latest
```

##### Manually

You can download the pre-compiled binary for your specific OS type from the [OSS releases page](https://github.com/Cian911/switchboard/releases). You will need to copy these and extract the binary, then move it to you local bin directory. See the example below.

```sh
wget https://github.com/Cian911/switchboard/releases/download/${VERSION}/${PACKAGE_NAME}
sudo tar -xvf ${PACKAGE_NAME} -C /usr/local/bin/
sudo chmod +x /usr/local/bin/switchboard
```

### Quick Start

Using switchboard is pretty easy. Below lists the set of commands and flags you can pass in.

```sh
Run the switchboard application passing in the path, destination, and file type you'd like to watch for.

Usage:
   watch [flags]

Flags:
      --config string        Pass an optional config file containing multiple paths to watch.
  -d, --destination string   Path you want files to be relocated.
  -e, --ext string           File type you want to watch for.
  -h, --help                 help for watch
  -p, --path string          Path you want to watch.
```

To get started quickly, you can run the following command, passing in the path, destination, and file extenstion you want to watch for. See the example below.

```sh
switchboard watch -p /home/user/Downloads -d /home/user/Movies -e .mp4
```