|
@@ -0,0 +1,82 @@
|
|
|
+#compdef codeclimate
|
|
|
+
|
|
|
+_codeclimate_all_engines() {
|
|
|
+ engines_all=(`codeclimate engines:list | tail -n +2 | gawk '{ print $2 }' | gawk -F: '{ print $1 }'`)
|
|
|
+}
|
|
|
+
|
|
|
+_codeclimate_installed_engines() {
|
|
|
+ _codeclimate_all_engines
|
|
|
+
|
|
|
+ engines_installed=()
|
|
|
+
|
|
|
+ if [ -e .codeclimate.yml ]
|
|
|
+ then
|
|
|
+ for engine in $engines_all
|
|
|
+ do
|
|
|
+ if grep -q $engine ".codeclimate.yml"
|
|
|
+ then
|
|
|
+ engines_installed+=$engine
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ fi
|
|
|
+}
|
|
|
+
|
|
|
+_codeclimate_not_installed_engines() {
|
|
|
+ _codeclimate_all_engines
|
|
|
+
|
|
|
+ engines_not_installed=()
|
|
|
+
|
|
|
+ if [ -e .codeclimate.yml ]
|
|
|
+ then
|
|
|
+ for engine in $engines_all
|
|
|
+ do
|
|
|
+ if ! grep -q $engine ".codeclimate.yml"
|
|
|
+ then
|
|
|
+ engines_not_installed+=$engine
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ fi
|
|
|
+}
|
|
|
+
|
|
|
+local curcontext="$curcontext" state line ret=1
|
|
|
+local expl
|
|
|
+local -a engines_all engines_installed engines_not_installed
|
|
|
+
|
|
|
+_arguments \
|
|
|
+ '1: :->cmds' \
|
|
|
+ '*:: :->args' && ret=0
|
|
|
+
|
|
|
+case $state in
|
|
|
+ cmds)
|
|
|
+ _values "bundle command" \
|
|
|
+ "analyze[Analyze all relevant files in the current working directory]" \
|
|
|
+ "console[Start an interactive session providing access to the classes within the CLI]" \
|
|
|
+ "engines\:disable[Prevents the engine from being used in this project]" \
|
|
|
+ "engines\:enable[This engine will be run the next time your project is analyzed]" \
|
|
|
+ "engines\:install[Compares the list of engines in your .codeclimate.yml file to those that are currently installed, then installs any missing engines]" \
|
|
|
+ "engines\:list[Lists all available engines in the Code Climate Docker Hub]" \
|
|
|
+ "engines\:remove[Removes an engine from your .codeclimate.yml file]" \
|
|
|
+ "help[Displays a list of commands that can be passed to the Code Climate CLI]" \
|
|
|
+ "init[Generates a new .codeclimate.yml file in the current working directory]" \
|
|
|
+ "validate-config[Validates the .codeclimate.yml file in the current working directory]" \
|
|
|
+ "version[Displays the current version of the Code Climate CLI]"
|
|
|
+ ret=0
|
|
|
+ ;;
|
|
|
+ args)
|
|
|
+ case $line[1] in
|
|
|
+ engines:enable)
|
|
|
+ _codeclimate_not_installed_engines
|
|
|
+ _wanted engines_not_installed expl 'not installed engines' compadd -a engines_not_installed ;;
|
|
|
+ engines:disable|engines:remove)
|
|
|
+ _codeclimate_installed_engines
|
|
|
+ _wanted engines_installed expl 'installed engines' compadd -a engines_installed ;;
|
|
|
+ analyze)
|
|
|
+ _arguments \
|
|
|
+ '-f:Output Format:(text json)'
|
|
|
+ ret=0
|
|
|
+ ;;
|
|
|
+ esac
|
|
|
+ ;;
|
|
|
+esac
|
|
|
+
|
|
|
+return ret
|