bash-tools/debian.build.sh

143 lines
3.7 KiB
Bash

#!/usr/bin/env -S bash -e
#
# Generating a Debian package skeleton.
#
# @package Bash
# @author Kai Kimera <mail@kai.kim>
# @copyright 2023 iHub TO
# @license MIT
# @version 0.0.1
# @link https://lib.onl
# -------------------------------------------------------------------------------------------------------------------- #
structure() {
echo -n 'Package Name [ENTER]: '; read -r PKG_NAME
echo -n 'Package Version (ex.: 1.0.0) [ENTER]: '; read -r PKG_VER
echo -n 'Package Arch (ex.: all/any/amd64/i386) [ENTER]: '; read -r PKG_ARCH
echo -n 'Package Depends (ex.: pkg1, pkg2, pkg3) [ENTER]: '; read -r PKG_DEPENDS
echo -n 'Package Section (ex.: pkg1, pkg2, pkg3) [ENTER]: '; read -r PKG_SECTION
echo -n 'Package Priority (ex.: pkg1, pkg2, pkg3) [ENTER]: '; read -r PKG_PRIORITY
[[ -z "${PKG_NAME}" ]] && PKG_NAME='ext-example-pkg'
[[ -z "${PKG_VER}" ]] && PKG_VER='1.0.0'
[[ -z "${PKG_ARCH}" ]] && PKG_ARCH='all'
[[ -z "${PKG_SECTION}" ]] && PKG_SECTION='admin'
[[ -z "${PKG_PRIORITY}" ]] && PKG_PRIORITY='optional'
PKG_REV="1"
cat="$( command -v cat )"
chmod="$( command -v chmod )"
date="$( command -v date )"
mkdir="$( command -v mkdir )"
tar="$( command -v tar )"
_deb_dirs && _deb_files && _obs_files && _ex_files && _pack
}
_changelog_ts() {
${date} -u '+%a, %d %b %Y %T %z'
}
_deb_dirs() {
${mkdir} -p "$( pwd )/${PKG_NAME}/_build/debian/source"
${mkdir} -p "$( pwd )/${PKG_NAME}/${PKG_NAME}-${PKG_VER}"
}
_deb_files() {
${cat} > "$( pwd )/${PKG_NAME}/_build/debian/source/format" <<EOF
3.0 (quilt)
EOF
${cat} > "$( pwd )/${PKG_NAME}/_build/debian/changelog" <<EOF
${PKG_NAME} (${PKG_VER}-${PKG_REV}) unstable; urgency=medium
* Initial Release
-- Package Store <kitsune.solar@gmail.com> $( _changelog_ts )
EOF
${cat} > "$( pwd )/${PKG_NAME}/_build/debian/control" <<EOF
Source: ${PKG_NAME}
Section: ${PKG_SECTION}
Priority: ${PKG_PRIORITY}
Maintainer: Package Store <kitsune.solar@gmail.com>
Uploaders: Package Store <kitsune.solar@gmail.com>
Build-Depends: debhelper-compat (= 13)
Standards-Version: 4.5.1
Homepage: https://pkgstore.github.io
Vcs-Browser: https://github.com/pkgstore/linux-deb-${PKG_NAME}
Vcs-Git: https://github.com/pkgstore/linux-deb-${PKG_NAME}.git
Rules-Requires-Root: no
Package: ${PKG_NAME}
Architecture: ${PKG_ARCH}
Depends: ${PKG_DEPENDS}, \${misc:Depends}
Description: [${PKG_NAME^^}-HEADER]
[${PKG_NAME^^}-BODY]
EOF
${cat} > "$( pwd )/${PKG_NAME}/_build/debian/install" <<EOF
*.conf etc/${PKG_NAME}
*.sh usr/bin
EOF
${cat} > "$( pwd )/${PKG_NAME}/_build/debian/rules" <<EOF
#!/usr/bin/make -f
%:
dh \$@
EOF
${chmod} +x "$( pwd )/${PKG_NAME}/_build/debian/rules"
}
_obs_files() {
${cat} > "$( pwd )/${PKG_NAME}/_meta" <<EOF
<package name="${PKG_NAME}" project="home:pkgstore:deb-ext">
<title/>
<description/>
</package>
EOF
${cat} > "$( pwd )/${PKG_NAME}/_service" <<EOF
<services>
<service name="obs_scm">
<param name="scm">git</param>
<param name="url">https://github.com/deb-store/${PKG_NAME}.git</param>
<param name="revision">main</param>
<param name="version">_none_</param>
<param name="filename">${PKG_NAME}</param>
<param name="extract">*</param>
</service>
<service name="tar" mode="buildtime"/>
<service name="recompress" mode="buildtime">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
</services>
EOF
}
_ex_files() {
${cat} > "$( pwd )/${PKG_NAME}/${PKG_NAME}-${PKG_VER}/${PKG_NAME}.conf" <<EOF
param1: 1
param2: 2
EOF
${cat} > "$( pwd )/${PKG_NAME}/${PKG_NAME}-${PKG_VER}/${PKG_NAME}.sh" <<EOF
#!/usr/bin/bash
echo "Hello World!"
exit 0
EOF
}
_pack() {
pushd "$( pwd )/${PKG_NAME}" \
&& ${tar} -cJf "${PKG_NAME}_${PKG_VER}.orig.tar.xz" "${PKG_NAME}-${PKG_VER}" \
&& popd || exit 1
}
"$@"