diff --git a/build.sh b/build.sh index df5fda3..ad9ced6 100644 --- a/build.sh +++ b/build.sh @@ -3,47 +3,59 @@ # Tell build process to exit if there are any errors. set -oue pipefail +# Helper functions. +get_yaml_array() { + mapfile -t "$1" < <(yq "$2" < /usr/etc/ublue-recipe.yml) +} + # Add custom repos. -repos=$(yq '.extrarepos[]' < /usr/etc/ublue-recipe.yml) -if [[ -n "$repos" ]]; then +get_yaml_array repos '.extrarepos[]' +if [[ ${#repos[@]} -gt 0 ]]; then echo "-- Adding repos defined in recipe.yml --" - for repo in $(echo -e "$repos"); do \ - wget $repo -P /etc/yum.repos.d/; \ + for repo in "${repos[@]}"; do + wget "$repo" -P /etc/yum.repos.d/ done echo "---" fi # Run scripts. -echo "-- Running scripts defined in recipe.yml --" -buildscripts=$(yq '.scripts[]' < /usr/etc/ublue-recipe.yml) -for script in $(echo -e "$buildscripts"); do \ - echo "Running: ${script}" && \ - /tmp/scripts/$script; \ -done -echo "---" +get_yaml_array buildscripts '.scripts[]' +if [[ ${#buildscripts[@]} -gt 0 ]]; then + echo "-- Running scripts defined in recipe.yml --" + for script in "${buildscripts[@]}"; do + echo "Running: ${script}" + /tmp/scripts/"$script" + done + echo "---" +fi # Remove the default firefox (from fedora) in favor of the flatpak. rpm-ostree override remove firefox firefox-langpacks # Install RPMs. -echo "-- Installing RPMs defined in recipe.yml --" -rpm_packages=$(yq '.rpms[]' < /usr/etc/ublue-recipe.yml) -for pkg in $(echo -e "$rpm_packages"); do \ - echo "Installing: ${pkg}" && \ - rpm-ostree install $pkg; \ -done -echo "---" +get_yaml_array install_rpms '.rpms[]' +if [[ ${#install_rpms[@]} -gt 0 ]]; then + echo "-- Installing RPMs defined in recipe.yml --" + for pkg in "${install_rpms[@]}"; do + echo "Installing: ${pkg}" + rpm-ostree install $pkg + done + echo "---" +fi # Install yafti to install flatpaks on first boot, https://github.com/ublue-os/yafti. pip install --prefix=/usr yafti -# Add a package group for yafti using the packages defined in recipe.yml. -flatpaks=$(yq '.flatpaks[]' < /tmp/ublue-recipe.yml) -# Only try to add package groups if some flatpaks are defined in the recipe. -if [[ -n "$flatpaks" ]]; then +# Add a new yafti "package group" called Custom, for the packages defined in recipe.yml. +# Only adds the package group if some flatpaks are defined in the recipe. +get_yaml_array flatpaks '.flatpaks[]' +if [[ ${#flatpaks[@]} -gt 0 ]]; then + echo "-- yafti: Adding Flatpaks defined in recipe.yml --" yq -i '.screens.applications.values.groups.Custom.description = "Flatpaks defined by the image maintainer"' /usr/etc/yafti.yml yq -i '.screens.applications.values.groups.Custom.default = true' /usr/etc/yafti.yml - for pkg in $(echo -e "$flatpaks"); do \ + for pkg in "${flatpaks[@]}"; do + echo "Adding to yafti: ${pkg}" yq -i ".screens.applications.values.groups.Custom.packages += [{\"$pkg\": \"$pkg\"}]" /usr/etc/yafti.yml done -fi \ No newline at end of file + echo "---" +fi