Crates.io | xdm |
lib.rs | xdm |
version | 0.4.1 |
source | src |
created_at | 2022-08-28 16:55:11.418077 |
updated_at | 2022-09-30 16:16:01.715747 |
description | XXiaoA's dotfiles manager |
homepage | https://crates.io/crates/xdm |
repository | https://github.com/XXiaoA/xdm/ |
max_upload_size | |
id | 653977 |
size | 374,801 |
XXiaoA's dotfiles manager
Download the file from releases
Download from crates.io: cargo install xdm
. And remember to add ~/.cargo/bin/
into your $PATH
Clone the source code with git. Then run cargo install --path .
. And remember to add ~/.cargo/bin/
into your $PATH
Run
xdm -h
for more details
First you should create a yaml file named xdm.yaml
(not prerequisite, but recommend).
Then you can run xdm s
in a directory which has the yaml file. Xdm will find the xdm.yaml
automatically in the current directory. Or you're able to use xdm s file.yaml
to specify a yaml file.
Also, you can link a specific a directory or file.
You can set manual
true in your link parameter (see configuration).
If a link is manual, it won't be crated after run xdm s
. But you can create it manually:
xdm link {path}
Also, link
command can work in all links, whether it'is manual or not.
And you can crate all links with xdm s -a
You can use add
command to add a link item into your configuration automatically. For example:
xdm a a
Then the following will add into your configuration:
link:
# add by xdm
a:
path: b
BTW, the link is added is absolutize. And it don't use a simple way: a: b
in order to let you add other parameter more easily.
Notice: This feature will change your configuration. Your configuration probably be messy, but it still legal. Maybe fix it in the futrue.
For example:
link:
./path-to-original-file:
path: ./path-to-linked-file
./nvim: ~/repos/nvim
./tmux:
path: ~/.tmux.conf
if: test -e /usr/bin/tmux # for fish shell
create:
- ~/repos
Notice: you must have link
option.
Link a file/directory.
What's more, the two following form is same, it can reduce your work:
link:
./a:
path: b
./a: b
Parameter | Explanation | type | default |
---|---|---|---|
path | The file path to linked file | string | \ |
exist | Only create the link if the original file exists | bool | true |
force | Create the link whether the linked file exists or not | bool | false |
if | Create the link if shell command is true (WIP) | string | \ |
create | Create the parent directory of link if need | bool | true |
manual | Check here | bool | false |
relink | Auto relink if the linked path is a link | bool | true |
Create a directory
Whether path-to-linked-file
is a directory or file, it shouldn't end with /
.
But path-to-original-file
should end with /
or not is base on yourself.