aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormerakor <cem@ckyln.com>2020-11-09 13:03:20 +0000
committermerakor <cem@ckyln.com>2020-11-09 13:03:20 +0000
commit13e58869dc0bf24acacc98650ef95d0d27598a4f (patch)
treee3b38f9315cb7545f1d3d3154c9f1d002e897479
parent85a95118d4427f9d49a227f91f379be5bec385e3 (diff)
downloadcpt-13e58869dc0bf24acacc98650ef95d0d27598a4f.tar.gz
getoptions(): parse the options during main() call on cpt-lib
Calling parse() after cpt-lib has been called causes sys_db to be initiated using the wrong CPT_ROOT, among other issues. By calling the option parser during the main(), we make sure that the options parsed are used as soon as possible. FossilOrigin-Name: 2933b99bec8ec9c3f20143e2a19c270a6d208f723d2b394c625cbc13d2625326
-rwxr-xr-xsrc/cpt-build7
-rwxr-xr-xsrc/cpt-install7
-rw-r--r--src/cpt-lib8
-rwxr-xr-xsrc/cpt-list7
-rwxr-xr-xsrc/cpt-remove8
-rwxr-xr-xsrc/cpt-search7
-rwxr-xr-xsrc/cpt-update8
7 files changed, 14 insertions, 38 deletions
diff --git a/src/cpt-build b/src/cpt-build
index 389c824..d67f1a6 100755
--- a/src/cpt-build
+++ b/src/cpt-build
@@ -1,8 +1,6 @@
#!/bin/sh
# Build a package
-if [ -f ./cpt-lib ]; then . ./cpt-lib; else . cpt-lib; fi
-
parser_definition() {
setup REST help:usage -- "usage: ${0##*/} [pkg...]"
msg -- '' 'Options:'
@@ -10,10 +8,7 @@ parser_definition() {
global_options
}
-eval "$(getoptions parser_definition parse "$0")"
-
-parse "$@"
-eval set -- "$REST"
+if [ -f ./cpt-lib ]; then . ./cpt-lib; else . cpt-lib; fi
[ "$1" ] || set -- "${PWD##*/}"; export CPT_PATH=${PWD%/*}:$CPT_PATH
diff --git a/src/cpt-install b/src/cpt-install
index 4dadcda..b046e02 100755
--- a/src/cpt-install
+++ b/src/cpt-install
@@ -1,8 +1,6 @@
#!/bin/sh
# Install a package
-if [ -f ./cpt-lib ]; then . ./cpt-lib; else . cpt-lib; fi
-
parser_definition() {
setup REST help:usage -- "usage: ${0##*/} [pkg...]"
msg -- '' 'Options:'
@@ -10,10 +8,7 @@ parser_definition() {
global_options
}
-eval "$(getoptions parser_definition parse "$0")"
-
-parse "$@"
-eval set -- "$REST"
+if [ -f ./cpt-lib ]; then . ./cpt-lib; else . cpt-lib; fi
[ "$1" ] || set -- "${PWD##*/}"; export CPT_PATH=${PWD%/*}:$CPT_PATH
diff --git a/src/cpt-lib b/src/cpt-lib
index a9522e8..e5d526a 100644
--- a/src/cpt-lib
+++ b/src/cpt-lib
@@ -1777,6 +1777,14 @@ create_cache() {
main() {
set -ef
+ # If a parser definition exists, let's run it ourselves. This makes sure we
+ # get the variables as soon as possible.
+ command -v parser_definition >/dev/null && {
+ eval "$(getoptions parser_definition parse "$0")"
+ parse "$@"
+ eval set -- "$REST"
+ }
+
# Create the cache directories for CPT and set the variables which point
# to them. This is seperate from temporary directories created in
# create_cache(). That's because we need these variables set on most
diff --git a/src/cpt-list b/src/cpt-list
index aaef8d9..a161abf 100755
--- a/src/cpt-list
+++ b/src/cpt-list
@@ -1,8 +1,6 @@
#!/bin/sh -ef
# List installed packages
-if [ -f ./cpt-lib ]; then . ./cpt-lib; else . cpt-lib; fi
-
parser_definition() {
setup REST help:usage -- "usage: ${0##*/} [-c] [pkg...]"
msg -- '' 'Options:'
@@ -10,10 +8,7 @@ parser_definition() {
global_options
}
-eval "$(getoptions parser_definition parse "$0")"
-
-parse "$@"
-eval set -- "$REST"
+if [ -f ./cpt-lib ]; then . ./cpt-lib; else . cpt-lib; fi
[ "$CURRENT" ] && set -- "${PWD##*/}"
diff --git a/src/cpt-remove b/src/cpt-remove
index b6fed58..bcf5047 100755
--- a/src/cpt-remove
+++ b/src/cpt-remove
@@ -1,8 +1,6 @@
#!/bin/sh -ef
# Remove a package
-if [ -f ./cpt-lib ]; then . ./cpt-lib; else . cpt-lib; fi
-
parser_definition() {
setup REST help:usage -- "usage: ${0##*/} [pkg...]"
msg -- '' 'Options:'
@@ -10,10 +8,7 @@ parser_definition() {
global_options
}
-eval "$(getoptions parser_definition parse "$0")"
-
-parse "$@"
-eval set -- "$REST"
+if [ -f ./cpt-lib ]; then . ./cpt-lib; else . cpt-lib; fi
[ "$1" ] || set -- "${PWD##*/}"; export CPT_PATH=${PWD%/*}:$CPT_PATH
@@ -23,6 +18,5 @@ eval set -- "$REST"
}
create_cache
-
pkg_order "$@"
for pkg in $redro; do pkg_remove "$pkg" "${CPT_FORCE:-check}"; done
diff --git a/src/cpt-search b/src/cpt-search
index f943aca..df27761 100755
--- a/src/cpt-search
+++ b/src/cpt-search
@@ -1,8 +1,6 @@
#!/bin/sh -ef
# Search for a package
-if [ -f ./cpt-lib ]; then . ./cpt-lib; else . cpt-lib; fi
-
parser_definition() {
setup REST help:usage -- "usage: ${0##*/} [pkg...]"
msg -- '' 'Options:'
@@ -12,10 +10,7 @@ parser_definition() {
global_options
}
-eval "$(getoptions parser_definition parse "$0")"
-
-parse "$@"
-eval set -- "$REST"
+if [ -f ./cpt-lib ]; then . ./cpt-lib; else . cpt-lib; fi
# The 'all' variable is set by the option parser.
# shellcheck disable=2154
diff --git a/src/cpt-update b/src/cpt-update
index b3884e3..a8f9616 100755
--- a/src/cpt-update
+++ b/src/cpt-update
@@ -1,8 +1,6 @@
#!/bin/sh -ef
# Check for updates
-if [ -f ./cpt-lib ]; then . ./cpt-lib; else . cpt-lib; fi
-
parser_definition() {
setup REST help:usage -- "usage: ${0##*/} [options]"
msg -- '' 'Options:'
@@ -12,11 +10,7 @@ parser_definition() {
global_options
}
-eval "$(getoptions parser_definition parse "$0")"
-
-parse "$@"
-eval set -- "$REST"
+if [ -f ./cpt-lib ]; then . ./cpt-lib; else . cpt-lib; fi
create_cache
-
pkg_updates