summaryrefslogtreecommitdiff
path: root/dot-oh-my-zsh/custom/themes/spaceship-prompt/sections/gradle.zsh
blob: 584ae1477fb28274dc9dbdb28a05c5fcd1b5aa86 (plain)
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
#
# Gradle
#
# Gradle is an open-source build automation tool focused on flexibility and performance.
# Link: https://gradle.org/

# ------------------------------------------------------------------------------
# Configuration
# ------------------------------------------------------------------------------

SPACESHIP_GRADLE_SHOW="${SPACESHIP_GRADLE_SHOW=true}"
SPACESHIP_GRADLE_PREFIX="${SPACESHIP_GRADLE_PREFIX="$SPACESHIP_PROMPT_DEFAULT_PREFIX"}"
SPACESHIP_GRADLE_SUFFIX="${SPACESHIP_GRADLE_SUFFIX="$SPACESHIP_PROMPT_DEFAULT_SUFFIX"}"
SPACESHIP_GRADLE_SYMBOL="${SPACESHIP_GRADLE_SYMBOL="⬡ "}"
SPACESHIP_GRADLE_DEFAULT_VERSION="${SPACESHIP_GRADLE_DEFAULT_VERSION=""}"
SPACESHIP_GRADLE_COLOR="${SPACESHIP_GRADLE_COLOR="green"}"

SPACESHIP_GRADLE_JVM_SHOW="${SPACESHIP_GRADLE_JVM_SHOW=true}"
SPACESHIP_GRADLE_JVM_PREFIX="${SPACESHIP_GRADLE_JVM_PREFIX="$SPACESHIP_PROMPT_DEFAULT_PREFIX"}"
SPACESHIP_GRADLE_JVM_SUFFIX="${SPACESHIP_GRADLE_JVM_SUFFIX="$SPACESHIP_PROMPT_DEFAULT_SUFFIX"}"
SPACESHIP_GRADLE_JVM_SYMBOL="${SPACESHIP_GRADLE_JVM_SYMBOL="☕️ "}"
SPACESHIP_GRADLE_JVM_DEFAULT_VERSION="${SPACESHIP_GRADLE_JVM_DEFAULT_VERSION=""}"
SPACESHIP_GRADLE_JVM_COLOR="${SPACESHIP_GRADLE_JVM_COLOR="magenta"}"

# ------------------------------------------------------------------------------
# Utils
# ------------------------------------------------------------------------------

spaceship::gradle::find_root_project() {
  local root="$1"

  while [ "$root" ] && \
        [ ! -f "$root/settings.gradle" ] && \
        [ ! -f "$root/settings.gradle.kts" ]; do
    root="${root%/*}"
  done

  print "$root"
}

spaceship::gradle::versions() {
  local gradle_exe="$1" gradle_version_output gradle_version jvm_version

  gradle_version_output=$("$gradle_exe" --version)
  gradle_version=$(echo "$gradle_version_output" | awk '{ if ($1 ~ /^Gradle/) { print "v" $2 } }')
  jvm_version=$(echo "$gradle_version_output" | awk '{ if ($1 ~ /^JVM:/) { print "v" $2 } }')

  print gradle "$gradle_version" jvm "$jvm_version"
}

# ------------------------------------------------------------------------------
# Section
# ------------------------------------------------------------------------------

# Show current version of gradle.
spaceship_gradle() {
  [[ $SPACESHIP_GRADLE_SHOW == false ]] && return

  local gradle_root_dir

  gradle_root_dir=$(spaceship::gradle::find_root_project "$(pwd -P)")

  # Show Gradle status only for applicable folders
  [[ -n "$gradle_root_dir" ]] &>/dev/null || return

  local -A gradle_versions

  if [[ -f "$gradle_root_dir/gradlew" ]]; then
    gradle_versions=($(spaceship::gradle::versions "$gradle_root_dir/gradlew"))
  elif spaceship::exists gradle; then
    gradle_versions=($(spaceship::gradle::versions gradle))
  else
    return
  fi

  [[ "${gradle_versions[gradle]}" == "$SPACESHIP_GRADLE_DEFAULT_VERSION" ]] && return

  spaceship::section \
    "$SPACESHIP_GRADLE_COLOR" \
    "$SPACESHIP_GRADLE_PREFIX" \
    "${SPACESHIP_GRADLE_SYMBOL}${gradle_versions[gradle]}" \
    "$SPACESHIP_GRADLE_SUFFIX"

  [[ $SPACESHIP_GRADLE_JVM_SHOW == false ]] && return

  [[ "${gradle_versions[jvm]}" == "$SPACESHIP_GRADLE_JVM_DEFAULT_VERSION" ]] && return

  spaceship::section \
    "$SPACESHIP_GRADLE_JVM_COLOR" \
    "$SPACESHIP_GRADLE_JVM_PREFIX" \
    "${SPACESHIP_GRADLE_JVM_SYMBOL}${gradle_versions[jvm]}" \
    "$SPACESHIP_GRADLE_JVM_SUFFIX"
}