etherpad-lite/src/bin/plugins
John McLear 2ea8ea1275 restructure: move bin/ and tests/ to src/
Also add symlinks from the old `bin/` and `tests/` locations to avoid
breaking scripts and other tools.

Motivations:

  * Scripts and tests no longer have to do dubious things like:

        require('ep_etherpad-lite/node_modules/foo')

    to access packages installed as dependencies in
    `src/package.json`.

  * Plugins can access the backend test helper library in a non-hacky
    way:

        require('ep_etherpad-lite/tests/backend/common')

  * We can delete the top-level `package.json` without breaking our
    ability to lint the files in `bin/` and `tests/`.

    Deleting the top-level `package.json` has downsides: It will cause
    `npm` to print warnings whenever plugins are installed, npm will
    no longer be able to enforce a plugin's peer dependency on
    ep_etherpad-lite, and npm will keep deleting the
    `node_modules/ep_etherpad-lite` symlink that points to `../src`.

    But there are significant upsides to deleting the top-level
    `package.json`: It will drastically speed up plugin installation
    because `npm` doesn't have to recursively walk the dependencies in
    `src/package.json`. Also, deleting the top-level `package.json`
    avoids npm's horrible dependency hoisting behavior (where it moves
    stuff from `src/node_modules/` to the top-level `node_modules/`
    directory). Dependency hoisting causes numerous mysterious
    problems such as silent failures in `npm outdated` and `npm
    update`. Dependency hoisting also breaks plugins that do:

        require('ep_etherpad-lite/node_modules/foo')
2021-02-04 17:15:08 -05:00
..
lib restructure: move bin/ and tests/ to src/ 2021-02-04 17:15:08 -05:00
checkPlugin.js restructure: move bin/ and tests/ to src/ 2021-02-04 17:15:08 -05:00
getCorePlugins.sh restructure: move bin/ and tests/ to src/ 2021-02-04 17:15:08 -05:00
README.md restructure: move bin/ and tests/ to src/ 2021-02-04 17:15:08 -05:00
reTestAllPlugins.sh restructure: move bin/ and tests/ to src/ 2021-02-04 17:15:08 -05:00
updateAllPluginsScript.sh restructure: move bin/ and tests/ to src/ 2021-02-04 17:15:08 -05:00
updateCorePlugins.sh restructure: move bin/ and tests/ to src/ 2021-02-04 17:15:08 -05:00

The files in this folder are for Plugin developers.

Get suggestions to improve your Plugin

This code will check your plugin for known usual issues and some suggestions for improvements. No changes will be made to your project.

node bin/plugins/checkPlugin.js $PLUGIN_NAME$

Basic Example:

node bin/plugins/checkPlugin.js ep_webrtc

Autofixing - will autofix any issues it can

node bin/plugins/checkPlugin.js ep_whatever autofix

Autocommitting, push, npm minor patch and npm publish (highly dangerous)

node bin/plugins/checkPlugin.js ep_whatever autocommit

All the plugins

Replace johnmclear with your github username

# Clones
cd node_modules
GHUSER=johnmclear; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -o 'git@[^"]*' | grep /ep_ | xargs -L1 git clone
cd ..

# autofixes and autocommits /pushes & npm publishes
for dir in node_modules/ep_*; do
  dir=${dir#node_modules/}
  [ "$dir" != ep_etherpad-lite ] || continue
  node bin/plugins/checkPlugin.js "$dir" autocommit
done

Automating update of ether organization plugins

getCorePlugins.sh
updateCorePlugins.sh