wip
This commit is contained in:
parent
fda65be110
commit
e8471c71c1
2 changed files with 176 additions and 6 deletions
170
README.ai.md
Normal file
170
README.ai.md
Normal file
|
@ -0,0 +1,170 @@
|
||||||
|
# imports
|
||||||
|
|
||||||
|
## distros.sh
|
||||||
|
|
||||||
|
Import the script inside your own script like this:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
url="https://git.k4li.de/scripts/imports/raw/branch/main/distros.sh"
|
||||||
|
import="$(mktemp)"
|
||||||
|
if command_exists curl; then
|
||||||
|
curl -fsSL $url -o $import
|
||||||
|
else
|
||||||
|
echo "curl is required, but missing.."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$import"
|
||||||
|
sleep 0.3
|
||||||
|
rm "$import"
|
||||||
|
```
|
||||||
|
|
||||||
|
### DISTRIBUTION VARIABLES
|
||||||
|
|
||||||
|
After importing, these boolean variables are available for distribution checks:
|
||||||
|
|
||||||
|
$arch - true/false for Arch Linux and derivatives
|
||||||
|
$debian - true/false for Debian and derivatives
|
||||||
|
$ubuntu - true/false for Ubuntu and derivatives
|
||||||
|
$fedora - true/false for Fedora and derivatives
|
||||||
|
$opensuse - true/false for openSUSE
|
||||||
|
$alpine - true/false for Alpine Linux
|
||||||
|
$distro - contains the detected distro name (e.g. "arch", "debian")
|
||||||
|
|
||||||
|
Example usage:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
if $arch; then
|
||||||
|
echo "Using Arch Linux!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$distro" in
|
||||||
|
arch) echo "Arch detected" ;;
|
||||||
|
debian) echo "Debian detected" ;;
|
||||||
|
esac
|
||||||
|
```
|
||||||
|
|
||||||
|
### CORE FUNCTIONS
|
||||||
|
|
||||||
|
1. Package Management:
|
||||||
|
|
||||||
|
\_install pkg1 pkg2 - Installs packages using the correct package manager
|
||||||
|
\_remove pkg1 pkg2 - Removes packages (CAUTION: no confirmation!)
|
||||||
|
checkAndInstall pkg1 pkg2 - Checks if command exists, installs if missing
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
_install neovim git
|
||||||
|
checkAndInstall curl wget
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Logging Functions:
|
||||||
|
|
||||||
|
echo_error "message" - Red error message
|
||||||
|
echo_warning "message" - Yellow warning message
|
||||||
|
echo_info "message" - Blue info message
|
||||||
|
echo_note "message" - Green note message
|
||||||
|
echo_pkg type "message" - Special package-related messages
|
||||||
|
|
||||||
|
Types for echo_pkg:
|
||||||
|
|
||||||
|
- build: Building messages
|
||||||
|
- clone: Cloning messages
|
||||||
|
- install: Installation messages
|
||||||
|
- deps: Dependency messages
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
echo_error "Failed to install!"
|
||||||
|
echo_pkg install "Installing package"
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Utility Functions:
|
||||||
|
|
||||||
|
command_exists cmd - Checks if command exists (silent)
|
||||||
|
run cmd - Runs command with silent mode support
|
||||||
|
source_script url - Sources another script from URL or file
|
||||||
|
silentexec cmd - Runs command silently
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
if command_exists git; then
|
||||||
|
run git clone url
|
||||||
|
fi
|
||||||
|
|
||||||
|
source_script "https://example.com/script.sh"
|
||||||
|
```
|
||||||
|
|
||||||
|
### DISTRIBUTION-SPECIFIC FEATURES
|
||||||
|
|
||||||
|
For Debian/Ubuntu:
|
||||||
|
|
||||||
|
- Version codename variables:
|
||||||
|
$trixie (Debian 13)
|
||||||
|
$bookworm (Debian 12)
|
||||||
|
$jammy (Ubuntu 22.04)
|
||||||
|
$focal (Ubuntu 20.04)
|
||||||
|
|
||||||
|
For Fedora:
|
||||||
|
|
||||||
|
- Version variables like $fedora_40 for Fedora 40
|
||||||
|
|
||||||
|
For Arch:
|
||||||
|
|
||||||
|
- $aur - true if yay/paru is available
|
||||||
|
|
||||||
|
### ADVANCED USAGE
|
||||||
|
|
||||||
|
1. Handling dependencies per distro:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
getDeps() {
|
||||||
|
local depsDebian=(git cmake)
|
||||||
|
local depsArch=(git base-devel)
|
||||||
|
|
||||||
|
declare -A deps=(
|
||||||
|
[debian]="depsDebian"
|
||||||
|
[arch]="depsArch"
|
||||||
|
)
|
||||||
|
|
||||||
|
declare -n pkgArray="${deps[$distro]}"
|
||||||
|
checkAndInstall "${pkgArray[@]}"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Silent mode:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
silent=true # Enable silent mode
|
||||||
|
_install pkg # Will install without output
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Conditional operations:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
if ! command_exists node; then
|
||||||
|
echo_info "Installing Node.js..."
|
||||||
|
_install nodejs
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
### BEST PRACTICES
|
||||||
|
|
||||||
|
1. Always check for commands before using them
|
||||||
|
2. Use the provided echo functions for consistent output
|
||||||
|
3. For distro-specific code, check the boolean variables first
|
||||||
|
4. Use arrays with checkAndInstall for multiple packages
|
||||||
|
5. Use source_script for modular script organization
|
||||||
|
|
||||||
|
### TROUBLESHOOTING
|
||||||
|
|
||||||
|
If something doesn't work:
|
||||||
|
|
||||||
|
1. Check if /etc/os-release exists
|
||||||
|
2. Verify internet connection for remote scripts
|
||||||
|
3. Check permissions (script handles sudo automatically)
|
||||||
|
4. Verify $distro variable matches your system
|
||||||
|
5. Check if required package managers are available
|
12
README.md
12
README.md
|
@ -53,10 +53,10 @@ esac
|
||||||
|
|
||||||
| variable | values |
|
| variable | values |
|
||||||
| --------- | ----------------------------------------------------------------------- |
|
| --------- | ----------------------------------------------------------------------- |
|
||||||
| $arch | `true/false` |
|
| $arch | boolean: `true`/`false` |
|
||||||
| $debian | `true/false` |
|
| $debian | boolean: `true`/`false` |
|
||||||
| $ubuntu | `true/false` |
|
| $ubuntu | boolean: `true`/`false` |
|
||||||
| $fedora | `true/false` |
|
| $fedora | boolean: `true`/`false` |
|
||||||
| $opensuse | `true/false` |
|
| $opensuse | boolean: `true`/`false` |
|
||||||
| $alpine | `true/false` |
|
| $alpine | boolean: `true`/`false` |
|
||||||
| $distros | One value of `arch`, `debian`, `ubuntu`, `fedora`, `opensuse`, `alpine` |
|
| $distros | One value of `arch`, `debian`, `ubuntu`, `fedora`, `opensuse`, `alpine` |
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue