Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 55 additions & 12 deletions deb-get
Original file line number Diff line number Diff line change
Expand Up @@ -324,8 +324,9 @@ function upgrade_only_dg() {

# Update only the added repo (during install action)
function update_only_repo() {
fancy_message info "Updating: /etc/apt/sources.list.d/${APT_LIST_NAME}.list"
${ELEVATE} apt-get update -o Dir::Etc::sourcelist="sources.list.d/${APT_LIST_NAME}.list" \
if [[ -e "/etc/apt/sources.list.d/${APT_LIST_NAME}.sources" ]]; then local EXT="sources"; else local EXT="list"; fi
fancy_message info "Updating: /etc/apt/sources.list.d/${APT_LIST_NAME}.${EXT}"
${ELEVATE} apt-get update -o Dir::Etc::sourcelist="sources.list.d/${APT_LIST_NAME}.${EXT}" \
-o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
}

Expand Down Expand Up @@ -1219,6 +1220,7 @@ function remove_repo() {
local -r PPA_ARCHIVE=${PPA_ADDRESS#*/}
APT_LIST_NAME="${PPA_PERSON}-ubuntu-${PPA_ARCHIVE}-${UPSTREAM_CODENAME}"
fi
if [[ -e "/etc/apt/sources.list.d/${APT_LIST_NAME}.sources" ]]; then local EXT="sources"; else local EXT="list"; fi
local count=""
if [ -e "${ETC_DIR}/aptrepos" ]; then
count="$(grep -m 1 "^${APT_LIST_NAME} " "${ETC_DIR}/aptrepos" | cut -d " " -f 2)"
Expand All @@ -1238,14 +1240,15 @@ function remove_repo() {
fi
${ELEVATE} rm -f "/usr/share/keyrings/${APT_LIST_NAME}-archive-keyring.gpg"
if [ "${2}" != --quiet ]; then
fancy_message info "Removing /etc/apt/sources.list.d/${APT_LIST_NAME}.list"
fancy_message info "Removing /etc/apt/sources.list.d/${APT_LIST_NAME}.${EXT}"
fi
${ELEVATE} rm -f "/etc/apt/sources.list.d/${APT_LIST_NAME}.list"
${ELEVATE} rm -f "/etc/apt/sources.list.d/${APT_LIST_NAME}.list" 2> /dev/null
${ELEVATE} rm -f "/etc/apt/sources.list.d/${APT_LIST_NAME}.sources" 2> /dev/null
if [ -e "${ETC_DIR}/aptrepos" ]; then
${ELEVATE} sed -i -E "/^${APT_LIST_NAME} [0-9]+/d" "${ETC_DIR}/aptrepos"
fi
elif [ "${2}" != --quiet ]; then
fancy_message warn "/etc/apt/sources.list.d/${APT_LIST_NAME}.list was not removed because other packages depend on it."
fancy_message warn "/etc/apt/sources.list.d/${APT_LIST_NAME}.${EXT} was not removed because other packages depend on it."
fi
fi
}
Expand All @@ -1259,7 +1262,7 @@ function add_apt_repo() {
if [ -z "${count}" ]; then
count=0
fi
if [ "${count}" -eq 0 ] && [ -e "/etc/apt/sources.list.d/${APT_LIST_NAME}.list" ]; then
if [ "${count}" -eq 0 ] && { [ -e "/etc/apt/sources.list.d/${APT_LIST_NAME}.list" ] || [ -e "/etc/apt/sources.list.d/${APT_LIST_NAME}.sources" ]; }; then
((count++))
fi
((count++))
Expand Down Expand Up @@ -1292,14 +1295,54 @@ function add_apt_repo() {
fi
fi

local APT_LIST_LINE="deb [signed-by=/usr/share/keyrings/${APT_LIST_NAME}-archive-keyring.gpg"
if [[ "${DEBGET_SOURCES}" == "sources" ]]; then
# Deb822 .sources format
local URL="$(cut -d ' ' -f 1 <<< "${APT_REPO_URL}")"
local SUITES="$(cut -d ' ' -f 2 <<< "${APT_REPO_URL}")"
local COMPONENTS="$(cut -d ' ' -f 3- <<< "${APT_REPO_URL}")"
local APT_SOURCES_LINES=("Enabled: yes" "Types: deb" "URIs: ${URL}" "Suites: ${SUITES}")
if ! [[ "${SUITES}" =~ /$ ]] && [[ -n "${COMPONENTS}" ]]; then
APT_SOURCES_LINES+=("Components: ${COMPONENTS}")
fi
if [[ -n "${APT_REPO_OPTIONS}" ]]; then
local option
for option in ${APT_REPO_OPTIONS}; do
case "${option}" in
arch=*)
option="${option/arch/Architectures}";;
lang=*)
option="${option/lang/Languages}";;
target=*)
option="${option/target/Targets}";;
*)
option="$(cut -d '=' -f1 <<< "${option}" | sed -E 's/(^|[- ])([a-z])/\1\u\2/g')=$(cut -d '=' -f 2 <<< "${option}")";;
esac
option="${option/=/: }"; option="${option//,/ }"
APT_SOURCES_LINES+=("${option}")
done
fi
APT_SOURCES_LINES+=("Signed-By: /usr/share/keyrings/${APT_LIST_NAME}-archive-keyring.gpg")
if [[ -e "/etc/apt/sources.list.d/${APT_LIST_NAME}.list" ]]; then
fancy_message info "Removing /etc/apt/sources.list.d/${APT_LIST_NAME}.list"
${ELEVATE} rm "/etc/apt/sources.list.d/${APT_LIST_NAME}.list"
fi
printf '%s\n' "${APT_SOURCES_LINES[@]}" | ${ELEVATE} tee "/etc/apt/sources.list.d/${APT_LIST_NAME}.sources" > /dev/null

if [ -n "${APT_REPO_OPTIONS}" ]; then
APT_LIST_LINE="${APT_LIST_LINE} ${APT_REPO_OPTIONS}"
fi
else
# single line .list format
local APT_LIST_LINE="deb [signed-by=/usr/share/keyrings/${APT_LIST_NAME}-archive-keyring.gpg"

if [ -n "${APT_REPO_OPTIONS}" ]; then
APT_LIST_LINE="${APT_LIST_LINE} ${APT_REPO_OPTIONS}"
fi

APT_LIST_LINE="${APT_LIST_LINE}] ${APT_REPO_URL}"
${ELEVATE} tee "/etc/apt/sources.list.d/${APT_LIST_NAME}.list" <<<"${APT_LIST_LINE}" >/dev/null
APT_LIST_LINE="${APT_LIST_LINE}] ${APT_REPO_URL}"
if [[ -e "/etc/apt/sources.list.d/${APT_LIST_NAME}.sources" ]]; then
fancy_message info "Removing /etc/apt/sources.list.d/${APT_LIST_NAME}.sources"
${ELEVATE} rm "/etc/apt/sources.list.d/${APT_LIST_NAME}.sources"
fi
${ELEVATE} tee "/etc/apt/sources.list.d/${APT_LIST_NAME}.list" <<<"${APT_LIST_LINE}" >/dev/null
fi
}

function ppa_to_apt() {
Expand Down