diff options
Diffstat (limited to 'src/profile.sh')
-rw-r--r-- | src/profile.sh | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/src/profile.sh b/src/profile.sh new file mode 100644 index 0000000..f64a0d8 --- /dev/null +++ b/src/profile.sh @@ -0,0 +1,165 @@ +# Profile-related functions +# +# Copyright (C) 2014 Patrick "P. J." McDermott +# +# This file is part of the ProteanOS Development Kit. +# +# The ProteanOS Development Kit 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. +# +# The ProteanOS Development Kit 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 the ProteanOS Development Kit. If not, see +# <http://www.gnu.org/licenses/>. + +profiles=' ' +profile= + +register_profile() +{ + local profile="${1}" + shift 1 + + profiles="${profiles}${profile} " + return 0 +} + +is_profile() +{ + local prof="${1}" + + [ "x${profiles# ${prof} }" != "x${profiles}" ] +} + +profile_set() +{ + local prof="${1}" + + if is_profile "${prof}"; then + profile="${prof}" + use "profile/${profile}" + else + error 1 "$(get_msg 'profile_not_found')" "${prof}" + fi + + return 0 +} + +profile_normalize_suite() +{ + local suite="${1}" + + "prof_${profile}_normalize_suite" "${suite}" +} + +profile_detect_arch() +{ + "prof_${profile}_detect_arch" +} + +profile_default_plat() +{ + "prof_${profile}_default_plat" +} + +profile_select_mirror() +{ + "prof_${profile}_select_mirror" +} + +profile_validate_archplat() +{ + local mirror="${1}" + local arch="${2}" + local plat="${3}" + local suite="${4}" + + "prof_${profile}_validate_archplat" "${mirror}" "${arch}" "${plat}" \ + "${suite}" +} + +profile_feeds() +{ + local mirror="${1}" + local arch="${2}" + local plat="${3}" + local suite="${4}" + + "prof_${profile}_feeds" "${mirror}" "${arch}" "${plat}" "${suite}" +} + +profile_dep_fields() +{ + "prof_${profile}_dep_fields" +} + +profile_include_pkg() +{ + local name="${1}" + local value="${2}" + + "prof_${profile}_include_pkg" "${name}" "${value}" +} + +profile_get_fstab() +{ + local arch="${1}" + local plat="${2}" + + "prof_${profile}_get_fstab" "${arch}" "${plat}" +} + +profile_file_systems_mounted() +{ + local root="${1}" + local arch="${1}" + local plat="${2}" + + "prof_${profile}_file_systems_mounted" "${root}" "${arch}" "${plat}" +} + +profile_bind_mount() +{ + local arch="${1}" + local plat="${2}" + local olddir="${3}" + local newdir="${4}" + + "prof_${profile}_bind_mount" "${arch}" "${plat}" \ + "${olddir}" "${newdir}" +} + +profile_bind_umount() +{ + local arch="${1}" + local plat="${2}" + local olddir="${3}" + local newdir="${4}" + + "prof_${profile}_bind_umount" "${arch}" "${plat}" \ + "${olddir}" "${newdir}" +} + +profile_configure_system_native() +{ + local root="${1}" + local arch="${2}" + local plat="${3}" + + "prof_${profile}_configure_system_native" "${root}" "${arch}" "${plat}" +} + +profile_configure_system_foreign() +{ + local root="${1}" + local arch="${2}" + local plat="${3}" + + "prof_${profile}_configure_system_foreign" "${root}" "${arch}" "${plat}" +} |