#!/usr/bin/env bash function atfile.something_broke() { prog_not_installed_placeholder="(Not Installed)" function atfile.something_broke.print_envvar() { # shellcheck disable=SC2154 variable_name="${_envvar_prefix}_$1" variable_default="$2" unset output output="$variable_name: $(atfile.util.get_envvar "$variable_name" "$variable_default")" [[ -n "$variable_default" ]] && output+=" [$variable_default]" echo -e "↳ $output" } function atfile.something_broke.print_prog_version() { prog="$1" version_arg="$2" head="$3" [[ -z "$head" ]] && head="1" [[ -z "$version_arg" ]] && version_arg="--version" if [ -x "$(command -v "$prog")" ]; then version_output="$(eval "$prog $version_arg 2>&1")" if [[ $head == 0 ]]; then echo -e "$version_output" else echo -e "$version_output" | head -n "$head" | sed "s/$prog //g" fi else echo "$prog_not_installed_placeholder" fi } # shellcheck disable=SC2154 if [[ $_output_json == 1 ]]; then atfile.die "Command not available as JSON" fi unset cut_version unset md5sum_version unset sed_version finger_record="$(atfile.util.get_finger_record 1)" git_version="$(atfile.something_broke.print_prog_version "git")" hostname_version="$(atfile.something_broke.print_prog_version "hostname")" mediainfo_version="$(atfile.something_broke.print_prog_version "mediainfo" "--version" 0)" # shellcheck disable=SC2154 if [[ $_os == "linux-musl" ]]; then md5sum_version="$(atfile.something_broke.print_prog_version "md5sum" "--help")" # TODO: cut, sed else cut_version="$(atfile.something_broke.print_prog_version "cut")" md5sum_version="$(atfile.something_broke.print_prog_version "md5sum")" sed_version="$(atfile.something_broke.print_prog_version "sed")" fi if [[ "$cut_version" != "$prog_not_installed_placeholder" ]]; then if [[ "$cut_version" == *GNU* ]]; then cut_version="$(echo "$cut_version" | cut -d " " -f 3) (GNU)" else cut_version="(Unsupported)" fi fi if [[ "$git_version" != "$prog_not_installed_placeholder" ]]; then git_version="$(echo "$git_version" | cut -d " " -f 2)" fi if [[ "$hostname_version" != "$prog_not_installed_placeholder" ]]; then if [[ "$hostname_version" == *net-tools* ]]; then hostname_version="$(echo "$hostname_version" | cut -d " " -f 2) (net-tools)" fi fi if [[ "$md5sum_version" != "$prog_not_installed_placeholder" ]]; then if [[ "$md5sum_version" == *GNU* ]]; then md5sum_version="$(echo "$md5sum_version" | cut -d " " -f 3) (GNU)" elif [[ "$md5sum_version" == *BusyBox* ]]; then md5sum_version="$(echo "$md5sum_version" | cut -d " " -f 1 | cut -d "v" -f 2) (BusyBox)" else md5sum_version="(Unsupported)" fi fi if [[ "$mediainfo_version" != "$prog_not_installed_placeholder" ]]; then mediainfo_version="$(echo "$mediainfo_version" | grep "MediaInfoLib" | cut -d "v" -f 2)" fi if [[ "$sed_version" != "$prog_not_installed_placeholder" ]]; then if [[ "$sed_version" == *GNU* ]]; then sed_version="$(echo "$sed_version" | cut -d " " -f 3) (GNU)" else sed_version="(Unsupported)" fi fi debug_output="$_name ↳ Version: $_version ↳ UAS: $(atfile.util.get_uas) ↳ Path: $_prog_path Variables $(atfile.something_broke.print_envvar "DEBUG") $(atfile.something_broke.print_envvar "DEVEL") $(atfile.something_broke.print_envvar "DEVEL_DIR") ↳ ${_envvar_prefix}_DEVEL_DIST_PASSWORD: $([[ -n $(atfile.util.get_envvar "${_envvar_prefix}_DEVEL_DIST_PASSWORD") ]] && echo "(Set)") $(atfile.something_broke.print_envvar "DEVEL_DIST_USERNAME" "$_devel_dist_username_default") $(atfile.something_broke.print_envvar "DEVEL_ENABLE_PIPING" "0") $(atfile.something_broke.print_envvar "DEVEL_ENABLE_PUBLISH" "$_devel_enable_publish_default") $(atfile.something_broke.print_envvar "DEVEL_ENTRY") ↳ ${_envvar_prefix}_DEVEL_INCLUDES: $(for s in "${ATFILE_DEVEL_INCLUDES[@]}"; do echo " ↳ $s"; done) $(atfile.something_broke.print_envvar "DEVEL_SOURCE") $(atfile.something_broke.print_envvar "DISABLE_AUTH_CHECK" "$_disable_auth_check_default") $(atfile.something_broke.print_envvar "DISABLE_NI_EXIFTOOL" "$_disable_ni_exiftool_default") $(atfile.something_broke.print_envvar "DISABLE_NI_MD5SUM" "$_disable_ni_md5sum_default") $(atfile.something_broke.print_envvar "DISABLE_NI_MEDIAINFO" "$_disable_ni_mediainfo_default") $(atfile.something_broke.print_envvar "DISABLE_SETUP_DIR_CREATION" "$_disable_setup_dir_creation_default") $(atfile.something_broke.print_envvar "DISABLE_UNSUPPORTED_OS_WARN" "$_disable_unsupported_os_warn") $(atfile.something_broke.print_envvar "DISABLE_UPDATE_CHECKING" "$_disable_update_checking_default") $(atfile.something_broke.print_envvar "DISABLE_UPDATE_COMMAND" "$_disable_update_command_default") $(atfile.something_broke.print_envvar "ENABLE_FINGERPRINT" "$_enable_fingerprint_default") $(atfile.something_broke.print_envvar "ENABLE_UPDATE_GIT_CLOBBER" "$_enable_update_git_clobber") $(atfile.something_broke.print_envvar "ENDPOINT_APPVIEW" "$_endpoint_appview_default") $(atfile.something_broke.print_envvar "ENDPOINT_JETSTREAM" "$_endpoint_jetstream_default") $(atfile.something_broke.print_envvar "ENDPOINT_PDS") $(atfile.something_broke.print_envvar "ENDPOINT_PDSLS" "$_endpoint_pdsls_default") $(atfile.something_broke.print_envvar "ENDPOINT_PLC_DIRECTORY" "$_endpoint_plc_directory_default") $(atfile.something_broke.print_envvar "ENDPOINT_SOCIAL_APP" "$_endpoint_social_app_default") $(atfile.something_broke.print_envvar "FMT_BLOB_URL" "$_fmt_blob_url_default") $(atfile.something_broke.print_envvar "FMT_OUT_FILE" "$_fmt_out_file_default") $(atfile.something_broke.print_envvar "FORCE_META_AUTHOR") $(atfile.something_broke.print_envvar "FORCE_META_DID") $(atfile.something_broke.print_envvar "FORCE_META_REPO") $(atfile.something_broke.print_envvar "FORCE_META_YEAR") $(atfile.something_broke.print_envvar "FORCE_NOW") $(atfile.something_broke.print_envvar "FORCE_OS") $(atfile.something_broke.print_envvar "FORCE_VERSION") $(atfile.something_broke.print_envvar "MAX_LIST" "$_max_list_default") $(atfile.something_broke.print_envvar "OUTPUT_JSON" "$_output_json_default") $(atfile.something_broke.print_envvar "PATH_CONF" "$_path_envvar") $(atfile.something_broke.print_envvar "PATH_HOOK_POST_START") $(atfile.something_broke.print_envvar "PATH_HOOK_PRE_EXIT") $(atfile.something_broke.print_envvar "PATH_HOOK_PRE_START") ↳ ${_envvar_prefix}_PASSWORD: $([[ -n $(atfile.util.get_envvar "${_envvar_prefix}_PASSWORD") ]] && echo "(Set)") $(atfile.something_broke.print_envvar "USERNAME") Paths ↳ Blobs: $_path_blobs_tmp ↳ Cache: $_path_cache ↳ Config: $_path_envvar Environment ↳ OS: $_os ($(echo "$finger_record" | jq -r ".os")) ↳ Shell: $SHELL ↳ Path: $PATH ↳ CI: $_ci Deps ↳ Bash: $BASH_VERSION ↳ curl: $(atfile.something_broke.print_prog_version "curl" "--version" | cut -d " " -f 1) ↳ cut: $cut_version ↳ ExifTool: $(atfile.something_broke.print_prog_version "exiftool" "-ver") ↳ Git: $git_version ↳ hostname: $hostname_version ↳ jq: $(atfile.something_broke.print_prog_version "jq" | sed -e "s|jq-||g") ↳ md5sum: $md5sum_version ↳ MediaInfo: $mediainfo_version ↳ sed: $sed_version Misc. ↳ Checksum: $([[ "$md5sum_version" != "$prog_not_installed_placeholder" ]] && md5sum "$_prog_path" || echo "(?)") ↳ Dimensions: $(atfile.util.get_term_cols) Cols / $(atfile.util.get_term_rows) Rows ↳ Now: $_now ↳ Sudo: $SUDO_USER" atfile.say "$debug_output" }