📦➔🦋 Store and retrieve files on the Atmosphere
1#!/usr/bin/env bash
2
3function atfile.something_broke() {
4 prog_not_installed_placeholder="(Not Installed)"
5
6 function atfile.something_broke.print_envvar() {
7 # shellcheck disable=SC2154
8 variable_name="${_envvar_prefix}_$1"
9 variable_default="$2"
10
11 unset output
12
13 output="$variable_name: $(atfile.util.get_envvar "$variable_name" "$variable_default")"
14 [[ -n "$variable_default" ]] && output+=" [$variable_default]"
15
16 echo -e "↳ $output"
17 }
18
19 function atfile.something_broke.print_prog_version() {
20 prog="$1"
21 version_arg="$2"
22 head="$3"
23
24 [[ -z "$head" ]] && head="1"
25 [[ -z "$version_arg" ]] && version_arg="--version"
26
27 if [ -x "$(command -v "$prog")" ]; then
28 version_output="$(eval "$prog $version_arg 2>&1")"
29 if [[ $head == 0 ]]; then
30 echo -e "$version_output"
31 else
32 echo -e "$version_output" | head -n "$head" | sed "s/$prog //g"
33 fi
34 else
35 echo "$prog_not_installed_placeholder"
36 fi
37 }
38
39 # shellcheck disable=SC2154
40 if [[ $_output_json == 1 ]]; then
41 atfile.die "Command not available as JSON"
42 fi
43
44 unset cut_version
45 unset md5sum_version
46 unset sed_version
47 finger_record="$(atfile.util.get_finger_record 1)"
48 git_version="$(atfile.something_broke.print_prog_version "git")"
49 hostname_version="$(atfile.something_broke.print_prog_version "hostname")"
50 mediainfo_version="$(atfile.something_broke.print_prog_version "mediainfo" "--version" 0)"
51
52 # shellcheck disable=SC2154
53 if [[ $_os == "linux-musl" ]]; then
54 md5sum_version="$(atfile.something_broke.print_prog_version "md5sum" "--help")"
55 # TODO: cut, sed
56 else
57 cut_version="$(atfile.something_broke.print_prog_version "cut")"
58 md5sum_version="$(atfile.something_broke.print_prog_version "md5sum")"
59 sed_version="$(atfile.something_broke.print_prog_version "sed")"
60 fi
61
62 if [[ "$cut_version" != "$prog_not_installed_placeholder" ]]; then
63 if [[ "$cut_version" == *GNU* ]]; then
64 cut_version="$(echo "$cut_version" | cut -d " " -f 3) (GNU)"
65 else
66 cut_version="(Unsupported)"
67 fi
68 fi
69
70 if [[ "$git_version" != "$prog_not_installed_placeholder" ]]; then
71 git_version="$(echo "$git_version" | cut -d " " -f 2)"
72 fi
73
74 if [[ "$hostname_version" != "$prog_not_installed_placeholder" ]]; then
75 if [[ "$hostname_version" == *net-tools* ]]; then
76 hostname_version="$(echo "$hostname_version" | cut -d " " -f 2) (net-tools)"
77 fi
78 fi
79
80 if [[ "$md5sum_version" != "$prog_not_installed_placeholder" ]]; then
81 if [[ "$md5sum_version" == *GNU* ]]; then
82 md5sum_version="$(echo "$md5sum_version" | cut -d " " -f 3) (GNU)"
83 elif [[ "$md5sum_version" == *BusyBox* ]]; then
84 md5sum_version="$(echo "$md5sum_version" | cut -d " " -f 1 | cut -d "v" -f 2) (BusyBox)"
85 else
86 md5sum_version="(Unsupported)"
87 fi
88 fi
89
90 if [[ "$mediainfo_version" != "$prog_not_installed_placeholder" ]]; then
91 mediainfo_version="$(echo "$mediainfo_version" | grep "MediaInfoLib" | cut -d "v" -f 2)"
92 fi
93
94 if [[ "$sed_version" != "$prog_not_installed_placeholder" ]]; then
95 if [[ "$sed_version" == *GNU* ]]; then
96 sed_version="$(echo "$sed_version" | cut -d " " -f 3) (GNU)"
97 else
98 sed_version="(Unsupported)"
99 fi
100 fi
101
102 debug_output="$_name
103↳ Version: $_version
104↳ UAS: $(atfile.util.get_uas)
105↳ Path: $_prog_path
106Variables
107$(atfile.something_broke.print_envvar "DEBUG")
108$(atfile.something_broke.print_envvar "DEVEL")
109$(atfile.something_broke.print_envvar "DEVEL_DIR")
110↳ ${_envvar_prefix}_DEVEL_DIST_PASSWORD: $([[ -n $(atfile.util.get_envvar "${_envvar_prefix}_DEVEL_DIST_PASSWORD") ]] && echo "(Set)")
111$(atfile.something_broke.print_envvar "DEVEL_DIST_USERNAME" "$_devel_dist_username_default")
112$(atfile.something_broke.print_envvar "DEVEL_ENABLE_PIPING" "0")
113$(atfile.something_broke.print_envvar "DEVEL_ENABLE_PUBLISH" "$_devel_enable_publish_default")
114$(atfile.something_broke.print_envvar "DEVEL_ENTRY")
115↳ ${_envvar_prefix}_DEVEL_INCLUDES:
116$(for s in "${ATFILE_DEVEL_INCLUDES[@]}"; do echo " ↳ $s"; done)
117$(atfile.something_broke.print_envvar "DEVEL_SOURCE")
118$(atfile.something_broke.print_envvar "DISABLE_AUTH_CHECK" "$_disable_auth_check_default")
119$(atfile.something_broke.print_envvar "DISABLE_NI_EXIFTOOL" "$_disable_ni_exiftool_default")
120$(atfile.something_broke.print_envvar "DISABLE_NI_MD5SUM" "$_disable_ni_md5sum_default")
121$(atfile.something_broke.print_envvar "DISABLE_NI_MEDIAINFO" "$_disable_ni_mediainfo_default")
122$(atfile.something_broke.print_envvar "DISABLE_SETUP_DIR_CREATION" "$_disable_setup_dir_creation_default")
123$(atfile.something_broke.print_envvar "DISABLE_UNSUPPORTED_OS_WARN" "$_disable_unsupported_os_warn")
124$(atfile.something_broke.print_envvar "DISABLE_UPDATE_CHECKING" "$_disable_update_checking_default")
125$(atfile.something_broke.print_envvar "DISABLE_UPDATE_COMMAND" "$_disable_update_command_default")
126$(atfile.something_broke.print_envvar "ENABLE_FINGERPRINT" "$_enable_fingerprint_default")
127$(atfile.something_broke.print_envvar "ENABLE_UPDATE_GIT_CLOBBER" "$_enable_update_git_clobber")
128$(atfile.something_broke.print_envvar "ENDPOINT_APPVIEW" "$_endpoint_appview_default")
129$(atfile.something_broke.print_envvar "ENDPOINT_JETSTREAM" "$_endpoint_jetstream_default")
130$(atfile.something_broke.print_envvar "ENDPOINT_PDS")
131$(atfile.something_broke.print_envvar "ENDPOINT_PDSLS" "$_endpoint_pdsls_default")
132$(atfile.something_broke.print_envvar "ENDPOINT_PLC_DIRECTORY" "$_endpoint_plc_directory_default")
133$(atfile.something_broke.print_envvar "ENDPOINT_SOCIAL_APP" "$_endpoint_social_app_default")
134$(atfile.something_broke.print_envvar "FMT_BLOB_URL" "$_fmt_blob_url_default")
135$(atfile.something_broke.print_envvar "FMT_OUT_FILE" "$_fmt_out_file_default")
136$(atfile.something_broke.print_envvar "FORCE_META_AUTHOR")
137$(atfile.something_broke.print_envvar "FORCE_META_DID")
138$(atfile.something_broke.print_envvar "FORCE_META_REPO")
139$(atfile.something_broke.print_envvar "FORCE_META_YEAR")
140$(atfile.something_broke.print_envvar "FORCE_NOW")
141$(atfile.something_broke.print_envvar "FORCE_OS")
142$(atfile.something_broke.print_envvar "FORCE_VERSION")
143$(atfile.something_broke.print_envvar "MAX_LIST" "$_max_list_default")
144$(atfile.something_broke.print_envvar "OUTPUT_JSON" "$_output_json_default")
145$(atfile.something_broke.print_envvar "PATH_CONF" "$_path_envvar")
146$(atfile.something_broke.print_envvar "PATH_HOOK_POST_START")
147$(atfile.something_broke.print_envvar "PATH_HOOK_PRE_EXIT")
148$(atfile.something_broke.print_envvar "PATH_HOOK_PRE_START")
149↳ ${_envvar_prefix}_PASSWORD: $([[ -n $(atfile.util.get_envvar "${_envvar_prefix}_PASSWORD") ]] && echo "(Set)")
150$(atfile.something_broke.print_envvar "USERNAME")
151Paths
152↳ Blobs: $_path_blobs_tmp
153↳ Cache: $_path_cache
154↳ Config: $_path_envvar
155Environment
156↳ OS: $_os ($(echo "$finger_record" | jq -r ".os"))
157↳ Shell: $SHELL
158↳ Path: $PATH
159↳ CI: $_ci
160Deps
161↳ Bash: $BASH_VERSION
162↳ curl: $(atfile.something_broke.print_prog_version "curl" "--version" | cut -d " " -f 1)
163↳ cut: $cut_version
164↳ ExifTool: $(atfile.something_broke.print_prog_version "exiftool" "-ver")
165↳ Git: $git_version
166↳ hostname: $hostname_version
167↳ jq: $(atfile.something_broke.print_prog_version "jq" | sed -e "s|jq-||g")
168↳ md5sum: $md5sum_version
169↳ MediaInfo: $mediainfo_version
170↳ sed: $sed_version
171Misc.
172↳ Checksum: $([[ "$md5sum_version" != "$prog_not_installed_placeholder" ]] && md5sum "$_prog_path" || echo "(?)")
173↳ Dimensions: $(atfile.util.get_term_cols) Cols / $(atfile.util.get_term_rows) Rows
174↳ Now: $_now
175↳ Sudo: $SUDO_USER"
176
177 atfile.say "$debug_output"
178}