From 3b13dc07d823ebcb67ea429de305b5413e99ac1e Mon Sep 17 00:00:00 2001 From: Erik Zivkovic Date: Wed, 14 Dec 2016 17:25:48 +0100 Subject: gradle: extract simple task names from subproject tasks (#5704) Currently, only tasks with complete subproject specifier are added to .gradletasknamecache. Gradle commands can be called for all (sub-)projects they are defined for, using their name as defined in the subproject, here called "simple" task names. One example is "gradle clean". This patch adds support for parsing out those "simple" task names from the list of fully specified task names. The .gradletasknamecache file will contain both the fully specified names, and the "simple" names for your autocompletion pleasure. --- plugins/gradle/gradle.plugin.zsh | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'plugins/gradle') diff --git a/plugins/gradle/gradle.plugin.zsh b/plugins/gradle/gradle.plugin.zsh index b2015a351..65b9d4685 100644 --- a/plugins/gradle/gradle.plugin.zsh +++ b/plugins/gradle/gradle.plugin.zsh @@ -61,7 +61,7 @@ _gradle_does_task_list_need_generating () { } ############## -# Parse the tasks from `gradle(w) tasks --all` into .gradletasknamecache +# Parse the tasks from `gradle(w) tasks --all` and return them to the calling function. # All lines in the output from gradle(w) that are between /^-+$/ and /^\s*$/ # are considered to be tasks. If and when gradle adds support for listing tasks # for programmatic parsing, this method can be deprecated. @@ -76,7 +76,7 @@ _gradle_parse_tasks () { task_name_buffer="" elif [[ $line =~ ^\s*$ ]]; then if [[ "$lines_might_be_tasks" = true ]]; then - # If a newline is found, send the buffer to .gradletasknamecache + # If a newline is found, echo the buffer to the calling function while read -r task; do echo $task | awk '/[a-zA-Z0-9:-]+/ {print $1}' done <<< "$task_name_buffer" @@ -90,6 +90,25 @@ _gradle_parse_tasks () { done <<< "$1" } + +############## +# Gradle tasks from subprojects are allowed to be executed without specifying +# the subproject; that task will then be called on all subprojects. +# gradle(w) tasks --all only lists tasks per subproject, but when autocompleting +# we often want to be able to run a specific task on all subprojects, e.g. +# "gradle clean". +# This function uses the list of tasks from "gradle tasks --all", and for each +# line grabs everything after the last ":" and combines that output with the original +# output. The combined list is returned as the result of this function. +############## +_gradle_parse_and_extract_tasks () { + # All tasks + tasks=$(_gradle_parse_tasks "$1") + # Task name without sub project(s) prefix + simple_tasks=$(echo $tasks | awk 'BEGIN { FS = ":" } { print $NF }') + echo "$tasks\n$simple_tasks" +} + ############################################################################## # Discover the gradle tasks by running "gradle tasks --all" ############################################################################ @@ -97,7 +116,7 @@ _gradle_tasks () { if [[ -f build.gradle ]]; then _gradle_arguments if _gradle_does_task_list_need_generating; then - _gradle_parse_tasks "$(gradle tasks --all)" > .gradletasknamecache + _gradle_parse_and_extract_tasks "$(gradle tasks --all)" > .gradletasknamecache fi compadd -X "==== Gradle Tasks ====" $(cat .gradletasknamecache) fi @@ -107,7 +126,7 @@ _gradlew_tasks () { if [[ -f build.gradle ]]; then _gradle_arguments if _gradle_does_task_list_need_generating; then - _gradle_parse_tasks "$(./gradlew tasks --all)" > .gradletasknamecache + _gradle_parse_and_extract_tasks "$(./gradlew tasks --all)" > .gradletasknamecache fi compadd -X "==== Gradlew Tasks ====" $(cat .gradletasknamecache) fi -- cgit v1.2.3-70-g09d2 From 4608231b2576fbe27913a6ce3d350ab03b9b5932 Mon Sep 17 00:00:00 2001 From: Eric Wendelin Date: Wed, 4 Jan 2017 04:26:23 -0700 Subject: Improved gradle options (arguments) completion (#5743) * Sort gradle options for autocompletion This will allow us to more easily keep the options list up-to-date * Add missing gradle options to gradle plugin Reflect documentation at https://docs.gradle.org/3.2.1/userguide/gradle_command_line.html --- plugins/gradle/gradle.plugin.zsh | 73 ++++++++++++++++++++++++++++------------ 1 file changed, 52 insertions(+), 21 deletions(-) (limited to 'plugins/gradle') diff --git a/plugins/gradle/gradle.plugin.zsh b/plugins/gradle/gradle.plugin.zsh index 65b9d4685..0adc04a13 100644 --- a/plugins/gradle/gradle.plugin.zsh +++ b/plugins/gradle/gradle.plugin.zsh @@ -24,29 +24,60 @@ function _gradle_core_commands() { function _gradle_arguments() { _arguments -C \ '-a[Do not rebuild project dependencies]' \ - '-h[Help]' \ - '-D[System property]' \ + '-b[Specifies the build file]' \ + '-c[Specifies the settings file]' \ '-d[Log at the debug level]' \ - '--gui[Launches the Gradle GUI app]' \ - '--stop[Stop the Gradle daemon]' \ - '--daemon[Use the Gradle daemon]' \ - '--no-daemon[Do not use the Gradle daemon]' \ - '--rerun-task [Specifies that any task optimization is ignored.]' \ - '-i[Log at the info level]' \ - '-m[Dry run]' \ - '-P[Set a project property]' \ - '-p[Specifies the start directory]' \ - '--profile[Profile the build time]' \ - '-q[Log at the quiet level (only show errors)]' \ - '-v[Print the Gradle version info]' \ + '-g[Specifies the Gradle user home directory]' \ + '-h[Shows a help message]' \ + '-i[Set log level to INFO]' \ + '-m[Runs the build with all task actions disabled]' \ + '-p[Specifies the start directory for Gradle]' \ + '-q[Log errors only]' \ + '-s[Print out the stacktrace also for user exceptions]' \ + '-t[Continuous mode. Automatically re-run build after changes]' \ + '-u[Don''t search in parent directories for a settings.gradle file]' \ + '-v[Prints Gradle version info]' \ '-x[Specify a task to be excluded]' \ - '-b[Specifies the build file.]' \ - '-c[Specifies the settings file.]' \ - '--continue[Continues task execution after a task failure.]' \ - '-g[Specifies the Gradle user home directory.]' \ - '-I[Specifies an initialization script.]' \ - '--refresh-dependencies[Refresh the state of dependencies.]' \ - '-u[Don''t search in parent directories for a settings.gradle file.]' \ + '-D[Set a system property]' \ + '-I[Specifies an initialization script]' \ + '-P[Sets a project property of the root project]' \ + '-S[Print out the full (very verbose) stacktrace]' \ + '--build-file[Specifies the build file]' \ + '--configure-on-demand[Only relevant projects are configured]' \ + '--console[Type of console output to generate (plain, auto, or rich)]' \ + '--continue[Continues task execution after a task failure]' \ + '--continuous[Continuous mode. Automatically re-run build after changes]' \ + '--daemon[Use the Gradle Daemon]' \ + '--debug[Log at the debug level]' \ + '--dry-run[Runs the build with all task actions disabled]' \ + '--exclude-task[Specify a task to be excluded]' \ + '--full-stacktrace[Print out the full (very verbose) stacktrace]' \ + '--gradle-user-home[Specifies the Gradle user home directory]' \ + '--gui[Launches the Gradle GUI app (Deprecated)]' \ + '--help[Shows a help message]' \ + '--include-build[Run the build as a composite, including the specified build]' \ + '--info[Set log level to INFO]' \ + '--init-script[Specifies an initialization script]' \ + '--max-workers[Set the maximum number of workers that Gradle may use]' \ + '--no-daemon[Do not use the Gradle Daemon]' \ + '--no-rebuild[Do not rebuild project dependencies]' \ + '--no-search-upwards[Don''t search in parent directories for a settings.gradle file]' \ + '--offline[Build without accessing network resources]' \ + '--parallel[Build projects in parallel]' \ + '--profile[Profile build time and create report]' \ + '--project-cache-dir[Specifies the project-specific cache directory]' \ + '--project-dir[Specifies the start directory for Gradle]' \ + '--project-prop[Sets a project property of the root project]' \ + '--quiet[Log errors only]' \ + '--recompile-scripts[Forces scripts to be recompiled, bypassing caching]' \ + '--refresh-dependencies[Refresh the state of dependencies]' \ + '--rerun-task[Specifies that any task optimization is ignored]' \ + '--settings-file[Specifies the settings file]' \ + '--stacktrace[Print out the stacktrace also for user exceptions]' \ + '--status[Print Gradle Daemon status]' \ + '--stop[Stop all Gradle Daemons]' \ + '--system-prop[Set a system property]' \ + '--version[Prints Gradle version info]' \ '*::command:->command' \ && return 0 } -- cgit v1.2.3-70-g09d2 From b7e544e6f171e3bf754d80e3c5b61b4f8f065622 Mon Sep 17 00:00:00 2001 From: David Harrigan Date: Tue, 8 May 2018 12:13:11 +0100 Subject: gradle plugin should support kotlin gradle build files (#6529) This change allows the gradle plugin to recongise build.gradle.kts files and thus generate the autocomplete entries. -=david=- closes #6528 --- plugins/gradle/gradle.plugin.zsh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'plugins/gradle') diff --git a/plugins/gradle/gradle.plugin.zsh b/plugins/gradle/gradle.plugin.zsh index 0adc04a13..c7047552d 100644 --- a/plugins/gradle/gradle.plugin.zsh +++ b/plugins/gradle/gradle.plugin.zsh @@ -88,7 +88,7 @@ function _gradle_arguments() { # and if so, regenerate the .gradle_tasks cache file ############################################################################ _gradle_does_task_list_need_generating () { - [[ ! -f .gradletasknamecache ]] || [[ build.gradle -nt .gradletasknamecache ]] + [[ ! -f .gradletasknamecache ]] || [[ build.gradle -nt .gradletasknamecache || build.gradle.kts -nt .gradletasknamecache ]] } ############## @@ -144,7 +144,7 @@ _gradle_parse_and_extract_tasks () { # Discover the gradle tasks by running "gradle tasks --all" ############################################################################ _gradle_tasks () { - if [[ -f build.gradle ]]; then + if [[ -f build.gradle || -f build.gradle.kts ]]; then _gradle_arguments if _gradle_does_task_list_need_generating; then _gradle_parse_and_extract_tasks "$(gradle tasks --all)" > .gradletasknamecache @@ -154,7 +154,7 @@ _gradle_tasks () { } _gradlew_tasks () { - if [[ -f build.gradle ]]; then + if [[ -f build.gradle || -f build.gradle.kts ]]; then _gradle_arguments if _gradle_does_task_list_need_generating; then _gradle_parse_and_extract_tasks "$(./gradlew tasks --all)" > .gradletasknamecache -- cgit v1.2.3-70-g09d2 From 84aa274604f33bf440df81fbe73543b072018d47 Mon Sep 17 00:00:00 2001 From: Janosch Schwalm Date: Wed, 29 Aug 2018 20:59:27 +0200 Subject: executing gradlew, when gradlew-file exists (#6485) --- plugins/gradle/gradle.plugin.zsh | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'plugins/gradle') diff --git a/plugins/gradle/gradle.plugin.zsh b/plugins/gradle/gradle.plugin.zsh index c7047552d..8df62c2e2 100644 --- a/plugins/gradle/gradle.plugin.zsh +++ b/plugins/gradle/gradle.plugin.zsh @@ -1,6 +1,18 @@ ############################################################################## # A descriptive listing of core Gradle commands ############################################################################ + +gradle-or-gradlew() { + if [ -f ./gradlew ] ; then + echo "executing gradlew instead of gradle"; + ./gradlew "$@"; + else + gradle "$@"; + fi +} + +alias gradle=gradle-or-gradlew; + function _gradle_core_commands() { local ret=1 state _arguments ':subcommand:->subcommand' && ret=0 -- cgit v1.2.3-70-g09d2 From 6f24f4a18ae4c12102a1ec0621a51fc24f0ffe8c Mon Sep 17 00:00:00 2001 From: Zach Whitten Date: Thu, 4 Oct 2018 07:30:33 -0400 Subject: gradle: add README (#7211) --- plugins/gradle/README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 plugins/gradle/README.md (limited to 'plugins/gradle') diff --git a/plugins/gradle/README.md b/plugins/gradle/README.md new file mode 100644 index 000000000..215503c81 --- /dev/null +++ b/plugins/gradle/README.md @@ -0,0 +1,23 @@ +## Gradle Plugin + +This plugin adds completions and aliases for [Gradle](https://gradle.org/). + +To use it, add `gradle` to the plugins array in your zshrc file: + +```zsh +plugins=(... gradle) +``` + +## Usage + +This plugin creates an alias `gradle` which is used to determine whether the current working directory has a gradlew file. If gradlew is present it will be used otherwise `gradle` is used directly. Gradle tasks can be executed directly without regard for whether it is `gradle` or `gradlew` + +Examples: +```zsh +gradle test +gradle build +``` + +## Completion + +The completion provided for this plugin caches the parsed tasks into a file named `.gradletasknamecache` in the current working directory, so you might want to add that to your `.gitignore` file so that it's not accidentally committed. -- cgit v1.2.3-70-g09d2 From 15f29aacc2b6d30a767e72e7b751fa39f929a0ae Mon Sep 17 00:00:00 2001 From: Janek <27jf@web.de> Date: Fri, 29 Mar 2019 22:16:29 +0100 Subject: gradle: also support settings files (#7014) --- plugins/gradle/gradle.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'plugins/gradle') diff --git a/plugins/gradle/gradle.plugin.zsh b/plugins/gradle/gradle.plugin.zsh index 8df62c2e2..8d578e27b 100644 --- a/plugins/gradle/gradle.plugin.zsh +++ b/plugins/gradle/gradle.plugin.zsh @@ -156,7 +156,7 @@ _gradle_parse_and_extract_tasks () { # Discover the gradle tasks by running "gradle tasks --all" ############################################################################ _gradle_tasks () { - if [[ -f build.gradle || -f build.gradle.kts ]]; then + if [[ -f build.gradle || -f build.gradle.kts || -f settings.gradle || -f settings.gradle.kts ]]; then _gradle_arguments if _gradle_does_task_list_need_generating; then _gradle_parse_and_extract_tasks "$(gradle tasks --all)" > .gradletasknamecache @@ -166,7 +166,7 @@ _gradle_tasks () { } _gradlew_tasks () { - if [[ -f build.gradle || -f build.gradle.kts ]]; then + if [[ -f build.gradle || -f build.gradle.kts || -f settings.gradle || -f settings.gradle.kts ]]; then _gradle_arguments if _gradle_does_task_list_need_generating; then _gradle_parse_and_extract_tasks "$(./gradlew tasks --all)" > .gradletasknamecache -- cgit v1.2.3-70-g09d2 From c714d3fcedd2e729350b5f69f4a9312b9fc68a43 Mon Sep 17 00:00:00 2001 From: Qinfeng Chen Date: Tue, 8 Oct 2019 09:48:08 -0400 Subject: gradle: support gdub completion (#6135) --- plugins/gradle/gradle.plugin.zsh | 1 + 1 file changed, 1 insertion(+) (limited to 'plugins/gradle') diff --git a/plugins/gradle/gradle.plugin.zsh b/plugins/gradle/gradle.plugin.zsh index 8d578e27b..6be583179 100644 --- a/plugins/gradle/gradle.plugin.zsh +++ b/plugins/gradle/gradle.plugin.zsh @@ -181,3 +181,4 @@ _gradlew_tasks () { ############################################################################ compdef _gradle_tasks gradle compdef _gradlew_tasks gradlew +compdef _gradlew_tasks gw -- cgit v1.2.3-70-g09d2