Skip to content

Commit 6037cbd

Browse files
committed
LPD-73748 lec.sh: parses a global --project flag to allow setting a specific project for various commands, instead of requirin the user to navigate to a certain directory first
1 parent 688047a commit 6037cbd

File tree

1 file changed

+55
-10
lines changed

1 file changed

+55
-10
lines changed

scripts/cli/lec.sh

Lines changed: 55 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ if [ ! -d "${LXC_REPOSITORY_PATH}" ] && [ -d "${HOME}/dev/projects/liferay-lxc"
1111
LXC_REPOSITORY_PATH="${HOME}/dev/projects/liferay-lxc"
1212
fi
1313

14+
PROJECT_DIRECTORY=""
15+
1416
#
1517
# Helper function for fzf
1618
#
@@ -249,16 +251,29 @@ _getProjectRoot() {
249251
return 1
250252
}
251253

252-
CWD_PROJECT_ROOT="$(_getProjectRoot)"
254+
_getProjectDir() {
255+
local projectDir
256+
local projectLocator="${1}"
253257

254-
#
255-
# Check to see if the script is called from a Composer project
256-
#
258+
projectDir="$(_getProjectRoot "${projectLocator}")"
259+
if [[ -d "${projectDir}" ]]; then
260+
echo "${projectDir}"
261+
return
262+
fi
257263

258-
_checkCWDProject() {
259-
if [[ ! -d "${CWD_PROJECT_ROOT}" ]]; then
260-
_errorExit "Not inside of a Liferay Environment Composer project"
264+
projectDir="$(_getWorktreeDir "${projectLocator}")"
265+
if [[ -d "${projectDir}" ]]; then
266+
echo "${projectDir}"
267+
return
268+
fi
269+
270+
projectDir="$(_getRunningProjectDir "${projectLocator}")"
271+
if [[ -d "${projectDir}" ]]; then
272+
echo "${projectDir}"
273+
return
261274
fi
275+
276+
return 1
262277
}
263278

264279
#
@@ -921,14 +936,44 @@ cmd_version() {
921936

922937
_check_dependencies
923938

924-
COMMAND="${1}"
939+
COMMAND=""
940+
OPTION_PROJECT="${PWD}"
941+
REST_ARGS=()
942+
943+
while [[ $# -gt 0 ]]; do
944+
case "${1}" in
945+
-p|--project)
946+
OPTION_PROJECT="${2}"
947+
[[ "${2}" ]] || _errorExit "${1} requires a value"
948+
shift
949+
shift
950+
;;
951+
*)
952+
if [[ -z "${COMMAND}" ]]; then
953+
COMMAND="${1}"
954+
else
955+
REST_ARGS+=("${1}")
956+
fi
957+
shift
958+
;;
959+
esac
960+
done
961+
962+
_checkProjectDirectory() {
963+
PROJECT_DIRECTORY="$(_getProjectDir "${OPTION_PROJECT}")"
964+
965+
test -d "${PROJECT_DIRECTORY}" || _errorExit "Cannot get a valid project for ${OPTION_PROJECT}"
966+
967+
echo "Project directory: ${C_BOLD}${PROJECT_DIRECTORY}${C_RESET}" 1>&2
968+
}
969+
925970
if [[ -z "${COMMAND}" ]]; then
926971
_printHelpAndExit
927972
fi
928973

929974
PRIVATE_COMMAND="_cmd_${COMMAND}"
930975
if [[ $(type -t "${PRIVATE_COMMAND}") == function ]]; then
931-
"${PRIVATE_COMMAND}" "${@:2}"
976+
"${PRIVATE_COMMAND}" "${REST_ARGS[@]}"
932977
exit
933978
fi
934979

@@ -946,4 +991,4 @@ if ! _verifyCommand "${COMMAND}"; then
946991
_printHelpAndExit
947992
fi
948993

949-
"cmd_${COMMAND}" "${@:2}"
994+
"cmd_${COMMAND}" "${REST_ARGS[@]}"

0 commit comments

Comments
 (0)