guysoft/CustomPiOS

use POSIX parameter expansion for assigning default values

Opened this issue · 2 comments

the modules are full of default-assignments like so:

[ -n "$BASE_IMAGE_RASPBIAN" ] || BASE_IMAGE_RASPBIAN=yes

this is obviously not a bug, but i think the readability could be improved by using POSIX parameter expansion.

the following is equivalent to the test-clause above:

: ${BASE_RELEASE_COMPRESS:=yes}

from the bash manpage:

${parameter:=word} Assign Default Values. If parameter is unset or null, the expansion of word is assigned to parameter. The value of parameter is then substituted. Positional parameters and special parameters may not be assigned to in this way.

So it would be in the config file:

BASE_IMAGE_RASPBIAN=${BASE_RELEASE_COMPRESS:=yes}

?

I want to assign default values there because its also where people go to look what they can set.

i'm not sure what you mean.
your example would

  1. set BASE_RELEASE_COMPRESS to yes unless it is already set to a non-empty value
  2. set BASE_IMAGE_RASPBIAN to the value of BASE_RELEASE_COMPRESS (from item1)

i guess that mixing of BASE_IMAGE_RASPBIAN and BASE_RELEASE_COMPRESS was just a typo.

my line:

: ${BASE_RELEASE_COMPRESS:=yes}

does:

  1. set BASE_RELEASE_COMPRESS to yes unless it is already set to a non-empty value
  2. nothing else (as : is a nop-command)

you can of course use variables on the right-hand term as well:

: ${BASE_IMAGE_PATH:=${DIST_PATH}/image}

but if you feel that this is just busy-work, feel free to ignore (and possibly close) this ticket