diff options
Diffstat (limited to 'release/scripts/modules/console_shell.py')
-rw-r--r-- | release/scripts/modules/console_shell.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/release/scripts/modules/console_shell.py b/release/scripts/modules/console_shell.py new file mode 100644 index 00000000000..7a6f45c426f --- /dev/null +++ b/release/scripts/modules/console_shell.py @@ -0,0 +1,78 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# 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 2 +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import os +import bpy + +language_id = 'shell' + + +def add_scrollback(text, text_type): + for l in text.split('\n'): + bpy.ops.console.scrollback_append(text=l.replace('\t', ' '), + type=text_type) + + +def shell_run(text): + import subprocess + val, output = subprocess.getstatusoutput(text) + + if not val: + style = 'OUTPUT' + else: + style = 'ERROR' + + add_scrollback(output, style) + +PROMPT = '$ ' + + +def execute(context): + sc = context.space_data + + try: + line = sc.history[-1].body + except: + return {'CANCELLED'} + + bpy.ops.console.scrollback_append(text=sc.prompt + line, type='INPUT') + + shell_run(line) + + # insert a new blank line + bpy.ops.console.history_append(text="", current_character=0, + remove_duplicates=True) + + sc.prompt = os.getcwd() + PROMPT + return {'FINISHED'} + + +def autocomplete(context): + # sc = context.space_data + # TODO + return {'CANCELLED'} + + +def banner(context): + sc = context.space_data + + shell_run("bash --version") + sc.prompt = os.getcwd() + PROMPT + + return {'FINISHED'} |