#!/bin/sh
version_get() {
  sed -rn '/^__version__/{s/.*\(([0-9]+), ([0-9]+), ([0-9]+)\)/\1.\2.\3/;p}' capp
}
version_set() {
  next_ver="$1"
  if echo "$next_ver" | grep -E -q '^major|minor|patch$'; then
    current_ver=$(version_get)
    major=$(echo "$current_ver"|cut -d. -f1)
    minor=$(echo "$current_ver"|cut -d. -f2)
    patch=$(echo "$current_ver"|cut -d. -f3)
    if [ "$ver" = "major" ]; then
      major=$((major + 1))
      minor=0
      patch=0
    elif [ "$ver" = "minor" ]; then
      minor=$((minor + 1))
      patch=0
    else
      patch=$((patch + 1))
    fi
    next_ver=$major.$minor.$patch
  fi
  sed -ri "/^__version__/{s/.*/__version__ = (${next_ver})/;s/\\./, /g}" capp
}
if [ "$1" = "get" ]; then
  version_get
elif [ "$1" = "set" ]; then
  ver="$2"
  if [ -z "$ver" ]; then
    echo "You should specify the version to set" >&2
    exit 1
  fi
  version_set "$ver"
else
  echo "Usage: $0 [get] | [set] version" >&2
  echo "  version could be major, minor, patch or fixed semver version" >&2
  exit 1
fi
