Cstow
About
There's lots of dotfiles managers, but my favorite is GNU Stow.
It has only two problems: boring UI and no config. Cstow solves them.
Name
Constantine's GNU Stow wrapper.
Some GNU Stow Terminology
A target directory is the root of a tree in which one or more packages wish to appear to be installed.
A stow directory is the root of a tree containing separate packages in private subtrees.
Installation
Use pipx
pipx install cstow
Or pip
pip install cstow
Configuration
Set CSTOW_CONFIG_PATH to path/to/your/cstow_config.toml.
Use any file name you want.
Examples
- My cstow.toml.
- More examples.
Config Contents
Cstow expands ~ and $AN_ENVIRONMENT_VARIABLE.
| Name | Type | Description | Default |
|---|---|---|---|
| root_dir | String | The root of stow directories | / |
| cmd_template | String | The template for GNU Stow commands | See below |
| targets_dirs | Table | Targets (keys) and dirs (values) | |
| targets_dirs (key) | String | A target directory | |
| targets_dirs (value) | Array of strings | Stow directories for the target |
root_dir
You might set it to ~/dotfiles or $DOTFILES.
If you don't set root_dir, use absolute paths in targets_dirs.
cmd_template
You can set it to any shell command, but every variable must be used at least once.
Cstow escapes variables so don't even try shell-injecting yourself!
Variables
| Variable | Description |
|---|---|
| action | A GNU Stow action (no, stow, restow, delete) |
| target | A target directory |
| dir | A stow directory |
Default
stow --$action --no-folding --verbose --target=$target --dir=$dir . \
2>&1 | grep --invert-match --regexp="^BUG" --regexp="^WARN"
Usage
# Get some help
cstow -h
cstow --help
# Run an action
cstow # Default action is 'no'
cstow no # Action is a positional argument
cstow -a no # But flags also work
cstow --action no
# Print plain text
cstow stow -p
cstow restow --plain
cstow -p -a delete
Metadata
Release files for cstow 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cstow-1.0.0.tar.gz | 6.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cstow-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.0 kB
Release files / cstow-1.0.0.tar.gz
| Download URL | cstow-1.0.0.tar.gz |
|---|---|
| Size | 6.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a3d1ba4aed3c5fe884181815437a28a2371163013fe4d364b012a1622075dbee
|
|
BLAKE2b-256 checksum How to use checksums |
af3f65ab0360027163ea048e1af706c6c22c6fee72ca8191b510b6c2f46fd068
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.5.1 CPython/3.11.4 Linux/5.15.0-1041-azure
|
Release files / cstow-1.0.0-py3-none-any.whl
| Download URL | cstow-1.0.0-py3-none-any.whl |
|---|---|
| Size | 8.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bc2c92ea3252ee2fae57c46323f2def1985958b8c027aa380e3c349b132a75c5
|
|
BLAKE2b-256 checksum How to use checksums |
2832fac4595d2414999ff7260a38d6a0f12242a7a7095b282d5de87af0684208
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.5.1 CPython/3.11.4 Linux/5.15.0-1041-azure
|