Skip to content

Interactive console now autorequires a couple of built-in modules #4196

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

Open
Tracked by #4505
TarantoolBot opened this issue May 17, 2024 · 0 comments
Open
Tracked by #4505

Comments

@TarantoolBot
Copy link
Collaborator

TarantoolBot commented May 17, 2024

Related dev. issue(s): tarantool/tarantool#9986
Related doc. issue(s): #4191

Product: Tarantool
Since: 3.2
Root document: https://www.tarantool.io/en/doc/latest/reference/reference_lua/console/
SME: @ Totktonada

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
#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/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):

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):

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.

Requested by @Totktonada in tarantool/tarantool@8c9965a (tarantool/tarantool#9986, tarantool/tarantool#10014).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants