From f9aa02ec1a4c24e80a206857d4f68198bb027bb4 Mon Sep 17 00:00:00 2001
From: crupest <crupest@outlook.com>
Date: Mon, 11 Nov 2024 01:12:29 +0800
Subject: HALF WORK: 2024.12.19

Re-organize file structure.
---
 .../bootstrap/apt-source/11/add-deb-src.bash       | 14 +++++++++
 .../bootstrap/apt-source/11/get-domain.bash        |  5 ++++
 .../bootstrap/apt-source/11/replace-domain.bash    |  7 +++++
 .../bootstrap/apt-source/11/replace-http.bash      |  7 +++++
 .../bootstrap/apt-source/12/add-deb-src.bash       | 22 ++++++++++++++
 .../bootstrap/apt-source/12/get-domain.bash        |  6 ++++
 .../bootstrap/apt-source/12/replace-domain.bash    |  7 +++++
 .../bootstrap/apt-source/12/replace-http.bash      |  7 +++++
 .../bootstrap/apt-source/china-source.txt          |  1 +
 .../bootstrap/apt-source/install-apt-https.bash    |  8 +++++
 docker/debian-dev/bootstrap/apt-source/setup.bash  | 34 ++++++++++++++++++++++
 11 files changed, 118 insertions(+)
 create mode 100644 docker/debian-dev/bootstrap/apt-source/11/add-deb-src.bash
 create mode 100644 docker/debian-dev/bootstrap/apt-source/11/get-domain.bash
 create mode 100644 docker/debian-dev/bootstrap/apt-source/11/replace-domain.bash
 create mode 100644 docker/debian-dev/bootstrap/apt-source/11/replace-http.bash
 create mode 100644 docker/debian-dev/bootstrap/apt-source/12/add-deb-src.bash
 create mode 100644 docker/debian-dev/bootstrap/apt-source/12/get-domain.bash
 create mode 100644 docker/debian-dev/bootstrap/apt-source/12/replace-domain.bash
 create mode 100644 docker/debian-dev/bootstrap/apt-source/12/replace-http.bash
 create mode 100644 docker/debian-dev/bootstrap/apt-source/china-source.txt
 create mode 100644 docker/debian-dev/bootstrap/apt-source/install-apt-https.bash
 create mode 100644 docker/debian-dev/bootstrap/apt-source/setup.bash

(limited to 'docker/debian-dev/bootstrap/apt-source')

diff --git a/docker/debian-dev/bootstrap/apt-source/11/add-deb-src.bash b/docker/debian-dev/bootstrap/apt-source/11/add-deb-src.bash
new file mode 100644
index 0000000..e134a00
--- /dev/null
+++ b/docker/debian-dev/bootstrap/apt-source/11/add-deb-src.bash
@@ -0,0 +1,14 @@
+#! /usr/bin/env bash
+
+set -e
+
+dir=$(dirname "$0")
+domain=$("$dir/get-domain.bash")
+
+cat <<EOF >> /etc/apt/sources.list
+
+deb-src https://$domain/debian/ bullseye main
+deb-src https://$domain/debian-security/ bullseye-security main
+deb-src https://$domain/debian-updates/ bullseye-updates main
+
+EOF
diff --git a/docker/debian-dev/bootstrap/apt-source/11/get-domain.bash b/docker/debian-dev/bootstrap/apt-source/11/get-domain.bash
new file mode 100644
index 0000000..d44ea65
--- /dev/null
+++ b/docker/debian-dev/bootstrap/apt-source/11/get-domain.bash
@@ -0,0 +1,5 @@
+#! /usr/bin/env bash
+
+set -e
+
+sed "s|.*https\?://\([-_.a-zA-Z0-9]\+\)/.*|\\1|;q" /etc/apt/sources.list
diff --git a/docker/debian-dev/bootstrap/apt-source/11/replace-domain.bash b/docker/debian-dev/bootstrap/apt-source/11/replace-domain.bash
new file mode 100644
index 0000000..86e88dc
--- /dev/null
+++ b/docker/debian-dev/bootstrap/apt-source/11/replace-domain.bash
@@ -0,0 +1,7 @@
+#! /usr/bin/env bash
+
+set -e
+
+echo "Backup /etc/apt/sources.list to /etc/apt/sources.list.bak."
+echo "Replace source domain in /etc/apt/sources.list to $1."
+sed -i.bak "s|\(https\?://\)[-_.a-zA-Z0-9]\+/|\\1$1/|" /etc/apt/sources.list
diff --git a/docker/debian-dev/bootstrap/apt-source/11/replace-http.bash b/docker/debian-dev/bootstrap/apt-source/11/replace-http.bash
new file mode 100644
index 0000000..fae082a
--- /dev/null
+++ b/docker/debian-dev/bootstrap/apt-source/11/replace-http.bash
@@ -0,0 +1,7 @@
+#! /usr/bin/env bash
+
+set -e
+
+echo "Backup /etc/apt/sources.list to /etc/apt/sources.list.bak."
+echo "Replace http to https in /etc/apt/sources.list."
+sed -i.bak 's/https\?/https/' /etc/apt/sources.list
diff --git a/docker/debian-dev/bootstrap/apt-source/12/add-deb-src.bash b/docker/debian-dev/bootstrap/apt-source/12/add-deb-src.bash
new file mode 100644
index 0000000..cf741d6
--- /dev/null
+++ b/docker/debian-dev/bootstrap/apt-source/12/add-deb-src.bash
@@ -0,0 +1,22 @@
+#! /usr/bin/env bash
+
+set -e
+
+dir=$(dirname "$0")
+domain=$("$dir/get-domain.bash")
+
+cat <<EOF >> /etc/apt/sources.list.d/debian.sources
+
+Types: deb-src
+URIs: https://$domain/debian
+Suites: bookworm bookworm-updates
+Components: main
+Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
+
+Types: deb-src
+URIs: https://$domain/debian-security
+Suites: bookworm-security
+Components: main
+Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
+
+EOF
\ No newline at end of file
diff --git a/docker/debian-dev/bootstrap/apt-source/12/get-domain.bash b/docker/debian-dev/bootstrap/apt-source/12/get-domain.bash
new file mode 100644
index 0000000..a24538c
--- /dev/null
+++ b/docker/debian-dev/bootstrap/apt-source/12/get-domain.bash
@@ -0,0 +1,6 @@
+#! /usr/bin/env bash
+
+set -e
+
+grep -e 'URIs:' /etc/apt/sources.list.d/debian.sources | \
+    sed -E 's|URIs:\s*https?://([-_.a-zA-Z0-9]+)/.*|\1|;q'
diff --git a/docker/debian-dev/bootstrap/apt-source/12/replace-domain.bash b/docker/debian-dev/bootstrap/apt-source/12/replace-domain.bash
new file mode 100644
index 0000000..d55307c
--- /dev/null
+++ b/docker/debian-dev/bootstrap/apt-source/12/replace-domain.bash
@@ -0,0 +1,7 @@
+#! /usr/bin/env bash
+
+set -e
+
+echo "Backup /etc/apt/sources.list.d/debian.sources to /etc/apt/sources.list.d/debian.sources.bak."
+echo "Replace source domain in /etc/apt/sources.list.d/debian.sources to $1."
+sed -i.bak -E "s|(URIs:\\s*https?://)[-_.a-zA-Z0-9]+(/.*)|\\1$1\\2|" /etc/apt/sources.list.d/debian.sources
diff --git a/docker/debian-dev/bootstrap/apt-source/12/replace-http.bash b/docker/debian-dev/bootstrap/apt-source/12/replace-http.bash
new file mode 100644
index 0000000..ed4391d
--- /dev/null
+++ b/docker/debian-dev/bootstrap/apt-source/12/replace-http.bash
@@ -0,0 +1,7 @@
+#! /usr/bin/env bash
+
+set -e
+
+echo "Backup /etc/apt/sources.list to /etc/apt/sources.list.d/debian.sources.bak."
+echo "Replace http to https in /etc/apt/sources.list.d/debian.sources."
+sed -i.bak -E "s|(URIs:\\s*)https?(://[-_.a-zA-Z0-9]+/.*)|\\1https\\2|" /etc/apt/sources.list.d/debian.sources
diff --git a/docker/debian-dev/bootstrap/apt-source/china-source.txt b/docker/debian-dev/bootstrap/apt-source/china-source.txt
new file mode 100644
index 0000000..4312686
--- /dev/null
+++ b/docker/debian-dev/bootstrap/apt-source/china-source.txt
@@ -0,0 +1 @@
+mirrors.tuna.tsinghua.edu.cn
\ No newline at end of file
diff --git a/docker/debian-dev/bootstrap/apt-source/install-apt-https.bash b/docker/debian-dev/bootstrap/apt-source/install-apt-https.bash
new file mode 100644
index 0000000..70fb371
--- /dev/null
+++ b/docker/debian-dev/bootstrap/apt-source/install-apt-https.bash
@@ -0,0 +1,8 @@
+#! /usr/bin/env bash
+
+set -e
+
+echo "Install apt https transport."
+apt-get update
+apt-get install -y apt-utils
+apt-get install -y apt-transport-https ca-certificates
diff --git a/docker/debian-dev/bootstrap/apt-source/setup.bash b/docker/debian-dev/bootstrap/apt-source/setup.bash
new file mode 100644
index 0000000..cdf68af
--- /dev/null
+++ b/docker/debian-dev/bootstrap/apt-source/setup.bash
@@ -0,0 +1,34 @@
+#! /usr/bin/env bash
+
+set -e
+
+dir=/bootstrap/apt-source
+
+echo "Getting debian version..."
+debian_version=$("$dir/../get-debian-version.bash")
+
+if [[ -z $debian_version ]]; then
+    echo "Debian version not found."
+    exit 1
+else
+    echo "Debian version: $debian_version"
+fi
+
+if [[ $debian_version -ge 12 ]]; then
+    setup_dir=$dir/12
+else
+    setup_dir=$dir/11
+fi
+
+echo "Setting up apt source..."
+
+if [[ -n $CRUPEST_DEBIAN_DEV_IN_CHINA ]]; then
+    echo "In China, using China source..."
+    "$setup_dir/replace-domain.bash" "$(cat "$dir/china-source.txt")"
+fi
+
+"$dir/install-apt-https.bash"
+"$setup_dir/replace-http.bash"
+"$setup_dir/add-deb-src.bash"
+
+echo "Setting up apt source done."
-- 
cgit v1.2.3