Repository navigation
Expand file tree
/
Copy pathTaskfile.dist.yml
More file actions
106 lines (99 loc) · 3.33 KB
/
Copy pathTaskfile.dist.yml
File metadata and controls
106 lines (99 loc) · 3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# yaml-language-server: $schema=https://taskfile.dev/schema.json
version: "3"
includes:
aqua:
taskfile: aqua/Taskfile.yml
optional: true
internal: false
flatten: false
aliases:
- a
azure:
taskfile: azure/Taskfile.yml
optional: true
internal: false
flatten: false
aliases:
- az
vars:
# ユーザーホーム(テンプレでパスとして使うので/をつけない)
USER_HOME: "~"
# ユーザーフォームにシンボリックリンクを作成する設定ファイルのリスト[TARGET,LINK_NAME]
USER_HOME_LINKS:
- "vimrc,.vimrc"
- "Taskfile.home.yml,Taskfile.yml"
# XDG_CONFIG_HOME 環境変数のデフォルト値
XDG_CONFIG_HOME: "~/.config"
# XDG_CONFIG_HOME にシンボリックリンクを作成するディレクトリのリスト
XDG_CONFIG_HOME_LINKS:
- "aqua"
- "bash"
- "git"
tasks:
default:
cmds:
- echo "This is {{.TASKFILE}} at v{{.TASK_VERSION}}"
- task --list --sort alphanumeric -t {{.TASKFILE}}
silent: true
link:
desc: "Create symlinks for configuration files"
cmds:
- mkdir -p {{.XDG_CONFIG_HOME}}
# USER_HOME にシンボリックリンクを作成[TARGET,LINK_NAME]
- for:
var: USER_HOME_LINKS
task: _link
vars:
TARGET: "{{.TASKFILE_DIR}}/{{index (.ITEM | splitList \",\") 0}}"
LINK_NAME: "{{.USER_HOME}}/{{index (.ITEM | splitList \",\") 1}}"
# XDG_CONFIG_HOME にシンボリックリンクを同名のディレクトリで作成
- for:
var: XDG_CONFIG_HOME_LINKS
task: _link
vars:
TARGET: "{{.TASKFILE_DIR}}/{{.ITEM}}"
LINK_NAME: "{{.XDG_CONFIG_HOME}}/{{.ITEM}}"
- # uchi のディレクトリを決めかねているがとりあえず dist をリンク
task: _link
vars:
TARGET: "{{.TASKFILE_DIR}}/dist"
LINK_NAME: "{{.XDG_CONFIG_HOME}}/uchi"
- task: _xdg_base_directory_for_bash
silent: true
_link:
desc: "Helper task to create a symlink"
vars:
TARGET: "{{.TARGET}}"
LINK_NAME: "{{.LINK_NAME}}"
BACKUP: "{{.LINK_NAME}}.bak"
cmds:
- |
if test -L {{.LINK_NAME}} ; then
# すでにシンボリックリンクが存在する場合はバックアップを作成
ln -nsf $(readlink {{.LINK_NAME}}) {{.BACKUP}}
fi
ln -nsf {{.TARGET}} {{.LINK_NAME}}
if test -L {{.BACKUP}}; then
# バックアップが存在する場合、リンク先が同じなら不要なので削除
if [ $(readlink {{.LINK_NAME}}) = $(readlink {{.BACKUP}}) ] ; then
unlink {{.BACKUP}}
else
# リンク先が異なる場合はバックアップを表示
ls -l {{.BACKUP}}
fi
fi
ls -l {{.LINK_NAME}}
silent: true
internal: true
_xdg_base_directory_for_bash:
desc: "Instructions to set XDG Base Directory for bash"
cmds:
- |
if test -e /etc/profile.d/bash_xdg.sh ; then
ls -l /etc/profile.d/bash_xdg.sh
else
echo "XDG_BASE_DIRECTORY for bash is not set. To set it system-wide, run the following command with sudo:"
echo "sudo ln -s {{.TASKFILE_DIR}}/bash/etc_profile.d_bash_xdg.sh /etc/profile.d/bash_xdg.sh"
fi
silent: true
internal: true