177 lines
4.9 KiB
Bash
Executable File
177 lines
4.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
usage () {
|
|
echo "------BPM-Setup options------"
|
|
echo "bpm-setup -D <directory> | Path to package directory"
|
|
echo "bpm-setup -y | Skips confirmation prompt"
|
|
echo "bpm-setup -n <name> | Set the package name (Defaults to \"package-name\")"
|
|
echo "bpm-setup -d <description> | Set the package description (Defaults to \"Default package description\")"
|
|
echo "bpm-setup -v <version> | Set the package version (Defaults to \"1.0\")"
|
|
echo "bpm-setup -u <url> | Set the package URL (Optional)"
|
|
echo "bpm-setup -l <licenses> | Set the package licenses (Optional)"
|
|
echo "bpm-setup -t <binary/source> | Set the package type to binary or source (Defaults to binary)"
|
|
echo "bpm-setup -s <source template file> | Use a default template file (Defaults to /etc/bpm-utils/source.default)"
|
|
echo "bpm-setup -g <true/false> | Create git repository (Defaults to true)"
|
|
}
|
|
|
|
if [ $# -eq 0 ]; then
|
|
usage
|
|
exit
|
|
fi
|
|
|
|
DESCRIPTION="Default package description"
|
|
VERSION="1.0"
|
|
#URL="https://my.project.url/ (Optional)"
|
|
#LICENSE="Your project's license (Optional)"
|
|
TYPE="binary"
|
|
SOURCE_FILE="/etc/bpm-utils/source.default"
|
|
GIT=true
|
|
|
|
while getopts "D:n:d:v:u:l:t:s:g:y" o; do
|
|
case "${o}" in
|
|
D)
|
|
DIRECTORY="${OPTARG}"
|
|
;;
|
|
y)
|
|
CONFIRM=yes
|
|
;;
|
|
n)
|
|
NAME="${OPTARG}"
|
|
;;
|
|
d)
|
|
DESCRIPTION="${OPTARG}"
|
|
;;
|
|
v)
|
|
VERSION="${OPTARG}"
|
|
;;
|
|
u)
|
|
URL="${OPTARG}"
|
|
;;
|
|
l)
|
|
LICENSE="${OPTARG}"
|
|
;;
|
|
t)
|
|
TYPE="${OPTARG}"
|
|
;;
|
|
s)
|
|
SOURCE_FILE="$(realpath ${OPTARG})"
|
|
;;
|
|
g)
|
|
if [[ "${OPTARG}" == true ]]; then
|
|
GIT=TRUE
|
|
elif [[ "${OPTARG}" == false ]]; then
|
|
GIT=false
|
|
else
|
|
echo "${OPTARG} is not a true or false value!"
|
|
exit 1
|
|
fi
|
|
;;
|
|
*)
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "${DIRECTORY}" ]; then
|
|
echo "Required directory argument missing. Try 'bpm-setup -D <directory> [other options...]"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "${NAME}" ]; then
|
|
NAME="${DIRECTORY}"
|
|
fi
|
|
|
|
if [[ ! "${DIRECTORY}" == "/"* ]]; then
|
|
DIRECTORY="${PWD}/${DIRECTORY}"
|
|
fi
|
|
|
|
if [ -e "${DIRECTORY}" ]; then
|
|
echo "This path already exists"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "$TYPE" != "binary" ]] && [[ "$TYPE" != "source" ]]; then
|
|
echo "Invalid package type! Package type must be either 'binary' or 'source'"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
if [ -z "${CONFIRM}" ]; then
|
|
echo "Setting up package working directory at ${DIRECTORY} with the following information:"
|
|
echo "Package name: $NAME"
|
|
echo "Package description: $DESCRIPTION"
|
|
echo "Package version: $VERSION"
|
|
if [ -z "${URL}" ]; then
|
|
echo "Package URL: Not set"
|
|
else
|
|
echo "Package URL: $URL"
|
|
fi
|
|
if [ -z "${LICENSE}" ]; then
|
|
echo "Package license: Not set"
|
|
else
|
|
echo "Package license: $LICENSE"
|
|
fi
|
|
|
|
echo "Package type: $TYPE"
|
|
if [[ "$TYPE" == "source" ]]; then
|
|
echo "Create Git repository: $GIT"
|
|
fi
|
|
read -p "Create package directory? [y/N]: " CREATE
|
|
case $CREATE in
|
|
[Yy]* )
|
|
;;
|
|
*)
|
|
echo "Exiting bpm-setup..."
|
|
exit
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
if ! mkdir -pv $DIRECTORY; then
|
|
echo "Could not create $DIRECTORY!"
|
|
exit 1
|
|
fi
|
|
|
|
cd $DIRECTORY
|
|
|
|
touch pkg.info
|
|
echo "name: ${NAME}" >> pkg.info
|
|
echo "description: ${DESCRIPTION}" >> pkg.info
|
|
echo "version: ${VERSION}" >> pkg.info
|
|
if [ ! -z "${URL}" ]; then echo "url: ${URL}" >> pkg.info; fi
|
|
if [ ! -z "${LICENSE}" ]; then echo "license: ${LICENSE}" >> pkg.info; fi
|
|
|
|
if [[ "$TYPE" == "binary" ]]; then
|
|
echo "architecture: $(uname -m)" >> pkg.info
|
|
echo "type: binary" >> pkg.info
|
|
mkdir -pv files
|
|
echo "Package directory created successfully!"
|
|
echo "Make sure to edit the pkg.info file with the appropriate information for your package"
|
|
echo "Add your binaries under the 'files' directory. For example a binary called 'my_binary' should go under files/usr/bin/my_binary"
|
|
echo "You can turn your package into a .bpm file use the 'bpm-create <name>' command"
|
|
else
|
|
echo "architecture: any" >> pkg.info
|
|
echo "type: source" >> pkg.info
|
|
mkdir -pv source-files
|
|
if [ -f "${SOURCE_FILE}" ]; then
|
|
touch source.temp
|
|
cat "${SOURCE_FILE}" > source.temp
|
|
export NAME DESCRIPTION VERSION URL LICENSE TYPE
|
|
envsubst '$NAME:$DESCRIPTION:$VERSION:$URL:$LICENSE:$TYPE' < source.temp > source.sh
|
|
rm source.temp
|
|
else
|
|
echo "Source file at ${SOURCE_FILE} does not exist! Creating empty source.sh instead..."
|
|
touch source.sh
|
|
fi
|
|
if $GIT ; then
|
|
git init
|
|
echo -e "*.bpm\n.gitignore" > .gitignore
|
|
fi
|
|
echo "Package directory created successfully!"
|
|
echo "Make sure to edit the pkg.info file with the appropriate information for your package"
|
|
echo "Add your compilation code in the source.sh file. Follow the instructions on the template file on how to properly create your compilation script"
|
|
echo "You can add additional files that will be used during compilation to the 'source-files' directory"
|
|
echo "You can turn your package into a .bpm file use the 'bpm-package <filename>' command"
|
|
fi
|