-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskfile.yml.tmpl
More file actions
107 lines (96 loc) · 2.95 KB
/
Taskfile.yml.tmpl
File metadata and controls
107 lines (96 loc) · 2.95 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
version: '3'
# Variables
vars:
INSTALL_DIR: "$HOME/.local/devkit"
MODULES_DIR: "{{.INSTALL_DIR}}/modules"
DYNAMIC_INCLUDE: "{{.INSTALL_DIR}}/includes.yml"
# Main Tasks
tasks:
default:
desc: "Show the list of available tasks"
cmds:
- task --list
init:
desc: "Initialize the devkit environment"
cmds:
- echo "Devkit environment initialized."
- mkdir -p {{.MODULES_DIR}}
- task: update-includes
- task: default
ls_mod:
desc: "Install all modules"
cmds:
- |
if [ -d "{{.MODULES_DIR}}" ]; then
ls {{.MODULES_DIR}}
else
echo "Module folder is empty."
fi
rm_mod:
desc: "Remove module"
inputs:
- module
cmds:
- |
if [ -d "{{.MODULES_DIR}}/{{.module}}" ]; then
rm -rf {{.MODULES_DIR}}/{{.module}}
fi
echo "Module {{.module}} removed"
- task: update-includes
install_mod:
desc: "Install a module. required: url:<string>"
summary: "Clone a module from a public repository URL."
inputs:
- url
cmds:
- |
# if url is empty, exit
[ -z "{{.url}}" ] && echo "url is required" && exit 1
REPO_NAME=$(basename -s .git {{.url}})
# remove "-tasks" from the repo name
MODULE_NAME=$(echo $REPO_NAME | sed 's/-tasks//')
mkdir -p {{.MODULES_DIR}}/$MODULE_NAME
git clone {{.url}} {{.MODULES_DIR}}/$MODULE_NAME
- task: update-includes
- echo "Module $MODULE_NAME installed."
update_mod:
desc: "Update all installed modules"
silient: true
cmds:
- |
for module in $(ls {{.MODULES_DIR}}); do \
cd {{.MODULES_DIR}}/$module && git pull; \
cd ../..; \
done
- task update-includes
- echo "All modules updated."
update:
desc: "Update devkit"
summary: "Fetch the latest version of the main Taskfile and update all modules."
cmds:
- echo "Updating the main Taskfile..."
- curl -L -o {{.INSTALL_DIR}}/Taskfile.yml.tmpl https://raw.githubusercontent.com/42dev-co/devkit/main/Taskfile.yml.tmpl
- echo "Main Taskfile template updated."
- task update_mod
- task update-includes
- echo "Devkit and modules updated."
clean:
desc: "Clean up all installed modules"
cmds:
- rm -rf {{.MODULES_DIR}}
- rm -f {{.DYNAMIC_INCLUDE}}
- echo "All modules have been cleaned up."
update-includes:
desc: "Update the dynamically included tasks from modules"
cmds:
- |
echo "includes:" > {{.DYNAMIC_INCLUDE}}
for module in $(find {{.MODULES_DIR}} -mindepth 1 -maxdepth 1 -type d); do \
MODULE_NAME=$(basename $module); \
TASKFILE_PATH="$module/Taskfile.yml"; \
if [ -f $TASKFILE_PATH ]; then \
echo " $MODULE_NAME: $TASKFILE_PATH" >> {{.DYNAMIC_INCLUDE}}; \
fi; \
done
bash {{.INSTALL_DIR}}/join.sh
echo "Dynamic includes updated."