phovea / generator-phovea

Yeoman Generator for Phovea
https://www.npmjs.com/package/generator-phovea
BSD 3-Clause "New" or "Revised" License
1 stars 1 forks source link

Change plugin type of existing plugins #368

Open thinkh opened 4 years ago

thinkh commented 4 years ago

Current status

Currently it is not possible to change the plugin type of an already existing plugin. The current workaround is to remove the whole repo and move the files manually to the new plugin.

Feature request

The generator should add necessary files (in case of an upgrade) or remove the unnecessary files (in case of a downgrade).

In case files are removed they should be delete. The user has to check the diff in the git commit and move content that she wants to keep. All other files should remain untouched.

Shared files (e.g., package.json, .yo-rc, .circleci, ...) should be replaced by the new file.

All up- and downgrades between plugin types should be allowed, except for the plugin type bundle and product. The user can not switch from or to bundle and product.

Update

The first approach we took was to adapt theinit-lib, init-slib, ... generators, in order to reuse them to switch to a different plugin. We realized however that the current implementation is too specific for it to allow to upgrade/downgrade to a different plugin, without a lot of refactoring.

The second approach was too hardcore the differences between the different plugins and then for each type run these steps to upgrade/downgrade the plugin. This approach seems to be the way to go but it requires substantial time to implement.

So far we have and example implementation of how to downgrade from a lib-slib to a lib and a lib-slib to a slib

Next steps are:

oltionchampari commented 4 years ago

Call stack for the init-lib , init-slib and init lib-slib generators.

init_generator_call_stack

oltionchampari commented 4 years ago

Files created by the different plugin generators:

init-lib

package.json
.yo-rc.json
index.js
src/index.ts
tests/index.test.ts
.gitignore
.gitattributes
buildInfo.js
jest.config.js
tests.webpack.js
tsconfig.json
tsconfig_dev.json
tsd.d.ts
tslint.json
typedoc.json
webpack.config.js
.circleci/config.yml
phovea_registry.js
src/phovea.ts
README.md
.editorconfig
ISSUE_TEMPLATE.md
LICENSE

init-slib

package.json
.yo-rc.json
deploy/docker-compose.partial.yml
test/config.json
requirements.txt
docker_packages.txt
.gitattributes
buildPython.js
requirements_dev.txt
setup.cfg
setup.py
tox.ini
.circleci/config.yml
docs/conf.py
docs/_static/touch.txt
docs/_templates/touch.txt
docs/index.rst
test/__init__.py
.gitignore
docs/.gitignore
README.md
.editorconfig
ISSUE_TEMPLATE.md
LICENSE

init-lib-slib

package.json
.circleci/config.yml
.yo-rc.json
README.md
.editorconfig
ISSUE_TEMPLATE.md
LICENSE
deploy/docker-compose.partial.yml
test/config.json
index.js
src/index.ts
tests/index.test.ts
requirements.txt
docker_packages.txt
.gitattributes
buildPython.js
requirements_dev.txt
setup.cfg
setup.py
tox.ini
docs/conf.py
docs/_static/touch.txt
docs/_templates/touch.txt
docs/index.rst
test/__init__.py
.gitignore
docs/.gitignore
buildInfo.js
jest.config.js
tests.webpack.js
tsconfig.json
tsconfig_dev.json
tsd.d.ts
tslint.json
typedoc.json
webpack.config.js
phovea_registry.js
src/phovea.ts

init-app

package.json
.yo-rc.json
deploy/nginx-default.conf
deploy/Dockerfile
src/404.html
src/app.ts
src/index.ts
src/robots.txt
src/style.scss
tests/app.test.ts
src/styles/_base.scss
src/index.html
src/language.ts
.gitignore
.gitattributes
buildInfo.js
jest.config.js
tests.webpack.js
tsconfig.json
tsconfig_dev.json
tsd.d.ts
tslint.json
typedoc.json
webpack.config.js
.circleci/config.yml
phovea_registry.js
src/phovea.ts
README.md
.editorconfig
ISSUE_TEMPLATE.md
LICENSE

init-app-slib

package.json
.yo-rc.json
README.md
.editorconfig
ISSUE_TEMPLATE.md
LICENSE
deploy/docker-compose.partial.yml
test/config.json
deploy/nginx-default.conf
deploy/Dockerfile
src/404.html
src/app.ts
src/index.ts
src/robots.txt
src/style.scss
tests/app.test.ts
src/styles/_base.scss
src/index.html
src/language.ts
requirements.txt
docker_packages.txt
.gitattributes
buildPython.js
requirements_dev.txt
setup.cfg
setup.py
tox.ini
.circleci/config.yml
docs/conf.py
docs/_static/touch.txt
docs/_templates/touch.txt
docs/index.rst
test/__init__.py
.gitignore
docs/.gitignore
buildInfo.js
jest.config.js
tests.webpack.js
tsconfig.json
tsconfig_dev.json
tsd.d.ts
tslint.json
typedoc.json
webpack.config.js
phovea_registry.js
src/phovea.ts

service

package.json
force .yo-rc.json
deploy/Dockerfile
deploy/Dockerfile_dev
deploy/docker-compose-debug.partial.yml
deploy/docker-compose.partial.yml
tests/test_server.py
test/config.json
test/server.py
requirements.txt
docker_packages.txt
.gitattributes
buildPython.js
requirements_dev.txt
setup.cfg
setup.py
tox.ini
.circleci/config.yml
docs/conf.py
docs/_static/touch.txt
docs/_templates/touch.txt
docs/index.rst
test/__init__.py
.gitignore
docs/.gitignore
README.md
.editorconfig
ISSUE_TEMPLATE.md
LICENSE

lib-service

package.json
.yo-rc.json
README.md
.editorconfig
ISSUE_TEMPLATE.md
LICENSE
deploy/Dockerfile
deploy/Dockerfile_dev
deploy/docker-compose-debug.partial.yml
deploy/docker-compose.partial.yml
tests/test_server.py
test/config.json
test/server.py
index.js
src/index.ts
tests/index.test.ts
requirements.txt
docker_packages.txt
.gitattributes
buildPython.js
requirements_dev.txt
setup.cfg
setup.py
tox.ini
.circleci/config.yml
docs/conf.py
docs/_static/touch.txt
docs/_templates/touch.txt
docs/index.rst
test/__init__.py
.gitignore
docs/.gitignore
buildInfo.js
jest.config.js
tests.webpack.js
tsconfig.json
tsconfig_dev.json
tsd.d.ts
tslint.json
typedoc.json
webpack.config.js
phovea_registry.js
src/phovea.ts