commit 458bca47663cf52c24c53ee3e802916829e48e9c Author: Penelope Gwen Date: Wed Mar 27 01:39:45 2024 -0600 first commit diff --git a/debian/README b/debian/README new file mode 100644 index 0000000..d5faa21 --- /dev/null +++ b/debian/README @@ -0,0 +1,6 @@ +The Debian Package sapphicmariomaker2 +---------------------------- + + + + -- Penelope Gwen Tue, 26 Mar 2024 16:32:07 -0600 diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 0000000..5e17114 --- /dev/null +++ b/debian/README.Debian @@ -0,0 +1,6 @@ +sapphicmariomaker2 for Debian +---------------------------- + + + + -- Penelope Gwen Tue, 26 Mar 2024 16:32:07 -0600 diff --git a/debian/README.source b/debian/README.source new file mode 100644 index 0000000..dd47db4 --- /dev/null +++ b/debian/README.source @@ -0,0 +1,10 @@ +sapphicmariomaker2 for Debian +---------------------------- + + + + + + -- Penelope Gwen Tue, 26 Mar 2024 16:32:07 -0600 + diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..e1c98b7 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +sapphicmariomaker2 (1.0) UNRELEASED; urgency=medium + + * Initial release. + + -- Penelope Gwen Tue, 26 Mar 2024 16:32:07 -0600 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..93936bb --- /dev/null +++ b/debian/control @@ -0,0 +1,17 @@ +Source: sapphicmariomaker2 +Section: development +Priority: optional +Maintainer: Penelope Gwen +Rules-Requires-Root: no +Build-Depends: + debhelper-compat (= 13), +Standards-Version: 4.6.2 +Homepage: + +Package: sapphicmariomaker2 +Architecture: all +Multi-Arch: foreign +Depends: + ${misc:Depends}, sudo, apt, dpkg +Description: Compile multiple source code packages from a single command + Insert long description, indented with spaces. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..06e265e --- /dev/null +++ b/debian/copyright @@ -0,0 +1,43 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Source: +Upstream-Name: sapphicmariomaker2 +Upstream-Contact: + +Files: + * +Copyright: + + +License: GPL-3.0+ + +Files: + debian/* +Copyright: + 2024 Penelope Gwen +License: GPL-3.0+ + +License: GPL-3.0+ + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see . +Comment: + On Debian systems, the complete text of the GNU General + Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". + +# Please also look if there are files or directories which have a +# different copyright/license attached and list them here. +# Please avoid picking licenses with terms that are more restrictive than the +# packaged work, as it may make Debian's contributions unacceptable upstream. +# +# If you need, there are some extra license texts available in two places: +# /usr/share/debhelper/dh_make/licenses/ +# /usr/share/common-licenses/ diff --git a/debian/install b/debian/install new file mode 100644 index 0000000..7d7c33e --- /dev/null +++ b/debian/install @@ -0,0 +1 @@ +usr/bin/* usr/bin/ diff --git a/debian/manpage.1.ex b/debian/manpage.1.ex new file mode 100644 index 0000000..fb48c3a --- /dev/null +++ b/debian/manpage.1.ex @@ -0,0 +1,56 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" (C) Copyright 2024 Penelope Gwen , +.\" +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH Sapphicmariomaker2 SECTION "March 26 2024" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +sapphicmariomaker2 \- program to do something +.SH SYNOPSIS +.B sapphicmariomaker2 +.RI [ options ] " files" ... +.br +.B bar +.RI [ options ] " files" ... +.SH DESCRIPTION +This manual page documents briefly the +.B sapphicmariomaker2 +and +.B bar +commands. +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +\fBsapphicmariomaker2\fP is a program that... +.SH OPTIONS +These programs follow the usual GNU command line syntax, with long +options starting with two dashes ('\-'). +A summary of options is included below. +For a complete description, see the Info files. +.TP +.B \-h, \-\-help +Show summary of options. +.TP +.B \-v, \-\-version +Show version of program. +.SH SEE ALSO +.BR bar (1), +.BR baz (1). +.br +The programs are documented fully by +.IR "The Rise and Fall of a Fooish Bar" , +available via the Info system. diff --git a/debian/manpage.md.ex b/debian/manpage.md.ex new file mode 100644 index 0000000..6b80f74 --- /dev/null +++ b/debian/manpage.md.ex @@ -0,0 +1,134 @@ +% sapphicmariomaker2(SECTION) | User Commands +% +% "March 26 2024" + +[comment]: # The lines above form a Pandoc metadata block. They must be +[comment]: # the first ones in the file. +[comment]: # See https://pandoc.org/MANUAL.html#metadata-blocks for details. + +[comment]: # pandoc -s -f markdown -t man package.md -o package.1 +[comment]: # +[comment]: # A manual page package.1 will be generated. You may view the +[comment]: # manual page with: nroff -man package.1 | less. A typical entry +[comment]: # in a Makefile or Makefile.am is: +[comment]: # +[comment]: # package.1: package.md +[comment]: # pandoc --standalone --from=markdown --to=man $< --output=$@ +[comment]: # +[comment]: # The pandoc binary is found in the pandoc package. Please remember +[comment]: # that if you create the nroff version in one of the debian/rules +[comment]: # file targets, such as build, you will need to include pandoc in +[comment]: # your Build-Depends control field. + +[comment]: # lowdown is a low dependency, lightweight alternative to +[comment]: # pandoc as a markdown to manpage translator. Use with: +[comment]: # +[comment]: # package.1: package.md +[comment]: # lowdown -s -Tman -o $@ $< +[comment]: # +[comment]: # And add lowdown to the Build-Depends control field. + +[comment]: # Remove the lines starting with '[comment]:' in this file in order +[comment]: # to avoid warning messages. + +# NAME + +sapphicmariomaker2 - program to do something + +# SYNOPSIS + +**sapphicmariomaker2** **-e** _this_ [**\-\-example=that**] [{**-e** | **\-\-example**} _this_] + [{**-e** | **\-\-example**} {_this_ | _that_}] + +**sapphicmariomaker2** [{**-h** | *\-\-help**} | {**-v** | **\-\-version**}] + +# DESCRIPTION + +This manual page documents briefly the **sapphicmariomaker2** and **bar** commands. + +This manual page was written for the Debian distribution because the +original program does not have a manual page. Instead, it has documentation +in the GNU info(1) format; see below. + +**sapphicmariomaker2** is a program that... + +# OPTIONS + +The program follows the usual GNU command line syntax, with long options +starting with two dashes ('-'). A summary of options is included below. For +a complete description, see the **info**(1) files. + +**-e** _this_, **\-\-example=**_that_ +: Does this and that. + +**-h**, **\-\-help** +: Show summary of options. + +**-v**, **\-\-version** +: Show version of program. + +# FILES + +/etc/foo.conf +: The system-wide configuration file to control the behaviour of + sapphicmariomaker2. See **foo.conf**(5) for further details. + +${HOME}/.foo.conf +: The per-user configuration file to control the behaviour of + sapphicmariomaker2. See **foo.conf**(5) for further details. + +# ENVIRONMENT + +**FOO_CONF** +: If used, the defined file is used as configuration file (see also + the section called “FILES”). + +# DIAGNOSTICS + +The following diagnostics may be issued on stderr: + +Bad configuration file. Exiting. +: The configuration file seems to contain a broken configuration + line. Use the **\-\-verbose** option, to get more info. + +**sapphicmariomaker2** provides some return codes, that can be used in scripts: + + Code Diagnostic + 0 Program exited successfully. + 1 The configuration file seems to be broken. + +# BUGS + +The program is currently limited to only work with the foobar library. + +The upstream BTS can be found at http://bugzilla.foo.tld. + +# SEE ALSO + +**bar**(1), **baz**(1), **foo.conf**(5) + +The programs are documented fully by The Rise and Fall of a Fooish Bar +available via the **info**(1) system. + +# AUTHOR + +Penelope Gwen +: Wrote this manpage for the Debian system. + +# COPYRIGHT + +Copyright © 2007 Penelope Gwen + +This manual page was written for the Debian system (and may be used by +others). + +Permission is granted to copy, distribute and/or modify this document under +the terms of the GNU General Public License, Version 2 or (at your option) +any later version published by the Free Software Foundation. + +On Debian systems, the complete text of the GNU General Public License +can be found in /usr/share/common-licenses/GPL. + +[comment]: # Local Variables: +[comment]: # mode: markdown +[comment]: # End: diff --git a/debian/manpage.sgml.ex b/debian/manpage.sgml.ex new file mode 100644 index 0000000..afa3f27 --- /dev/null +++ b/debian/manpage.sgml.ex @@ -0,0 +1,154 @@ + manpage.1'. You may view + the manual page with: 'docbook-to-man manpage.sgml | nroff -man | + less'. A typical entry in a Makefile or Makefile.am is: + +manpage.1: manpage.sgml + docbook-to-man $< > $@ + + + The docbook-to-man binary is found in the docbook-to-man package. + Please remember that if you create the nroff version in one of the + debian/rules file targets (such as build), you will need to include + docbook-to-man in your Build-Depends control field. + + --> + + + FIRSTNAME"> + SURNAME"> + + March 26 2024"> + + SECTION"> + support@pogmom.me"> + + Sapphicmariomaker2"> + + + Debian"> + GNU"> + GPL"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2003 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + program to do something + + + + &dhpackage; + + + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; and bar + commands. + + This manual page was written for the &debian; distribution + because the original program does not have a manual page. + Instead, it has documentation in the &gnu; + Info format; see below. + + &dhpackage; is a program that... + + + + OPTIONS + + These programs follow the usual &gnu; command line syntax, + with long options starting with two dashes ('-'). A summary of + options is included below. For a complete description, see the + Info files. + + + + + + + + Show summary of options. + + + + + + + + Show version of program. + + + + + + SEE ALSO + + bar (1), baz (1). + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + Info system. + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (and may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the &gnu; General Public License, Version 2 any + later version published by the Free Software Foundation. + + + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL. + + + +
+ + diff --git a/debian/manpage.xml.ex b/debian/manpage.xml.ex new file mode 100644 index 0000000..6c7f5a2 --- /dev/null +++ b/debian/manpage.xml.ex @@ -0,0 +1,291 @@ + +.
will be generated. You may view the +manual page with: nroff -man .
| less'. A typical entry +in a Makefile or Makefile.am is: + +DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/docbook-xsl/manpages/docbook.xsl +XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0" + +manpage.1: manpage.xml + $(XP) $(DB2MAN) $< + +The xsltproc binary is found in the xsltproc package. The XSL files are in +docbook-xsl. A description of the parameters you can use can be found in the +docbook-xsl-doc-* packages. Please remember that if you create the nroff +version in one of the debian/rules file targets (such as build), you will need +to include xsltproc and docbook-xsl in your Build-Depends control field. +Alternatively use the xmlto command/package. That will also automatically +pull in xsltproc and docbook-xsl. + +Notes for using docbook2x: docbook2x-man does not automatically create the +AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as + ... . + +To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections +read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be +found in the docbook-xsl-doc-html package. + +Validation can be done using: `xmllint -''-noout -''-valid manpage.xml` + +General documentation about man-pages and man-page-formatting: +man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/ + +--> + + + + + + + + + + + + + +]> + + + + &dhtitle; + &dhpackage; + + + &dhfirstname; + &dhsurname; + Wrote this manpage for the Debian system. +
+ &dhemail; +
+
+
+ + 2007 + &dhusername; + + + This manual page was written for the Debian system + (and may be used by others). + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU General Public License, + Version 2 or (at your option) any later version published by + the Free Software Foundation. + On Debian systems, the complete text of the GNU General Public + License can be found in + /usr/share/common-licenses/GPL. + +
+ + &dhucpackage; + &dhsection; + + + &dhpackage; + program to do something + + + + &dhpackage; + + + + + + + + + this + + + + + + + + this + that + + + + + &dhpackage; + + + + + + + + + + + + + + + + + + + DESCRIPTION + This manual page documents briefly the + &dhpackage; and bar + commands. + This manual page was written for the Debian distribution + because the original program does not have a manual page. + Instead, it has documentation in the GNU + info + 1 + format; see below. + &dhpackage; is a program that... + + + OPTIONS + The program follows the usual GNU command line syntax, + with long options starting with two dashes ('-'). A summary of + options is included below. For a complete description, see the + + info + 1 + files. + + + + + + + Does this and that. + + + + + + + Show summary of options. + + + + + + + Show version of program. + + + + + + FILES + + + /etc/foo.conf + + The system-wide configuration file to control the + behaviour of &dhpackage;. See + + foo.conf + 5 + for further details. + + + + ${HOME}/.foo.conf + + The per-user configuration file to control the + behaviour of &dhpackage;. See + + foo.conf + 5 + for further details. + + + + + + ENVIRONMENT + + + FOO_CONF + + If used, the defined file is used as configuration + file (see also ). + + + + + + DIAGNOSTICS + The following diagnostics may be issued + on stderr: + + + Bad configuration file. Exiting. + + The configuration file seems to contain a broken configuration + line. Use the option, to get more info. + + + + + &dhpackage; provides some return codes, that can + be used in scripts: + + Code + Diagnostic + + 0 + Program exited successfully. + + + 1 + The configuration file seems to be broken. + + + + + + BUGS + The program is currently limited to only work + with the foobar library. + The upstreams BTS can be found + at . + + + SEE ALSO + + + bar + 1 + , + baz + 1 + , + foo.conf + 5 + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + info + 1 + system. + +
+ diff --git a/debian/postinst.ex b/debian/postinst.ex new file mode 100644 index 0000000..9cb9d1f --- /dev/null +++ b/debian/postinst.ex @@ -0,0 +1,39 @@ +#!/bin/sh +# postinst script for sapphicmariomaker2. +# +# See: dh_installdeb(1). + +set -e + +# Summary of how this script can be called: +# * 'configure' +# * 'abort-upgrade' +# * 'abort-remove' 'in-favour' +# +# * 'abort-remove' +# * 'abort-deconfigure' 'in-favour' +# 'removing' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package. + + +case "$1" in + configure) + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument '$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/postrm.ex b/debian/postrm.ex new file mode 100644 index 0000000..251b99b --- /dev/null +++ b/debian/postrm.ex @@ -0,0 +1,37 @@ +#!/bin/sh +# postrm script for sapphicmariomaker2. +# +# See: dh_installdeb(1). + +set -e + +# Summary of how this script can be called: +# * 'remove' +# * 'purge' +# * 'upgrade' +# * 'failed-upgrade' +# * 'abort-install' +# * 'abort-install' +# * 'abort-upgrade' +# * 'disappear' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package. + + +case "$1" in + purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + + *) + echo "postrm called with unknown argument '$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/preinst.ex b/debian/preinst.ex new file mode 100644 index 0000000..9d39de1 --- /dev/null +++ b/debian/preinst.ex @@ -0,0 +1,35 @@ +#!/bin/sh +# preinst script for sapphicmariomaker2. +# +# See: dh_installdeb(1). + +set -e + +# Summary of how this script can be called: +# * 'install' +# * 'install' +# * 'upgrade' +# * 'abort-upgrade' +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package. + + +case "$1" in + install|upgrade) + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument '$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/prerm.ex b/debian/prerm.ex new file mode 100644 index 0000000..e9e1a4f --- /dev/null +++ b/debian/prerm.ex @@ -0,0 +1,38 @@ +#!/bin/sh +# prerm script for sapphicmariomaker2. +# +# See: dh_installdeb(1). + +set -e + +# Summary of how this script can be called: +# * 'remove' +# * 'upgrade' +# * 'failed-upgrade' +# * 'remove' 'in-favour' +# * 'deconfigure' 'in-favour' +# 'removing' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package. + + +case "$1" in + remove|upgrade|deconfigure) + ;; + + failed-upgrade) + ;; + + *) + echo "prerm called with unknown argument '$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..f1d1d25 --- /dev/null +++ b/debian/rules @@ -0,0 +1,26 @@ +#!/usr/bin/make -f + +# See debhelper(7) (uncomment to enable). +# Output every command that modifies files on the build system. +#export DH_VERBOSE = 1 + + +# See FEATURE AREAS in dpkg-buildflags(1). +#export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +# See ENVIRONMENT in dpkg-buildflags(1). +# Package maintainers to append CFLAGS. +#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic +# Package maintainers to append LDFLAGS. +#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed + + +%: + dh $@ + + +# dh_make generated override targets. +# This is an example for Cmake (see ). +#override_dh_auto_configure: +# dh_auto_configure -- \ +# -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH) diff --git a/debian/salsa-ci.yml.ex b/debian/salsa-ci.yml.ex new file mode 100644 index 0000000..11a64c6 --- /dev/null +++ b/debian/salsa-ci.yml.ex @@ -0,0 +1,10 @@ +# For more information on what jobs are run see: +# https://salsa.debian.org/salsa-ci-team/pipeline +# +# To enable the jobs, go to your repository (at salsa.debian.org) +# and click over Settings > CI/CD > Expand (in General pipelines). +# In "CI/CD configuration file" write debian/salsa-ci.yml and click +# in "Save Changes". The CI tests will run after the next commit. +--- +include: + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml diff --git a/debian/sapphicmariomaker2-docs.docs b/debian/sapphicmariomaker2-docs.docs new file mode 100644 index 0000000..a25c234 --- /dev/null +++ b/debian/sapphicmariomaker2-docs.docs @@ -0,0 +1,3 @@ +README +README.source +README.Debian diff --git a/debian/sapphicmariomaker2.cron.d.ex b/debian/sapphicmariomaker2.cron.d.ex new file mode 100644 index 0000000..e0c5525 --- /dev/null +++ b/debian/sapphicmariomaker2.cron.d.ex @@ -0,0 +1,4 @@ +# +# Regular cron jobs for the sapphicmariomaker2 package. +# +0 4 * * * root [ -x /usr/bin/sapphicmariomaker2_maintenance ] && /usr/bin/sapphicmariomaker2_maintenance diff --git a/debian/sapphicmariomaker2.doc-base.ex b/debian/sapphicmariomaker2.doc-base.ex new file mode 100644 index 0000000..b72f726 --- /dev/null +++ b/debian/sapphicmariomaker2.doc-base.ex @@ -0,0 +1,20 @@ +Document: sapphicmariomaker2 +Title: Debian sapphicmariomaker2 Manual +Author: +Abstract: This manual describes what sapphicmariomaker2 is + and how it can be used to + manage online manuals on Debian systems. +Section: unknown + +Format: debiandoc-sgml +Files: /usr/share/doc/sapphicmariomaker2/sapphicmariomaker2.sgml.gz + +Format: postscript +Files: /usr/share/doc/sapphicmariomaker2/sapphicmariomaker2.ps.gz + +Format: text +Files: /usr/share/doc/sapphicmariomaker2/sapphicmariomaker2.text.gz + +Format: HTML +Index: /usr/share/doc/sapphicmariomaker2/html/index.html +Files: /usr/share/doc/sapphicmariomaker2/html/*.html diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/usr/bin/smm2 b/usr/bin/smm2 new file mode 100755 index 0000000..9e0f2e7 --- /dev/null +++ b/usr/bin/smm2 @@ -0,0 +1,101 @@ +#!/bin/bash + +config_dir="$HOME/.config/smm2" +bp_dir="${config_dir}/blueprints" && mkdir -p "$bp_dir" +cache_dir="$HOME/.cache/smm2" && mkdir -p "$cache_dir" + +#parse flags +while getopts 'uhYy' flag; do + case "${flag}" in + [Yy] ) proceed="YES";; + [u] ) option_useronly=1;; + * ) echo "usage coming soon"; exit 1 ;; + esac +done +shift $((OPTIND-1)) + +echo "Warning!" +echo "This process might take a long time!" +echo "This program has the potential to be VERY dangerous!" +echo "Please be sure you know what the scripts in ~/.config/smm2/blueprints/ do" +echo "You are solely responsible for any issues you may experience!" +while [ "$proceed" != "YES" ];do + read -p "type 'yes' in all caps to proceed: " proceed +done + +#parse args +if [[ $# -eq 0 ]];then + target=($(ls ${bp_dir})) +else + target=() + for a in $@;do + target+=("${a}") + done +fi + +#validate blueprints +echo "checking configuration..." +for d in "${target[@]}";do + bp_path="${bp_dir}/${d}" + if [ -d "${bp_path}" ];then + echo "~/.config/smm2/blueprints/${d} exists, continuing" + else + echo "ERROR: ~/.config/smm2/blueprints/${d} does not exist or is not a directory, aborting" + exit 1 + fi + if [ -f "${bp_path}/install.sh" ];then + echo "${d}/install.sh exists, continuing" + else + echo "ERROR: ${d}/install.sh does not exist or is not a file, aborting" + exit 1 + fi +done + +#check dependencies before attempting to build +for d in "${target[@]}";do + bp_path="${bp_dir}/${d}" + if [ -f "${bp_path}/deps" ]; then + dpkg-query -W --showformat='${db:Status-Status}\n' $(cat ${bp_path}/deps) 2>&1 | grep -v "^installed$";depsfulfilled="$?" + if [[ "${depsfulfilled}" -eq 0 ]];then + echo "One or more dependency is missing." + while true;do + read -p "Attempt to install them now? (y/N) " installdeps + case "${installdeps}" in + [Yy] ) + installdeps=y; + check_root=$(sudo whoami) + [ "$check_root" != "root" ] && echo "unable to achieve root privileges" && exit 1 + break;; + [Nn] ) + exit 1;; + esac + done + sudo apt-get install $(cat "${bp_path}/deps") + fi + fi +done + +#build package +for d in "${target[@]}";do + + bp_path="${bp_dir}/${d}" + build_path="${cache_dir}/${d}" + + requires_sudo="" + source "${bp_path}/config" + + grep -q 'sudo' "${bp_path}/install.sh" && [ "${requires_sudo}" != "0" ] && sudo_check=0 + + if [ "$sudo_check" = "0" ] || [ "${requires_sudo}" = "1" ]; then + [ "$option_useronly" = "1" ] && echo "ignoring sudo installs" && break + check_root=$(sudo whoami) + [ "$check_root" != "root" ] && echo "unable to achieve root privileges" && break + fi + + mkdir -p "${build_path}" + cd "${build_path}" + "${bp_path}/install.sh" + cd "${cache_dir}" + rm -rf "${build_path}" + +done