Преглед изворни кода

Generalize the script to all OpenRC distributions

alexbe пре 7 месеци
родитељ
комит
b5e8fdf24f
2 измењених фајлова са 32 додато и 6 уклоњено
  1. 1 1
      README.md
  2. 31 5
      alpinelinux/install-release.sh

+ 1 - 1
README.md

@@ -4,7 +4,7 @@ English | [简体中文](README_zh-Hans.md) | [繁體中文](README_zh-Hant.md)
 
 Bash script for installing Xray in operating systems such as CentOS / Debian / OpenSUSE that support systemd.
 
-**For Alpine Linux users**, please refer to **[Alpine Linux Specific Instructions](alpinelinux/README.md)** for installation scripts and guides tailored for Alpine Linux.
+**For Alpine or Gentoo Linux users**, please refer to **[OpenRC Specific Instructions](alpinelinux/README.md)** for installation scripts and guides tailored for Alpine/Gentoo Linux featured by OpenRC init-system.
 
 ---
 

+ 31 - 5
alpinelinux/install-release.sh

@@ -3,8 +3,34 @@
 
 set -euo pipefail
 
-check_alpine() {
-    if [ -f /etc/alpine-release ]; then
+pkg_manager() {
+     local OP="$1" PM=apk
+     shift
+     if [ -f /etc/gentoo-release ]; then
+          PM=emerge
+          case "$OP" in
+          add)
+               OP='-v'
+          ;;
+          del)
+               OP='-C'
+          ;;
+          esac
+     fi
+     if [ -z "$@" ]; then
+          echo "$PM $OP"
+     else
+          $PM $OP $@
+     fi
+}
+
+
+check_distr() {
+    if [ -z "$(command -v rc-service)" ]; then
+        echo "No OpenRC init-system detected"
+        return 1
+    fi
+    if [ -f /etc/alpine-release -o -f /etc/gentoo-release ]; then
         return 0
     else
         return 1
@@ -91,7 +117,7 @@ install_dependencies() {
     fi
     if [ "$(command -v apk)" ]; then
         echo "Installing required dependencies..."
-        apk add curl unzip
+        pkg_manager add curl unzip #to generalize installation procedure
     else
         echo "error: The script does not support the package manager in this operating system."
         exit 1
@@ -202,7 +228,7 @@ information() {
     fi
     rm -r "$TMP_DIRECTORY"
     echo "removed: $TMP_DIRECTORY"
-    echo "You may need to execute a command to remove dependent software: apk del curl unzip"
+    echo "You may need to execute a command to remove dependent software: $(pkg_manager del) curl unzip"
     if [ "$XRAY_RUNNING" -eq '1' ]; then
         rc-service xray start
     else
@@ -212,7 +238,7 @@ information() {
 }
 
 main() {
-    check_alpine || return 1
+    check_distr || return 1
     check_if_running_as_root || return 1
     identify_architecture || return 1
     install_dependencies