mirror of
https://github.com/jimeh/dotify.git
synced 2026-02-19 10:06:39 +00:00
Expand Dotfile syntax support to not require a <source> argument
Supported action syntax: - `<action>: <source> -> <target>` - `<action>: -> <target>` - `<source> -> <target>` - `-> <target>`
This commit is contained in:
@@ -24,9 +24,13 @@ gitignore -> .gitignore
|
|||||||
hgrc -> .hgrc
|
hgrc -> .hgrc
|
||||||
irbrc -> .irbrc
|
irbrc -> .irbrc
|
||||||
powconfig -> .powconfig
|
powconfig -> .powconfig
|
||||||
rspec -> .rspec
|
|
||||||
tmux -> .tmux
|
# The following examples uses the link action, without specifying a <source>,
|
||||||
tmux.conf -> .tmux.conf
|
# in this case the link action is smart enough to determine the source value
|
||||||
|
# for ".rspec" for example to be "rspec".
|
||||||
|
link: -> .rspec
|
||||||
|
-> .tmux
|
||||||
|
-> .tmux.conf
|
||||||
|
|
||||||
# The same source can be symlinked to multiple targets.
|
# The same source can be symlinked to multiple targets.
|
||||||
load_shellrc.sh -> .profile
|
load_shellrc.sh -> .profile
|
||||||
|
|||||||
@@ -20,12 +20,22 @@ compile-dotfile() {
|
|||||||
output="${output}$(trim "${BASH_REMATCH[3]}") "
|
output="${output}$(trim "${BASH_REMATCH[3]}") "
|
||||||
output="${output}$(trim "${BASH_REMATCH[4]}")\n"
|
output="${output}$(trim "${BASH_REMATCH[4]}")\n"
|
||||||
|
|
||||||
|
# Parse "<action>: -> <target>" lines.
|
||||||
|
elif [[ "$line" =~ ^(\ +)?([a-zA-Z0-9_-]+):\ *-[\>]\ +(.+)$ ]]; then
|
||||||
|
output="${output}${BASH_REMATCH[1]}dotify-action ${BASH_REMATCH[2]} "
|
||||||
|
output="${output}$(trim "${BASH_REMATCH[3]}")\n"
|
||||||
|
|
||||||
# Parse "<source> -> <target>" lines.
|
# Parse "<source> -> <target>" lines.
|
||||||
elif [[ "$line" =~ ^(\ +)?(.+)\ -[\>]\ (.+)$ ]]; then
|
elif [[ "$line" =~ ^(\ +)?(.+)\ -[\>]\ (.+)$ ]]; then
|
||||||
output="${output}${BASH_REMATCH[1]}dotify-action default "
|
output="${output}${BASH_REMATCH[1]}dotify-action default "
|
||||||
output="${output}$(trim "${BASH_REMATCH[2]}") "
|
output="${output}$(trim "${BASH_REMATCH[2]}") "
|
||||||
output="${output}$(trim "${BASH_REMATCH[3]}")\n"
|
output="${output}$(trim "${BASH_REMATCH[3]}")\n"
|
||||||
|
|
||||||
|
# Parse "-> <target>" lines.
|
||||||
|
elif [[ "$line" =~ ^(\ +)?-[\>]\ (.+)$ ]]; then
|
||||||
|
output="${output}${BASH_REMATCH[1]}dotify-action default "
|
||||||
|
output="${output}$(trim "${BASH_REMATCH[2]}")\n"
|
||||||
|
|
||||||
# Append line without modifications.
|
# Append line without modifications.
|
||||||
else
|
else
|
||||||
output="${output}${line}\n"
|
output="${output}${line}\n"
|
||||||
|
|||||||
@@ -39,6 +39,15 @@ dotify-action link ackrc .ackrc
|
|||||||
dotify-action link gitconfig \".gitconfig\""
|
dotify-action link gitconfig \".gitconfig\""
|
||||||
|
|
||||||
|
|
||||||
|
# Compiles standard actions without a <source>
|
||||||
|
echo -e "root_link .dotfiles
|
||||||
|
link: -> .ackrc
|
||||||
|
link:-> \".gitconfig\"" > $dotfile
|
||||||
|
assert "compile-dotfile $dotfile" "root_link .dotfiles
|
||||||
|
dotify-action link .ackrc
|
||||||
|
dotify-action link \".gitconfig\""
|
||||||
|
|
||||||
|
|
||||||
# Compiles default (shorthand) actions
|
# Compiles default (shorthand) actions
|
||||||
echo -e "root_link .dotfiles
|
echo -e "root_link .dotfiles
|
||||||
link: ackrc -> .ackrc
|
link: ackrc -> .ackrc
|
||||||
@@ -48,6 +57,15 @@ dotify-action link ackrc .ackrc
|
|||||||
dotify-action default gitconfig \".gitconfig\""
|
dotify-action default gitconfig \".gitconfig\""
|
||||||
|
|
||||||
|
|
||||||
|
# Compiles default (shorthand) actions without a <source>
|
||||||
|
echo -e "root_link .dotfiles
|
||||||
|
-> .ackrc
|
||||||
|
-> \".gitconfig\"" > $dotfile
|
||||||
|
assert "compile-dotfile $dotfile" "root_link .dotfiles
|
||||||
|
dotify-action default .ackrc
|
||||||
|
dotify-action default \".gitconfig\""
|
||||||
|
|
||||||
|
|
||||||
# Correctly indents actions
|
# Correctly indents actions
|
||||||
echo -e "root_link .dotfiles
|
echo -e "root_link .dotfiles
|
||||||
if [ true ]; then
|
if [ true ]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user