summaryrefslogtreecommitdiff
path: root/oh-my-zsh/plugins/cake
diff options
context:
space:
mode:
authorAditya <bluenerd@protonmail.com>2023-02-27 20:04:56 +0530
committerAditya <bluenerd@protonmail.com>2023-02-27 20:04:56 +0530
commitedc449275b6c04445f58b108ca0937a87c1e8430 (patch)
tree9fd484d58145b616f29a78857cc0b1c8b1c18f05 /oh-my-zsh/plugins/cake
parent6f5424ca96c4221ef433f545642669e9c104d0ed (diff)
add zsh
Diffstat (limited to 'oh-my-zsh/plugins/cake')
-rw-r--r--oh-my-zsh/plugins/cake/README.md15
-rw-r--r--oh-my-zsh/plugins/cake/cake.plugin.zsh33
2 files changed, 48 insertions, 0 deletions
diff --git a/oh-my-zsh/plugins/cake/README.md b/oh-my-zsh/plugins/cake/README.md
new file mode 100644
index 0000000..2c2a280
--- /dev/null
+++ b/oh-my-zsh/plugins/cake/README.md
@@ -0,0 +1,15 @@
+# Cake
+
+This plugin provides completion for [CakePHP](https://cakephp.org/).
+
+To use it add cake to the plugins array in your zshrc file.
+
+```bash
+plugins=(... cake)
+```
+
+## Note
+
+This plugin generates a cache file of the cake tasks found, named `.cake_task_cache`, in the current working directory.
+It is regenerated when the Cakefile is newer than the cache file. It is advised that you add the cake file to your
+`.gitignore` files.
diff --git a/oh-my-zsh/plugins/cake/cake.plugin.zsh b/oh-my-zsh/plugins/cake/cake.plugin.zsh
new file mode 100644
index 0000000..2370df9
--- /dev/null
+++ b/oh-my-zsh/plugins/cake/cake.plugin.zsh
@@ -0,0 +1,33 @@
+# Set this to 1 if you want to cache the tasks
+_cake_cache_task_list=1
+
+# Cache filename
+_cake_task_cache_file='.cake_task_cache'
+
+_cake_get_target_list () {
+ cake | grep '^cake ' | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$'
+}
+
+_cake_does_target_list_need_generating () {
+
+ if [ ${_cake_cache_task_list} -eq 0 ]; then
+ return 1;
+ fi
+
+ [ ! -f ${_cake_task_cache_file} ] && return 0;
+ [ Cakefile -nt ${_cake_task_cache_file} ] && return 0;
+ return 1;
+}
+
+_cake () {
+ if [ -f Cakefile ]; then
+ if _cake_does_target_list_need_generating; then
+ _cake_get_target_list > ${_cake_task_cache_file}
+ compadd `cat ${_cake_task_cache_file}`
+ else
+ compadd `_cake_get_target_list`
+ fi
+ fi
+}
+
+compdef _cake cake