#!/usr/bin/python
'''
Starts the targetcli CLI shell.

This file is part of targetcli.
Copyright (c) 2011 by RisingTide Systems LLC

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, version 3 (AGPLv3).

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 Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
Copyright (c) 2011 by RisingTide Systems LLC.
All rights reserved.
'''

from os import getuid
from targetcli import UIRoot
from rtslib import RTSLibError
from configshell import ConfigShell

class TargetCLI(ConfigShell):
    default_prefs = {'color_path': 'magenta',
                     'color_command': 'cyan',
                     'color_parameter': 'magenta',
                     'color_keyword': 'cyan',
                     'completions_in_columns': True,
                     'logfile': None,
                     'loglevel_console': 'info',
                     'loglevel_file': 'debug9',
                     'color_mode': True,
                     'prompt_length': 30,
                     'tree_max_depth': 0,
                     'tree_status_mode': True,
                     'tree_round_nodes': True,
                     'tree_show_root': True,
                     'auto_enable_tpgt': True,
                     'auto_add_mapped_luns': True,
                     'auto_cd_after_create': True,
                     'legacy_hba_view': False
                    }

def main():
    '''
    Start the targetcli shell.
    '''
    if getuid() == 0:
        is_root = True
    else:
        is_root = False

    shell = TargetCLI('~/.targetcli')
    shell.con.epy_write('''
                        Welcome to the B{targetcli} shell::
                         Copyright (c) 2011 by RisingTide Systems LLC.

                        Visit us at U{http://www.risingtidesystems.com}.
                       ''')
    shell.con.display('')
    if not is_root:
        shell.con.display('You are not root, disabling privileged commands.')
        shell.con.display('')

    root_node = UIRoot(shell, as_root=is_root)

    try:
        root_node.refresh()
    except RTSLibError, error:
        shell.con.display(shell.con.render_text(str(error), 'red'))
    else:
        shell.run_interactive()

if __name__ == "__main__":
    main()
