summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md4
-rwxr-xr-xcmd2.py7
-rw-r--r--examples/.cmd2rc2
-rwxr-xr-xexamples/alias_startup.py24
4 files changed, 35 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3c590bea..7359ea08 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,7 +8,9 @@
* Added [quit_on_sigint](http://cmd2.readthedocs.io/en/latest/settingchanges.html#quit-on-sigint) attribute to enable canceling current line instead of quitting when Ctrl+C is typed
* Added possibility of having readline history preservation in a SubMenu
* Added [table_display.py](https://github.com/python-cmd2/cmd2/blob/master/examples/table_display.py) example to demonstrate how to display tabular data
- * Added command aliasing with ``alias`` command
+ * Added command aliasing with ``alias`` and ``unalias`` commands
+ * Added the ability to load an initialization script at startup
+ * See [alias_startup.py](https://github.com/python-cmd2/cmd2/blob/master/examples/alias_startup.py) for an example
## 0.8.1 (March 9, 2018)
diff --git a/cmd2.py b/cmd2.py
index 7ce6e5c0..d357b02a 100755
--- a/cmd2.py
+++ b/cmd2.py
@@ -1088,7 +1088,7 @@ class Cmd(cmd.Cmd):
'timing': 'Report execution times'}
def __init__(self, completekey='tab', stdin=None, stdout=None, persistent_history_file='',
- persistent_history_length=1000, use_ipython=False, transcript_files=None):
+ persistent_history_length=1000, startup_script=None, use_ipython=False, transcript_files=None):
"""An easy but powerful framework for writing line-oriented command interpreters, extends Python's cmd package.
:param completekey: str - (optional) readline name of a completion key, default to Tab
@@ -1096,6 +1096,7 @@ class Cmd(cmd.Cmd):
:param stdout: (optional) alternate output file object, if not specified, sys.stdout is used
:param persistent_history_file: str - (optional) file path to load a persistent readline history from
:param persistent_history_length: int - (optional) max number of lines which will be written to the history file
+ :param startup_script: str - (optional) file path to a a script to load and execute at startup
:param use_ipython: (optional) should the "ipy" command be included for an embedded IPython shell
:param transcript_files: str - (optional) allows running transcript tests when allow_cli_args is False
"""
@@ -1180,6 +1181,10 @@ class Cmd(cmd.Cmd):
# If this string is non-empty, then this warning message will print if a broken pipe error occurs while printing
self.broken_pipe_warning = ''
+ # If a startup script is provided, then add it in the queue to load
+ if startup_script is not None:
+ self.cmdqueue.append('load {}'.format(startup_script))
+
# ----- Methods related to presenting output to the user -----
@property
diff --git a/examples/.cmd2rc b/examples/.cmd2rc
new file mode 100644
index 00000000..4ffedab9
--- /dev/null
+++ b/examples/.cmd2rc
@@ -0,0 +1,2 @@
+alias ls !ls -hal
+alias pwd !pwd
diff --git a/examples/alias_startup.py b/examples/alias_startup.py
new file mode 100755
index 00000000..23e51048
--- /dev/null
+++ b/examples/alias_startup.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+# coding=utf-8
+"""A simple example demonstrating the following:
+ 1) How to add custom command aliases using the alias command
+ 2) How to load an initialization script at startup
+"""
+import argparse
+
+import cmd2
+import pyparsing
+
+from cmd2 import with_argument_list, with_argparser, with_argparser_and_unknown_args
+
+
+class AliasAndStartup(cmd2.Cmd):
+ """ Example cmd2 application where we create commands that just print the arguments they are called with."""
+
+ def __init__(self):
+ cmd2.Cmd.__init__(self, startup_script='.cmd2rc')
+
+
+if __name__ == '__main__':
+ app = AliasAndStartup()
+ app.cmdloop()