-
Notifications
You must be signed in to change notification settings - Fork 377
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
console: autorequire frequently used modules #10014
console: autorequire frequently used modules #10014
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi, Alexander!
Thanks for the patchset!
I'll proceed with the review per-patch now.
[PATCH 1/2] console: define module table earlier
LGTM, as trivial.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[PATCH 2/2] console: autorequire frequently used modules
Hi, Alexnader!
Thanks for the patch.
Generally, LGTM, but have some ignorable nits below.
I need to capture the module table inside a module function in a next commit. NO_DOC=refactoring, no behavior changes NO_CHANGELOG=see NO_DOC NO_TEST=see NO_DOC
f7ecd85
to
81c6606
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the patch!
LGTM
Fixes tarantool#9986 @TarantoolBot document Title: Interactive console now autorequires a couple of built-in modules There are built-in modules that are frequently used for administration or debugging purposes. It is convenient to have them accessible in the interactive console without extra actions. They're accessible now without a manual `require` call if the `console_session_scope_vars` compat option is set to `new` (see also tarantool/doc#4191). The list of the autorequired modules is below. * clock * compat * config * datetime * decimal * ffi * fiber * fio * fun * json * log * msgpack * popen * uuid * varbinary * yaml See tarantool#9986 for motivation behind this feature. This list forms so called initial environment for an interactive console session. The default initial environment may be adjusted by an application, for example, to include application specific administrator functions. Two public functions are added for this purpose: `console.initial_env()` and `console.set_initial_env(env)`. Example 1 (keep autorequired modules, but add one more variable): ```lua local console = require('console') -- Add myapp_info function. local initial_env = console.initial_env() initial_env.myapp_info = function() <...> end ``` Example 2 (replace the whole initial environment): ```lua local console = require('console') -- Add myapp_info function, discard the autorequired modules. console.set_initial_env({ myapp_info = function() <...> end, }) ``` The `console.set_initial_env()` call without an argument or with a `nil` argument drops the initial environment to its default. A modification of the initial environment doesn't affect existing console sessions. It affects console sessions that are created after the modification. Please, adjust the `console_session_scope_vars` compat option description and extend the built-in `console` module reference with the new functions.
81c6606
to
e29c4e8
Compare
There are built-in modules that are frequently used for administration or debugging purposes. It is convenient to have them accessible in the interactive console without extra actions.
They're accessible now without a manual
require
call if theconsole_session_scope_vars
compat option is set tonew
(see also tarantool/doc#4191).The list of the autorequired modules is below.
See #9986 for motivation behind this feature.
This list forms so called initial environment for an interactive console session. The default initial environment may be adjusted by an application, for example, to include application specific administrator functions.
Two public functions are added for this purpose:
console.initial_env()
andconsole.set_initial_env(env)
.Example 1 (keep autorequired modules, but add one more variable):
Example 2 (replace the whole initial environment):
The
console.set_initial_env()
call without an argument or with anil
argument drops the initial environment to its default.A modification of the initial environment doesn't affect existing console sessions. It affects console sessions that are created after the modification.
Fixes #9986