Show More
@@ -99,3 +99,78 b' def install_nbextension(files, overwrite=False, ipython_dir=None, verbose=1):' | |||||
99 | else: |
|
99 | else: | |
100 | src = path |
|
100 | src = path | |
101 | _maybe_copy(src, dest, verbose) |
|
101 | _maybe_copy(src, dest, verbose) | |
|
102 | ||||
|
103 | #---------------------------------------------------------------------- | |||
|
104 | # install nbextension app | |||
|
105 | #---------------------------------------------------------------------- | |||
|
106 | ||||
|
107 | import logging | |||
|
108 | from IPython.utils.traitlets import Bool, Enum | |||
|
109 | from IPython.core.application import BaseIPythonApplication | |||
|
110 | ||||
|
111 | flags = { | |||
|
112 | "overwrite" : ({ | |||
|
113 | "NBExtensionApp" : { | |||
|
114 | "overwrite" : True, | |||
|
115 | }}, "Force overwrite of existing files" | |||
|
116 | ), | |||
|
117 | "debug" : ({ | |||
|
118 | "NBExtensionApp" : { | |||
|
119 | "verbose" : 2, | |||
|
120 | }}, "Extra output" | |||
|
121 | ), | |||
|
122 | "quiet" : ({ | |||
|
123 | "NBExtensionApp" : { | |||
|
124 | "verbose" : 0, | |||
|
125 | }}, "Minimal output" | |||
|
126 | ), | |||
|
127 | } | |||
|
128 | aliases = { | |||
|
129 | "ipython-dir" : "NBExtensionApp.ipython_dir" | |||
|
130 | } | |||
|
131 | ||||
|
132 | class NBExtensionApp(BaseIPythonApplication): | |||
|
133 | """Entry point for installing notebook extensions""" | |||
|
134 | ||||
|
135 | description = """Install IPython notebook extensions | |||
|
136 | ||||
|
137 | Usage | |||
|
138 | ||||
|
139 | ipython install-nbextension file [more files or folders] | |||
|
140 | ||||
|
141 | This copies files and/or folders into the IPython nbextensions directory. | |||
|
142 | If the requested files are already up to date, no action is taken | |||
|
143 | unless --overwrite is specified. | |||
|
144 | """ | |||
|
145 | ||||
|
146 | examples = """ | |||
|
147 | ipython install-nbextension /path/to/d3.js /path/to/myextension | |||
|
148 | """ | |||
|
149 | aliases = aliases | |||
|
150 | flags = flags | |||
|
151 | ||||
|
152 | overwrite = Bool(False, config=True, help="Force overwrite of existing files") | |||
|
153 | verbose = Enum((0,1,2), default_value=1, config=True, | |||
|
154 | help="Verbosity level" | |||
|
155 | ) | |||
|
156 | ||||
|
157 | def install_extensions(self): | |||
|
158 | install_nbextension(self.extra_args, | |||
|
159 | overwrite=self.overwrite, | |||
|
160 | verbose=self.verbose, | |||
|
161 | ipython_dir=self.ipython_dir, | |||
|
162 | ) | |||
|
163 | ||||
|
164 | def start(self): | |||
|
165 | if not self.extra_args: | |||
|
166 | nbext = pjoin(self.ipython_dir, u'nbextensions') | |||
|
167 | print("Notebook extensions in %s:" % nbext) | |||
|
168 | for ext in os.listdir(nbext): | |||
|
169 | print(u" %s" % ext) | |||
|
170 | else: | |||
|
171 | self.install_extensions() | |||
|
172 | ||||
|
173 | ||||
|
174 | if __name__ == '__main__': | |||
|
175 | NBExtensionApp.launch_instance() | |||
|
176 | No newline at end of file |
@@ -224,7 +224,7 b' class TerminalIPythonApp(BaseIPythonApplication, InteractiveShellApp):' | |||||
224 | StoreMagics, |
|
224 | StoreMagics, | |
225 | ] |
|
225 | ] | |
226 |
|
226 | |||
227 |
subcommands = |
|
227 | subcommands = dict( | |
228 | qtconsole=('IPython.qt.console.qtconsoleapp.IPythonQtConsoleApp', |
|
228 | qtconsole=('IPython.qt.console.qtconsoleapp.IPythonQtConsoleApp', | |
229 | """Launch the IPython Qt Console.""" |
|
229 | """Launch the IPython Qt Console.""" | |
230 | ), |
|
230 | ), | |
@@ -253,6 +253,10 b' class TerminalIPythonApp(BaseIPythonApplication, InteractiveShellApp):' | |||||
253 | "Sign notebooks to trust their potentially unsafe contents at load." |
|
253 | "Sign notebooks to trust their potentially unsafe contents at load." | |
254 | ), |
|
254 | ), | |
255 | )) |
|
255 | )) | |
|
256 | subcommands['install-nbextension'] = ( | |||
|
257 | "IPython.html.nbextensions.NBExtensionApp", | |||
|
258 | "Install IPython notebook extension files" | |||
|
259 | ) | |||
256 |
|
260 | |||
257 | # *do* autocreate requested profile, but don't create the config file. |
|
261 | # *do* autocreate requested profile, but don't create the config file. | |
258 | auto_create=Bool(True) |
|
262 | auto_create=Bool(True) |
General Comments 0
You need to be logged in to leave comments.
Login now