mirror of
https://github.com/quickemu-project/quickemu.git
synced 2024-06-10 17:05:22 +02:00
Compare commits
45 Commits
e748d34340
...
9e2a0c78d2
Author | SHA1 | Date | |
---|---|---|---|
|
9e2a0c78d2 | ||
|
2aa621165b | ||
|
e98499fd82 | ||
|
c4f4d1fdb1 | ||
|
a328cffbe9 | ||
|
53ee0383a8 | ||
|
6486aa135b | ||
|
8a86280e9a | ||
|
9c3310de7a | ||
|
528c3d793c | ||
|
8c7c2987a7 | ||
|
c2624814d7 | ||
|
53186479d3 | ||
|
0da427a6d9 | ||
|
6d964212ed | ||
|
0c3f16c980 | ||
|
47914cd77f | ||
|
b058db7f11 | ||
|
51cbd207fe | ||
|
e5468e47c5 | ||
|
e4c612118e | ||
|
79c0486aad | ||
|
182a0c11e7 | ||
|
07f6205294 | ||
|
f03d830c30 | ||
|
2f6ab18812 | ||
|
7c892c9dc2 | ||
|
945933d5f4 | ||
|
dcbfce86d2 | ||
|
4abd7231c9 | ||
|
19539d7b31 | ||
|
5da3942278 | ||
|
ed91628c29 | ||
|
590bc24347 | ||
|
4e2b553972 | ||
|
e35f11b25e | ||
|
b085bebfbe | ||
|
6490d48bf9 | ||
|
88d61eae4e | ||
|
b7ff9f90db | ||
|
9b2eeb6f93 | ||
|
88d731895a | ||
|
5a07cc5d92 | ||
|
9f11bb3d02 | ||
|
3b7f50d3d5 |
28
.github/workflows/flakehub-publish.yml
vendored
28
.github/workflows/flakehub-publish.yml
vendored
|
@ -1,28 +0,0 @@
|
||||||
name: "Publish tags to FlakeHub"
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- "v?[0-9]+.[0-9]+.[0-9]+*"
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
tag:
|
|
||||||
description: "The existing tag to publish to FlakeHub"
|
|
||||||
type: "string"
|
|
||||||
required: true
|
|
||||||
jobs:
|
|
||||||
flakehub-publish:
|
|
||||||
runs-on: "ubuntu-latest"
|
|
||||||
permissions:
|
|
||||||
id-token: "write"
|
|
||||||
contents: "read"
|
|
||||||
steps:
|
|
||||||
- uses: "actions/checkout@v3"
|
|
||||||
with:
|
|
||||||
ref: "${{ (inputs.tag != null) && format('refs/tags/{0}', inputs.tag) || '' }}"
|
|
||||||
- uses: "DeterminateSystems/nix-installer-action@main"
|
|
||||||
- uses: "DeterminateSystems/magic-nix-cache-action@main"
|
|
||||||
- uses: "DeterminateSystems/flakehub-push@main"
|
|
||||||
with:
|
|
||||||
visibility: "public"
|
|
||||||
name: "quickemu-project/quickemu"
|
|
||||||
tag: "${{ inputs.tag }}"
|
|
|
@ -1,29 +1,33 @@
|
||||||
--- # reviewdog
|
---
|
||||||
name: 'Run shellcheck with reviewdog'
|
name: 🐶 SHELL check 🧪
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
branches: '**'
|
||||||
|
pull_request:
|
||||||
|
branches: '**'
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
shellcheck:
|
reviewdog:
|
||||||
permissions:
|
permissions:
|
||||||
checks: write
|
checks: write
|
||||||
contents: read
|
contents: read
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
name: 'Run shellcheck with reviewdog'
|
name: shellcheck
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: haya14busa/action-cond@v1
|
- uses: haya14busa/action-cond@v1
|
||||||
id: reporter
|
id: reporter
|
||||||
with:
|
with:
|
||||||
cond: ${{ github.event_name == 'pull_request' }}
|
cond: ${{ github.event_name == 'pull_request' }}
|
||||||
|
|
||||||
- uses: reviewdog/action-shellcheck@v1
|
- uses: reviewdog/action-shellcheck@v1
|
||||||
with:
|
with:
|
||||||
reporter: ${{ steps.reporter.outputs.value }}
|
reporter: ${{ steps.reporter.outputs.value }}
|
||||||
level: error
|
|
||||||
github_token: ${{ secrets.github_token }}
|
github_token: ${{ secrets.github_token }}
|
||||||
pattern: |
|
path: "."
|
||||||
quickget
|
check_all_files_with_shebangs: true
|
||||||
quickemu
|
level: error
|
||||||
|
shellcheck_flags: '--external-sources --severity=error'
|
18
.github/workflows/lint-shellcheck.yml
vendored
Normal file
18
.github/workflows/lint-shellcheck.yml
vendored
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
name: "Lint Shellcheck 🐚"
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: '**'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
shellcheck:
|
||||||
|
name: Shellcheck
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Run ShellCheck
|
||||||
|
uses: ludeeus/action-shellcheck@master
|
||||||
|
with:
|
||||||
|
format: gcc
|
||||||
|
severity: error
|
24
.github/workflows/lint-yaml.yml
vendored
Normal file
24
.github/workflows/lint-yaml.yml
vendored
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
---
|
||||||
|
name: 🐶 YAML check 🧪
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: '**'
|
||||||
|
pull_request:
|
||||||
|
branches: '**'
|
||||||
|
workflow_dispatch:
|
||||||
|
jobs:
|
||||||
|
yamllint:
|
||||||
|
name: yaml lint
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: haya14busa/action-cond@v1
|
||||||
|
id: reporter
|
||||||
|
with:
|
||||||
|
cond: ${{ github.event_name == 'pull_request' }}
|
||||||
|
- uses: reviewdog/action-yamllint@v1
|
||||||
|
with:
|
||||||
|
reporter: ${{ steps.reporter.outputs.value }}
|
||||||
|
github_token: ${{ secrets.github_token }}
|
||||||
|
yamllint_flags: '-d relaxed .github/'
|
||||||
|
level: error
|
36
.github/workflows/publish-ppa.yml
vendored
36
.github/workflows/publish-ppa.yml
vendored
|
@ -1,36 +0,0 @@
|
||||||
name: Publish PPA 📦️
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
publish-ppa:
|
|
||||||
name: Publish PPA
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
- name: Import gpg key
|
|
||||||
uses: crazy-max/ghaction-import-gpg@v6
|
|
||||||
with:
|
|
||||||
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
|
|
||||||
passphrase: ${{ secrets.PPA_GPG_PASSPHRASE }}
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get -y update
|
|
||||||
sudo apt-get -y install debhelper-compat distro-info dput devscripts
|
|
||||||
- name: Publish to PPA
|
|
||||||
env:
|
|
||||||
DEBEMAIL: ${{ secrets.DEBEMAIL }}
|
|
||||||
DEBFULLNAME: ${{ secrets.DEBFULLNAME }}
|
|
||||||
run: |
|
|
||||||
REL_VER=$(grep "^readonly VERSION" quickemu | cut -d'"' -f2)
|
|
||||||
STAMP=$(date +%y%j.%H%M)
|
|
||||||
for CODENAME in $(distro-info --supported); do
|
|
||||||
rm debian/changelog
|
|
||||||
dch --package quickemu --newversion="${REL_VER}-1~${CODENAME}${STAMP}" --distribution=${CODENAME} "New upstream release." --create
|
|
||||||
dpkg-buildpackage -d -S -sa
|
|
||||||
dput ppa:flexiondotorg/quickemu ../quickemu_${REL_VER}-1~${CODENAME}${STAMP}_source.changes
|
|
||||||
done
|
|
93
.github/workflows/publish-release.yml
vendored
93
.github/workflows/publish-release.yml
vendored
|
@ -1,12 +1,40 @@
|
||||||
name: Build 🏗️ and Publish 📦️
|
name: Publish Release 🏷️
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
tags: ['*']
|
tags:
|
||||||
|
- "v?[0-9]+.[0-9]+.[0-9]+*"
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
tag:
|
||||||
|
description: "The existing tag to publish"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
create-release:
|
version-check:
|
||||||
name: Create Release
|
name: "Check versions ⚖️"
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: "Compare App and Git versions 🟰"
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: |
|
||||||
|
APP_VERSION=$(grep "^readonly VERSION" quickemu | cut -d'"' -f2)
|
||||||
|
GIT_VERSION=$(git describe --tags | cut -d'-' -f1)
|
||||||
|
echo "App version: ${REL_VERSION}"
|
||||||
|
echo "Git version: ${GIT_VERSION}"
|
||||||
|
if [ "${APP_VERSION}" != "${GIT_VERSION}" ]; then
|
||||||
|
echo "ERROR! Version mismatch.";
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
draft-release:
|
||||||
|
needs: [version-check]
|
||||||
|
name: "Draft Release 📥️"
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
@ -17,8 +45,8 @@ jobs:
|
||||||
gh release create "${{ github.ref }}" --draft --generate-notes
|
gh release create "${{ github.ref }}" --draft --generate-notes
|
||||||
|
|
||||||
build-release:
|
build-release:
|
||||||
needs: [create-release]
|
needs: [draft-release]
|
||||||
name: Build Release
|
name: "Build Release 👨🔧"
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
@ -36,7 +64,7 @@ jobs:
|
||||||
|
|
||||||
publish-release:
|
publish-release:
|
||||||
needs: [build-release]
|
needs: [build-release]
|
||||||
name: Publish Release
|
name: "Publish Release 📤️"
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
@ -48,3 +76,54 @@ jobs:
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
gh release edit "${{ github.ref }}" --draft=false
|
gh release edit "${{ github.ref }}" --draft=false
|
||||||
|
|
||||||
|
publish-flakehub:
|
||||||
|
needs: [version-check]
|
||||||
|
name: "Publish FlakeHub ❄️"
|
||||||
|
runs-on: "ubuntu-22.04"
|
||||||
|
permissions:
|
||||||
|
id-token: "write"
|
||||||
|
contents: "read"
|
||||||
|
steps:
|
||||||
|
- uses: "actions/checkout@v4"
|
||||||
|
with:
|
||||||
|
ref: "${{ (inputs.tag != null) && format('refs/tags/{0}', inputs.tag) || '' }}"
|
||||||
|
- uses: "DeterminateSystems/nix-installer-action@main"
|
||||||
|
- uses: "DeterminateSystems/magic-nix-cache-action@main"
|
||||||
|
- uses: "DeterminateSystems/flakehub-push@main"
|
||||||
|
with:
|
||||||
|
visibility: "public"
|
||||||
|
name: "quickemu-project/quickemu"
|
||||||
|
tag: "${{ inputs.tag }}"
|
||||||
|
|
||||||
|
publish-ppa:
|
||||||
|
needs: [version-check]
|
||||||
|
name: "Publish PPA 📦️"
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- name: "Checkout 🥡"
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: "Import gpg key 🔑"
|
||||||
|
uses: crazy-max/ghaction-import-gpg@v6
|
||||||
|
with:
|
||||||
|
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
|
||||||
|
passphrase: ${{ secrets.PPA_GPG_PASSPHRASE }}
|
||||||
|
- name: "Install dependencies 💾"
|
||||||
|
run: |
|
||||||
|
sudo apt-get -y update
|
||||||
|
sudo apt-get -y install debhelper-compat distro-info dput devscripts
|
||||||
|
- name: "Upload to PPA ⤴️"
|
||||||
|
env:
|
||||||
|
DEBEMAIL: ${{ secrets.DEBEMAIL }}
|
||||||
|
DEBFULLNAME: ${{ secrets.DEBFULLNAME }}
|
||||||
|
run: |
|
||||||
|
REL_VER=$(grep "^readonly VERSION" quickemu | cut -d'"' -f2)
|
||||||
|
STAMP=$(date +%y%j.%H%M)
|
||||||
|
for CODENAME in $(distro-info --supported); do
|
||||||
|
rm debian/changelog
|
||||||
|
dch --package quickemu --newversion="${REL_VER}-1~${CODENAME}${STAMP}" --distribution=${CODENAME} "New upstream release." --create
|
||||||
|
dpkg-buildpackage -d -S -sa
|
||||||
|
dput ppa:flexiondotorg/quickemu ../quickemu_${REL_VER}-1~${CODENAME}${STAMP}_source.changes
|
||||||
|
done
|
||||||
|
|
131
.github/workflows/test-quickget.yml
vendored
Normal file
131
.github/workflows/test-quickget.yml
vendored
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
name: "Test quickget 🧪"
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches: '**'
|
||||||
|
paths:
|
||||||
|
- quickget
|
||||||
|
pull_request:
|
||||||
|
branches: '**'
|
||||||
|
paths:
|
||||||
|
- quickget
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
list-all-supported:
|
||||||
|
name: List all supported OS 📝
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: List all supported OS variants
|
||||||
|
run: |
|
||||||
|
mkdir -p results
|
||||||
|
./quickget --list | tee -a results/supported.txt
|
||||||
|
echo -e "\nAll supported OS variants: $(wc -l results/supported.txt)"
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: supported
|
||||||
|
path: results/supported.txt
|
||||||
|
retention-days: 1
|
||||||
|
|
||||||
|
list-all-info:
|
||||||
|
name: List all OS info ℹ️
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Show info about all OS
|
||||||
|
run: |
|
||||||
|
export TERM=xterm
|
||||||
|
mkdir -p results
|
||||||
|
distros=$(./quickget | sed '/^$/q' | tail -n +3)
|
||||||
|
for os in ${distros}; do
|
||||||
|
echo -e "\n\n ${os}"
|
||||||
|
./quickget -12345 "${os}" | tee -a results/infos.txt
|
||||||
|
done
|
||||||
|
echo -e "\nOS info: $(grep -c "http" results/infos.txt)"
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: infos
|
||||||
|
path: results/infos.txt
|
||||||
|
retention-days: 1
|
||||||
|
|
||||||
|
list-all-urls:
|
||||||
|
needs: [list-all-supported]
|
||||||
|
name: List all URLs 🔗
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: quickget --url
|
||||||
|
run: |
|
||||||
|
export TERM=xterm
|
||||||
|
mkdir -p results
|
||||||
|
./quickget -u | tee -a url.txt
|
||||||
|
sort < url.txt > results/urls.txt
|
||||||
|
- uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
path: results
|
||||||
|
merge-multiple: true
|
||||||
|
- name: results
|
||||||
|
run: |
|
||||||
|
ls -R results/
|
||||||
|
FOUND=$(grep -c 'http' < results/urls.txt)
|
||||||
|
ALL=$(wc -l < results/supported.txt)
|
||||||
|
echo -e "$FOUND/$ALL"
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: urls
|
||||||
|
path: results/urls.txt
|
||||||
|
|
||||||
|
check-all-urls:
|
||||||
|
name: Check all image URLs 💿️
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: quickget --check
|
||||||
|
run: |
|
||||||
|
export TERM=xterm
|
||||||
|
mkdir -p results
|
||||||
|
./quickget --check | tee -a check.txt
|
||||||
|
cat check.txt | sort > results/checks.txt
|
||||||
|
GOOD=$(grep -c 'http' results/checks.txt)
|
||||||
|
WINDOWS=$(grep -c 'windows' results/checks.txt)
|
||||||
|
ALL=$((GOOD + WINDOWS))
|
||||||
|
FAILED=$(grep -c 'FAIL:' results/checks.txt)
|
||||||
|
SKIPPED=$(grep -c 'SKIP:' results/checks.txt)
|
||||||
|
PASSED=$(grep -c 'PASS:' results/checks.txt)
|
||||||
|
CHECKED=$((FAILED + SKIPPED + PASSED))
|
||||||
|
FAIL=$(grep 'FAIL:' results/checks.txt | tee -a results/failed.txt)
|
||||||
|
echo -e "\nFAILED: $FAILED"
|
||||||
|
echo "SKIPPED: $SKIPPED"
|
||||||
|
echo "PASSED: $PASSED"
|
||||||
|
echo "$CHECKED/$ALL with skipped Windows"
|
||||||
|
echo -e "Failed:\n$FAIL"
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: checks
|
||||||
|
path: results/checks.txt
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: failed
|
||||||
|
path: results/failed.txt
|
||||||
|
|
||||||
|
upload-artifacts:
|
||||||
|
needs: [list-all-info, list-all-urls, check-all-urls]
|
||||||
|
name: Uploading artifacts
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
path: results
|
||||||
|
merge-multiple: true
|
||||||
|
- name: results
|
||||||
|
run: |
|
||||||
|
ls -R results/
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
overwrite: true
|
||||||
|
name: results
|
||||||
|
path: results/
|
14
quickemu
14
quickemu
|
@ -1385,11 +1385,21 @@ EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
function usage() {
|
function usage() {
|
||||||
|
echo " _ _"
|
||||||
|
echo " __ _ _ _(_) ___| | _____ _ __ ___ _ _"
|
||||||
|
echo " / _' | | | | |/ __| |/ / _ \ '_ ' _ \| | | |"
|
||||||
|
echo "| (_| | |_| | | (__| < __/ | | | | | |_| |"
|
||||||
|
echo " \__, |\__,_|_|\___|_|\_\___|_| |_| |_|\__,_|"
|
||||||
|
echo " |_| v${VERSION}, using qemu ${QEMU_VER_LONG}"
|
||||||
|
echo "--------------------------------------------------------------------------------"
|
||||||
|
echo " Project - https://github.com/quickemu-project/quickemu"
|
||||||
|
echo " Discord - https://wimpysworld.io/discord"
|
||||||
|
echo "--------------------------------------------------------------------------------"
|
||||||
echo
|
echo
|
||||||
echo "Usage"
|
echo "Usage"
|
||||||
echo " ${LAUNCHER} --vm ubuntu.conf [optional params]"
|
echo " ${LAUNCHER} --vm ubuntu.conf <arguments>"
|
||||||
echo
|
echo
|
||||||
echo "List of optional parameters:"
|
echo "Arguments"
|
||||||
echo " --access : Enable remote spice access support. 'local' (default), 'remote', 'clientipaddress'"
|
echo " --access : Enable remote spice access support. 'local' (default), 'remote', 'clientipaddress'"
|
||||||
echo " --braille : Enable braille support. Requires SDL."
|
echo " --braille : Enable braille support. Requires SDL."
|
||||||
echo " --delete-disk : Delete the disk image and EFI variables"
|
echo " --delete-disk : Delete the disk image and EFI variables"
|
||||||
|
|
271
quickget
271
quickget
|
@ -1,5 +1,6 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
export LC_ALL=C
|
export LC_ALL=C
|
||||||
|
# shellcheck disable=SC2317
|
||||||
|
|
||||||
# Here the quick 'n dirty guide to adding a new OS to quickget
|
# Here the quick 'n dirty guide to adding a new OS to quickget
|
||||||
#
|
#
|
||||||
|
@ -23,9 +24,10 @@ export LC_ALL=C
|
||||||
# echo "${URL}/${ISO} ${HASH}"
|
# echo "${URL}/${ISO} ${HASH}"
|
||||||
#}
|
#}
|
||||||
|
|
||||||
|
# shellcheck disable=SC2317
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
if [ -n "$(jobs -p)" ]; then
|
if [ -n "$(jobs -p)" ]; then
|
||||||
kill "$(jobs -p)"
|
kill "$(jobs -p)" 2>/dev/null
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +42,7 @@ function os_info() {
|
||||||
SIMPLE_NAME="${1}"
|
SIMPLE_NAME="${1}"
|
||||||
case ${SIMPLE_NAME} in
|
case ${SIMPLE_NAME} in
|
||||||
#name) INFO="PrettyName|BasedOf|Credentials|Homepage|Info";;
|
#name) INFO="PrettyName|BasedOf|Credentials|Homepage|Info";;
|
||||||
alma) INFO="Alma Linux|Fedora,RedHat|-|https://almalinux.org/|Community owned and governed, forever-free enterprise Linux distribution, focused on long-term stability, providing a robust production-grade platform. AlmaLinux OS is binary compatible with RHEL®.";;
|
alma) INFO="Alma Linux|Fedora RedHat|-|https://almalinux.org/|Community owned and governed, forever-free enterprise Linux distribution, focused on long-term stability, providing a robust production-grade platform. AlmaLinux OS is binary compatible with RHEL®.";;
|
||||||
alpine) INFO="Alpine Linux|Independent|-|https://alpinelinux.org/|Security-oriented, lightweight Linux distribution based on musl libc and busybox.";;
|
alpine) INFO="Alpine Linux|Independent|-|https://alpinelinux.org/|Security-oriented, lightweight Linux distribution based on musl libc and busybox.";;
|
||||||
android) INFO="Android x86|Independent|-|https://www.android-x86.org/|Port Android Open Source Project to x86 platform.";;
|
android) INFO="Android x86|Independent|-|https://www.android-x86.org/|Port Android Open Source Project to x86 platform.";;
|
||||||
antix) INFO="Antix|Debian|-|https://antixlinux.com/|Fast, lightweight and easy to install systemd-free linux live CD distribution based on Debian Stable for Intel-AMD x86 compatible systems.";;
|
antix) INFO="Antix|Debian|-|https://antixlinux.com/|Fast, lightweight and easy to install systemd-free linux live CD distribution based on Debian Stable for Intel-AMD x86 compatible systems.";;
|
||||||
|
@ -50,13 +52,13 @@ function os_info() {
|
||||||
artixlinux) INFO="Artix Linux|Arch|-|https://artixlinux.org/|The Art of Linux. Simple. Fast. Systemd-free.";;
|
artixlinux) INFO="Artix Linux|Arch|-|https://artixlinux.org/|The Art of Linux. Simple. Fast. Systemd-free.";;
|
||||||
athenaos) INFO="Athena OS|Arch|-|https://athenaos.org/|Offer a different experience than the most used pentesting distributions by providing only tools that fit with the user needs and improving the access to hacking resources and learning materials.";;
|
athenaos) INFO="Athena OS|Arch|-|https://athenaos.org/|Offer a different experience than the most used pentesting distributions by providing only tools that fit with the user needs and improving the access to hacking resources and learning materials.";;
|
||||||
batocera) INFO="Batocera|Independent|-|https://batocera.org/|Retro-gaming distribution with the aim of turning any computer/nano computer into a gaming console during a game or permanently.";;
|
batocera) INFO="Batocera|Independent|-|https://batocera.org/|Retro-gaming distribution with the aim of turning any computer/nano computer into a gaming console during a game or permanently.";;
|
||||||
bazzite) INFO="Bazzite|Fedora,SteamOS|-|https://github.com/ublue-os/bazzite/|Container native gaming and a ready-to-game SteamOS like.";;
|
bazzite) INFO="Bazzite|Fedora SteamOS|-|https://github.com/ublue-os/bazzite/|Container native gaming and a ready-to-game SteamOS like.";;
|
||||||
biglinux) INFO="BigLinux|unknown|-|https://www.biglinux.com.br/|Is the right choice if you want to have an easy and enriching experience with Linux. It has been perfected over more than 19 years, following our motto: 'In search of the perfect system'.";;
|
biglinux) INFO="BigLinux|unknown|-|https://www.biglinux.com.br/|Is the right choice if you want to have an easy and enriching experience with Linux. It has been perfected over more than 19 years, following our motto: 'In search of the perfect system'.";;
|
||||||
blendos) INFO="BlendOS|Arch|-|https://blendos.co/|A seamless blend of all Linux distributions. Allows you to have an immutable, atomic and declarative Arch Linux system, with application support from several Linux distributions & Android.";;
|
blendos) INFO="BlendOS|Arch|-|https://blendos.co/|A seamless blend of all Linux distributions. Allows you to have an immutable, atomic and declarative Arch Linux system, with application support from several Linux distributions & Android.";;
|
||||||
bodhi) INFO="Bodhi|Debian,Ubuntu|-|https://www.bodhilinux.com/|Lightweight distribution featuring the fast & fully customizable Moksha Desktop.";;
|
bodhi) INFO="Bodhi|Debian Ubuntu|-|https://www.bodhilinux.com/|Lightweight distribution featuring the fast & fully customizable Moksha Desktop.";;
|
||||||
bunsenlabs) INFO="BunsenLabs|Debian|-|https://www.bunsenlabs.org/|Light-weight and easily customizable Openbox desktop. The project is a community continuation of CrunchBang Linux.";;
|
bunsenlabs) INFO="BunsenLabs|Debian|-|https://www.bunsenlabs.org/|Light-weight and easily customizable Openbox desktop. The project is a community continuation of CrunchBang Linux.";;
|
||||||
cachyos) INFO="CachyOS|Arch|-|https://cachyos.org/|Designed to deliver lightning-fast speeds and stability, ensuring a smooth and enjoyable computing experience every time you use it.";;
|
cachyos) INFO="CachyOS|Arch|-|https://cachyos.org/|Designed to deliver lightning-fast speeds and stability, ensuring a smooth and enjoyable computing experience every time you use it.";;
|
||||||
centos-stream) INFO="CentOS Stream|Fedora,RedHat|-|https://www.centos.org/centos-stream/|Continuously delivered distro that tracks just ahead of Red Hat Enterprise Linux (RHEL) development, positioned as a midstream between Fedora Linux and RHEL.";;
|
centos-stream) INFO="CentOS Stream|Fedora RedHat|-|https://www.centos.org/centos-stream/|Continuously delivered distro that tracks just ahead of Red Hat Enterprise Linux (RHEL) development, positioned as a midstream between Fedora Linux and RHEL.";;
|
||||||
chimeralinux) INFO="Chimera Linux|Independent|anon:chimera root:chimera|https://chimera-linux.org/|Modern, general-purpose non-GNU Linux distribution.";;
|
chimeralinux) INFO="Chimera Linux|Independent|anon:chimera root:chimera|https://chimera-linux.org/|Modern, general-purpose non-GNU Linux distribution.";;
|
||||||
crunchbang++) INFO="#!++|Debian|-|https://www.crunchbangplusplus.org/|The classic minimal crunchbang feel, now with debian 12 bookworm.";;
|
crunchbang++) INFO="#!++|Debian|-|https://www.crunchbangplusplus.org/|The classic minimal crunchbang feel, now with debian 12 bookworm.";;
|
||||||
debian) INFO="Debian|Independent|-|https://www.debian.org/|Complete Free Operating System with perfect level of ease of use and stability.";;
|
debian) INFO="Debian|Independent|-|https://www.debian.org/|Complete Free Operating System with perfect level of ease of use and stability.";;
|
||||||
|
@ -65,7 +67,7 @@ function os_info() {
|
||||||
dragonflybsd) INFO="DragonFlyBSD|FreeBSD|-|https://www.dragonflybsd.org/|Provides an opportunity for the BSD base to grow in an entirely different direction from the one taken in the FreeBSD, NetBSD, and OpenBSD series.";;
|
dragonflybsd) INFO="DragonFlyBSD|FreeBSD|-|https://www.dragonflybsd.org/|Provides an opportunity for the BSD base to grow in an entirely different direction from the one taken in the FreeBSD, NetBSD, and OpenBSD series.";;
|
||||||
easyos) INFO="EasyOS|Independent|-|https://easyos.org/|Experimental distribution designed from scratch to support containers.";;
|
easyos) INFO="EasyOS|Independent|-|https://easyos.org/|Experimental distribution designed from scratch to support containers.";;
|
||||||
edubuntu) INFO="Edubuntu|Ubuntu|-|https://www.edubuntu.org/|Stable, secure and privacy concious option for schools.";;
|
edubuntu) INFO="Edubuntu|Ubuntu|-|https://www.edubuntu.org/|Stable, secure and privacy concious option for schools.";;
|
||||||
elementary) INFO="elementary OS|Debian,Ubuntu|-|https://elementary.io/|Thoughtful, capable, and ethical replacement for Windows and macOS.";;
|
elementary) INFO="elementary OS|Debian Ubuntu|-|https://elementary.io/|Thoughtful, capable, and ethical replacement for Windows and macOS.";;
|
||||||
endeavouros) INFO="EndeavourOS|Arch|-|https://endeavouros.com/|Provides an Arch experience without the hassle of installing it manually for both x86_64 and ARM systems.";;
|
endeavouros) INFO="EndeavourOS|Arch|-|https://endeavouros.com/|Provides an Arch experience without the hassle of installing it manually for both x86_64 and ARM systems.";;
|
||||||
endless) INFO="Endless OS|Debian|-|https://www.endlessos.org/os|Completely Free, User-Friendly Operating System Packed with Educational Tools, Games, and More.";;
|
endless) INFO="Endless OS|Debian|-|https://www.endlessos.org/os|Completely Free, User-Friendly Operating System Packed with Educational Tools, Games, and More.";;
|
||||||
fedora) INFO="Fedora|Independent|-|https://www.fedoraproject.org/|Innovative platform for hardware, clouds, and containers, built with love by you.";;
|
fedora) INFO="Fedora|Independent|-|https://www.fedoraproject.org/|Innovative platform for hardware, clouds, and containers, built with love by you.";;
|
||||||
|
@ -77,18 +79,18 @@ function os_info() {
|
||||||
gnomeos) INFO="GNOME OS|Independent|-|https://os.gnome.org/|Alpha nightly bleeding edge distro of GNOME";;
|
gnomeos) INFO="GNOME OS|Independent|-|https://os.gnome.org/|Alpha nightly bleeding edge distro of GNOME";;
|
||||||
guix) INFO="Guix|Independent|-|https://guix.gnu.org/|Distribution of the GNU operating system developed by the GNU Project—which respects the freedom of computer users.";;
|
guix) INFO="Guix|Independent|-|https://guix.gnu.org/|Distribution of the GNU operating system developed by the GNU Project—which respects the freedom of computer users.";;
|
||||||
haiku) INFO="Haiku|Independent|-|https://www.haiku-os.org/|Specifically targets personal computing. Inspired by the BeOS, Haiku is fast, simple to use, easy to learn and yet very powerful.";;
|
haiku) INFO="Haiku|Independent|-|https://www.haiku-os.org/|Specifically targets personal computing. Inspired by the BeOS, Haiku is fast, simple to use, easy to learn and yet very powerful.";;
|
||||||
holoiso) INFO="SteamOS HoloISO|Arch,SteamOS|-|https://github.com/HoloISO/holoiso|Bring the Steam Decks SteamOS Holo redistribution and provide a close-to-official SteamOS experience.";;
|
holoiso) INFO="SteamOS HoloISO|Arch SteamOS|-|https://github.com/HoloISO/holoiso|Bring the Steam Decks SteamOS Holo redistribution and provide a close-to-official SteamOS experience.";;
|
||||||
kali) INFO="Kali|Debian|-|https://www.kali.org/|The most advanced Penetration Testing Distribution.";;
|
kali) INFO="Kali|Debian|-|https://www.kali.org/|The most advanced Penetration Testing Distribution.";;
|
||||||
kdeneon) INFO="KDE Neon|Debian,Ubuntu|-|https://neon.kde.org/|Latest and greatest of KDE community software packaged on a rock-solid base.";;
|
kdeneon) INFO="KDE Neon|Debian Ubuntu|-|https://neon.kde.org/|Latest and greatest of KDE community software packaged on a rock-solid base.";;
|
||||||
kolibrios) INFO="KolibriOS|Independent|-|http://kolibrios.org/en/|Tiny yet incredibly powerful and fast operating system.";;
|
kolibrios) INFO="KolibriOS|Independent|-|http://kolibrios.org/en/|Tiny yet incredibly powerful and fast operating system.";;
|
||||||
kubuntu) INFO="Kubuntu|Ubuntu|-|https://kubuntu.org/|Free, complete, and open-source alternative to Microsoft Windows and Mac OS X which contains everything you need to work, play, or share.";;
|
kubuntu) INFO="Kubuntu|Ubuntu|-|https://kubuntu.org/|Free, complete, and open-source alternative to Microsoft Windows and Mac OS X which contains everything you need to work, play, or share.";;
|
||||||
linuxlite) INFO="Linux Lite|Debian,Ubuntu|-|https://www.linuxliteos.com/|Your first simple, fast and free stop in the world of Linux.";;
|
linuxlite) INFO="Linux Lite|Debian Ubuntu|-|https://www.linuxliteos.com/|Your first simple, fast and free stop in the world of Linux.";;
|
||||||
linuxmint) INFO="Linux Mint|Debian,Ubuntu|-|https://linuxmint.com/|Designed to work out of the box and comes fully equipped with the apps most people need.";;
|
linuxmint) INFO="Linux Mint|Debian Ubuntu|-|https://linuxmint.com/|Designed to work out of the box and comes fully equipped with the apps most people need.";;
|
||||||
lmde) INFO="Linux Mint Debian Edition|Debian|-|https://www.linuxmint.com/download_lmde.php|Aims to be as similar as possible to Linux Mint, but without using Ubuntu. The package base is provided by Debian instead.";;
|
lmde) INFO="Linux Mint Debian Edition|Debian|-|https://www.linuxmint.com/download_lmde.php|Aims to be as similar as possible to Linux Mint, but without using Ubuntu. The package base is provided by Debian instead.";;
|
||||||
lubuntu) INFO="Lubuntu|Ubuntu|-|https://lubuntu.me/|Complete Operating System that ships the essential apps and services for daily use: office applications, PDF reader, image editor, music and video players, etc. Using lightwave lxde/lxqt.";;
|
lubuntu) INFO="Lubuntu|Ubuntu|-|https://lubuntu.me/|Complete Operating System that ships the essential apps and services for daily use: office applications, PDF reader, image editor, music and video players, etc. Using lightwave lxde/lxqt.";;
|
||||||
mageia) INFO="Mageia|Independent|-|https://www.mageia.org/|Stable, secure operating system for desktop & server.";;
|
mageia) INFO="Mageia|Independent|-|https://www.mageia.org/|Stable, secure operating system for desktop & server.";;
|
||||||
manjaro) INFO="Manjaro|Arch|-|https://manjaro.org/|Versatile, free, and open-source Linux operating system designed with a strong focus on safeguarding user privacy and offering extensive control over hardware.";;
|
manjaro) INFO="Manjaro|Arch|-|https://manjaro.org/|Versatile, free, and open-source Linux operating system designed with a strong focus on safeguarding user privacy and offering extensive control over hardware.";;
|
||||||
mxlinux) INFO="MX Linux|Debian,Antix|-|https://mxlinux.org/|Designed to combine elegant and efficient desktops with high stability and solid performance.";;
|
mxlinux) INFO="MX Linux|Debian Antix|-|https://mxlinux.org/|Designed to combine elegant and efficient desktops with high stability and solid performance.";;
|
||||||
netboot) INFO="netboot.xyz|iPXE|-|https://netboot.xyz/|Your favorite operating systems in one place.";;
|
netboot) INFO="netboot.xyz|iPXE|-|https://netboot.xyz/|Your favorite operating systems in one place.";;
|
||||||
netbsd) INFO="NetBSD|Independent|-|https://www.netbsd.org/|Free, fast, secure, and highly portable Unix-like Open Source operating system. It is available for a wide range of platforms, from large-scale servers and powerful desktop systems to handheld and embedded devices.";;
|
netbsd) INFO="NetBSD|Independent|-|https://www.netbsd.org/|Free, fast, secure, and highly portable Unix-like Open Source operating system. It is available for a wide range of platforms, from large-scale servers and powerful desktop systems to handheld and embedded devices.";;
|
||||||
nitrux) INFO="Nitrux|Debian|-|https://nxos.org/|Powered by Debian, KDE Plasma and Frameworks, and AppImages.";;
|
nitrux) INFO="Nitrux|Debian|-|https://nxos.org/|Powered by Debian, KDE Plasma and Frameworks, and AppImages.";;
|
||||||
|
@ -96,11 +98,11 @@ function os_info() {
|
||||||
nwg-shell) INFO="nwg-shell|Arch|nwg:nwg|https://nwg-piotr.github.io/nwg-shell/|Arch Linux ISO with nwg-shell for sway and Hyprland";;
|
nwg-shell) INFO="nwg-shell|Arch|nwg:nwg|https://nwg-piotr.github.io/nwg-shell/|Arch Linux ISO with nwg-shell for sway and Hyprland";;
|
||||||
macos) INFO="macOS|proprietary|-|https://www.apple.com/macos/|Work and play on your Mac are even more powerful. Elevate your presence on video calls. Access information in all-new ways. Boost gaming performance. And discover even more ways to personalize your Mac.";;
|
macos) INFO="macOS|proprietary|-|https://www.apple.com/macos/|Work and play on your Mac are even more powerful. Elevate your presence on video calls. Access information in all-new ways. Boost gaming performance. And discover even more ways to personalize your Mac.";;
|
||||||
openbsd) INFO="OpenBSD|Independent|-|https://www.openbsd.org/|FREE, multi-platform 4.4BSD-based UNIX-like operating system. Our efforts emphasize portability, standardization, correctness, proactive security and integrated cryptography.";;
|
openbsd) INFO="OpenBSD|Independent|-|https://www.openbsd.org/|FREE, multi-platform 4.4BSD-based UNIX-like operating system. Our efforts emphasize portability, standardization, correctness, proactive security and integrated cryptography.";;
|
||||||
openindiana) INFO="OpenIndiana|Solaris,OpenSolaris|-|https://www.openindiana.org/|Community supported illumos-based operating system.";;
|
openindiana) INFO="OpenIndiana|Solaris OpenSolaris|-|https://www.openindiana.org/|Community supported illumos-based operating system.";;
|
||||||
opensuse) INFO="openSUSE|Independent|-|https://www.opensuse.org/|The makers choice for sysadmins, developers and desktop users.";;
|
opensuse) INFO="openSUSE|Independent|-|https://www.opensuse.org/|The makers choice for sysadmins, developers and desktop users.";;
|
||||||
oraclelinux) INFO="Oracle Linux|RedHat|-|https://www.oracle.com/linux/|Linux with everything required to deploy, optimize, and manage applications on-premises, in the cloud, and at the edge.";;
|
oraclelinux) INFO="Oracle Linux|RedHat|-|https://www.oracle.com/linux/|Linux with everything required to deploy, optimize, and manage applications on-premises, in the cloud, and at the edge.";;
|
||||||
parrotsec) INFO="Parrot Security|Debian|parrot:parrot|https://www.parrotsec.org/|Provides a huge arsenal of tools, utilities and libraries that IT and security professionals can use to test and assess the security of their assets in a reliable, compliant and reproducible way.";;
|
parrotsec) INFO="Parrot Security|Debian|parrot:parrot|https://www.parrotsec.org/|Provides a huge arsenal of tools, utilities and libraries that IT and security professionals can use to test and assess the security of their assets in a reliable, compliant and reproducible way.";;
|
||||||
peppermint) INFO="PeppermintOS|Debian,Devuan|-|https://peppermintos.com/|Provides a user with the opportunity to build the system that best fits their needs. While at the same time providing a functioning OS with minimum hassle out of the box.";;
|
peppermint) INFO="PeppermintOS|Debian Devuan|-|https://peppermintos.com/|Provides a user with the opportunity to build the system that best fits their needs. While at the same time providing a functioning OS with minimum hassle out of the box.";;
|
||||||
popos) INFO="Pop!_OS|Ubuntu|-|https://pop.system76.com/|Operating system for STEM and creative professionals who use their computer as a tool to discover and create.";;
|
popos) INFO="Pop!_OS|Ubuntu|-|https://pop.system76.com/|Operating system for STEM and creative professionals who use their computer as a tool to discover and create.";;
|
||||||
porteus) INFO="Porteus|Slackware|-|http://www.porteus.org/|Complete linux operating system that is optimized to run from CD, USB flash drive, hard drive, or other bootable storage media.";;
|
porteus) INFO="Porteus|Slackware|-|http://www.porteus.org/|Complete linux operating system that is optimized to run from CD, USB flash drive, hard drive, or other bootable storage media.";;
|
||||||
primtux) INFO="PrimTux|Ubuntu|-|https://primtux.fr/|A complete and customizable GNU/Linux operating system intended for primary school students and suitable even for older hardware.";;
|
primtux) INFO="PrimTux|Ubuntu|-|https://primtux.fr/|A complete and customizable GNU/Linux operating system intended for primary school students and suitable even for older hardware.";;
|
||||||
|
@ -118,10 +120,10 @@ function os_info() {
|
||||||
spirallinux) INFO="SpiralLinux|Debian|-|https://spirallinux.github.io/|Selection of Linux spins built from Debian GNU/Linux, with a focus on simplicity and out-of-the-box usability across all the major desktop environments.";;
|
spirallinux) INFO="SpiralLinux|Debian|-|https://spirallinux.github.io/|Selection of Linux spins built from Debian GNU/Linux, with a focus on simplicity and out-of-the-box usability across all the major desktop environments.";;
|
||||||
tails) INFO="Tails|Debian|-|https://tails.net/|Portable operating system that protects against surveillance and censorship.";;
|
tails) INFO="Tails|Debian|-|https://tails.net/|Portable operating system that protects against surveillance and censorship.";;
|
||||||
tinycore) INFO="Tiny Core Linux|Independent|-|http://www.tinycorelinux.net/|Highly modular based system with community build extensions.";;
|
tinycore) INFO="Tiny Core Linux|Independent|-|http://www.tinycorelinux.net/|Highly modular based system with community build extensions.";;
|
||||||
trisquel) INFO="Trisquel|Debian,Ubuntu|-|https://trisquel.info/|Fully free operating system for home users, small enterprises and educational centers.";;
|
trisquel) INFO="Trisquel|Debian Ubuntu|-|https://trisquel.info/|Fully free operating system for home users, small enterprises and educational centers.";;
|
||||||
truenas-core) INFO="TrueNAS Core|FreeBSD|-|https://www.truenas.com/truenas-core/|World’s most popular storage OS because it gives you the power to build your own professional-grade storage system to use in a variety of data-intensive applications without any software costs.";;
|
truenas-core) INFO="TrueNAS Core|FreeBSD|-|https://www.truenas.com/truenas-core/|World’s most popular storage OS because it gives you the power to build your own professional-grade storage system to use in a variety of data-intensive applications without any software costs.";;
|
||||||
truenas-scale) INFO="TrueNAS Scale|Debian|-|https://www.truenas.com/truenas-scale/|Open Source Hyperconverged Infrastructure (HCI) solution. In addition to powerful scale-out storage capabilities, SCALE adds Linux Containers and VMs (KVM) so apps run closer to data.";;
|
truenas-scale) INFO="TrueNAS Scale|Debian|-|https://www.truenas.com/truenas-scale/|Open Source Hyperconverged Infrastructure (HCI) solution. In addition to powerful scale-out storage capabilities, SCALE adds Linux Containers and VMs (KVM) so apps run closer to data.";;
|
||||||
tuxedo-os) INFO="Tuxedo OS|Ubuntu|-|https://www.tuxedocomputers.com/en/|KDE Ubuntu LTS designed to go with their Linux hardware.";;
|
tuxedoos) INFO="Tuxedo OS|Ubuntu|-|https://www.tuxedocomputers.com/en/|KDE Ubuntu LTS designed to go with their Linux hardware.";;
|
||||||
ubuntu) INFO="Ubuntu|Debian|-|https://ubuntu.com/|Complete desktop Linux operating system, freely available with both community and professional support.";;
|
ubuntu) INFO="Ubuntu|Debian|-|https://ubuntu.com/|Complete desktop Linux operating system, freely available with both community and professional support.";;
|
||||||
ubuntu-budgie) INFO="Ubuntu Budgie|Ubuntu|-|https://ubuntubudgie.org/|Community developed distribution, integrating the Budgie Desktop Environment with Ubuntu at its core.";;
|
ubuntu-budgie) INFO="Ubuntu Budgie|Ubuntu|-|https://ubuntubudgie.org/|Community developed distribution, integrating the Budgie Desktop Environment with Ubuntu at its core.";;
|
||||||
ubuntucinnamon) INFO="Ubuntu Cinnamon|Ubuntu|-|https://ubuntucinnamon.org/|Community-driven, featuring Linux Mint’s Cinnamon Desktop with Ubuntu at the core, packed fast and full of features, here is the most traditionally modern desktop you will ever love.";;
|
ubuntucinnamon) INFO="Ubuntu Cinnamon|Ubuntu|-|https://ubuntucinnamon.org/|Community-driven, featuring Linux Mint’s Cinnamon Desktop with Ubuntu at the core, packed fast and full of features, here is the most traditionally modern desktop you will ever love.";;
|
||||||
|
@ -130,7 +132,7 @@ function os_info() {
|
||||||
ubuntu-server) INFO="Ubuntu Server|Ubuntu|-|https://ubuntu.com/server|Brings economic and technical scalability to your datacentre, public or private. Whether you want to deploy an OpenStack cloud, a Kubernetes cluster or a 50,000-node render farm, Ubuntu Server delivers the best value scale-out performance available.";;
|
ubuntu-server) INFO="Ubuntu Server|Ubuntu|-|https://ubuntu.com/server|Brings economic and technical scalability to your datacentre, public or private. Whether you want to deploy an OpenStack cloud, a Kubernetes cluster or a 50,000-node render farm, Ubuntu Server delivers the best value scale-out performance available.";;
|
||||||
ubuntustudio) INFO="Ubuntu Studio|Ubuntu|-|https://ubuntustudio.org/|Comes preinstalled with a selection of the most common free multimedia applications available, and is configured for best performance for various purposes: Audio, Graphics, Video, Photography and Publishing.";;
|
ubuntustudio) INFO="Ubuntu Studio|Ubuntu|-|https://ubuntustudio.org/|Comes preinstalled with a selection of the most common free multimedia applications available, and is configured for best performance for various purposes: Audio, Graphics, Video, Photography and Publishing.";;
|
||||||
ubuntu-unity) INFO="Ubuntu Unity|Ubuntu|-|https://ubuntuunity.org/|Flavor of Ubuntu featuring the Unity7 desktop environment (the default desktop environment used by Ubuntu from 2010-2017).";;
|
ubuntu-unity) INFO="Ubuntu Unity|Ubuntu|-|https://ubuntuunity.org/|Flavor of Ubuntu featuring the Unity7 desktop environment (the default desktop environment used by Ubuntu from 2010-2017).";;
|
||||||
vanillaos) INFO="Vanilla OS|Debian,Ubuntu|-|https://vanillaos.org/|Designed to be a reliable and productive operating system for your daily work.";;
|
vanillaos) INFO="Vanilla OS|Debian Ubuntu|-|https://vanillaos.org/|Designed to be a reliable and productive operating system for your daily work.";;
|
||||||
void) INFO="Void Linux|Independent|anon:voidlinux|https://voidlinux.org/|General purpose operating system. Its package system allows you to quickly install, update and remove software; software is provided in binary packages or can be built directly from sources.";;
|
void) INFO="Void Linux|Independent|anon:voidlinux|https://voidlinux.org/|General purpose operating system. Its package system allows you to quickly install, update and remove software; software is provided in binary packages or can be built directly from sources.";;
|
||||||
vxlinux) INFO="VX Linux|Void|-|https://vxlinux.org/|Pre-configured, secure systemd-free Plasma desktop with focus on convenience, performance and simplicity. Based on the excellent Void Linux.";;
|
vxlinux) INFO="VX Linux|Void|-|https://vxlinux.org/|Pre-configured, secure systemd-free Plasma desktop with focus on convenience, performance and simplicity. Based on the excellent Void Linux.";;
|
||||||
whonix) INFO="Whonix|Debian|-|https://www.whonix.org/|Superior Internet Privacy with Whonix™ As handy as an app - delivering maximum anonymity and security.";;
|
whonix) INFO="Whonix|Debian|-|https://www.whonix.org/|Superior Internet Privacy with Whonix™ As handy as an app - delivering maximum anonymity and security.";;
|
||||||
|
@ -142,22 +144,22 @@ function os_info() {
|
||||||
echo "${INFO}"
|
echo "${INFO}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# shellcheck disable=SC2086
|
||||||
function show_os_info() {
|
function show_os_info() {
|
||||||
while getopts ":12345" opt; do
|
while getopts ":12345" opt; do
|
||||||
case $opt in
|
case $opt in
|
||||||
1|2|3|4|5) os_info "${2}" | cut -d'|' -f${opt};;
|
1|2|3|4|5) os_info "${2}" | cut -d'|' -f"${opt}";;
|
||||||
*) error_not_supported_argument;;
|
*) error_not_supported_argument;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function pretty_name() {
|
PRETTY_NAME=$(show_os_info -1 "${OS}")
|
||||||
echo $(show_os_info -1 "${1}")
|
|
||||||
}
|
|
||||||
|
|
||||||
# Just in case quickget want use it
|
# Just in case quickget want use it in future
|
||||||
|
# shellcheck disable=SC2005,SC2317
|
||||||
function os_homepage(){
|
function os_homepage(){
|
||||||
echo $(show_os_info -4 "${1}")
|
echo "$(show_os_info -4 "${1}")"
|
||||||
}
|
}
|
||||||
|
|
||||||
function error_specify_os() {
|
function error_specify_os() {
|
||||||
|
@ -225,7 +227,7 @@ function error_not_supported_os() {
|
||||||
|
|
||||||
function error_not_supported_release() {
|
function error_not_supported_release() {
|
||||||
if [[ ! " ${RELEASES[*]} " =~ " ${RELEASE} " ]]; then
|
if [[ ! " ${RELEASES[*]} " =~ " ${RELEASE} " ]]; then
|
||||||
echo -e "ERROR! ${DISPLAY_NAME} ${RELEASE} is not a supported release."
|
echo -e "ERROR! ${PRETTY_NAME} ${RELEASE} is not a supported release."
|
||||||
echo -n 'Supported releases: '
|
echo -n 'Supported releases: '
|
||||||
"releases_${OS}"
|
"releases_${OS}"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -234,7 +236,7 @@ function error_not_supported_release() {
|
||||||
|
|
||||||
function error_not_supported_edition() {
|
function error_not_supported_edition() {
|
||||||
if [[ ! " ${EDITIONS[*]} " =~ " ${EDITION} " ]]; then
|
if [[ ! " ${EDITIONS[*]} " =~ " ${EDITION} " ]]; then
|
||||||
echo -e "ERROR! ${EDITION} is not a supported $(pretty_name "${OS}") edition\n"
|
echo -e "ERROR! ${EDITION} is not a supported ${PRETTY_NAME} edition\n"
|
||||||
echo -n ' - Editions: '
|
echo -n ' - Editions: '
|
||||||
for EDITION in "${EDITIONS[@]}"; do
|
for EDITION in "${EDITIONS[@]}"; do
|
||||||
echo -n "${EDITION} "
|
echo -n "${EDITION} "
|
||||||
|
@ -245,7 +247,7 @@ function error_not_supported_edition() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function error_not_supported_lang() {
|
function error_not_supported_lang() {
|
||||||
echo -e "ERROR! ${LANG} is not a supported $(pretty_name "${OS}") language\n"
|
echo -e "ERROR! ${LANG} is not a supported ${PRETTY_NAME} language\n"
|
||||||
echo -n ' - Editions: '
|
echo -n ' - Editions: '
|
||||||
for LANG in "${LANGS[@]}"; do
|
for LANG in "${LANGS[@]}"; do
|
||||||
echo -n "${LANG} "
|
echo -n "${LANG} "
|
||||||
|
@ -273,11 +275,9 @@ function handle_missing() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function validate_release() {
|
function validate_release() {
|
||||||
local DISPLAY_NAME=""
|
local PRETTY_NAME=""
|
||||||
local RELEASE_GENERATOR=""
|
local RELEASE_GENERATOR=""
|
||||||
local RELEASES=""
|
local RELEASES=""
|
||||||
|
|
||||||
DISPLAY_NAME="$(pretty_name "${OS}")"
|
|
||||||
case ${OS} in
|
case ${OS} in
|
||||||
*ubuntu-server*) RELEASE_GENERATOR="releases_ubuntu-server";;
|
*ubuntu-server*) RELEASE_GENERATOR="releases_ubuntu-server";;
|
||||||
*ubuntu*) RELEASE_GENERATOR="releases_ubuntu";;
|
*ubuntu*) RELEASE_GENERATOR="releases_ubuntu";;
|
||||||
|
@ -295,15 +295,12 @@ function list_json() {
|
||||||
|
|
||||||
function list_csv() {
|
function list_csv() {
|
||||||
CSV_DATA="$(csv_data)"
|
CSV_DATA="$(csv_data)"
|
||||||
|
|
||||||
echo "Display Name,OS,Release,Option,Downloader,PNG,SVG"
|
|
||||||
sort -t',' -k2,2 <<<"${CSV_DATA}"
|
sort -t',' -k2,2 <<<"${CSV_DATA}"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function csv_data() {
|
function csv_data() {
|
||||||
local DISPLAY_NAME
|
local PRETTY_NAME
|
||||||
local DL=""
|
local DL=""
|
||||||
local DOWNLOADER
|
local DOWNLOADER
|
||||||
local FUNC
|
local FUNC
|
||||||
|
@ -312,6 +309,7 @@ function csv_data() {
|
||||||
local PNG
|
local PNG
|
||||||
local RELEASE
|
local RELEASE
|
||||||
local SVG
|
local SVG
|
||||||
|
local INFO
|
||||||
local HAS_ZSYNC=0
|
local HAS_ZSYNC=0
|
||||||
|
|
||||||
# Check if zsync is available
|
# Check if zsync is available
|
||||||
|
@ -320,9 +318,10 @@ function csv_data() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for OS in $(os_support); do
|
for OS in $(os_support); do
|
||||||
|
local INFO=""
|
||||||
local EDITIONS=""
|
local EDITIONS=""
|
||||||
DISPLAY_NAME="$(pretty_name "${OS}")"
|
INFO=$(os_info "$OS")
|
||||||
|
IFS='|' read -r PRETTY_NAME BASED_ON CREDENTIALS HOMEPAGE INFO_TEXT <<< "$INFO"
|
||||||
case ${OS} in
|
case ${OS} in
|
||||||
*ubuntu-server*) FUNC="ubuntu-server";;
|
*ubuntu-server*) FUNC="ubuntu-server";;
|
||||||
*ubuntu*) FUNC="ubuntu";;
|
*ubuntu*) FUNC="ubuntu";;
|
||||||
|
@ -346,15 +345,15 @@ function csv_data() {
|
||||||
# If the OS has an editions_() function, use it.
|
# If the OS has an editions_() function, use it.
|
||||||
if [[ ${EDITIONS} ]]; then
|
if [[ ${EDITIONS} ]]; then
|
||||||
for OPTION in ${EDITIONS}; do
|
for OPTION in ${EDITIONS}; do
|
||||||
echo "${DISPLAY_NAME},${OS},${RELEASE},${OPTION},${DOWNLOADER},${PNG},${SVG}"
|
echo "${PRETTY_NAME},${OS},${RELEASE},${OPTION},${DOWNLOADER},${PNG},${SVG},${BASED_ON},${CREDENTIALS},${HOMEPAGE},${INFO_TEXT}"
|
||||||
done
|
done
|
||||||
elif [[ "${OS}" == "windows"* ]]; then
|
elif [[ "${OS}" == "windows"* ]]; then
|
||||||
"languages_${OS}"
|
"languages_${OS}"
|
||||||
for LANG in "${LANGS[@]}"; do
|
for LANG in "${LANGS[@]}"; do
|
||||||
echo "${DISPLAY_NAME},${OS},${RELEASE},${LANG},${DOWNLOADER},${PNG},${SVG}"
|
echo "${PRETTY_NAME},${OS},${RELEASE},${LANG},${DOWNLOADER},${PNG},${SVG},${BASED_ON},${CREDENTIALS},${HOMEPAGE},${INFO_TEXT}"
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
echo "${DISPLAY_NAME},${OS},${RELEASE},,${DOWNLOADER},${PNG},${SVG}"
|
echo "${PRETTY_NAME},${OS},${RELEASE},,${DOWNLOADER},${PNG},${SVG},${BASED_ON},${CREDENTIALS},${HOMEPAGE},${INFO_TEXT}"
|
||||||
fi
|
fi
|
||||||
done &
|
done &
|
||||||
done
|
done
|
||||||
|
@ -485,7 +484,8 @@ function test_all() {
|
||||||
test_result "${OS}" "${RELEASE}" "${EDITION}" "${URL}" "${CHECK}"
|
test_result "${OS}" "${RELEASE}" "${EDITION}" "${URL}" "${CHECK}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done &
|
||||||
|
wait
|
||||||
}
|
}
|
||||||
|
|
||||||
function os_support() {
|
function os_support() {
|
||||||
|
@ -493,8 +493,8 @@ function os_support() {
|
||||||
alpine \
|
alpine \
|
||||||
android \
|
android \
|
||||||
antix \
|
antix \
|
||||||
archlinux \
|
|
||||||
archcraft \
|
archcraft \
|
||||||
|
archlinux \
|
||||||
arcolinux \
|
arcolinux \
|
||||||
artixlinux \
|
artixlinux \
|
||||||
athenaos \
|
athenaos \
|
||||||
|
@ -534,6 +534,8 @@ function os_support() {
|
||||||
linuxlite \
|
linuxlite \
|
||||||
linuxmint \
|
linuxmint \
|
||||||
lmde \
|
lmde \
|
||||||
|
lubuntu \
|
||||||
|
macos \
|
||||||
mageia \
|
mageia \
|
||||||
manjaro \
|
manjaro \
|
||||||
mxlinux \
|
mxlinux \
|
||||||
|
@ -542,14 +544,12 @@ function os_support() {
|
||||||
nitrux \
|
nitrux \
|
||||||
nixos \
|
nixos \
|
||||||
nwg-shell \
|
nwg-shell \
|
||||||
lubuntu \
|
|
||||||
macos \
|
|
||||||
openbsd \
|
openbsd \
|
||||||
openindiana \
|
openindiana \
|
||||||
opensuse \
|
opensuse \
|
||||||
oraclelinux \
|
oraclelinux \
|
||||||
peppermint \
|
|
||||||
parrotsec \
|
parrotsec \
|
||||||
|
peppermint \
|
||||||
popos \
|
popos \
|
||||||
porteus \
|
porteus \
|
||||||
primtux \
|
primtux \
|
||||||
|
@ -573,12 +573,12 @@ function os_support() {
|
||||||
tuxedo-os \
|
tuxedo-os \
|
||||||
ubuntu \
|
ubuntu \
|
||||||
ubuntu-budgie \
|
ubuntu-budgie \
|
||||||
ubuntucinnamon \
|
|
||||||
ubuntukylin \
|
|
||||||
ubuntu-mate \
|
ubuntu-mate \
|
||||||
ubuntu-server \
|
ubuntu-server \
|
||||||
ubuntustudio \
|
|
||||||
ubuntu-unity \
|
ubuntu-unity \
|
||||||
|
ubuntucinnamon \
|
||||||
|
ubuntukylin \
|
||||||
|
ubuntustudio \
|
||||||
vanillaos \
|
vanillaos \
|
||||||
void \
|
void \
|
||||||
vxlinux \
|
vxlinux \
|
||||||
|
@ -719,7 +719,7 @@ function releases_debian() {
|
||||||
local OLD=""
|
local OLD=""
|
||||||
NEW=$(web_pipe "https://cdimage.debian.org/debian-cd/" | grep '\.[0-9]/' | cut -d'>' -f 9 | cut -d'/' -f 1)
|
NEW=$(web_pipe "https://cdimage.debian.org/debian-cd/" | grep '\.[0-9]/' | cut -d'>' -f 9 | cut -d'/' -f 1)
|
||||||
OLD=$(web_pipe "https://cdimage.debian.org/cdimage/archive/" | grep -e '>[1-9][0-9]\.' | grep -v 'live' | grep -v NEVER | cut -d'>' -f 9 | cut -d'/' -f 1 | tac | head -20)
|
OLD=$(web_pipe "https://cdimage.debian.org/cdimage/archive/" | grep -e '>[1-9][0-9]\.' | grep -v 'live' | grep -v NEVER | cut -d'>' -f 9 | cut -d'/' -f 1 | tac | head -20)
|
||||||
echo ${NEW} ${OLD}
|
echo "${NEW}" "${OLD}"
|
||||||
}
|
}
|
||||||
|
|
||||||
function editions_debian() {
|
function editions_debian() {
|
||||||
|
@ -1095,26 +1095,26 @@ function releases_tuxedo-os() {
|
||||||
|
|
||||||
function releases_ubuntu() {
|
function releases_ubuntu() {
|
||||||
local VERSION_DATA="$(IFS=$'\n' web_pipe https://api.launchpad.net/devel/ubuntu/series | jq -r '.entries[]')"
|
local VERSION_DATA="$(IFS=$'\n' web_pipe https://api.launchpad.net/devel/ubuntu/series | jq -r '.entries[]')"
|
||||||
local SUPPORTED_VERSIONS=($(IFS=$'\n' jq -r 'select(.status=="Supported" or .status=="Current Stable Release") | .version' <<<${VERSION_DATA} | sort))
|
local SUPPORTED_VERSIONS=($(IFS=$'\n' jq -r 'select(.status=="Supported" or .status=="Current Stable Release") | .version' <<<"${VERSION_DATA}" | sort))
|
||||||
local EOL_VERSIONS=($(IFS=$'\n' jq -r 'select(.status=="Obsolete") | .version' <<<${VERSION_DATA} | sort))
|
local EOL_VERSIONS=($(IFS=$'\n' jq -r 'select(.status=="Obsolete") | .version' <<<"${VERSION_DATA}" | sort))
|
||||||
case "${OS}" in
|
case "${OS}" in
|
||||||
ubuntu)
|
ubuntu)
|
||||||
echo ${SUPPORTED_VERSIONS[@]} daily-live ${EOL_VERSIONS[@]/#/eol-};;
|
echo "${SUPPORTED_VERSIONS[@]}" daily-live "${EOL_VERSIONS[@]/#/eol-}";;
|
||||||
kubuntu|lubuntu|ubuntukylin|ubuntu-mate|ubuntustudio|xubuntu)
|
kubuntu|lubuntu|ubuntukylin|ubuntu-mate|ubuntustudio|xubuntu)
|
||||||
# after 16.04
|
# after 16.04
|
||||||
echo ${SUPPORTED_VERSIONS[@]:1} daily-live ${EOL_VERSIONS[@]/#/eol-};;
|
echo "${SUPPORTED_VERSIONS[@]:1}" daily-live "${EOL_VERSIONS[@]/#/eol-}";;
|
||||||
ubuntu-budgie)
|
ubuntu-budgie)
|
||||||
# after 18.04
|
# after 18.04
|
||||||
echo ${SUPPORTED_VERSIONS[@]:2} daily-live ${EOL_VERSIONS[@]/#/eol-};;
|
echo "${SUPPORTED_VERSIONS[@]:2}" daily-live "${EOL_VERSIONS[@]/#/eol-}";;
|
||||||
edubuntu|ubuntu-unity|ubuntucinnamon)
|
edubuntu|ubuntu-unity|ubuntucinnamon)
|
||||||
# after 23.10
|
# after 23.10
|
||||||
echo ${SUPPORTED_VERSIONS[@]:5} daily-live ${EOL_VERSIONS[@]/#/eol-};;
|
echo "${SUPPORTED_VERSIONS[@]:5}" daily-live "${EOL_VERSIONS[@]/#/eol-}";;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
function releases_ubuntu-server() {
|
function releases_ubuntu-server() {
|
||||||
local ALL_VERSIONS=($(IFS=$'\n' web_pipe http://releases.ubuntu.com/streams/v1/com.ubuntu.releases:ubuntu-server.json | jq -r '.products[] | select(.arch=="amd64") | .version' | sort -rV))
|
local ALL_VERSIONS=($(IFS=$'\n' web_pipe http://releases.ubuntu.com/streams/v1/com.ubuntu.releases:ubuntu-server.json | jq -r '.products[] | select(.arch=="amd64") | .version' | sort -rV))
|
||||||
echo ${ALL_VERSIONS[@]}
|
echo "${ALL_VERSIONS[@]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
function releases_vanillaos() {
|
function releases_vanillaos() {
|
||||||
|
@ -1250,7 +1250,7 @@ function web_get() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ${OS} != windows && ${OS} != macos && ${OS} != windows-server ]]; then
|
if [[ ${OS} != windows && ${OS} != macos && ${OS} != windows-server ]]; then
|
||||||
echo Downloading $(pretty_name "${OS}") ${RELEASE} ${EDITION:+ $EDITION}
|
echo Downloading "${PRETTY_NAME}" "${RELEASE}" "${EDITION:+ $EDITION}"
|
||||||
echo "- URL: ${URL}"
|
echo "- URL: ${URL}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1290,17 +1290,21 @@ function web_check() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function zsync_get() {
|
function zsync_get() {
|
||||||
|
local CHECK=""
|
||||||
local DIR="${2}"
|
local DIR="${2}"
|
||||||
local FILE="${1##*/}"
|
local FILE="${1##*/}"
|
||||||
local OUT=""
|
local OUT=""
|
||||||
local URL="${1}"
|
local URL="${1}"
|
||||||
# Test mode for ISO
|
# Test mode for ISO
|
||||||
if [ "${OPERATION}" == "show" ]; then
|
if [ "${OPERATION}" == "show" ]; then
|
||||||
echo "${URL}"
|
test_result "${OS}" "${RELEASE}" "${EDITION}" "${URL}"
|
||||||
exit 0
|
exit 0
|
||||||
elif [ "${OPERATION}" == "test" ]; then
|
elif [ "${OPERATION}" == "test" ]; then
|
||||||
web_check "${URL}"
|
if ! web_check "${URL}"; then
|
||||||
exit 0
|
CHECK=$(web_check "${URL}" && echo 'PASS' || echo 'FAIL')
|
||||||
|
test_result "${OS}" "${RELEASE}" "${EDITION}" "${URL}" "${CHECK}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
elif command -v zsync &>/dev/null; then
|
elif command -v zsync &>/dev/null; then
|
||||||
if [ -n "${3}" ]; then
|
if [ -n "${3}" ]; then
|
||||||
OUT="${3}"
|
OUT="${3}"
|
||||||
|
@ -1312,7 +1316,7 @@ function zsync_get() {
|
||||||
echo "ERROR! Unable to create directory ${DIR}"
|
echo "ERROR! Unable to create directory ${DIR}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo -e Downloading $(pretty_name "${OS}") ${RELEASE} ${EDITION+ ${EDITION}} from ${URL}'\n'
|
echo -e Downloading "${PRETTY_NAME} ${RELEASE} ${EDITION+ ${EDITION}} from ${URL}\n"
|
||||||
# Only force http for zsync - not earlier because we might fall through here
|
# Only force http for zsync - not earlier because we might fall through here
|
||||||
if ! zsync "${URL/https/http}.zsync" -i "${DIR}/${OUT}" -o "${DIR}/${OUT}" 2>/dev/null; then
|
if ! zsync "${URL/https/http}.zsync" -i "${DIR}/${OUT}" -o "${DIR}/${OUT}" 2>/dev/null; then
|
||||||
echo "ERROR! Failed to download ${URL/https/http}.zsync"
|
echo "ERROR! Failed to download ${URL/https/http}.zsync"
|
||||||
|
@ -1508,8 +1512,8 @@ EOF
|
||||||
echo "secureboot=\"off\"" >> "${CONF_FILE}"
|
echo "secureboot=\"off\"" >> "${CONF_FILE}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
echo -e "\nTo start your $(pretty_name "${OS}") virtual machine run:"
|
echo -e "\nTo start your ${PRETTY_NAME} virtual machine run:"
|
||||||
if [ ${OS} == "slint" ]; then
|
if [ "${OS}" == "slint" ]; then
|
||||||
echo -e " quickemu --vm ${CONF_FILE}\nTo start Slint with braille support run:\n quickemu --vm --braille --display sdl ${CONF_FILE}"
|
echo -e " quickemu --vm ${CONF_FILE}\nTo start Slint with braille support run:\n quickemu --vm --braille --display sdl ${CONF_FILE}"
|
||||||
else
|
else
|
||||||
echo " quickemu --vm ${CONF_FILE}"
|
echo " quickemu --vm ${CONF_FILE}"
|
||||||
|
@ -1827,7 +1831,7 @@ function get_fedora() {
|
||||||
Server|Kinoite|Onyx|Silverblue|Sericea|Workstation) VARIANT="${EDITION}";;
|
Server|Kinoite|Onyx|Silverblue|Sericea|Workstation) VARIANT="${EDITION}";;
|
||||||
*) VARIANT="Spins";;
|
*) VARIANT="Spins";;
|
||||||
esac
|
esac
|
||||||
JSON=$(web_pipe "https://getfedora.org/releases.json" | jq '.[] | select(.variant=="'${VARIANT}'" and .subvariant=="'"${EDITION}"'" and .arch=="x86_64" and .version=="'"${RELEASE}"'")')
|
JSON=$(web_pipe "https://getfedora.org/releases.json" | jq '.[] | select(.variant=="'"${VARIANT}"'" and .subvariant=="'"${EDITION}"'" and .arch=="x86_64" and .version=="'"${RELEASE}"'")')
|
||||||
URL=$(echo "${JSON}" | jq -r '.link' | head -n1)
|
URL=$(echo "${JSON}" | jq -r '.link' | head -n1)
|
||||||
HASH=$(echo "${JSON}" | jq -r '.sha256' | head -n1)
|
HASH=$(echo "${JSON}" | jq -r '.sha256' | head -n1)
|
||||||
echo "${URL} ${HASH}"
|
echo "${URL} ${HASH}"
|
||||||
|
@ -2127,9 +2131,9 @@ function get_manjaro() {
|
||||||
[[ ${RELEASE} != "sway" ]] && MANIFEST="$(web_pipe https://gitlab.manjaro.org/web/iso-info/-/raw/master/file-info.json)"
|
[[ ${RELEASE} != "sway" ]] && MANIFEST="$(web_pipe https://gitlab.manjaro.org/web/iso-info/-/raw/master/file-info.json)"
|
||||||
[[ ${EDITION} == "minimal" && ${TYPE} != "sway" ]] && EDITION=".minimal" || EDITION=""
|
[[ ${EDITION} == "minimal" && ${TYPE} != "sway" ]] && EDITION=".minimal" || EDITION=""
|
||||||
if [[ ${RELEASE} != "sway" ]]; then
|
if [[ ${RELEASE} != "sway" ]]; then
|
||||||
URL="$(echo ${MANIFEST} | jq -r .${TYPE}.${RELEASE}${EDITION}.image)"
|
URL="$(echo "${MANIFEST}" | jq -r "${TYPE}"."${RELEASE}""${EDITION}".image)"
|
||||||
else
|
else
|
||||||
URL=$(echo ${MANIFEST} | jq -r '.[] | select(.name|test("^manjaro-sway-.*[.]iso$")) | select(.name|contains("unstable")|not) | .url')
|
URL=$(echo "${MANIFEST}" | jq -r '.[] | select(.name|test("^manjaro-sway-.*[.]iso$")) | select(.name|contains("unstable")|not) | .url')
|
||||||
fi
|
fi
|
||||||
HASH=$(web_pipe "${URL}.sha512" | cut_1)
|
HASH=$(web_pipe "${URL}.sha512" | cut_1)
|
||||||
echo "${URL} ${HASH}"
|
echo "${URL} ${HASH}"
|
||||||
|
@ -2473,7 +2477,7 @@ function get_truenas-scale() {
|
||||||
local ISO=""
|
local ISO=""
|
||||||
local URL=""
|
local URL=""
|
||||||
local DLINFO="https://www.truenas.com/download-truenas-scale/"
|
local DLINFO="https://www.truenas.com/download-truenas-scale/"
|
||||||
URL=$(web_pipe ${DLINFO} | grep -o "\"https://.*${RELEASE}.*\.iso\"" | cut -d'"' -f 2)
|
URL=$(web_pipe "${DLINFO}" | grep -o "\"https://.*${RELEASE}.*\.iso\"" | cut -d'"' -f 2)
|
||||||
HASH=$(web_pipe "${URL}.sha256" | cut_1)
|
HASH=$(web_pipe "${URL}.sha256" | cut_1)
|
||||||
echo "${URL} ${HASH}"
|
echo "${URL} ${HASH}"
|
||||||
}
|
}
|
||||||
|
@ -2482,7 +2486,7 @@ function get_truenas-core() {
|
||||||
local ISO=""
|
local ISO=""
|
||||||
local URL=""
|
local URL=""
|
||||||
local DLINFO="https://www.truenas.com/download-truenas-core/"
|
local DLINFO="https://www.truenas.com/download-truenas-core/"
|
||||||
URL=$(web_pipe ${DLINFO} | grep -o "\"https://.*${RELEASE}.*\.iso\"" | cut -d'"' -f 2)
|
URL=$(web_pipe "${DLINFO}" | grep -o "\"https://.*${RELEASE}.*\.iso\"" | cut -d'"' -f 2)
|
||||||
HASH=$(web_pipe "${URL}".sha256 | cut_1)
|
HASH=$(web_pipe "${URL}".sha256 | cut_1)
|
||||||
echo "${URL} ${HASH}"
|
echo "${URL} ${HASH}"
|
||||||
}
|
}
|
||||||
|
@ -2515,12 +2519,12 @@ function get_ubuntu-server() {
|
||||||
|
|
||||||
if web_check "${URL}/SHA256SUMS"; then
|
if web_check "${URL}/SHA256SUMS"; then
|
||||||
DATA=$(web_pipe "${URL}/SHA256SUMS" | grep "${NAME}" | grep amd64 | grep iso)
|
DATA=$(web_pipe "${URL}/SHA256SUMS" | grep "${NAME}" | grep amd64 | grep iso)
|
||||||
ISO=$(cut -d'*' -f2 <<<${DATA})
|
ISO=$(cut -d'*' -f2 <<<"${DATA}")
|
||||||
HASH=$(cut_1 <<<${DATA})
|
HASH=$(cut_1 <<<"${DATA}")
|
||||||
else
|
else
|
||||||
DATA=$(web_pipe "${URL}/MD5SUMS" | grep "${NAME}" | grep amd64 | grep iso)
|
DATA=$(web_pipe "${URL}/MD5SUMS" | grep "${NAME}" | grep amd64 | grep iso)
|
||||||
ISO=$(cut -d' ' -f3 <<<${DATA})
|
ISO=$(cut -d' ' -f3 <<<"${DATA}")
|
||||||
HASH=$(cut_1 <<<${DATA})
|
HASH=$(cut_1 <<<"${DATA}")
|
||||||
fi
|
fi
|
||||||
if [[ "${RELEASE}" == "daily"* ]] || [ "${RELEASE}" == "dvd" ]; then
|
if [[ "${RELEASE}" == "daily"* ]] || [ "${RELEASE}" == "dvd" ]; then
|
||||||
zsync_get "${URL}/${ISO}" "${VM_PATH}" "${OS}-devel.iso"
|
zsync_get "${URL}/${ISO}" "${VM_PATH}" "${OS}-devel.iso"
|
||||||
|
@ -2561,15 +2565,15 @@ function get_ubuntu() {
|
||||||
fi
|
fi
|
||||||
if web_check "${URL}/SHA256SUMS"; then
|
if web_check "${URL}/SHA256SUMS"; then
|
||||||
DATA=$(web_pipe "${URL}/SHA256SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | grep iso | grep -v "+mac")
|
DATA=$(web_pipe "${URL}/SHA256SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | grep iso | grep -v "+mac")
|
||||||
ISO=$(cut -d'*' -f2 <<<${DATA} | sed '1q;d')
|
ISO=$(cut -d'*' -f2 <<<"${DATA}" | sed '1q;d')
|
||||||
HASH=$(cut_1 <<<${DATA} | sed '1q;d')
|
HASH=$(cut_1 <<<"${DATA}" | sed '1q;d')
|
||||||
else
|
else
|
||||||
DATA=$(web_pipe "${URL}/MD5SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | grep iso | grep -v "+mac")
|
DATA=$(web_pipe "${URL}/MD5SUMS" | grep 'desktop\|dvd\|install' | grep amd64 | grep iso | grep -v "+mac")
|
||||||
ISO=$(cut -d'*' -f2 <<<${DATA})
|
ISO=$(cut -d'*' -f2 <<<"${DATA}")
|
||||||
HASH=$(cut_1 <<<${DATA})
|
HASH=$(cut_1 <<<"${DATA}")
|
||||||
fi
|
fi
|
||||||
if [ -z $ISO ] || [ -z $HASH ]; then
|
if [ -z "$ISO" ] || [ -z "$HASH" ]; then
|
||||||
echo "$(pretty_name $OS) ${RELEASE} is currently unavailable. Please select other OS/Release combination"
|
echo "${PRETTY_NAME} ${RELEASE} is currently unavailable. Please select other OS/Release combination"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [[ "${RELEASE}" == "daily"* ]] || [ "${RELEASE}" == "dvd" ]; then
|
if [[ "${RELEASE}" == "daily"* ]] || [ "${RELEASE}" == "dvd" ]; then
|
||||||
|
@ -3118,7 +3122,7 @@ function download_windows_server() {
|
||||||
# Limit untrusted size for input validation
|
# Limit untrusted size for input validation
|
||||||
iso_download_link="$(echo "$iso_download_link" | head -c 1024)"
|
iso_download_link="$(echo "$iso_download_link" | head -c 1024)"
|
||||||
|
|
||||||
echo "Downloading $(pretty_name "${OS}") ${PRETTY_RELEASE} (${LANG}): $iso_download_link"
|
echo "Downloading ${PRETTY_NAME} ${PRETTY_RELEASE} (${LANG}): $iso_download_link"
|
||||||
|
|
||||||
# Use highest TLS version for endpoints that support it
|
# Use highest TLS version for endpoints that support it
|
||||||
case "$iso_download_link" in
|
case "$iso_download_link" in
|
||||||
|
@ -3285,7 +3289,7 @@ function open_homepage() {
|
||||||
error_specify_os
|
error_specify_os
|
||||||
else
|
else
|
||||||
URL="$(os_info "${1}" | cut -d'|' -f4)"
|
URL="$(os_info "${1}" | cut -d'|' -f4)"
|
||||||
xdg-open $URL || sensible-browser $URL || x-www-browser $URL || gnome-open $URL
|
xdg-open "$URL" || sensible-browser "$URL" || x-www-browser "$URL" || gnome-open "$URL"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -3304,32 +3308,32 @@ function create_vm() {
|
||||||
check_hash "${ISO}" "${HASH}"
|
check_hash "${ISO}" "${HASH}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ${OS} == "freedos" ] && [[ $ISO =~ ".zip" ]]; then
|
if [ "${OS}" == "freedos" ] && [[ $ISO =~ ".zip" ]]; then
|
||||||
unzip ${VM_PATH}/${ISO} -d ${VM_PATH}
|
unzip "${VM_PATH}/${ISO}" -d "${VM_PATH}"
|
||||||
ISO=$(ls ${VM_PATH} | grep -i '.iso')
|
ISO=$(ls "${VM_PATH}" | grep -i '.iso')
|
||||||
fi
|
fi
|
||||||
#if [ ${OS} == "guix" ] && [[ $ISO =~ ".qcow2" ]]; then
|
#if [ "${OS}" == "guix" ] && [[ $ISO =~ ".qcow2" ]]; then
|
||||||
#cp ${VM_PATH}/${ISO} ${VM_PATH}/disc.qcow2
|
#cp ${VM_PATH}/${ISO} ${VM_PATH}/disc.qcow2
|
||||||
#fi
|
#fi
|
||||||
if [[ ${OS} == "batocera" ]] && [[ ${ISO} =~ ".gz" ]]; then
|
if [[ "${OS}" == "batocera" ]] && [[ ${ISO} =~ ".gz" ]]; then
|
||||||
gzip -d "${VM_PATH}/${ISO}"
|
gzip -d "${VM_PATH}/${ISO}"
|
||||||
ISO="${ISO/.gz/}"
|
ISO="${ISO/.gz/}"
|
||||||
fi
|
fi
|
||||||
# Could be other OS iso files compressed with bzip2 or gzip
|
# Could be other OS iso files compressed with bzip2 or gzip
|
||||||
# but for now we'll keep this to know cases
|
# but for now we'll keep this to know cases
|
||||||
if [[ ${OS} == "dragonflybsd" ]] && [[ ${ISO} =~ ".bz2" ]]; then
|
if [[ "${OS}" == "dragonflybsd" ]] && [[ ${ISO} =~ ".bz2" ]]; then
|
||||||
bzip2 -d "${VM_PATH}/${ISO}"
|
bzip2 -d "${VM_PATH}/${ISO}"
|
||||||
ISO="${ISO/.bz2/}"
|
ISO="${ISO/.bz2/}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ${OS} == "easyos" ]] && [[ ${ISO} =~ ".img" ]]; then
|
if [[ "${OS}" == "easyos" ]] && [[ ${ISO} =~ ".img" ]]; then
|
||||||
qemu-img convert -f raw -O qcow2 "${VM_PATH}/${ISO}" "${VM_PATH}/disk.qcow2"
|
qemu-img convert -f raw -O qcow2 "${VM_PATH}/${ISO}" "${VM_PATH}/disk.qcow2"
|
||||||
ISO="${ISO/.img/}"
|
ISO="${ISO/.img/}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ${OS} == "reactos" ] && [[ $ISO =~ ".zip" ]]; then
|
if [ "${OS}" == "reactos" ] && [[ $ISO =~ ".zip" ]]; then
|
||||||
unzip ${VM_PATH}/${ISO} -d ${VM_PATH}
|
unzip "${VM_PATH}/${ISO}" -d "${VM_PATH}"
|
||||||
ISO=$(ls ${VM_PATH} | grep -i '.iso' | grep -v '.zip')
|
ISO=$(ls "${VM_PATH}" | grep -i '.iso' | grep -v '.zip')
|
||||||
fi
|
fi
|
||||||
make_vm_config "${ISO}"
|
make_vm_config "${ISO}"
|
||||||
}
|
}
|
||||||
|
@ -3338,46 +3342,40 @@ function help_message() {
|
||||||
#shellcheck disable=SC2016
|
#shellcheck disable=SC2016
|
||||||
printf ' _ _
|
printf ' _ _
|
||||||
__ _ _ _ _ ___║ ║ ____ _ ___║ ║_
|
__ _ _ _ _ ___║ ║ ____ _ ___║ ║_
|
||||||
/ _` ║ ║ ║ ║ ║/ __║ ║/ / _` ║/ _ \ __║
|
/ _` ║ ║ ║ ║ ║/ __║ ║/ / _` ║/ _ \ __║ MIT
|
||||||
( (_║ ║ ║_║ ║ ║ (__║ < (_║ ║ __/ ║_ MIT
|
( (_║ ║ ║_║ ║ ║ (__║ < (_║ ║ __/ ║_ license
|
||||||
\__, ║\__,_║_║\___║_║\ \__, ║\___║\__║ license
|
\__, ║\__,_║_║\___║_║\ \__, ║\___║\__║ version: %s
|
||||||
║_║ version: %s ║___/ part of Quickemu project
|
║_║ ║___/ part of Quickemu project
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
> Quickly create and run optimised Linux, <
|
> Quickly create and run optimised Linux, <
|
||||||
> Windows and macOS desktop virtual machines. <
|
> Windows and macOS desktop virtual machines <
|
||||||
|
|
||||||
Project - https://github.com/quickemu-project/quickemu
|
Project - https://github.com/quickemu-project/quickemu
|
||||||
Discord - https://wimpysworld.io/discord
|
Discord - https://wimpysworld.io/discord
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
Basic Usage:
|
Basic Usage: Advanced Usage:
|
||||||
quickget <os> <release> [edition]
|
quickget <os> <release> [edition] quickget <arg> [path] <os> [re] [ed]
|
||||||
quickget ubuntu 22.04
|
quickget ubuntu 22.04 quickget --download ubuntu 22.04
|
||||||
|
|
||||||
Advanced Usage:
|
|
||||||
quickget <arg> [path] <os> [re] [ed]
|
|
||||||
quickget --download ubuntu 22.04
|
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
-[12345] <os> : Show info* about OS
|
-[12345] <os> : Show info* about OS
|
||||||
--download (-d) <os> <re> [ed] : Download the ISO only; no VM configuration
|
--download (-d) <os> <re> [ed] : Download image; no VM configuration
|
||||||
--create-config (-cc) <os> [path/url]: Create default VM config for image
|
--create-config (-cc) <os> [path/url] : Create default VM config for image
|
||||||
--open-homepage (-o) <os> : Open homepage for the OS
|
--open-homepage (-o) <os> : Open homepage for the OS
|
||||||
--version (-v) : Show version
|
--version (-v) : Show version
|
||||||
--help (-h) : Show this help message
|
--help (-h) : Show this help message
|
||||||
-------------- For testing & development ---------------------
|
------------------ For testing & development -----------------------------------
|
||||||
--url (-u) <os> <re> [ed] : Show download URL for an OS release/edition
|
--url (-u) [os] [re] [ed] : Show URL(s) for what specified or All
|
||||||
--url-all (-ua) <os> : Show all download URLs for an OS
|
--check (-c) [os] [re] [ed] : Check URL(s) for what specified or All
|
||||||
--check (-c) <os> [re] [ed] : Check download an OS release/edition is available
|
--list (-l) : List all supported systems
|
||||||
--check-all (-ca) <os> : Check all downloads for an OS are available
|
--list-csv (-lc) : List everything in csv format
|
||||||
--list (-l) : List all supported systems in plain text
|
--list-json (-lj) : List everything in json format
|
||||||
--list-csv (-lc) : List all supported systems in csv format
|
--------------------------------------------------------------------------------
|
||||||
--list-json (-lj) : List all supported systems in json format
|
*info: 1=Logo 2=Based of 3=Credentials 4=Homepage 5=Short info
|
||||||
--------------------------------------------------------------
|
Can be used in any combination like -13254 or -52
|
||||||
*info: 1=Logo 2=Based of 3=Credentials 4=Homepage 5=Short info
|
|
||||||
Can be used in any combination like -13254 or -52
|
|
||||||
|
|
||||||
supported Operating Systems:\n' "$(quickemu --version)"
|
Supported Operating Systems:\n\n' "$(quickemu --version)" "${CURL_VERSION}"
|
||||||
os_support | fold -s -w "$(tput cols)"
|
os_support | fold -s -w "$(tput cols)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3427,39 +3425,34 @@ case "${1}" in
|
||||||
'--url'|'-u')
|
'--url'|'-u')
|
||||||
OPERATION="show"
|
OPERATION="show"
|
||||||
shift
|
shift
|
||||||
;;
|
|
||||||
'--url-all'|'-ua')
|
|
||||||
OPERATION="show"
|
|
||||||
shift
|
|
||||||
# if no OS is specified, list all URLs for all supported OSes
|
|
||||||
if [ -z "${1}" ]; then
|
if [ -z "${1}" ]; then
|
||||||
for OS in $(os_support); do
|
for OS in $(os_support); do
|
||||||
(test_all "${OS}")
|
(test_all "${OS}") &
|
||||||
done
|
done
|
||||||
else
|
wait
|
||||||
|
exit 0
|
||||||
|
elif [ -z "${2}" ]; then
|
||||||
test_all "${1}"
|
test_all "${1}"
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
exit 0
|
|
||||||
;;
|
;;
|
||||||
'--check'|'-c')
|
'--check'|'-c')
|
||||||
OPERATION="test"
|
OPERATION="test"
|
||||||
shift
|
shift
|
||||||
;;
|
|
||||||
'--check-all'|'-ca')
|
|
||||||
OPERATION="test"
|
|
||||||
shift
|
|
||||||
# if no OS is specified, check all URLs for all supported OSes
|
|
||||||
if [ -z "${1}" ]; then
|
if [ -z "${1}" ]; then
|
||||||
for OS in $(os_support); do
|
for OS in $(os_support); do
|
||||||
(test_all "${OS}")
|
(test_all "${OS}") &
|
||||||
done
|
done
|
||||||
else
|
wait
|
||||||
|
exit 0
|
||||||
|
elif [ -z "${2}" ]; then
|
||||||
test_all "${1}"
|
test_all "${1}"
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
exit 0
|
|
||||||
;;
|
;;
|
||||||
#TODO: Argument without dashes should be DEPRECATED!
|
#TODO: Argument without dashes should be DEPRECATED!
|
||||||
'--list-csv'|'-lc'|'list'|'list_csv'|'lc')
|
'--list-csv'|'-lc'|'list'|'list_csv'|'lc')
|
||||||
|
echo "Pretty Name,OS,Release,Option,Downloader,PNG,SVG,Based on,Credentials,Homepage,Info"
|
||||||
list_csv
|
list_csv
|
||||||
;;
|
;;
|
||||||
#TODO: Argument without dashes should be DEPRECATED!
|
#TODO: Argument without dashes should be DEPRECATED!
|
||||||
|
@ -3488,7 +3481,7 @@ if [ -n "${2}" ]; then
|
||||||
# If the OS has an editions_() function, use it.
|
# If the OS has an editions_() function, use it.
|
||||||
if [[ $(type -t "editions_${OS}") == function ]]; then
|
if [[ $(type -t "editions_${OS}") == function ]]; then
|
||||||
validate_release "releases_${OS}"
|
validate_release "releases_${OS}"
|
||||||
EDITIONS=($(editions_${OS}))
|
EDITIONS=($("editions_${OS}"))
|
||||||
EDITION=${EDITIONS[0]}
|
EDITION=${EDITIONS[0]}
|
||||||
if [ -n "${3}" ]; then
|
if [ -n "${3}" ]; then
|
||||||
EDITION="${3}"
|
EDITION="${3}"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user