~tardypad/dotfiles

ref: 00c0c349a1b8960152233f11caa9ea1a40e395a3 dotfiles/files/scripts/shell/project-path -rwxr-xr-x 1.1 KiB
00c0c349 — Damien Tardy-Panis Add presentation mode to mako to hide notifications 4 months ago
                                                                                
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
#!/bin/sh

init_variables() {
  COMMAND=${0##*/}

  PROJECTS_DIR="${XDG_PROJECTS_DIR:-$HOME/Projects}"

  TYPE=
  PROJECT=
}

parse_command_line() {
  TYPE="$1"
  PROJECT="$2"
}

validate_command_line() {
  if [ -z "${TYPE}" ]; then
    exit_error 'Missing type argument'
  fi

  if [ "${TYPE}" != 'main' ] \
     && [ "${TYPE}" != 'repo' ]; then
    exit_error "Invalid type '${TYPE}'"
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

get_project_path() {
  case "${TYPE}" in
    main)
      find "${PROJECTS_DIR}"/* \
        -type d -prune -name "${PROJECT}"
      ;;
    repo)
      find "${PROJECTS_DIR}"/*/* \
        -type d -prune -name "${PROJECT}"
      ;;
  esac
}

get_type_path() {
  case "${TYPE}" in
    main) echo "${PROJECTS_DIR}" ;;
    repo) echo "${PROJECTS_DIR}" ;;
  esac
}

display_path() {
  if [ -n "${PROJECT}" ]; then
    PROJECT_PATH="$( get_project_path )"
  else
    PROJECT_PATH="$( get_type_path )"
  fi

  if [ -z "${PROJECT_PATH}" ]; then
    echo 'No such project path' >&2
    return 1
  fi

  echo "${PROJECT_PATH}"
}

init_variables
parse_command_line "$@"
validate_command_line

display_path