187c16275SDevin Teskeif [ ! "$_PACKAGES_CATEGORIES_SUBR" ]; then _PACKAGES_CATEGORIES_SUBR=1 287c16275SDevin Teske# 387c16275SDevin Teske# Copyright (c) 2013 Devin Teske 4f8ea072aSDevin Teske# All rights reserved. 587c16275SDevin Teske# 687c16275SDevin Teske# Redistribution and use in source and binary forms, with or without 787c16275SDevin Teske# modification, are permitted provided that the following conditions 887c16275SDevin Teske# are met: 987c16275SDevin Teske# 1. Redistributions of source code must retain the above copyright 1087c16275SDevin Teske# notice, this list of conditions and the following disclaimer. 1187c16275SDevin Teske# 2. Redistributions in binary form must reproduce the above copyright 1287c16275SDevin Teske# notice, this list of conditions and the following disclaimer in the 1387c16275SDevin Teske# documentation and/or other materials provided with the distribution. 1487c16275SDevin Teske# 1587c16275SDevin Teske# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 168e37a7c8SDevin Teske# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1787c16275SDevin Teske# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1887c16275SDevin Teske# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 1987c16275SDevin Teske# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 208e37a7c8SDevin Teske# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2187c16275SDevin Teske# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2287c16275SDevin Teske# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2387c16275SDevin Teske# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2487c16275SDevin Teske# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2587c16275SDevin Teske# SUCH DAMAGE. 2687c16275SDevin Teske# 2787c16275SDevin Teske# 2887c16275SDevin Teske############################################################ INCLUDES 2987c16275SDevin Teske 3087c16275SDevin TeskeBSDCFG_SHARE="/usr/share/bsdconfig" 3187c16275SDevin Teske. $BSDCFG_SHARE/common.subr || exit 1 3287c16275SDevin Teskef_dprintf "%s: loading includes..." packages/categories.subr 3387c16275SDevin Teskef_include $BSDCFG_SHARE/strings.subr 3487c16275SDevin Teske 3587c16275SDevin TeskeBSDCFG_LIBE="/usr/libexec/bsdconfig" 3687c16275SDevin Teskef_include_lang $BSDCFG_LIBE/include/messages.subr 3787c16275SDevin Teske 3887c16275SDevin Teske############################################################ GLOBALS 3987c16275SDevin Teske 4087c16275SDevin TeskeCATEGORIES= 41*d4ae33f0SDevin TeskeNCATEGORIES=0 4287c16275SDevin Teske 4387c16275SDevin Teske############################################################ FUNCTIONS 4487c16275SDevin Teske 4587c16275SDevin Teske# f_category_desc_get $category [$var_to_set] 4687c16275SDevin Teske# 4787c16275SDevin Teske# Fetch the description of a given category. Returns success if a match was 4887c16275SDevin Teske# found, otherwise failure. 4987c16275SDevin Teske# 5087c16275SDevin Teske# If $var_to_set is missing or NULL, the category description is printed to 5187c16275SDevin Teske# standard out for capturing in a sub-shell (which is less-recommended because 5287c16275SDevin Teske# of performance degredation; for example, when called in a loop). 5387c16275SDevin Teske# 5487c16275SDevin Teskef_category_desc_get() 5587c16275SDevin Teske{ 5687c16275SDevin Teske local __category="$1" __var_to_set="$2" __cat __varcat 5787c16275SDevin Teske 5887c16275SDevin Teske # Return failure if $category 5987c16275SDevin Teske [ "$__category" ] || return $FAILURE 6087c16275SDevin Teske 6187c16275SDevin Teske for __cat in $CATEGORIES; do 6287c16275SDevin Teske [ "$__cat" = "$__category" ] || continue 6387c16275SDevin Teske f_str2varname $__cat __varcat 6487c16275SDevin Teske f_getvar _category_$__varcat $__var_to_set 6587c16275SDevin Teske return $? 6687c16275SDevin Teske done 6787c16275SDevin Teske return $FAILURE 6887c16275SDevin Teske} 6987c16275SDevin Teske 7087c16275SDevin Teske# f_category_desc_set $category $desc 7187c16275SDevin Teske# 7287c16275SDevin Teske# Store a description in-association with a category. $category should be 7387c16275SDevin Teske# alphanumeric and can include the underscore [_] but should not contain 7487c16275SDevin Teske# whitespace. Returns success unless $category is NULL or no arguments. Use the 7587c16275SDevin Teske# f_category_desc_get() routine with the same $category to retrieve the stored 7687c16275SDevin Teske# description. 7787c16275SDevin Teske# 7887c16275SDevin Teskef_category_desc_set() 7987c16275SDevin Teske{ 8087c16275SDevin Teske local category="$1" desc="$2" 8187c16275SDevin Teske local cat varcat found= 8287c16275SDevin Teske [ "$category" ] || return $FAILURE 8387c16275SDevin Teske for cat in $CATEGORIES; do 8487c16275SDevin Teske [ "$cat" = "$category" ] || continue 8587c16275SDevin Teske f_str2varname $cat varcat 8680433743SDevin Teske f_isset _category_$varcat || continue 8787c16275SDevin Teske found=1 && break 8887c16275SDevin Teske done 8987c16275SDevin Teske if [ ! "$found" ]; then 9087c16275SDevin Teske CATEGORIES="$CATEGORIES $category" 9187c16275SDevin Teske fi 9287c16275SDevin Teske f_str2varname $category varcat 9387c16275SDevin Teske setvar "_category_$varcat" "$desc" 9487c16275SDevin Teske # Export the variable for awk(1) ENVIRON visibility 9587c16275SDevin Teske export "_category_$varcat" 9687c16275SDevin Teske return $SUCCESS 9787c16275SDevin Teske} 9887c16275SDevin Teske 9987c16275SDevin Teske############################################################ MAIN 10087c16275SDevin Teske 10187c16275SDevin Teske# 102a104b905SDevin Teske# Load descriptions for package categories. Note that we don't internationalize 10320b371f5SDevin Teske# category names because this would be confusing for people used to browsing 104a104b905SDevin Teske# the FTP mirrors or are otherwise familiar with an interface that does not 105a104b905SDevin Teske# provide internationalized names. The descriptions can be used to provide i18n 106a104b905SDevin Teske# users a description of the non-i18n category name. 10787c16275SDevin Teske# 10887c16275SDevin Teskef_category() { f_category_desc_set "$1" "$2"; } 109cfde4beeSDevin Teskef_category All "$msg_all_desc" 11087c16275SDevin Teskef_category accessibility "$msg_accessibility_desc" 11187c16275SDevin Teskef_category afterstep "$msg_afterstep_desc" 11287c16275SDevin Teskef_category arabic "$msg_arabic_desc" 11387c16275SDevin Teskef_category archivers "$msg_archivers_desc" 11487c16275SDevin Teskef_category astro "$msg_astro_desc" 11587c16275SDevin Teskef_category audio "$msg_audio_desc" 11687c16275SDevin Teskef_category benchmarks "$msg_benchmarks_desc" 11787c16275SDevin Teskef_category biology "$msg_biology_desc" 11887c16275SDevin Teskef_category cad "$msg_cad_desc" 11987c16275SDevin Teskef_category chinese "$msg_chinese_desc" 12087c16275SDevin Teskef_category comms "$msg_comms_desc" 12187c16275SDevin Teskef_category converters "$msg_converters_desc" 12287c16275SDevin Teskef_category databases "$msg_databases_desc" 12387c16275SDevin Teskef_category deskutils "$msg_deskutils_desc" 12487c16275SDevin Teskef_category devel "$msg_devel_desc" 12587c16275SDevin Teskef_category dns "$msg_dns_desc" 12687c16275SDevin Teskef_category docs "$msg_docs_desc" 12787c16275SDevin Teskef_category editors "$msg_editors_desc" 12887c16275SDevin Teskef_category elisp "$msg_elisp_desc" 12987c16275SDevin Teskef_category emulators "$msg_emulators_desc" 13087c16275SDevin Teskef_category enlightenment "$msg_enlightenment_desc" 13187c16275SDevin Teskef_category finance "$msg_finance_desc" 13287c16275SDevin Teskef_category french "$msg_french_desc" 13387c16275SDevin Teskef_category ftp "$msg_ftp_desc" 13487c16275SDevin Teskef_category games "$msg_games_desc" 13587c16275SDevin Teskef_category geography "$msg_geography_desc" 13687c16275SDevin Teskef_category german "$msg_german_desc" 13787c16275SDevin Teskef_category gnome "$msg_gnome_desc" 13887c16275SDevin Teskef_category gnustep "$msg_gnustep_desc" 13987c16275SDevin Teskef_category graphics "$msg_graphics_desc" 14087c16275SDevin Teskef_category hamradio "$msg_hamradio_desc" 14187c16275SDevin Teskef_category haskell "$msg_haskell_desc" 14287c16275SDevin Teskef_category hebrew "$msg_hebrew_desc" 14387c16275SDevin Teskef_category hungarian "$msg_hungarian_desc" 14487c16275SDevin Teskef_category ipv6 "$msg_ipv6_desc" 14587c16275SDevin Teskef_category irc "$msg_irc_desc" 14687c16275SDevin Teskef_category japanese "$msg_japanese_desc" 14787c16275SDevin Teskef_category java "$msg_java_desc" 14887c16275SDevin Teskef_category kde "$msg_kde_desc" 14987c16275SDevin Teskef_category kld "$msg_kld_desc" 15087c16275SDevin Teskef_category korean "$msg_korean_desc" 15187c16275SDevin Teskef_category lang "$msg_lang_desc" 15287c16275SDevin Teskef_category linux "$msg_linux_desc" 15387c16275SDevin Teskef_category lisp "$msg_lisp_desc" 15487c16275SDevin Teskef_category mail "$msg_mail_desc" 15587c16275SDevin Teskef_category math "$msg_math_desc" 15687c16275SDevin Teskef_category mbone "$msg_mbone_desc" 15787c16275SDevin Teskef_category misc "$msg_misc_desc" 15887c16275SDevin Teskef_category multimedia "$msg_multimedia_desc" 15987c16275SDevin Teskef_category net "$msg_net_desc" 16087c16275SDevin Teskef_category net-im "$msg_net_im_desc" 16187c16275SDevin Teskef_category net-mgmt "$msg_net_mgmt_desc" 16287c16275SDevin Teskef_category net-p2p "$msg_net_p2p_desc" 16387c16275SDevin Teskef_category news "$msg_news_desc" 16487c16275SDevin Teskef_category palm "$msg_palm_desc" 16587c16275SDevin Teskef_category parallel "$msg_parallel_desc" 16687c16275SDevin Teskef_category pear "$msg_pear_desc" 16787c16275SDevin Teskef_category perl5 "$msg_perl5_desc" 16887c16275SDevin Teskef_category plan9 "$msg_plan9_desc" 16987c16275SDevin Teskef_category polish "$msg_polish_desc" 17087c16275SDevin Teskef_category ports-mgmt "$msg_ports_mgmt_desc" 17187c16275SDevin Teskef_category portuguese "$msg_portuguese_desc" 17287c16275SDevin Teskef_category print "$msg_print_desc" 17387c16275SDevin Teskef_category python "$msg_python_desc" 17487c16275SDevin Teskef_category ruby "$msg_ruby_desc" 17587c16275SDevin Teskef_category rubygems "$msg_rubygems_desc" 17687c16275SDevin Teskef_category russian "$msg_russian_desc" 17787c16275SDevin Teskef_category scheme "$msg_scheme_desc" 17887c16275SDevin Teskef_category science "$msg_science_desc" 17987c16275SDevin Teskef_category security "$msg_security_desc" 18087c16275SDevin Teskef_category shells "$msg_shells_desc" 18187c16275SDevin Teskef_category spanish "$msg_spanish_desc" 18287c16275SDevin Teskef_category sysutils "$msg_sysutils_desc" 18387c16275SDevin Teskef_category tcl "$msg_tcl_desc" 18487c16275SDevin Teskef_category textproc "$msg_textproc_desc" 18587c16275SDevin Teskef_category tk "$msg_tk_desc" 18687c16275SDevin Teskef_category ukrainian "$msg_ukrainian_desc" 18787c16275SDevin Teskef_category vietnamese "$msg_vietnamese_desc" 18887c16275SDevin Teskef_category windowmaker "$msg_windowmaker_desc" 18987c16275SDevin Teskef_category www "$msg_www_desc" 19087c16275SDevin Teskef_category x11 "$msg_x11_desc" 19187c16275SDevin Teskef_category x11-clocks "$msg_x11_clocks_desc" 19287c16275SDevin Teskef_category x11-drivers "$msg_x11_drivers_desc" 19387c16275SDevin Teskef_category x11-fm "$msg_x11_fm_desc" 19487c16275SDevin Teskef_category x11-fonts "$msg_x11_fonts_desc" 19587c16275SDevin Teskef_category x11-servers "$msg_x11_servers_desc" 19687c16275SDevin Teskef_category x11-themes "$msg_x11_themes_desc" 19787c16275SDevin Teskef_category x11-toolkits "$msg_x11_toolkits_desc" 19887c16275SDevin Teskef_category x11-wm "$msg_x11_wm_desc" 19987c16275SDevin Teskef_category xfce "$msg_xfce_desc" 20087c16275SDevin Teskef_category zope "$msg_zope_desc" 20187c16275SDevin Teske 202*d4ae33f0SDevin Teskef_count NCATEGORIES $CATEGORIES 20387c16275SDevin Teskef_dprintf "%s: Initialized %u package category descriptions." \ 204*d4ae33f0SDevin Teske packages/categories.subr $NCATEGORIES 20587c16275SDevin Teske 20687c16275SDevin Teskef_dprintf "%s: Successfully loaded." packages/categories.subr 20787c16275SDevin Teske 20887c16275SDevin Teskefi # ! $_PACKAGES_CATEGORIES_SUBR 209