blob: 3fdbfa4f4be745ecb47b2ca155dc5538eaf482a5 (
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
|
#
# Package
#
# Current package version.
# These package managers supported:
# * npm
# * lerna
# * Cargo
# ------------------------------------------------------------------------------
# Configuration
# ------------------------------------------------------------------------------
SPACESHIP_PACKAGE_SHOW="${SPACESHIP_PACKAGE_SHOW=true}"
SPACESHIP_PACKAGE_PREFIX="${SPACESHIP_PACKAGE_PREFIX="is "}"
SPACESHIP_PACKAGE_SUFFIX="${SPACESHIP_PACKAGE_SUFFIX="$SPACESHIP_PROMPT_DEFAULT_SUFFIX"}"
SPACESHIP_PACKAGE_SYMBOL="${SPACESHIP_PACKAGE_SYMBOL="📦 "}"
SPACESHIP_PACKAGE_COLOR="${SPACESHIP_PACKAGE_COLOR="red"}"
# ------------------------------------------------------------------------------
# Section
# ------------------------------------------------------------------------------
spaceship_package() {
[[ $SPACESHIP_PACKAGE_SHOW == false ]] && return
# Show package version only when repository is a package
local package_version
if [[ -f package.json ]] && spaceship::exists npm; then
if spaceship::exists jq; then
package_version=$(jq -r '.version' package.json 2>/dev/null)
elif spaceship::exists python; then
package_version=$(python -c "import json; print(json.load(open('package.json'))['version'])" 2>/dev/null)
elif spaceship::exists node; then
package_version=$(node -p "require('./package.json').version" 2> /dev/null)
fi
fi
# Show package version from lerna.json if is a lerna monorepo
# Note: lerna does not have to be installed in the global context
# so checking for lerna binary does not make sense
if [[ -f lerna.json ]] && spaceship::exists npm; then
if spaceship::exists jq; then
package_version=$(jq -r '.version' lerna.json 2>/dev/null)
elif spaceship::exists python; then
package_version=$(python -c "import json; print(json.load(open('lerna.json'))['version'])" 2>/dev/null)
elif spaceship::exists node; then
package_version=$(node -p "require('./lerna.json').version" 2> /dev/null)
fi
if [[ "$package_version" == "independent" ]]; then
package_version="($package_version)"
fi
fi
if [[ -f Cargo.toml ]] && spaceship::exists cargo; then
# Handle missing field `version` in Cargo.toml.
# `cargo pkgid` need Cargo.lock exists too. If it does't, do not show package version
# https://github.com/spaceship-prompt/spaceship-prompt/pull/617
local pkgid=$(cargo pkgid 2>&1)
echo $pkgid | grep -q "error:" || package_version=${pkgid##*\#}
fi
[[ -z $package_version || "$package_version" == "null" || "$package_version" == "undefined" ]] && return
spaceship::section \
"$SPACESHIP_PACKAGE_COLOR" \
"$SPACESHIP_PACKAGE_PREFIX" \
"${SPACESHIP_PACKAGE_SYMBOL}v${package_version}" \
"$SPACESHIP_PACKAGE_SUFFIX"
}
|