An open API service indexing awesome lists of open source software.

https://github.com/nnbnh/bsymlink

๐Ÿ”— Batch symlink tool that SuperB
https://github.com/nnbnh/bsymlink

basher bpkg cli dotfiles posix symlink terminal

Last synced: about 2 months ago
JSON representation

๐Ÿ”— Batch symlink tool that SuperB

Awesome Lists containing this project

README

          

bsymlink


Batch symlink tool that SuperB


License: GPL-3.0 Development completed

## ๐Ÿ’ก About

`bsymlink` is a *SuperB* batch symlink tool written in [`portable sh`](https://github.com/dylanaraps/pure-sh-bible). But unlike [**Stow**](https://www.gnu.org/software/stow), it can handle conflict files like move it to the trash or delete it.

## ๐Ÿš€ Setup

### ๐Ÿงพ Dependencies

- [Unix commands](https://en.wikipedia.org/wiki/List_of_Unix_commands) to process

### ๐Ÿ“ฅ Installation

#### ๐Ÿ”ง Manually

Option 1: using `curl`

```sh
curl https://raw.githubusercontent.com/NNBnh/bsymlink/main/bin/bsymlink > ~/.local/bin/bsymlink
chmod +x ~/.local/bin/bsymlink
```

Option 2: using `git`

```sh
git clone https://github.com/NNBnh/bsymlink.git ~/.local/share/bsymlink
ln -s ~/.local/share/bsymlink/bin/bsymlink ~/.local/bin/bsymlink
```

#### ๐Ÿ“ฆ Package manager

For [Bpkg](https://github.com/bpkg/bpkg) user:

```sh
bpkg install NNBnh/bsymlink
```

For [Basher](https://github.com/basherpm/basher) user:

```sh
basher install NNBnh/bsymlink
```

> **Note** *If you can and want to port Bsymlink to other package managers, feel free to do so.*

## โŒจ๏ธ Usage

Run `bsymlink` in the terminal:

```sh
bsymlink path/to/directory path/to/target [path/to/trash]
```

## โš™๏ธ Configuration

This is the default handle conflict command:

```sh
BSYMLINK_HANDLE="handle_conflict \"\$target\""
```

it's use this builtin `handle_conflict` function:

```sh
BSYMLINK_TRASH_PATH="${BSYMLINK_TRASH_PATH:-${XDG_DATA_HOME:-$HOME/.local/share}/Trash/files}"

handle_conflict() {
mkdir -p "$TRASH_PATH"
rm -rf "$TRASH_PATH/$(basename "$target")" 2>&-
mv -f "$target" "$TRASH_PATH/"
}
```

> **Note** *The default trash's path is `~/.local/share/Trash/files`*

You can change it through environment variables: `export BSYMLINK_HANDLE=""`

> **Note** *Keep in mind that the `` will be run through `eval` (e.g: `// => /`)*

**Examples:**

Delete conflict files:

```sh
BSYMLINK_HANDLE="rm -rf \"\$target\""
```

Using [Trash-CLI](https://github.com/andreafrancia/trash-cli):

```sh
BSYMLINK_HANDLE="trash \"\$target\""
```

## ๐Ÿ’Œ Credits

Special thanks to:
- [**Stow**](https://www.gnu.org/software/stow) by [GNU](https://www.gnu.org)





---

>

Made with โค๏ธ by NNB


>
>

Buy Me a Coffee