diff options
author | Michael Vetter <jubalh@iodoru.org> | 2021-09-29 14:48:33 +0200 |
---|---|---|
committer | Michael Vetter <jubalh@iodoru.org> | 2021-09-29 17:32:54 +0200 |
commit | 7486e22b77d2d5467af2b21d3e38ba66a5bddf69 (patch) | |
tree | 909966b2d3b36fa367d347dc7836f9cdf4369f72 /src | |
parent | ba7b6c2e96be57c24e11c64f4d6e5c97f025516b (diff) | |
download | profani-tty-7486e22b77d2d5467af2b21d3e38ba66a5bddf69.tar.gz |
Look for plugins to install in global location
Two options to install plugins. Mention the whole path: `/plugins install ~/src/profanity-plugins/my.py` Mention only the plugin name: `/plugins install my.py` The latter will look in `/usr/local/share/profanity/plugins/` for the file and copy it over to `~/.local/share/profanity/plugins`. At first I was thinking about loading the plugins from the global location. But users most likely don't want to have all plugins activated that an admin installs on a system. Regards https://github.com/profanity-im/profanity/issues/945
Diffstat (limited to 'src')
-rw-r--r-- | src/command/cmd_funcs.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index b970c73b..302de659 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -6927,13 +6927,31 @@ cmd_receipts(ProfWin* window, const char* const command, gchar** args) gboolean cmd_plugins_install(ProfWin* window, const char* const command, gchar** args) { - char* path; + char* path = NULL; if (args[1] == NULL) { cons_show("Please provide a path to the plugin file or directory, see /help plugins"); return TRUE; - } else { + } + + // take whole path or build it in case it's just the plugin name + if (strchr(args[1], '/')) { path = get_expanded_path(args[1]); + } else { + if (g_str_has_suffix(args[1], ".py")) { + path = g_strdup_printf("%s/%s", GLOBAL_PYTHON_PLUGINS_PATH, args[1]); + } else if (g_str_has_suffix(args[1], ".so")) { + path = g_strdup_printf("%s/%s", GLOBAL_C_PLUGINS_PATH, args[1]); + } else { + cons_show("Plugins must have one of the following extensions: '.py' '.so'"); + return TRUE; + } + } + + if (access(path, R_OK) != 0) { + cons_show("Cannot access: %s", path); + free(path); + return TRUE; } if (is_regular_file(path)) { |