Commit graph

56 commits

Author SHA1 Message Date
Richard Hansen
1cfbf88f7c run_cmd: Enhance with ability to return stdout as string 2021-02-18 19:18:59 +00:00
Richard Hansen
d8bb5aa009 plugins: Eliminate unnecessary run_npm.js
I had anticipated more shared logic than we actually need (the
abstraction in `run_npm.js` is YAGNI).
2021-02-18 19:18:59 +00:00
Richard Hansen
689a75b381 plugins: Pass --no-production instead of setting NODE_ENV=development 2021-02-18 19:18:59 +00:00
Richard Hansen
dcf7891316 plugins: Improve logging of plugin events
This will make it easier to troubleshoot plugin and npm issues.
2021-02-18 19:18:59 +00:00
Richard Hansen
a8479e4a0e lint: Fix some ESLint errors in pluginfw 2021-02-18 19:18:59 +00:00
Richard Hansen
f868788417 Remove unnecessary path.normalize() calls
`path.join()` already normalizes.
2021-02-18 19:18:59 +00:00
Richard Hansen
fc9f236977 plugins: Use npm ls to list the installed plugins
This speeds up startup considerably, and we get rid of a lot of buggy
code.

This works with both npm v6.x and v7.x.
2021-02-09 22:18:35 +00:00
Richard Hansen
746cc8cc34 pluginfw: In-line formatPluginsWithVersion()
There's only one caller of the function, so move the logic to where it
is used.
2021-02-04 08:41:00 +00:00
Richard Hansen
2b32bc1840 lint: src/static/js/pluginfw/plugins.js 2021-02-04 08:41:00 +00:00
Richard Hansen
a06662fd00 pluginfw: Delete commented-out code 2021-02-04 08:41:00 +00:00
John McLear
b3dda3b11c lint: src/static/js/pluginfw/*.js 2021-01-30 17:00:40 -05:00
Richard Hansen
f54dcbc766 lint: Re-run eslint --fix 2020-12-16 22:09:48 +00:00
Richard Hansen
8e5fd19db2 lint: Run eslint --fix on src/ 2020-11-24 20:06:12 +00:00
Richard Hansen
cedd27e4fe plugins: Default the module name to the plugin name 2020-11-13 20:30:27 +00:00
Richard Hansen
8a918fbc46 plugins: asyncify more functions 2020-11-13 20:30:27 +00:00
Richard Hansen
9f575ebc84 plugins: Delete unused ensure function 2020-11-13 20:30:27 +00:00
Richard Hansen
ac5614dadd plugins: Don't export callInit
It's unused outside of this module.

Also use an arrow function.
2020-11-13 20:30:27 +00:00
Richard Hansen
ba4794cf8a plugins: Call require('./hooks') at top level 2020-11-13 20:30:27 +00:00
Richard Hansen
14a9479e69 plugins: Use functions from fs.promises 2020-11-13 20:30:27 +00:00
Richard Hansen
da459888dc plugins: Move plugin definitions to avoid monkey patching
Also document the plugin data structures.
2020-09-08 00:50:24 +01:00
Richard Hansen
8cf2bcaeb4 plugins: Fix type typo
`exports.parts` is a topologically sorted array, but the intermediate
collection of parts assembled in `plugins.update()` is associative.
2020-09-08 00:47:32 +01:00
Richard Hansen
442fe1e86f pluginfw: Always include the function name in hook_fn_name
Plugin authors are allowed to omit the function name in the `ep.json`
parts definition. For example:

```
{
  "parts": [
    {
      "name": "ep_example",
      "hooks": {
        "authenticate": "ep_example",
        "authFailure": "ep_example"
      }
    }
  ]
}
```

If omitted, the function name is assumed to be the same as the hook
name. Before this change, `hook_fn_name` for the example hooks would
both be `/opt/etherpad-lite/node_modules/ep_example`. Now they are
suffixed with `:authenticate` and `:authFailure`. This improves
logging, and it makes it possible to use `hook_fn_name` to uniquely
identify a particular hook function.
2020-09-05 22:43:17 +01:00
muxator
72ccb28382 AbsolutePaths: initial work to allow Etherpad to be run without changing CWD
With this change, it is no longer necessary to "cd" to the Etherpad base
directory to start it: Etherpad runs from everywhere.

Known issues:
- unless the program is started as before (CWD == base directory) it is still
  not possible to install & uninstall plugins via the web interface

--HG--
branch : absolute-paths
2020-04-19 04:51:50 +02:00
Ray Bellis
80b3019154 pluginfw/plugins.js: converted to Promise API 2019-01-18 13:52:37 +00:00
muxator
9497ee734f prepare to async: trivial reformatting
This change is only cosmetic. Its aim is do make it easier to understand the
async changes that are going to be merged later on. It was extracted from the
original work from Ray Bellis.

To verify that nothing has changed, you can run the following command on each
file touched by this commit:
  npm install uglify-es
  diff --unified <(uglify-js --beautify bracketize <BEFORE.js>) <(uglify-js --beautify bracketize <AFTER.js>)



This is a complete script that does the same automatically (works from a
mercurial clone):

```bash
#!/usr/bin/env bash

set -eu

REVISION=<THIS_REVISION>

PARENT_REV=$(hg identify --rev "${REVISION}" --template '{p1rev}')
FILE_LIST=$(hg status --no-status --change ${REVISION})
UGLIFYJS="node_modules/uglify-es/bin/uglifyjs"

for FILE_NAME in ${FILE_LIST[@]}; do
  echo "Checking ${FILE_NAME}"
  diff --unified \
    <("${UGLIFYJS}" --beautify bracketize <(hg cat --rev "${PARENT_REV}" "${FILE_NAME}")) \
    <("${UGLIFYJS}" --beautify bracketize <(hg cat --rev "${REVISION}"   "${FILE_NAME}"))
done
```
2019-02-08 23:20:57 +01:00
Claudius Mbemba
8d60bd5234 fixed plugin dependency issue
running ./bin/run.sh after the 1st time caused the following error "TypeError: Cannot read property 'dependencies' of undefined".
fixed it.
2017-05-30 05:36:29 +02:00
Stefan
00c9caf7a3 Updated npm to 4.0.2 and removed recursive searching for ep-plugins 2016-11-20 11:28:17 +01:00
John McLear
1f471b0f81 show versions of plugins at startup, fixes #2642 2015-04-28 23:41:55 +01:00
Marcel Klehr
78e64ffea8 Mimic, replace or work around removed npm utils. 2012-10-28 18:34:20 +01:00
Chad Weider
1258ed3a0d Split client and server plugin functionality.
There is virtually no shared code for the client, extract it into its own
module and do away with the switches.
2012-09-11 21:16:47 -07:00
Chad Weider
3631f0ece3 Inject special normalization behavior. 2012-09-11 21:16:47 -07:00
Chad Weider
e375b6212a Static functions are static. 2012-09-11 21:16:47 -07:00
Chad Weider
b0d71df604 Fix worthless indentation. 2012-09-11 21:16:47 -07:00
Marcel Klehr
227477967f Fix plugin loader
make it work on client side and with relative paths
2012-06-29 12:40:16 +02:00
Marcel Klehr
b0d369883b Fix plugin loader to work with windows paths (e.g. 'D:\foo\...') 2012-06-28 15:58:28 +02:00
Egil Moeller
cf2f0b72a3 More plugin information 2012-06-04 14:33:38 +02:00
Matthias Bartelmeß
513deef768 added baseURL export to pad.js, timeslider.js, plugins.js, fixing #670 2012-04-25 10:23:58 +02:00
John McLear
0a9fcc267f Merge pull request #658 from redhog/master
Bugfixes for when plugins are installed as dependencies for other plugins
2012-04-20 05:56:57 -07:00
Egil Moeller
72c972b256 Bugfix for recursive dependency-installation and paths 2012-04-20 14:37:53 +02:00
0ip
a743112170 Fix #626, Plugins don't work if pad is on a subdir 2012-04-19 19:44:44 +03:00
Chad Weider
e695c716e5 Work around strange order of execution bug in Firefox. Fixes #620 2012-04-11 02:08:50 -07:00
Egil Moeller
a3c9407ed6 Merge branch 'develop' of git://github.com/Pita/etherpad-lite 2012-04-05 20:14:48 +02:00
Egil Moeller
8cd1298a16 Added init hook to install plugin database default content and the like 2012-04-05 01:48:12 +02:00
Matthias Bartelmeß
4acbb11fd5 Merge branch 'develop' into feature/implicit_hooks 2012-04-04 15:04:10 +02:00
Matthias Bartelmeß
5115f74f66 use hook name as function name, if not specified
Example `"[hookName]": "ep_plugin/static/js/index:[hookName]"` becomes  `"[hookName]": "ep_plugin/static/js/index"`
2012-04-04 15:03:28 +02:00
Matthias Bartelmeß
5a77979486 make jshint happy 2012-04-04 09:51:46 +02:00
Matthias Bartelmeß
b2173a1084 get rid of node.extend (since duplicated by underscorejs) 2012-04-04 09:40:18 +02:00
Egil Moeller
6120a0b7aa Merge branch 'develop' of git://github.com/Pita/etherpad-lite 2012-03-27 22:36:48 +02:00
John McLear
beec69ac1c Merge pull request #556 from fourplusone/feature_jquery
added jQuery to ace2_inner, make it embeddable, ace hooks work now propertly in ace2_inner
2012-03-26 08:10:58 -07:00
Matthias Bartelmeß
208d88cc03 proceed if plugin-definitions.json didn't load properly 2012-03-24 13:29:15 +01:00