#!/usr/bin/env bash version="${1:?You need to specific a version, eg: v1.22.2}" version_num="${version##v}" package_name=filebrowser-${version_num}.tar.gz # must occur dirs material_dir="./materials" # optional dirs (created during build) download_dir="./var/downloads" extract_dir="./var/extracted" rootfs="./var/rootfs" package_dir="./packages" function copy_file { local src="$1" local dst="$2" # if ends with a splash if [[ "$dst" == */ ]] ; then mkdir -p $dst cp --target-directory $dst $src else local dst_dir=$(dirname $dst) mkdir -p $dst_dir cp --no-target-directory $src $dst fi } function download { # don't re-download if already downloaded if [ ! -f "${download_dir}/${package_name}" ] ; then mkdir -p ${download_dir} wget --output-document ${download_dir}/${package_name} https://github.com/filebrowser/filebrowser/releases/download/${version}/linux-amd64-filebrowser.tar.gz fi } function extract { rm -rf ${extract_dir} mkdir -p ${extract_dir} tar -xf ${download_dir}/${package_name} -C ${extract_dir} } function build_rootfs { rm -rf ${rootfs} copy_file ${extract_dir}/filebrowser ${rootfs}/usr/bin/filebrowser copy_file ${extract_dir}/CHANGELOG.md ${rootfs}/usr/share/filebrowser/ copy_file ${extract_dir}/LICENSE ${rootfs}/usr/share/filebrowser/ copy_file ${extract_dir}/README.md ${rootfs}/usr/share/filebrowser/ copy_file ${material_dir}/filebrowser.service ${rootfs}/usr/lib/systemd/system/filebrowser.service } function package_meta { # debian packages meta file mkdir -p $rootfs/DEBIAN sed "s/+++VERSION+++/${version_num}/" > $rootfs/DEBIAN/control << EOF Package: filebrowser Version: +++VERSION+++ Priority: optional Architecture: all Maintainer: leafee98 Description: Web File Browser EOF } function main { download extract build_rootfs package_meta mkdir -p $package_dir dpkg-deb --build --root-owner-group $rootfs $package_dir/filebrowser-${version}.deb } main "$@"