options: deprecate 'lua' based options/dirs for 'script'

- --lua and --lua-opts change to --script and --script-opts
- 'lua' default script dirs change to 'scripts'
- DOCS updated

- 'lua-settings' dir was _not_ modified

The old lua-based names/dirs still work, but display a warning.

Signed-off-by: wm4 <wm4@nowhere>
This commit is contained in:
Avi Halachmi (:avih) 2014-12-15 01:31:30 +02:00 committed by wm4
parent 06828f71a1
commit 39e04e9294
13 changed files with 66 additions and 47 deletions

View File

@ -1,10 +1,10 @@
LUA SCRIPTING LUA SCRIPTING
============= =============
mpv can load Lua scripts. Scripts passed to the ``--lua`` option, or found in mpv can load Lua scripts. Scripts passed to the ``--script`` option, or found in
the ``lua`` subdirectory of the mpv configuration directory (usually the ``scripts`` subdirectory of the mpv configuration directory (usually
``~/.config/mpv/lua/``) will be loaded on program start. mpv also appends the ``~/.config/mpv/scripts/``) will be loaded on program start. mpv also appends the
``lua`` subdirectory to the end of Lua's path so you can import scripts from ``scripts`` subdirectory to the end of Lua's path so you can import scripts from
there too. Since it's added to the end, don't name scripts you want to import there too. Since it's added to the end, don't name scripts you want to import
the same as Lua libraries because they will be overshadowed by them. the same as Lua libraries because they will be overshadowed by them.
@ -35,9 +35,9 @@ allow users implement features which are not going to be added to the mpv core.
Mode of operation Mode of operation
----------------- -----------------
Your script will be loaded by the player at program start from the ``lua`` Your script will be loaded by the player at program start from the ``scripts``
configuration subdirectory, from a path specified with the ``--lua`` option, or configuration subdirectory, from a path specified with the ``--script`` option,
in some cases, internally (like ``--osc``). Each script runs in its own or in some cases, internally (like ``--osc``). Each script runs in its own
thread. Your script is first run "as is", and once that is done, the event loop thread. Your script is first run "as is", and once that is done, the event loop
is entered. This event loop will dispatch events received by mpv and call your is entered. This event loop will dispatch events received by mpv and call your
own event handlers which you have registered with ``mp.register_event``, or own event handlers which you have registered with ``mp.register_event``, or
@ -361,7 +361,7 @@ The ``mp`` module is preloaded, although it can be loaded manually with
``mp.get_opt(key)`` ``mp.get_opt(key)``
Return a setting from the ``--lua-opts`` option. It's up to the user and Return a setting from the ``--script-opts`` option. It's up to the user and
the script how this mechanism is used. Currently, all scripts can access the script how this mechanism is used. Currently, all scripts can access
this equally, so you should be careful about collisions. this equally, so you should be careful about collisions.
@ -513,12 +513,12 @@ Example config::
optionC=no optionC=no
Command-line options are read from the ``--lua-opts`` parameter. To avoid Command-line options are read from the ``--script-opts`` parameter. To avoid
collisions, all keys have to be prefixed with ``identifier-``. collisions, all keys have to be prefixed with ``identifier-``.
Example command-line:: Example command-line::
--lua-opts=myscript-optionA=TEST:myscript-optionB=0:myscript-optionC=yes --script-opts=myscript-optionA=TEST:myscript-optionB=0:myscript-optionC=yes
mp.utils options mp.utils options

View File

@ -712,9 +712,9 @@ FILES
``~/.config/mpv/input.conf`` ``~/.config/mpv/input.conf``
key bindings (see `INPUT.CONF`_ section) key bindings (see `INPUT.CONF`_ section)
``~/.config/mpv/lua/`` ``~/.config/mpv/scripts/``
All files in this directly are loaded as if they were passed to the All files in this directory are loaded as if they were passed to the
``--lua`` option. They are loaded in alphabetical order, and sub-directories ``--script`` option. They are loaded in alphabetical order, and sub-directories
and files with no ``.lua`` extension are ignored. The ``--load-scripts=no`` and files with no ``.lua`` extension are ignored. The ``--load-scripts=no``
option disables loading these files. option disables loading these files.
@ -738,8 +738,8 @@ locations are different:
``%APPDATA%/mpv/input.conf`` ``%APPDATA%/mpv/input.conf``
key bindings (see `INPUT.CONF`_ section) key bindings (see `INPUT.CONF`_ section)
``%APPDATA%/mpv/lua/`` ``%APPDATA%/mpv/scripts/``
equivalent of ``~/.config/mpv/lua/`` on Unix. equivalent of ``~/.config/mpv/scripts/`` on Unix.
The environment variable ``$MPV_HOME`` completely overrides these, like on The environment variable ``$MPV_HOME`` completely overrides these, like on
UNIX. UNIX.

View File

@ -345,18 +345,18 @@ Program Behavior
Specify configuration file to be parsed after the default ones. Specify configuration file to be parsed after the default ones.
``--load-scripts=<yes|no>`` ``--load-scripts=<yes|no>``
If set to ``no``, don't auto-load scripts from the ``lua`` configuration If set to ``no``, don't auto-load scripts from the ``scripts``
subdirectory (usually ``~/.config/mpv/lua/``). configuration subdirectory (usually ``~/.config/mpv/scripts/``).
(Default: ``yes``) (Default: ``yes``)
``--lua=<filename>`` ``--script=<filename>``
Load a Lua script. You can load multiple scripts by separating them with Load a Lua script. You can load multiple scripts by separating them with
commas (``,``). commas (``,``).
``--lua-opts=key1=value1,key2=value2,...`` ``--script-opts=key1=value1,key2=value2,...``
Set options for scripts. A Lua script can query an option by key. If an Set options for scripts. A script can query an option by key. If an
option is used and what semantics the option value has depends entirely on option is used and what semantics the option value has depends entirely on
the loaded Lua scripts. Values not claimed by any scripts are ignored. the loaded scripts. Values not claimed by any scripts are ignored.
``--merge-files`` ``--merge-files``
Pretend that all files passed to mpv are concatenated into a single, big Pretend that all files passed to mpv are concatenated into a single, big

View File

@ -138,7 +138,7 @@ Configuration
The OSC offers limited configuration through a config file The OSC offers limited configuration through a config file
``lua-settings/osc.conf`` placed in mpv's user dir and through the ``lua-settings/osc.conf`` placed in mpv's user dir and through the
``--lua-opts`` command-line option. Options provided through the command-line ``--script-opts`` command-line option. Options provided through the command-line
will override those from the config file. will override those from the config file.
Config Syntax Config Syntax
@ -161,7 +161,7 @@ To avoid collisions with other scripts, all options need to be prefixed with
Example:: Example::
--lua-opts=osc-optionA=value1,osc-optionB=value2 --script-opts=osc-optionA=value1,osc-optionB=value2
Configurable Options Configurable Options

View File

@ -4,9 +4,9 @@ mpv lua scripts
The lua scripts in this folder can be loaded on a one-time basis by The lua scripts in this folder can be loaded on a one-time basis by
adding the option adding the option
--lua=/path/to/script.lua --script=/path/to/script.lua
to mpv's command line. to mpv's command line.
Where appropriate, they may also be placed in ~/.config/mpv/lua from where Where appropriate, they may also be placed in ~/.config/mpv/scripts/ from
they will be automatically loaded when mpv starts. where they will be automatically loaded when mpv starts.

View File

@ -21,7 +21,7 @@
-- The default delay between insertion of the cropdetect and -- The default delay between insertion of the cropdetect and
-- crop filters may be overridden by adding -- crop filters may be overridden by adding
-- --
-- --lua-opts=autocrop.detect_seconds=<number of seconds> -- --script-opts=autocrop.detect_seconds=<number of seconds>
-- --
-- to mpv's arguments. This may be desirable to allow cropdetect more -- to mpv's arguments. This may be desirable to allow cropdetect more
-- time to collect data. -- time to collect data.

View File

@ -19,7 +19,7 @@
-- --
-- The default detection time may be overridden by adding -- The default detection time may be overridden by adding
-- --
-- --lua-opts=autodeint.detect_seconds=<number of seconds> -- --script-opts=autodeint.detect_seconds=<number of seconds>
-- --
-- to mpv's arguments. This may be desirable to allow idet more -- to mpv's arguments. This may be desirable to allow idet more
-- time to collect data. -- time to collect data.

View File

@ -127,8 +127,8 @@ const m_option_t mp_opts[] = {
OPT_STRINGLIST("reset-on-next-file", reset_options, M_OPT_GLOBAL), OPT_STRINGLIST("reset-on-next-file", reset_options, M_OPT_GLOBAL),
#if HAVE_LUA #if HAVE_LUA
OPT_STRINGLIST("lua", lua_files, CONF_GLOBAL | M_OPT_FILE), OPT_STRINGLIST("script", script_files, CONF_GLOBAL | M_OPT_FILE),
OPT_KEYVALUELIST("lua-opts", lua_opts, M_OPT_GLOBAL), OPT_KEYVALUELIST("script-opts", script_opts, M_OPT_GLOBAL),
OPT_FLAG("osc", lua_load_osc, CONF_GLOBAL), OPT_FLAG("osc", lua_load_osc, CONF_GLOBAL),
OPT_FLAG("ytdl", lua_load_ytdl, CONF_GLOBAL), OPT_FLAG("ytdl", lua_load_ytdl, CONF_GLOBAL),
OPT_STRING("ytdl-format", lua_ytdl_format, CONF_GLOBAL), OPT_STRING("ytdl-format", lua_ytdl_format, CONF_GLOBAL),
@ -594,6 +594,8 @@ const m_option_t mp_opts[] = {
OPT_REMOVED("lavdopts", "use --vd-lavc-..."), OPT_REMOVED("lavdopts", "use --vd-lavc-..."),
OPT_REMOVED("lavfdopts", "use --demuxer-lavf-..."), OPT_REMOVED("lavfdopts", "use --demuxer-lavf-..."),
OPT_REPLACED("lircconf", "input-lirc-conf"), OPT_REPLACED("lircconf", "input-lirc-conf"),
OPT_REPLACED("lua", "script"),
OPT_REPLACED("lua-opts", "script-opts"),
OPT_REMOVED("mixer-channel", "use AO suboptions (alsa, oss)"), OPT_REMOVED("mixer-channel", "use AO suboptions (alsa, oss)"),
OPT_REMOVED("mixer", "use AO suboptions (alsa, oss)"), OPT_REMOVED("mixer", "use AO suboptions (alsa, oss)"),
OPT_REPLACED("mouse-movements", "input-cursor"), OPT_REPLACED("mouse-movements", "input-cursor"),

View File

@ -59,8 +59,8 @@ typedef struct MPOpts {
int msg_time; int msg_time;
char **reset_options; char **reset_options;
char **lua_files; char **script_files;
char **lua_opts; char **script_opts;
int lua_load_osc; int lua_load_osc;
int lua_load_ytdl; int lua_load_ytdl;
char *lua_ytdl_format; char *lua_ytdl_format;

View File

@ -279,10 +279,16 @@ static void set_path(lua_State *L)
const char *path = lua_tostring(L, -1); const char *path = lua_tostring(L, -1);
char *newpath = talloc_strdup(tmp, path ? path : ""); char *newpath = talloc_strdup(tmp, path ? path : "");
char **luadir = mp_find_all_config_files(tmp, get_mpctx(L)->global, "lua"); char *dirs[] = {"scripts", "lua", NULL};
for (int i = 0; luadir && luadir[i]; i++) { for (int s = 0; dirs[s]; s++) {
newpath = talloc_asprintf_append(newpath, ";%s", char **luadir = mp_find_all_config_files(tmp, get_mpctx(L)->global,
mp_path_join(tmp, bstr0(luadir[i]), bstr0("?.lua"))); dirs[s]);
for (int i = 0; luadir && luadir[i]; i++) {
// No need to display a warning for lua files in the deprecated
// 'lua' dirs since scripting.c already warned on them
newpath = talloc_asprintf_append(newpath, ";%s",
mp_path_join(tmp, bstr0(luadir[i]), bstr0("?.lua")));
}
} }
lua_pushstring(L, newpath); // package path newpath lua_pushstring(L, newpath); // package path newpath

View File

@ -14,7 +14,7 @@ function mp.get_script_name()
end end
function mp.get_opt(key, def) function mp.get_opt(key, def)
local opts = mp.get_property_native("options/lua-opts") local opts = mp.get_property_native("options/script-opts")
local val = opts[key] local val = opts[key]
if val == nil then if val == nil then
val = def val = def

View File

@ -79,18 +79,18 @@ function read_options(options, identifier)
end end
--parse command-line options --parse command-line options
for key, val in pairs(mp.get_property_native("options/lua-opts")) do for key, val in pairs(mp.get_property_native("options/script-opts")) do
local prefix = identifier.."-" local prefix = identifier.."-"
if not (string.find(key, prefix, 1, true) == nil) then if not (string.find(key, prefix, 1, true) == nil) then
key = string.sub(key, string.len(prefix)+1) key = string.sub(key, string.len(prefix)+1)
-- match found values with defaults -- match found values with defaults
if options[key] == nil then if options[key] == nil then
msg.warn("lua-opts: unknown key " .. key .. ", ignoring") msg.warn("script-opts: unknown key " .. key .. ", ignoring")
else else
local convval = typeconv(options[key], val) local convval = typeconv(options[key], val)
if convval == nil then if convval == nil then
msg.error("lua-opts: error converting value '" .. val .. msg.error("script-opts: error converting value '" .. val ..
"' for key '" .. key .. "'") "' for key '" .. key .. "'")
else else
options[key] = convval options[key] = convval

View File

@ -179,7 +179,7 @@ void mp_load_scripts(struct MPContext *mpctx)
mp_load_script(mpctx, "@osc.lua"); mp_load_script(mpctx, "@osc.lua");
if (mpctx->opts->lua_load_ytdl) if (mpctx->opts->lua_load_ytdl)
mp_load_script(mpctx, "@ytdl_hook.lua"); mp_load_script(mpctx, "@ytdl_hook.lua");
char **files = mpctx->opts->lua_files; char **files = mpctx->opts->script_files;
for (int n = 0; files && files[n]; n++) { for (int n = 0; files && files[n]; n++) {
if (files[n][0]) if (files[n][0])
mp_load_script(mpctx, files[n]); mp_load_script(mpctx, files[n]);
@ -187,13 +187,24 @@ void mp_load_scripts(struct MPContext *mpctx)
if (!mpctx->opts->auto_load_scripts) if (!mpctx->opts->auto_load_scripts)
return; return;
// Load all lua scripts // Load all scripts
void *tmp = talloc_new(NULL); void *tmp = talloc_new(NULL);
char **luadir = mp_find_all_config_files(tmp, mpctx->global, "lua"); const char *dirs[] = {"scripts", "lua", NULL}; // 'lua' is deprecated
for (int i = 0; luadir && luadir[i]; i++) { int warning_displayed = 0;
files = list_script_files(tmp, luadir[i]); for (int s = 0; dirs[s]; s++) {
for (int n = 0; files && files[n]; n++) char **scriptsdir = mp_find_all_config_files(tmp, mpctx->global, dirs[s]);
mp_load_script(mpctx, files[n]); for (int i = 0; scriptsdir && scriptsdir[i]; i++) {
files = list_script_files(tmp, scriptsdir[i]);
for (int n = 0; files && files[n]; n++) {
if (s && !warning_displayed) {
warning_displayed = 1;
MP_WARN(mpctx,
"warning: '%s' - '%s' dirs are deprecated. Please move scripts to '%s'.",
files[n], dirs[s], dirs[0]);
}
mp_load_script(mpctx, files[n]);
}
}
} }
talloc_free(tmp); talloc_free(tmp);
} }