Mini Shell

Direktori : /bin/
Upload File :
Current File : //bin/scl_source

#!/usr/bin/bash

_scl_source_help="Usage: source scl_source <action> [<collection> ...]

Don't use this script outside of SCL scriptlets!

Options:
    -h, --help    display this help and exit"

if [ $# -eq 0 -o "$1" = "-h" -o "$1" = "--help" ]; then
    echo "$_scl_source_help"
else # main operation mode


if [ -z "$_recursion" ]; then
    _recursion="false"
fi
if [ -z "$_scl_scriptlet_name" ]; then
    # The only allowed action in the case of recursion is the same
    # as was the original
    _scl_scriptlet_name=$1
fi
shift 1

if [ -z "$_scl_dir" ]; then
    # No need to re-define the directory twice
    _scl_dir=/etc/scl/conf
    if [ ! -e $_scl_dir ]; then
        _scl_dir=/etc/scl/prefixes
    fi
fi

for arg in "$@"; do
    _scl_prefix_file=$_scl_dir/$arg
    _scl_prefix=`cat "$_scl_prefix_file" 2> /dev/null`
    if [ $? -ne 0 ]; then
        echo >&2 "Can't read $_scl_prefix_file, $arg is probably not installed."
        return 1
    fi
  
    # First check if the collection is already in the list
    # of collections to be enabled
    for scl in "${_scls[@]}"; do
        if [ "$arg" == "$scl" ]; then
            continue 2
        fi
    done

    # Now check if the collection isn't already enabled
    if ! /usr/bin/scl_enabled "$arg" > /dev/null 2> /dev/null; then
        _scls+=( "$arg" )
        _scl_prefixes+=( "$_scl_prefix" )
    fi;
done

if [ $_recursion == "false" ]; then
    _i=0
    _recursion="true"
    while [ $_i -lt ${#_scls[@]} ]; do
        _scl_scriptlet_path="${_scl_prefixes[$_i]}/${_scls[$_i]}/${_scl_scriptlet_name}"
        source "$_scl_scriptlet_path"
        if [ $? -ne 0 ]; then
            echo >&2 "Can't source $_scl_scriptlet_name, skipping."
        else
            export X_SCLS="${_scls[$_i]} $X_SCLS"
        fi;
        _i=$(( _i + 1 ))
    done
    _scls=()
    _scl_prefixes=()
    _scl_scriptlet_name=""
    _recursion="false"
fi

fi # main operation mode

Zerion Mini Shell 1.0