Skip to content

Commit 65a2916

Browse files
committed
feat: verbose logging, exit code
1 parent b06242c commit 65a2916

File tree

1 file changed

+58
-32
lines changed

1 file changed

+58
-32
lines changed

src/apt-deb822-tool.bash

+58-32
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ apt_source_line_to_deb822_line () {
135135
values=$(echo "${field}" | cut -d'=' -f2 | tr ',' ' ')
136136
options[${key}]="${values}"
137137
else
138-
echo "Invalid option detected: ${field}" 1>&2
138+
log_warn "Invalid option detected: ${field}"
139139
fi
140140

141141
continue
@@ -162,7 +162,7 @@ apt_source_line_to_deb822_line () {
162162
local components
163163
if [[ ${current_step} -eq 4 ]]; then
164164
if [[ ${suites_is_path} -eq 1 ]]; then
165-
echo "Invalid entry: Suites is a path, skipping components" 1>&2
165+
log_warn "Invalid entry encountered: Suites is a path, skipping components"
166166
else
167167
components+="${field}"
168168
fi
@@ -208,6 +208,7 @@ deb822_entry_to_source_lines () {
208208
entry=$(echo -e "${entry}")
209209

210210
if [[ -z "${entry}" ]]; then
211+
log_verbose "Skipping empty entry"
211212
return
212213
fi
213214

@@ -241,7 +242,7 @@ deb822_entry_to_source_lines () {
241242
entry_enabled=0
242243
else
243244
log_err "Invalid value for key \"Enabled\" in file ${file}"
244-
return
245+
return 1
245246
fi
246247
;;
247248
Types)
@@ -265,22 +266,22 @@ deb822_entry_to_source_lines () {
265266
# Check if all required fields are present
266267
if [[ -z "${entry_types}" ]]; then
267268
log_err "Missing required field \"Types\" in file ${file}"
268-
return
269+
return 1
269270
fi
270271

271272
if [[ -z "${entry_uris}" ]]; then
272273
log_err "Missing required field \"URIs\" in file ${file}"
273-
return
274+
return 1
274275
fi
275276

276277
if [[ -z "${entry_suites}" ]]; then
277278
log_err "Missing required field \"Suites\" in file ${file}"
278-
return
279+
return 1
279280
fi
280281

281282
if [[ -z "${entry_components}" ]] && [[ "${entry_suites}" == */* ]]; then
282283
log_err "Missing required field \"Components\" in file ${file}"
283-
return
284+
return 1
284285
fi
285286

286287
# Convert the entry to apt-list format
@@ -324,6 +325,7 @@ deb822_entry_to_source_lines () {
324325
done
325326

326327
# Return the apt-list formatted entries
328+
log_verbose "Created ${#apt_list_entries[@]} apt-list entries for Deb822 entry"
327329
echo "${apt_list_entries[@]}"
328330
}
329331

@@ -348,6 +350,10 @@ to_deb822 () {
348350
if [[ ${line} =~ ^(deb|#deb|deb-src|#deb-src) ]]; then
349351
local deb822
350352
deb822=$(apt_source_line_to_deb822_line "${line}")
353+
if [[ $? -ne 0 ]]; then
354+
log_verbose "There were errors while converting an entry from ${file}"
355+
errors=1
356+
fi
351357
echo -e "${deb822}\n" >> "${tmpfile}"
352358
else
353359
# Copy comments as is
@@ -361,25 +367,11 @@ to_deb822 () {
361367
fi
362368
done < "${file}"
363369

364-
if [[ ${write_to_file} -eq 1 ]]; then
365-
# Create backup if not disabled
366-
if [[ ${no_backup} -eq 0 ]]; then
367-
mv "${file}" "${file}.bak"
368-
else
369-
rm -f "${file}" || log_warn "Failed to remove original file: ${file}"
370-
fi
371-
# Rename file to .sources and replace original file
372-
new_file_name="${file%.list.distUpgrade}"
373-
new_file_name="${new_file_name%.list}"
374-
new_file_name="${new_file_name}.sources"
375-
mv "${tmpfile}" "${new_file_name}"
376-
else
377-
cat "${tmpfile}"
378-
if [[ ${no_null} -eq 0 ]]; then
379-
echo -ne "\0"
380-
fi
381-
rm -f "${tmpfile}" || log_warn "Failed to remove temporary file: ${tmpfile}"
382-
fi
370+
new_file_name="${file%.list.distUpgrade}"
371+
new_file_name="${new_file_name%.list}"
372+
new_file_name="${new_file_name}.sources"
373+
374+
write_output_files "${tmpfile}" "${file}" "${new_file_name}"
383375
}
384376

385377
# Converts a file in deb822 format to apt-list format
@@ -412,19 +404,34 @@ to_list () {
412404
for entry in "${entries[@]}"; do
413405
local apt_source_lines
414406
apt_source_lines=$(deb822_entry_to_source_lines "${entry}")
407+
if [[ $? -ne 0 ]]; then
408+
log_verbose "There were errors while converting an entry from ${file}"
409+
errors=1
410+
fi
415411
echo -e "${apt_source_lines}\n" >> "${tmpfile}"
416412
done
417413

414+
write_output_files "${tmpfile}" "${file}" "${file%.sources}.list"
415+
}
416+
417+
# Writes the output files or prints to STDOUT
418+
#
419+
# Arguments:
420+
# $1: The temporary file to write
421+
# $2: The original file to replace
422+
# $3: The new file name
423+
write_output_files () {
424+
local tmpfile="$1"
425+
local file="$2"
426+
local new_file_name="$3"
427+
418428
if [[ ${write_to_file} -eq 1 ]]; then
419429
# Create backup if not disabled
420430
if [[ ${no_backup} -eq 0 ]]; then
421431
mv "${file}" "${file}.bak"
422432
else
423433
rm -f "${file}" || log_warn "Failed to remove original file: ${file}"
424434
fi
425-
# Rename file to .list and replace original file
426-
new_file_name="${file%.sources}"
427-
new_file_name="${new_file_name}.list"
428435
mv "${tmpfile}" "${new_file_name}"
429436
else
430437
cat "${tmpfile}"
@@ -480,17 +487,30 @@ show_version () {
480487
echo "${REPO_URL}"
481488
}
482489

483-
# Logs an error message
490+
# Global error flag
491+
errors=0
492+
493+
# Logs an error message and sets the error flag
494+
#
495+
# Arguments:
496+
# $1: The error message to log
484497
log_err () {
498+
errors=1
485499
echo "ERROR: $1" 1>&2
486500
}
487501

488502
# Logs a warning message
503+
#
504+
# Arguments:
505+
# $1: The warning message to log
489506
log_warn () {
490507
echo "WARNING: $1" 1>&2
491508
}
492509

493-
# Logs a verbose message
510+
# Logs a verbose message if verbose logging is enabled
511+
#
512+
# Arguments:
513+
# $1: The verbose message to log
494514
log_verbose () {
495515
if [[ ${verbose} -eq 1 ]]; then
496516
echo "VERBOSE: $1" 1>&2
@@ -528,7 +548,7 @@ main () {
528548
if [[ "${arg}" == "-"* ]]; then
529549
cli_options+=( "${arg}" )
530550
else
531-
log_err "Unknown argument given. Expected mode or cli_options."
551+
log_err "Unknown argument given. Expected mode or options."
532552
exit 1
533553
fi
534554
fi
@@ -570,6 +590,7 @@ main () {
570590
;;
571591
-v|--verbose)
572592
verbose=1
593+
log_verbose "Verbose logging enabled"
573594
;;
574595
--no-backup)
575596
no_backup=1
@@ -612,6 +633,7 @@ main () {
612633
log_warn "Ignoring --write option when reading from STDIN"
613634
write_to_file=0
614635
fi
636+
log_verbose "Reading from STDIN"
615637
local tmpfile
616638
tmpfile=$(read_stdin_to_tempfile)
617639
files=( "${tmpfile}" )
@@ -653,6 +675,10 @@ main () {
653675
for file in "${remove_files[@]}"; do
654676
rm -f "${file}" || log_warn "Failed to remove temporary file: ${file}"
655677
done
678+
679+
if [[ ${errors} -eq 1 ]]; then
680+
exit 1
681+
fi
656682
}
657683

658684
# Pass all arguments to main

0 commit comments

Comments
 (0)