From c5d7ec8554d0f4747843013356309456aff878ed Mon Sep 17 00:00:00 2001 From: Julien Caillon Date: Thu, 25 Apr 2024 23:18:43 +0200 Subject: [PATCH] :recycle: using only printf in the core --- tests.d/1003-lib-string/results.approved.md | 4 ---- tests.d/1300-valet-cli/results.approved.md | 2 +- tests.d/1301-profiler/results.approved.md | 2 +- valet | 2 +- valet.d/commands.d/self-build-utils | 8 +++----- valet.d/commands.d/self-build.sh | 2 +- valet.d/commands.d/self-config.sh | 2 +- valet.d/commands.d/self-install.sh | 6 +++--- valet.d/commands.d/self-mock.sh | 4 ++-- valet.d/commands.d/self-release.sh | 2 +- valet.d/commands.d/self-setup.sh | 22 ++++++++++----------- valet.d/commands.d/self-test-utils | 21 ++++++++++---------- valet.d/core | 4 ++-- valet.d/lib-array | 10 +++++----- valet.d/lib-interactive | 2 +- valet.d/lib-io | 8 ++++---- valet.d/lib-string | 4 +--- valet.d/main | 16 +++++++-------- valet.d/version | 2 +- 19 files changed, 58 insertions(+), 65 deletions(-) diff --git a/tests.d/1003-lib-string/results.approved.md b/tests.d/1003-lib-string/results.approved.md index 325937e..35c6f9d 100644 --- a/tests.d/1003-lib-string/results.approved.md +++ b/tests.d/1003-lib-string/results.approved.md @@ -120,18 +120,15 @@ Exit code: `0` 2=2 → string::indexOf 'hello' 'he' -yeah 0=0 → string::indexOf 'hello' 'he' 10 -nop -1=-1 → string::indexOf 'yesyes' 'ye' 1 3=3 → string::indexOf 'yesyes' 'yes' 3 -yeah 3=3 → string::indexOf 'yesyes' 'yes' 5 @@ -159,7 +156,6 @@ llo=⌈llo⌉ =⌈⌉ → string::extractBetween 'hello' 'h' 'a' -yeah =⌈⌉ multilinetext="1 line one diff --git a/tests.d/1300-valet-cli/results.approved.md b/tests.d/1300-valet-cli/results.approved.md index 78dcb12..491516d 100644 --- a/tests.d/1300-valet-cli/results.approved.md +++ b/tests.d/1300-valet-cli/results.approved.md @@ -314,7 +314,7 @@ Exit code: `0` ```log INFO This command requires sudo privileges. -▶ called sudo echo alright +▶ called sudo printf %s alright ▶ called sudo whoami ``` diff --git a/tests.d/1301-profiler/results.approved.md b/tests.d/1301-profiler/results.approved.md index 78e4209..25eb979 100644 --- a/tests.d/1301-profiler/results.approved.md +++ b/tests.d/1301-profiler/results.approved.md @@ -43,7 +43,7 @@ D I S timer delta source:line function 00 00 00 0.0XXX 0.0XXX self-mock.sh:154 selfMock2() → log::info 'More: arg2.' 00 00 00 0.0XXX 0.0XXX self-mock.sh:156 selfMock2() → aSubFunctionInselfMock2 00 00 00 0.0XXX 0.0XXX self-mock.sh:163 aSubFunctionInselfMock2() → log::debug 'This is a sub function.' -00 00 00 0.0XXX 0.0XXX self-mock.sh:158 selfMock2() → echo 'That'\''s it!' +00 00 00 0.0XXX 0.0XXX self-mock.sh:158 selfMock2() → printf '%s\n' 'That'\''s it!' ``` **Error** output: diff --git a/valet b/valet index 51deb67..d400f43 100644 --- a/valet +++ b/valet @@ -2,7 +2,7 @@ set -Eeu -o pipefail if [[ ${BASH_VERSINFO[0]:-0} -lt 5 ]]; then - echo "Bash 5 or higher is required to run valet." + printf '%s\n' "Bash 5 or higher is required to run valet." exit 1 fi diff --git a/valet.d/commands.d/self-build-utils b/valet.d/commands.d/self-build-utils index 2a4dc67..03d00b5 100644 --- a/valet.d/commands.d/self-build-utils +++ b/valet.d/commands.d/self-build-utils @@ -219,13 +219,11 @@ function writeCommandDefinitionVariablesToFile() { local outputFile="${1}" local content - if [[ ! -d "${outputFile%/*}" ]]; then - mkdir -p "${outputFile%/*}" - fi + io::createFilePathIfNeeded "${outputFile}" { # write the header - echo "#!/usr/bin/env bash + printf '%s\n' "#!/usr/bin/env bash # author: github.com/jcaillon # description: This script declares global variables used in valet to manage commands. # shellcheck disable=SC2034 @@ -288,7 +286,7 @@ _CMD_INCLUDED=1 local line local IFS=':' while read -r -d $'\n' line; do - echo "${line#declare -? }" + printf '%s\n' "${line#declare -? }" done <<< "${LAST_RETURNED_VALUE}" } >"${outputFile}" } \ No newline at end of file diff --git a/valet.d/commands.d/self-build.sh b/valet.d/commands.d/self-build.sh index 589715b..c70d128 100644 --- a/valet.d/commands.d/self-build.sh +++ b/valet.d/commands.d/self-build.sh @@ -212,7 +212,7 @@ function bumpValetBuildVersion() { string::bumpSemanticVersion "${currentVersion}" "patch" "false" - echo -n "${LAST_RETURNED_VALUE}" >"${versionFile}" + printf '%s' "${LAST_RETURNED_VALUE}" >"${versionFile}" log::info "The valet build version has been bumped to ⌜${LAST_RETURNED_VALUE}⌝." } diff --git a/valet.d/commands.d/self-config.sh b/valet.d/commands.d/self-config.sh index 4af3cb8..813abbc 100644 --- a/valet.d/commands.d/self-config.sh +++ b/valet.d/commands.d/self-config.sh @@ -259,5 +259,5 @@ VALET_CONFIG_BUMP_VERSION_ON_BUILD=\"\${VALET_CONFIG_BUMP_VERSION_ON_BUILD:-${EX " - echo "${valetConfigFileContent}" >"${valetConfigFile}" + printf '%s\n' "${valetConfigFileContent}" >"${valetConfigFile}" } \ No newline at end of file diff --git a/valet.d/commands.d/self-install.sh b/valet.d/commands.d/self-install.sh index 77653b8..de790cd 100644 --- a/valet.d/commands.d/self-install.sh +++ b/valet.d/commands.d/self-install.sh @@ -42,7 +42,7 @@ # if not executing in bash, we can stop here if [[ -z "${BASH_VERSION:-}" ]]; then - echo "❌ This script must be run with bash." 1>&2 + printf '%s\n' "❌ This script must be run with bash." 1>&2 exit 0 fi @@ -193,8 +193,8 @@ function selfUpdate() { ${SUDO} mkdir -p "${binDirectory}" 1>/dev/null || core::fail "Could not create the bin directory ⌜${binDirectory}⌝." log::info "Creating a shim ⌜${GLOBAL_VALET_HOME}/valet → ${valetBin}⌝." { - echo "#!/usr/bin/env bash" - echo -n "'${GLOBAL_VALET_HOME}/valet' \"\$@\"" + printf '%s\n' "#!/usr/bin/env bash" + printf '%s' "'${GLOBAL_VALET_HOME}/valet' \"\$@\"" } | ${SUDO} tee -a "${valetBin}" 1>/dev/null ${SUDO} chmod +x "${valetBin}" fi diff --git a/valet.d/commands.d/self-mock.sh b/valet.d/commands.d/self-mock.sh index e77e496..2057a9a 100644 --- a/valet.d/commands.d/self-mock.sh +++ b/valet.d/commands.d/self-mock.sh @@ -84,7 +84,7 @@ function selfMock1() { log::success "This is a success message." log::warning "This is a warning message."$'\n'"With a second line." if log::isDebugEnabled; then - echo "The debug mode is activated!" 1>&2 + printf '%s\n' "The debug mode is activated!" 1>&2 fi ;; wait-indefinitely) @@ -155,7 +155,7 @@ function selfMock2() { aSubFunctionInselfMock2 - echo "That's it!" + printf '%s\n' "That's it!" } function aSubFunctionInselfMock2() { diff --git a/valet.d/commands.d/self-release.sh b/valet.d/commands.d/self-release.sh index 8f60086..59d55d1 100644 --- a/valet.d/commands.d/self-release.sh +++ b/valet.d/commands.d/self-release.sh @@ -152,7 +152,7 @@ function createRelease() { # bump the version string::bumpSemanticVersion "${version}" "${bumpLevel:-minor}" && newVersion="${LAST_RETURNED_VALUE}" - if [[ "${dryRun:-}" != "true" ]]; then echo -n "${newVersion}" >"${GLOBAL_VALET_HOME}/valet.d/version"; fi + if [[ "${dryRun:-}" != "true" ]]; then printf '%s' "${newVersion}" >"${GLOBAL_VALET_HOME}/valet.d/version"; fi log::info "The new version of valet is: ${newVersion}." # commit the new version and push it diff --git a/valet.d/commands.d/self-setup.sh b/valet.d/commands.d/self-setup.sh index 885865a..cf04f8a 100644 --- a/valet.d/commands.d/self-setup.sh +++ b/valet.d/commands.d/self-setup.sh @@ -32,10 +32,10 @@ description: |- function selfSetup() { log::info "Now setting up Valet." - echo "─────────────────────────────────────" - echo "${VALET_CONFIG_COLOR_INFO:-$'\e'"[0;36m"}This is a COLOR CHECK, this line should be COLORED (in cyan by default).${VALET_CONFIG_COLOR_DEFAULT:-$'\e'"[0m"}" - echo "${VALET_CONFIG_COLOR_SUCCESS:-$'\e'"[0;32m"}This is a COLOR CHECK, this line should be COLORED (in green by default).${VALET_CONFIG_COLOR_DEFAULT:-$'\e'"[0m"}" - echo "─────────────────────────────────────" + printf '%s\n' "─────────────────────────────────────" + printf '%s\n' "${VALET_CONFIG_COLOR_INFO:-$'\e'"[0;36m"}This is a COLOR CHECK, this line should be COLORED (in cyan by default).${VALET_CONFIG_COLOR_DEFAULT:-$'\e'"[0m"}" + printf '%s\n' "${VALET_CONFIG_COLOR_SUCCESS:-$'\e'"[0;32m"}This is a COLOR CHECK, this line should be COLORED (in green by default).${VALET_CONFIG_COLOR_DEFAULT:-$'\e'"[0m"}" + printf '%s\n' "─────────────────────────────────────" if interactive::promptYesNo "Do you see the colors in the color check above the line?"; then export VALET_CONFIG_ENABLE_COLORS=true @@ -45,13 +45,13 @@ function selfSetup() { log::createPrintFunction eval "${GLOBAL_LOG_PRINT_FUNCTION}" - echo "─────────────────────────────────────" - echo "This is a nerd icon check, check out the next lines:" - echo "A cross within a square: ${VALET_CONFIG_ICON_ERROR:-$'\uf2d3'}" - echo "A warning sign: ${VALET_CONFIG_ICON_WARNING:-$'\uf071'}" - echo "A checked box: ${VALET_CONFIG_ICON_SUCCESS:-$'\uf14a'}" - echo "An information icon: ${VALET_CONFIG_ICON_INFO:-$'\uf05a'}" - echo "─────────────────────────────────────" + printf '%s\n' "─────────────────────────────────────" + printf '%s\n' "This is a nerd icon check, check out the next lines:" + printf '%s\n' "A cross within a square: ${VALET_CONFIG_ICON_ERROR:-$'\uf2d3'}" + printf '%s\n' "A warning sign: ${VALET_CONFIG_ICON_WARNING:-$'\uf071'}" + printf '%s\n' "A checked box: ${VALET_CONFIG_ICON_SUCCESS:-$'\uf14a'}" + printf '%s\n' "An information icon: ${VALET_CONFIG_ICON_INFO:-$'\uf05a'}" + printf '%s\n' "─────────────────────────────────────" if ! interactive::promptYesNo "Do you correctly see the nerd icons in the icon check above the line?"; then log::info "If you see the replacement character ? in my terminal, it means you don't have a nerd-font setup in your terminal."$'\n'"You can download any font here: https://www.nerdfonts.com/font-downloads and install it."$'\n'"After that, you need to setup your terminal to use this newly installed font."$'\n'"You can also choose to enable the icons in Valet if you plan to install a nerd font." diff --git a/valet.d/commands.d/self-test-utils b/valet.d/commands.d/self-test-utils index f2b75c2..fed367c 100644 --- a/valet.d/commands.d/self-test-utils +++ b/valet.d/commands.d/self-test-utils @@ -103,7 +103,7 @@ function echoFileWithLineNumberSubstitution() { line="${line/%:[[:digit:]][[:digit:]][[:digit:]]/:XXX}" line="${line/%:[[:digit:]][[:digit:]][[:digit:]][[:digit:]]/:XXX}" fi - echo "${line}" + printf '%s\n' "${line}" done <"${file}" } @@ -119,7 +119,7 @@ function runCoreTests() { fi # we need to rebuild the commands for the core commands only - rebuildCommands "" + rebuildCommands "" "" # we should always run the test suite from the valet home directory to have consistent paths # in the report files @@ -133,7 +133,7 @@ function runCoreTests() { log::warning "The valet examples directory ⌜${GLOBAL_VALET_HOME}/examples.d⌝ does not exist, cannot run the tests on the core examples." else # we need to rebuild the commands for the examples only - rebuildCommands "${GLOBAL_VALET_HOME}/examples.d" + rebuildCommands "${GLOBAL_VALET_HOME}/examples.d" "" log::info "Running all test suites in directory ⌜${GLOBAL_VALET_HOME}/examples.d⌝." runTestSuites "${GLOBAL_VALET_HOME}/examples.d/showcase/tests.d" @@ -150,7 +150,11 @@ function rebuildCommands() { log::getLevel && originalLogLevel="${LAST_RETURNED_VALUE}" log::setLevel warning true core::sourceForFunction selfBuild - selfBuild --output "" --user-directory "${1:-}" + if (( $# == 1)); then + selfBuild --user-directory "${1:-}" + else + selfBuild --user-directory "${1:-}" --output "${2}" + fi log::setLevel "${originalLogLevel}" true } @@ -288,11 +292,8 @@ function runTest() { # run the test pushd "${testDirectory}" >/dev/null - # shellcheck disable=SC1091 - set +Eeu +o pipefail # shellcheck disable=SC1090 source "${testScript}" - set -Eeu -o pipefail popd >/dev/null # remove the onExitTest function, we can exit safely now @@ -332,7 +333,7 @@ function compareWithApproved() { rm -f "${receivedFile}" 2>/dev/null || : return 0 else - echo "${receivedFile} is different than ${approvedFile} (see above)" 1>&2 + printf '%s\n' "${receivedFile} is different than ${approvedFile} (see above)" 1>&2 log::error "🧪 ${testName}: KO, differs from approved file (see difference above)." | tee >(cat >&2) fi @@ -476,7 +477,7 @@ function setSimplifiedImportantVariables() { " } -# This function is used to echo the content of a file with some substitutions. +# This function is used to print the content of a file with some substitutions. # The substitutions are: # - replace the GLOBAL_VALET_HOME with $GLOBAL_VALET_HOME # - replace the current test directory with a dot @@ -505,6 +506,6 @@ function echoFileSubstitutingPath() { if [[ ${line} =~ "after "[0-9]{1,}s.$ ]]; then line="${line/%after */after Xs.}" fi - echo -n "${line}" + printf '%s' "${line}" done <"${file}" } diff --git a/valet.d/core b/valet.d/core index c0a9b3c..783a3d3 100644 --- a/valet.d/core +++ b/valet.d/core @@ -171,7 +171,7 @@ function log::setLevel() { # the current log level in the global variable LAST_RETURNED_VALUE. # # Usage: -# log::getLevel && echo "The log level is ⌜${LAST_RETURNED_VALUE}⌝." +# log::getLevel && printf '%s\n' "The log level is ⌜${LAST_RETURNED_VALUE}⌝." function log::getLevel() { LAST_RETURNED_VALUE="${GLOBAL_LOG_LEVEL:-info}" } @@ -371,7 +371,7 @@ function log::debug() { # Returns 0 if debug mode is active, 1 otherwise. # # Usage: -# log::isDebugEnabled && echo "Debug mode is active." +# log::isDebugEnabled && printf '%s\n' "Debug mode is active." function log::isDebugEnabled() { if [[ ${LOG_LEVEL_INT:-1} -eq 0 ]]; then return 0 diff --git a/valet.d/lib-array b/valet.d/lib-array index 6f1840a..e7d4d44 100644 --- a/valet.d/lib-array +++ b/valet.d/lib-array @@ -11,7 +11,7 @@ set -Eeu -o pipefail # Usage: # declare -g myArray=( "z" "a" "b" ) # array::sort myArray -# echo "${myArray[@]}" +# printf '%s\n' "${myArray[@]}" function array::sort() { local -n array=${1} local -i i j @@ -39,7 +39,7 @@ function array::sort() { # Usage: # declare -g myArray=( "a" "b" ) # array::appendIfNotPresent myArray "c" -# echo "${myArray[@]}" +# printf '%s\n' "${myArray[@]}" function array::appendIfNotPresent() { local -n array=${1} local value="${2}" @@ -70,7 +70,7 @@ function array::appendIfNotPresent() { # # Usage: # declare -g myArray=( "a" "b" ) -# array::isInArray myArray "b" && echo "b is in the array" +# array::isInArray myArray "b" && printf '%s\n' "b is in the array" function array::isInArray() { local -n array="${1}" local value="${2}" @@ -137,9 +137,9 @@ function array::makeArraysSameSize() { # declare -g criteria1=( 3 2 2 ) # declare -g criteria2=( 1 3 2 ) # array::sortWithCriteria myArray criteria1 criteria2 -# echo "${myArray[@]}" +# printf '%s\n' "${myArray[@]}" # > c b a -# echo "${LAST_RETURNED_ARRAY[@]}" +# printf '%s\n' "${LAST_RETURNED_ARRAY[@]}" # > 3 2 1 function array::sortWithCriteria() { local -n array="${1}" diff --git a/valet.d/lib-interactive b/valet.d/lib-interactive index dcfc81b..2409a78 100644 --- a/valet.d/lib-interactive +++ b/valet.d/lib-interactive @@ -282,7 +282,7 @@ interactive::displayDialogBox() { # Usage: # interactive::testKeys function interactive::testKeys() { - echo "Press any key to see the character that bash sees (CTRL + C to interrupt).${AC__CURSOR_HIDE}" + printf '%s\n' "Press any key to see the character that bash sees (CTRL + C to interrupt).${AC__CURSOR_HIDE}" while true; do if interactive::waitForKey -t 1; then printf "%sYou pressed: ⌜%q⌝%s" "${AC__ERASE_LINE}" "${LAST_KEY_PRESSED@E}" "${AC__CURSOR_MOVE__}1${__AC__COLUMN}" diff --git a/valet.d/lib-io b/valet.d/lib-io index d208573..c91c088 100644 --- a/valet.d/lib-io +++ b/valet.d/lib-io @@ -244,7 +244,7 @@ function io::invoke() { # Otherwise it hides both streams, effectively rendering the execution silent unless it fails. # # This is the equivalent of: -# myvar="$(echo "mystring" | mycommand)" +# myvar="$(printf '%s\n' "mystring" | mycommand)" # In windows, this is tremendously faster that the example above. # On linux, it is slighly faster (but it might be slower if you don't have SSD?). # On linux, you can use a tmpfs directory for massive gains over subshells. @@ -377,10 +377,10 @@ function io::sleep() { io::createTempFile && IO_SLEEP_FIFO="${LAST_RETURNED_VALUE}" rm "${IO_SLEEP_FIFO}" mkfifo -m 700 "${IO_SLEEP_FIFO}" - exec 9<>"${IO_SLEEP_FIFO}" + exec 6<>"${IO_SLEEP_FIFO}" rm "${IO_SLEEP_FIFO}" fi - read -rt "${timeout}" -u 9 + read -rt "${timeout}" -u 6 else # when everything else failed... sleep "${timeout}" @@ -396,7 +396,7 @@ function io::sleep() { # io::cat "myFile" function io::cat() { io::readFile "${1}" - echo "${LAST_RETURNED_VALUE}" + printf '%s\n' "${LAST_RETURNED_VALUE}" } # Read the content of the standard input. diff --git a/valet.d/lib-string b/valet.d/lib-string index a0e644b..757ee00 100644 --- a/valet.d/lib-string +++ b/valet.d/lib-string @@ -13,7 +13,7 @@ set -Eeu -o pipefail # # Usage: # string::cutField "field1 field2 field3" 1 " " && local field="${LAST_RETURNED_VALUE}" -# echo "${field}" # will output "field2" +# printf '%s' "${field}" # will output "field2" # # Notes: # This is faster than: @@ -217,7 +217,6 @@ function string::indexOf() { # if the starting index is greater than the length of the string, we return -1 if [[ startingIndex -ge stringLength ]]; then LAST_RETURNED_VALUE=-1 - echo "nop" return 0 fi @@ -229,7 +228,6 @@ function string::indexOf() { # if the string starts with the search, we have our index if [[ ${string} == "${search}"* ]]; then - echo "yeah" LAST_RETURNED_VALUE=${startingIndex} return 0 fi diff --git a/valet.d/main b/valet.d/main index 136d596..9c82b8a 100644 --- a/valet.d/main +++ b/valet.d/main @@ -59,7 +59,7 @@ function main::onExitInternal() { trap main::onExitInternal EXIT function main::onInterruptInternal() { - echo # Set cursor to the next line of '^C' + printf '\n' # Set cursor to the next line of '^C' log::print "WARNING" "${VALET_CONFIG_ICON_STOPPED:-$'\uf256'}" "STOPPED" "Program interrupted by the user." if log::isDebugEnabled; then @@ -278,7 +278,7 @@ fi # main::printHelp function "this" "false" "${GLOBAL_COLUMNS}" function main::printHelp() { main::getHelpText "$@" - echo -n "${LAST_RETURNED_VALUE}" + printf '%s' "${LAST_RETURNED_VALUE}" } # Get the help text of a function or a command. @@ -615,7 +615,7 @@ function main::checkSudo() { if command -v sudo 1>/dev/null 2>&1; then log::info "This command requires sudo privileges." SUDO="sudo" - ${SUDO} echo "alright" 1>/dev/null || core::fail "Could not sudo but the command requires it." + ${SUDO} printf '%s' "alright" 1>/dev/null || core::fail "Could not sudo but the command requires it." else SUDO="" fi @@ -798,7 +798,7 @@ function main::addLastChoice() { readarray -d $'\n' -t lastChoices <"${lastChoicesFile}" # write the command first - echo "${command}" >"${lastChoicesFile}" + printf '%s\n' "${command}" >"${lastChoicesFile}" # loop through the last choices and add them to the file, limit to 20 total local -i total index @@ -807,7 +807,7 @@ function main::addLastChoice() { index=0 for ((index = 0; index < total; index++)); do if [[ "${lastChoices[${index}]}" != "${command}" ]]; then - echo "${lastChoices[${index}]}" >>"${lastChoicesFile}" + printf '%s\n' "${lastChoices[${index}]}" >>"${lastChoicesFile}" else total+=1 if [[ total -gt ${#lastChoices[@]} ]]; then total=${#lastChoices[@]}; fi @@ -862,7 +862,7 @@ function main::onFsfsItemSelectionChange() { # Get the function name of a command. # # Usage: -# main::getFunctionNameFromCommand "self build" && echo "${LAST_RETURNED_VALUE}" +# main::getFunctionNameFromCommand "self build" && printf '%s\n' "${LAST_RETURNED_VALUE}" function main::getFunctionNameFromCommand() { local -n functionName="CMD_FUNCTION_NAME_${1//[^[:alnum:]]/_}" LAST_RETURNED_VALUE="${functionName:-}" @@ -880,7 +880,7 @@ function main::getFunctionNameFromCommand() { # the exact command in the global variable LAST_RETURNED_VALUE3 # # Usage: -# main::fuzzyMatchCommandtoFunctionName "self" "build" && echo "${LAST_RETURNED_VALUE}" +# main::fuzzyMatchCommandtoFunctionName "self" "build" && printf '%s\n' "${LAST_RETURNED_VALUE}" function main::fuzzyMatchCommandtoFunctionName() { local level loopI functionName command exactCommand if [[ $# -eq 0 ]]; then @@ -1224,7 +1224,7 @@ function main::goInteractive() { # TODO: go interactive log::warning "Entering interactive mode for the function ⌜${functionName}⌝. This is not yet implemented." - # at the end, echo to the user the complete command that will be run + # at the end, printf '%s\n' to the user the complete command that will be run } #=============================================================== diff --git a/valet.d/version b/valet.d/version index cc14df0..86b29d1 100644 --- a/valet.d/version +++ b/valet.d/version @@ -1 +1 @@ -0.7.458 \ No newline at end of file +0.7.511 \ No newline at end of file