24 Commits
v1 ... main

Author SHA1 Message Date
3b28d2328a Add argument handling
All checks were successful
continuous-integration/drone Build is passing
2025-09-12 22:17:42 +05:30
68add3b228 minor correction
All checks were successful
continuous-integration/drone Build is passing
2025-09-07 16:59:06 +05:30
8ec6c7652a use alpine:latest for upload artifacts
All checks were successful
continuous-integration/drone Build is passing
2025-09-07 16:53:34 +05:30
fc542ba388 simplify upload-artifacts
Some checks failed
continuous-integration/drone Build was killed
2025-09-07 16:38:58 +05:30
b32f59b708 Update .drone.yml
Some checks failed
continuous-integration/drone Build was killed
2025-09-07 16:27:46 +05:30
c4bd93992d Update .drone.yml
Some checks failed
continuous-integration/drone Build is failing
2025-09-07 16:11:20 +05:30
22c9217059 Merge pull request 'minor correction' (#1) from minor-correction into main
Reviewed-on: #1
2025-09-05 16:37:09 +05:30
77450f38f1 minor correction 2025-09-05 16:36:31 +05:30
c949c75f28 try something new
Some checks failed
continuous-integration/drone Build was killed
2025-07-14 18:32:44 +05:30
1c4ff9231b stupid 2025-07-14 08:40:43 +05:30
0d2a4a6c68 change to use upload-artifacts@v3 2025-07-14 08:37:23 +05:30
c27cf3d3e8 add node js 2025-07-14 08:19:08 +05:30
e968c718af remove old obsolete needs condition 2025-07-14 08:13:31 +05:30
612cf4b9ed i think this might work 2025-07-14 08:12:39 +05:30
2bf58a419b move externally managed to tmp 2025-07-14 08:03:33 +05:30
7931aa73a6 add ls 2025-07-14 08:00:24 +05:30
4d4f08c762 add pwd 2025-07-14 07:59:01 +05:30
13ddeae596 add ls for debugging 2025-07-14 07:56:26 +05:30
e76b9f5a90 idk if this'll work 2025-07-14 07:54:39 +05:30
0dbb4e047d add global dir 2025-07-14 07:51:04 +05:30
8bf93e2c30 minor changes 2025-07-14 07:44:47 +05:30
1fb7988ff8 test gitea actions 2025-07-14 07:36:05 +05:30
f224342f5b minor corrections
All checks were successful
continuous-integration/drone Build is passing
2025-06-21 09:55:49 +05:30
4a999674cf minor correction
All checks were successful
continuous-integration/drone Build is passing
2025-06-19 12:28:51 +00:00
3 changed files with 146 additions and 53 deletions

View File

@@ -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')
REPO_PATH="${DRONE_REPO:-akshun/python-script}" echo "Latest tag: $LATEST_TAG"
echo "Release ID: $RELEASE_ID"
if [ -n "${DRONE_TAG}" ]; then for file in /artifacts/*-setup; do
echo "Creating release for tag ${DRONE_TAG}" FILENAME=$(basename "$file")
response=$(curl -s -X POST \ echo "Uploading $FILENAME..."
# 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

View 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

View File

@@ -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")
@@ -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")
def handle_arguments():
arguments = sys.argv[1:]
if not arguments:
menu() 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()