Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3b28d2328a | |||
| 68add3b228 | |||
| 8ec6c7652a | |||
| fc542ba388 | |||
| b32f59b708 | |||
| c4bd93992d | |||
| 22c9217059 | |||
| 77450f38f1 | |||
| c949c75f28 | |||
| 1c4ff9231b | |||
| 0d2a4a6c68 | |||
| c27cf3d3e8 | |||
| e968c718af | |||
| 612cf4b9ed | |||
| 2bf58a419b | |||
| 7931aa73a6 | |||
| 4d4f08c762 | |||
| 13ddeae596 | |||
| e76b9f5a90 | |||
| 0dbb4e047d | |||
| 8bf93e2c30 | |||
| 1fb7988ff8 | |||
| f224342f5b | |||
| 4a999674cf |
65
.drone.yml
65
.drone.yml
@@ -10,7 +10,7 @@ steps:
|
|||||||
- name: clone-repo
|
- name: clone-repo
|
||||||
image: alpine/git:latest
|
image: alpine/git:latest
|
||||||
commands:
|
commands:
|
||||||
- git clone https://gitea.akshun-lab.uk/akshun/python-script.git /artifacts
|
- git clone https://gitea.akshun-lab.cc/aggarwalakshun/python-setup.git /artifacts
|
||||||
volumes:
|
volumes:
|
||||||
- name: artifacts
|
- name: artifacts
|
||||||
path: /artifacts
|
path: /artifacts
|
||||||
@@ -61,59 +61,32 @@ steps:
|
|||||||
path: /artifacts
|
path: /artifacts
|
||||||
|
|
||||||
- name: upload-artifacts
|
- name: upload-artifacts
|
||||||
image: alpine/curl:latest
|
image: alpine:latest
|
||||||
depends_on: [arch-build, debian-build, fedora-build]
|
depends_on: [arch-build, debian-build, fedora-build]
|
||||||
commands:
|
commands:
|
||||||
- apk add --no-cache curl jq
|
- apk add jq curl
|
||||||
- |
|
- |
|
||||||
if [ -z "$GITEA_TOKEN" ] || [ -z "$GITEA_SERVER" ]; then
|
# Get the latest release information
|
||||||
echo "Error: GITEA_TOKEN or GITEA_SERVER not set"
|
RELEASE_INFO=$(curl -s "https://gitea.akshun-lab.cc/api/v1/repos/aggarwalakshun/python-setup/releases/latest")
|
||||||
exit 1
|
LATEST_TAG=$(echo "$RELEASE_INFO" | jq -r '.tag_name')
|
||||||
fi
|
RELEASE_ID=$(echo "$RELEASE_INFO" | jq -r '.id')
|
||||||
|
|
||||||
|
echo "Latest tag: $LATEST_TAG"
|
||||||
|
echo "Release ID: $RELEASE_ID"
|
||||||
|
|
||||||
REPO_PATH="${DRONE_REPO:-akshun/python-script}"
|
for file in /artifacts/*-setup; do
|
||||||
|
FILENAME=$(basename "$file")
|
||||||
if [ -n "${DRONE_TAG}" ]; then
|
echo "Uploading $FILENAME..."
|
||||||
echo "Creating release for tag ${DRONE_TAG}"
|
|
||||||
response=$(curl -s -X POST \
|
# Use the release ID instead of tag name in the URL
|
||||||
|
curl -X POST "https://gitea.akshun-lab.cc/api/v1/repos/aggarwalakshun/python-setup/releases/$RELEASE_ID/assets?name=$FILENAME" \
|
||||||
-H "Authorization: token $GITEA_TOKEN" \
|
-H "Authorization: token $GITEA_TOKEN" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/octet-stream" \
|
||||||
-d '{"tag_name": "'"${DRONE_TAG}"'", "name": "'"${DRONE_TAG}"'", "body": "Automated release"}' \
|
--data-binary @"$file"
|
||||||
"$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases")
|
|
||||||
release_id=$(echo "$response" | jq -r '.id')
|
|
||||||
else
|
|
||||||
echo "Using latest release"
|
|
||||||
response=$(curl -s -H "Authorization: token $GITEA_TOKEN" \
|
|
||||||
"$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases/latest" || echo "")
|
|
||||||
|
|
||||||
if [ -z "$response" ] || [ "$(echo "$response" | jq -r '.id')" = "null" ]; then
|
|
||||||
echo "Creating new draft release"
|
|
||||||
response=$(curl -s -X POST \
|
|
||||||
-H "Authorization: token $GITEA_TOKEN" \
|
|
||||||
-H "Content-Type: application/json" \
|
|
||||||
-d '{"tag_name": "continuous", "name": "Continuous Build", "draft": true, "body": "Automated continuous build"}' \
|
|
||||||
"$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases")
|
|
||||||
fi
|
|
||||||
|
|
||||||
release_id=$(echo "$response" | jq -r '.id')
|
|
||||||
fi
|
|
||||||
|
|
||||||
for artifact in /artifacts/*-setup; do
|
|
||||||
if [ -f "$artifact" ]; then
|
|
||||||
filename=$(basename "$artifact")
|
|
||||||
echo "Uploading $filename"
|
|
||||||
curl -X POST \
|
|
||||||
-H "Authorization: token $GITEA_TOKEN" \
|
|
||||||
-H "Content-Type: multipart/form-data" \
|
|
||||||
-F "attachment=@$artifact" \
|
|
||||||
"$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases/$release_id/assets?name=$filename"
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
environment:
|
environment:
|
||||||
GITEA_TOKEN:
|
GITEA_TOKEN:
|
||||||
from_secret: gitea-token
|
from_secret: GITEA_TOKEN
|
||||||
GITEA_SERVER:
|
|
||||||
from_secret: gitea-server
|
|
||||||
volumes:
|
volumes:
|
||||||
- name: artifacts
|
- name: artifacts
|
||||||
path: /artifacts
|
path: /artifacts
|
||||||
|
|||||||
76
.gitea/workflows/release.yml
Normal file
76
.gitea/workflows/release.yml
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
name: Multi Distro Build
|
||||||
|
|
||||||
|
on: workflow_dispatch
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
arch-build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: archlinux:latest
|
||||||
|
steps:
|
||||||
|
- name: Install node
|
||||||
|
run: pacman -Syu --noconfirm nodejs npm
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
pacman -S --noconfirm git python python-pip binutils
|
||||||
|
mv /lib/python3*/EXTERNALLY-MANAGED /tmp/
|
||||||
|
pip install --upgrade pip
|
||||||
|
pip install pyinstaller inquirerpy distro
|
||||||
|
- name: Build binary
|
||||||
|
run: |
|
||||||
|
pyinstaller --onefile --add-data "data/:data/" setup.py
|
||||||
|
cp dist/setup arch-setup
|
||||||
|
shell: bash
|
||||||
|
- name: Release binary
|
||||||
|
uses: akkuman/gitea-release-action@v1
|
||||||
|
with:
|
||||||
|
files: |-
|
||||||
|
arch-setup
|
||||||
|
|
||||||
|
debian-build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: debian:stable-slim
|
||||||
|
steps:
|
||||||
|
- name: Install node
|
||||||
|
run: apt-get update && apt-get upgrade -y && apt-get install -y nodejs npm
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
apt-get install -y git python3 python3-pip binutils
|
||||||
|
mv /usr/lib/python*/EXTERNALLY-MANAGED /tmp/
|
||||||
|
pip install pyinstaller inquirerpy distro
|
||||||
|
- name: Build binary
|
||||||
|
run: |
|
||||||
|
pyinstaller --onefile --add-data "data/:data/" setup.py
|
||||||
|
cp dist/setup debian-setup
|
||||||
|
shell: bash
|
||||||
|
- name: Release binary
|
||||||
|
uses: akkuman/gitea-release-action@v1
|
||||||
|
with:
|
||||||
|
files: |-
|
||||||
|
debian-setup
|
||||||
|
|
||||||
|
fedora-build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: fedora:latest
|
||||||
|
steps:
|
||||||
|
- name: Install node
|
||||||
|
run: dnf up -y && dnf install -y nodejs npm
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
dnf install -y git python python-pip binutils
|
||||||
|
pip install inquirerpy distro pyinstaller
|
||||||
|
- name: Build binary
|
||||||
|
run: |
|
||||||
|
pyinstaller --onefile --add-data "data/:data/" setup.py
|
||||||
|
cp dist/setup fedora-setup
|
||||||
|
shell: bash
|
||||||
|
- name: Release binary
|
||||||
|
uses: akkuman/gitea-release-action@v1
|
||||||
|
with:
|
||||||
|
files: |-
|
||||||
|
fedora-setup
|
||||||
58
setup.py
58
setup.py
@@ -35,6 +35,7 @@ def choices():
|
|||||||
|
|
||||||
def menu():
|
def menu():
|
||||||
global menu2
|
global menu2
|
||||||
|
menu2.clear()
|
||||||
choices_list = choices().splitlines()
|
choices_list = choices().splitlines()
|
||||||
choices_list.append("Exit")
|
choices_list.append("Exit")
|
||||||
menu1 = inquirer.select(
|
menu1 = inquirer.select(
|
||||||
@@ -88,16 +89,16 @@ def menu():
|
|||||||
|
|
||||||
elif menu1 == "Drivers":
|
elif menu1 == "Drivers":
|
||||||
vendors = ["NVIDIA", "AMD", "Intel", "Back to Main Menu"]
|
vendors = ["NVIDIA", "AMD", "Intel", "Back to Main Menu"]
|
||||||
menu2 = inquirer.select(
|
selected_vendor = inquirer.select(
|
||||||
message = "Select your GPU vendor",
|
message = "Select your GPU vendor",
|
||||||
choices = vendors,
|
choices = vendors,
|
||||||
default = None,
|
default = None,
|
||||||
multiselect = False
|
multiselect = False
|
||||||
).execute()
|
).execute()
|
||||||
if menu2 == "Back to Main Menu":
|
if selected_vendor == "Back to Main Menu":
|
||||||
menu()
|
menu()
|
||||||
else:
|
else:
|
||||||
install_drivers(menu2)
|
install_drivers(selected_vendor)
|
||||||
|
|
||||||
elif menu1 == "Enable RPM Fusion":
|
elif menu1 == "Enable RPM Fusion":
|
||||||
enable_rpmfusion()
|
enable_rpmfusion()
|
||||||
@@ -260,7 +261,7 @@ def install_drivers(vendor):
|
|||||||
elif which("dnf") is not None or which("yum") is not None:
|
elif which("dnf") is not None or which("yum") is not None:
|
||||||
os.system("sudo dnf install -y intel-media-driver")
|
os.system("sudo dnf install -y intel-media-driver")
|
||||||
elif which("pacman") is not None:
|
elif which("pacman") is not None:
|
||||||
driver = ["intel-media-driver", "libva-intel-driver"]
|
driver = ["intel-media-driver", "libva-intel-driver", "Back to Main Menu"]
|
||||||
gpu = inquirer.select(
|
gpu = inquirer.select(
|
||||||
message = "Choose driver",
|
message = "Choose driver",
|
||||||
choices = driver,
|
choices = driver,
|
||||||
@@ -271,6 +272,8 @@ def install_drivers(vendor):
|
|||||||
os.system("sudo pacman -S --noconfirm intel-media-driver")
|
os.system("sudo pacman -S --noconfirm intel-media-driver")
|
||||||
elif gpu == "libva-intel-driver":
|
elif gpu == "libva-intel-driver":
|
||||||
os.system("sudo pacman -S --noconfirm libva-intel-driver")
|
os.system("sudo pacman -S --noconfirm libva-intel-driver")
|
||||||
|
elif gpu == "Back to Main Menu":
|
||||||
|
menu()
|
||||||
elif vendor == "NVIDIA":
|
elif vendor == "NVIDIA":
|
||||||
if which("apt") is not None:
|
if which("apt") is not None:
|
||||||
os.system("sudo apt install -y nvidia-driver")
|
os.system("sudo apt install -y nvidia-driver")
|
||||||
@@ -278,7 +281,7 @@ def install_drivers(vendor):
|
|||||||
os.system("sudo dnf install -y akmod-nvidia")
|
os.system("sudo dnf install -y akmod-nvidia")
|
||||||
elif which("pacman") is not None:
|
elif which("pacman") is not None:
|
||||||
os.system("sudo pacman -S --noconfirm nvidia")
|
os.system("sudo pacman -S --noconfirm nvidia")
|
||||||
|
|
||||||
menu()
|
menu()
|
||||||
|
|
||||||
def install_other():
|
def install_other():
|
||||||
@@ -286,6 +289,47 @@ def install_other():
|
|||||||
selected_other = menu2
|
selected_other = menu2
|
||||||
|
|
||||||
for other in selected_other:
|
for other in selected_other:
|
||||||
os.system(f"bash {dir}data/scripts/third-party/" + other + ".sh")
|
os.system(f"bash {dir}data/scripts/" + other + ".sh")
|
||||||
|
|
||||||
menu()
|
def handle_arguments():
|
||||||
|
arguments = sys.argv[1:]
|
||||||
|
if not arguments:
|
||||||
|
menu()
|
||||||
|
else:
|
||||||
|
if len(arguments) >= 2 and arguments[0] == "install":
|
||||||
|
if arguments[1] == "--system":
|
||||||
|
selected_items = arguments[2:]
|
||||||
|
if selected_items:
|
||||||
|
os.system(f"sudo dnf install -y {' '.join(selected_items)}")
|
||||||
|
else:
|
||||||
|
print("No packages specified for system install.")
|
||||||
|
elif arguments[1] == "--flatpak":
|
||||||
|
if which("flatpak") is None:
|
||||||
|
print("Flatpak is not installed. Install Flatpak? (y/n)")
|
||||||
|
choice = input()
|
||||||
|
if choice == "y":
|
||||||
|
os.system("sudo dnf install flatpak -y")
|
||||||
|
os.system("flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo")
|
||||||
|
else:
|
||||||
|
print("Exiting...")
|
||||||
|
sys.exit(0)
|
||||||
|
selected_items = arguments[2:]
|
||||||
|
if selected_items:
|
||||||
|
os.system(f"flatpak install flathub {' '.join(selected_items)} -y")
|
||||||
|
else:
|
||||||
|
print("No packages specified for flatpak install.")
|
||||||
|
elif arguments[1] == "--drivers" and len(arguments) >= 3:
|
||||||
|
if arguments[2] == "nvidia":
|
||||||
|
os.system("sudo dnf install akmod-nvidia")
|
||||||
|
elif arguments[2] == "amd":
|
||||||
|
os.system("sudo dnf install mesa-dri-drivers")
|
||||||
|
elif arguments[2] == "intel":
|
||||||
|
os.system("sudo dnf install intel-media-driver")
|
||||||
|
else:
|
||||||
|
print("Unknown driver specified.")
|
||||||
|
else:
|
||||||
|
print("Invalid install option or missing arguments.")
|
||||||
|
else:
|
||||||
|
print("Unknown command or missing arguments.")
|
||||||
|
|
||||||
|
handle_arguments()
|
||||||
|
|||||||
Reference in New Issue
Block a user