# # Package # # Current package version. # These package managers supported: # * NPM # * Cargo function __sf_section_package -d "Display the local package version" # ------------------------------------------------------------------------------ # Configuration # ------------------------------------------------------------------------------ __sf_util_set_default SPACEFISH_PACKAGE_SHOW true __sf_util_set_default SPACEFISH_PACKAGE_PREFIX "is " __sf_util_set_default SPACEFISH_PACKAGE_SUFFIX $SPACEFISH_PROMPT_DEFAULT_SUFFIX __sf_util_set_default SPACEFISH_PACKAGE_SYMBOL "📦 " __sf_util_set_default SPACEFISH_PACKAGE_COLOR red # ------------------------------------------------------------------------------ # Section # ------------------------------------------------------------------------------ [ $SPACEFISH_PACKAGE_SHOW = false ]; and return # Exit if there is no package.json or Cargo.toml if not test -e ./package.json; and not test -e ./Cargo.toml return end set -l package_version # Check if package.json exists AND npm exists locally while supressing output to just exit code (-q) if type -q npm; and test -f ./package.json # Check if jq (json handler) exists locally. If yes, check in package.json version if type -q jq set package_version (jq -r '.version' package.json 2>/dev/null) # Check if python exists locally, use json to check version in package.json else if type -q python set package_version (python -c "import json; print(json.load(open('package.json'))['version'])" 2>/dev/null) # Check if node exists locally, use it to check version of package.json else if type -q node set package_version (node -p "require('./package.json').version" 2>/dev/null) end end # Check if Cargo.toml exists and cargo command exists # and use cargo pkgid to figure out the package if type -q cargo; and test -f ./Cargo.toml # Handle missing field `version` in Cargo.toml. # `cargo pkgid` needs Cargo.lock to exists too. If # it doesn't, do not show package version set -l pkgid (cargo pkgid 2>&1) # Early return on error echo $pkgid | grep -q "error:"; and return # Example input: abc#1.0.0. Example output: 1.0.1 set package_version (string match -r '#(.*)' $pkgid)[2] end if test -z "$package_version" set package_version ⚠ else set package_version "v$package_version" end __sf_lib_section \ $SPACEFISH_PACKAGE_COLOR \ $SPACEFISH_PACKAGE_PREFIX \ "$SPACEFISH_PACKAGE_SYMBOL$package_version" \ $SPACEFISH_PACKAGE_SUFFIX end