#!/bin/bash if [ -f .compilation-options ]; then source ./.compilation-options fi while getopts "cskfa:" flag; do case "$flag" in c) CONVERT=true;; k) KEEP=true;; s) SKIPCHECK=true;; f) FORCE=true;; a) ARCH="${OPTARG}";; *) exit 1;; esac done if [ -f pkg.info ]; then echo "pkg.info file found" else echo "pkg.info file not found in $PWD" exit 1 fi output="${@:$OPTIND:1}" if [ -z "$output" ]; then pkgname=$(grep "^name: " pkg.info) output=$(echo "$pkgname" | cut -d' ' -f2)"-src.bpm" fi if [ -z "$output" ] || [[ ! "$output" =~ ^[a-z.A-Z0-9_-]{1,}$ ]]; then echo "Invalid output name! The name must only contain letters, numbers, hyphens or underscores!" exit 1 fi type="binary" toCompress=() echo "Creating package with the name $output..." if [ -d files ]; then echo "files/ directory found" toCompress+=("files/") else if [ -f source.sh ]; then type="source" echo "source.sh file found" toCompress+=("source.sh") if [ -f pre_update.sh ]; then echo "pre_update.sh file found" toCompress+=("pre_update.sh") fi if [ -f post_update.sh ]; then echo "post_update.sh file found" toCompress+=("post_update.sh") fi if [ -f pre_install.sh ]; then echo "pre_install.sh file found" toCompress+=("pre_install.sh") fi if [ -f post_install.sh ]; then echo "post_install.sh file found" toCompress+=("post_install.sh") fi if [ -f pre_remove.sh ]; then echo "pre_remove.sh file found" toCompress+=("pre_remove.sh") fi if [ -f post_remove.sh ]; then echo "post_remove.sh file found" toCompress+=("post_remove.sh") fi if [ -d source-files ]; then if [ ! -z "$(ls -A source-files)" ]; then echo "source-files/ directory found" toCompress+=("source-files/") fi fi else echo "files/ directory or source.sh file not found in $PWD" exit 1 fi fi for pkginfo in ./pkg.inf*; do pkginfo=$(basename "$pkginfo") echo "${pkginfo} file found" toCompress+=("$pkginfo") done echo "Creating $type package as $output" tar -c --owner=0 --group=0 --no-same-owner -zf "$output" "${toCompress[@]}" if [ ! -z "$CONVERT" ] && "$CONVERT" && [[ "$type" == "source" ]]; then args=() [ -n "$KEEP" ] && args+=("-k") [ -n "$SKIPCHECK" ] && args+=("-s") [ -n "$FORCE" ] && args+=("-f") bpm-convert "${args[@]}" -a "$ARCH" "$output" fi