100 lines
2.3 KiB
Bash
Executable file
100 lines
2.3 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Output APKINDEX file
|
|
OUTPUT_FILE="./APKINDEX"
|
|
|
|
# Function to calculate a mock checksum
|
|
calc_checksum() {
|
|
echo -n "$1" | sha1sum | awk '{ print $1 }'
|
|
}
|
|
|
|
# Parse command-line arguments
|
|
while getopts "P:V:A:S:I:T:U:L:o:m:D:" opt; do
|
|
case ${opt} in
|
|
P) name="$OPTARG" ;;
|
|
V) version="$OPTARG" ;;
|
|
A) arch="$OPTARG" ;;
|
|
S) size="$OPTARG" ;;
|
|
I) installed_size="$OPTARG" ;;
|
|
T) description="$OPTARG" ;;
|
|
U) url="$OPTARG" ;;
|
|
L) license="$OPTARG" ;;
|
|
o) origin="$OPTARG" ;;
|
|
m) maintainer="$OPTARG" ;;
|
|
D) dependencies="$OPTARG" ;;
|
|
\?) echo "Invalid option: $OPTARG" 1>&2; exit 1 ;;
|
|
:) echo "Invalid option: $OPTARG requires an argument" 1>&2; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
# If no parameters are provided, prompt for input
|
|
if [ -z "$name" ]; then
|
|
read -p "Enter package name: " name
|
|
fi
|
|
if [ -z "$version" ]; then
|
|
read -p "Enter package version: " version
|
|
fi
|
|
if [ -z "$arch" ]; then
|
|
arch="x86_64"
|
|
fi
|
|
if [ -z "$size" ]; then
|
|
read -p "Enter package size: " size
|
|
fi
|
|
if [ -z "$installed_size" ]; then
|
|
read -p "Enter installed size: " installed_size
|
|
fi
|
|
if [ -z "$description" ]; then
|
|
read -p "Enter package description: " description
|
|
fi
|
|
if [ -z "$url" ]; then
|
|
read -p "Enter package URL: " url
|
|
fi
|
|
if [ -z "$license" ]; then
|
|
read -p "Enter license: " license
|
|
fi
|
|
if [ -z "$origin" ]; then
|
|
read -p "Enter origin: " origin
|
|
fi
|
|
if [ -z "$maintainer" ]; then
|
|
read -p "Enter maintainer: " maintainer
|
|
fi
|
|
if [ -z "$dependencies" ]; then
|
|
read -p "Enter dependencies: " dependencies
|
|
fi
|
|
|
|
# Mock package file name
|
|
pkg_file="$name-$version.apk"
|
|
|
|
# Calculate checksums based on package details
|
|
checksum=$(calc_checksum "$pkg_file")
|
|
content_checksum=$(calc_checksum "$pkg_file")
|
|
|
|
timestamp=$(date +%s)
|
|
|
|
# Remove existing entry if present
|
|
sed -i "/^P:$name$/,/^$/d" "$OUTPUT_FILE" # Ensures the removal from 'P:$name' to the first empty line.
|
|
sed -i "/^C:$checksum/d" "$OUTPUT_FILE" # Additionally, ensures all occurrences of 'C:$checksum' are removed.
|
|
|
|
# Append new entry
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
C:$checksum
|
|
P:$name
|
|
V:$version
|
|
A:$arch
|
|
S:$size
|
|
I:$installed_size
|
|
T:$description
|
|
U:$url
|
|
L:$license
|
|
o:$origin
|
|
m:$maintainer
|
|
t:$timestamp
|
|
c:$content_checksum
|
|
D:$dependencies
|
|
p:$pkg_file
|
|
q:
|
|
Z:$checksum
|
|
|
|
EOF
|
|
|
|
echo "APKINDEX has been created/updated successfully."
|