#!/bin/bash # X Build System # Copyright (C) 2012-2015 Parabola Hackers # 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 program 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 . ############################################################## xbs_error_platform-not-found() { die "This %s plataform doesn't exist" "${plataform}" } xbs_rename-variable_platform-config() { # Rename ("${_plataform}") to easily script usage _platform="${_platform/\//+}" _platform="${_platforms,,}" } xbs_source_platform-config() { source "${PLATAFORM_CONFIG}" } xbs_variable_platform-config() { PLATAFORM_CONFIG="${CONFIG_DIR}/xbs.d/${_platform}.cfg" } xbs-add() { xbs-add_check-permission xbs-pkg for 'tarch' in "${tarches[@]}"; do for 'pkg_file' in "${pkg_files[@]}"; do if [[ ! -f "${repo_path}/${arch}/${pkg_file##*/}" ]]; then die "Package file %s not found in %s" "${pkg_file##*/}" "${repo_path}/${arch}/" else msg "Adding %s to [%s]..." "${pkg_file}" "${repo}" fi done pkg_repo_add "${repo}" "${tarch}" "${pkg_files[@]}" repo_unlock "${repo}" "${tarch}" done } xbs-add_check-permission() { if ! check_repo_permission "${repo}"; then die "You don't have permission to add packages to %s" "${repo}" fi } xbs-init() { mkdir -p -- "${PKG_MAIN_POOLS}" "${SRC_MAIN_POOLS}" "${CLEANUP_DESTDIR}" "${SOURCE_CLEANUP_DESTDIR}" "${STAGING}" # "${BIN_DIR}/db-repo-add" "${_platform}" "${PKG_REPOS[@]}" } xbs-pkg() { repo_path="${REPO_DIR}/${repo}/os" if [ "${arch}" == "{any}" ]; then tarches=("${ARCHES[@]}") else tarches=("${arch}") fi for 'tarch' in "${tarches[@]}"; do if [[ ! -d "${repo_path} ]]; then die "This [%s] doesn't exist" "${repo}" elif [[ ! -d "${repo_path}/${tarch}" ]]; then die "This [%s] doesn't support %s archictecture" "${repo}" "${arch}" else repo_lock "${repo}" "${tarch}" || exit 1 fi done } xbs-rm() { xbs-rm_check-permission xbs-pkg for 'tarch' in "${tarches[@]}"; do for 'pkg_name' in "${pkg_names[@]}"; do msg "Removing %s from [%s]..." "${pkg_name}" "${repo}" done pkg_repo_rm "${repo}" "${tarch}" "${pkgnames[@]}" repo_unlock "${repo}" "${tarch}" done } xbs-rm_check-permission() { if ! check_repo_permission "${repo}"; then die "You don't have permission to remove packages to %s" "${repo}" fi } xbs-sync() { } ############################################################## CONFIG_DIR="$(dirname "$(readlink -e "$0")")/etc" source "${CONFIG_DIR}/xbs.cfg" source "${SHARE_DIR}/xbs-functions" if [ "${#}" -eq '0' ]; then msg "usage: %s {add,init,rm,sync} ..." "${0##*/}" fi rules=${1} case "${rules}" in add) # Add package to repository defined in config if [ "${#}" -lt '5' ]; then msg "usage: %s add ..." "${0##*/}" exit 1 } platform="${2}" repo="${3}" arch="${4}" pkg_files=("${@:5}") for '_platform' in "${platforms[@]}"; do xbs_rename-variable_platform-config xbs_variable_platform-config if [ -f "${PLATAFORM_CONFIG}" ]; then xbs_source_platform-config xbs-add else xbs_error_platform-not-found fi done ;; init) # Creates the repository structure defined in config platforms=("${@:2}") if [ "${#}" -lt '2' ]; then for '_platform' in "${PLATFORMS[@]}"; do xbs_variable_platform-config xbs_source_platform-config xbs-init done else for '_platform' in "${platforms[@]}"; do xbs_rename-variable_platform-config xbs_variable_platform-config if [ -f "${PLATAFORM_CONFIG}" ]; then xbs_source_platform-config xbs-init else xbs_error_platform-not-found fi done fi ;; rm|remove) # Remove package to repository defined in config if [ "${#}" -lt '5' ]; then msg "usage: %s rm ..." "${0##*/}" exit 1 fi platform="${2}" repo="${3}" arch="${4}" pkg_names=("${@:5}") for '_platform' in "${platforms[@]}"; do xbs_rename-variable_platform-config xbs_variable_platform-config if [ -f "${PLATAFORM_CONFIG}" ]; then xbs_source_platform-config xbs-rm else xbs_error_platform-not-found fi done ;; sync|import) # Import and sync the derivated repositories based on info contained in repo.db files platforms=("${@:2}") if [ "${#}" -lt '2' ]; then for '_platform' in "${DD_PLATFORMS[@]}"; do xbs_variable_platform-config xbs_source_platform-config xbs-sync done else for '_platform' in "${platforms[@]}"; do xbs_rename-variable_platform-config xbs_variable_platform-config if [ -f "${PLATAFORM_CONFIG}" && "${DISTRO_TYPE}" == 'derivated' ]; then xbs_source_platform-config xbs-sync else xbs_error_platform-not-found fi done fi ;; esac