Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Core Plugins are not usable without lando/cli #18

Open
sjinks opened this issue Dec 23, 2022 · 1 comment
Open

Core Plugins are not usable without lando/cli #18

sjinks opened this issue Dec 23, 2022 · 1 comment

Comments

@sjinks
Copy link
Contributor

sjinks commented Dec 23, 2022

Both lando-core and lando-recipes need lando.cli to work:

volodymyr@democratic-circus:~/@lando/core/plugins$ grep -RF lando.cli
lando-core/tasks/restart.js:        console.log(lando.cli.makeArt('appRestart', {name: app.name, phase: 'pre'}));
lando-core/tasks/restart.js:          console.log(lando.cli.makeArt('appStart', {name: app.name, phase: type, warnings: app.warnings}));
lando-core/tasks/restart.js:          console.log(lando.cli.formatData(utils.startTable(app), {format: 'table'}, {border: false}));
lando-core/tasks/restart.js:          console.log(lando.cli.makeArt('appStart', {phase: 'error'}));
lando-core/tasks/stop.js:      console.log(lando.cli.makeArt('appStop', {name: app.name, phase: 'pre'}));
lando-core/tasks/stop.js:      return app.stop().then(() => console.log(lando.cli.makeArt('appStop', {name: app.name, phase: 'post'})));
lando-core/tasks/list.js:    options: _.merge({}, lando.cli.formatOptions(), {
lando-core/tasks/list.js:      .then(containers => console.log(lando.cli.formatData(
lando-core/tasks/start.js:        console.log(lando.cli.makeArt('appStart', {name: app.name, phase: 'pre'}));
lando-core/tasks/start.js:          console.log(lando.cli.makeArt('appStart', {name: app.name, phase: type, warnings: app.warnings}));
lando-core/tasks/start.js:          console.log(lando.cli.formatData(utils.startTable(app), {format: 'table'}, {border: false}));
lando-core/tasks/start.js:          console.log(lando.cli.makeArt('appStart', {phase: 'error'}));
lando-core/tasks/info.js:  options: _.merge({}, lando.cli.formatOptions(), {
lando-core/tasks/info.js:          .then(data => console.log(lando.cli.formatData(data, options)))),
lando-core/tasks/info.js:      return app.init().then(() => console.log(lando.cli.formatData(
lando-core/tasks/poweroff.js:      console.log(lando.cli.makeArt('poweroff', {phase: 'pre'}));
lando-core/tasks/poweroff.js:      .then(() => console.log(lando.cli.makeArt('poweroff', {phase: 'post'})));
lando-core/tasks/share.js:      console.log(lando.cli.makeArt('shareWait'));
lando-core/tasks/share.js:        console.log(lando.cli.makeArt('tunnel', {phase: 'pre'}));
lando-core/tasks/destroy.js:      yes: lando.cli.confirm('Are you sure you want to DESTROY?'),
lando-core/tasks/destroy.js:        console.log(lando.cli.makeArt('appDestroy', {phase: 'abort'}));
lando-core/tasks/destroy.js:        console.log(lando.cli.makeArt('appDestroy', {name: app.name, phase: 'pre'}));
lando-core/tasks/destroy.js:        return app.destroy().then(() => console.log(lando.cli.makeArt('appDestroy', {name: app.name, phase: 'post'})));
lando-core/tasks/config.js:  options: _.merge({}, lando.cli.formatOptions(['filter']), {
lando-core/tasks/config.js:    console.log(lando.cli.formatData(lando.config, options, {sort: true}));
lando-core/tasks/rebuild.js:      yes: lando.cli.confirm('Are you sure you want to rebuild?'),
lando-core/tasks/rebuild.js:        console.log(lando.cli.makeArt('appRebuild', {phase: 'abort'}));
lando-core/tasks/rebuild.js:        console.log(lando.cli.makeArt('appRebuild', {name: app.name, phase: 'pre'}));
lando-core/tasks/rebuild.js:          console.log(lando.cli.makeArt('appRebuild', {name: app.name, phase: type, warnings: app.warnings}));
lando-core/tasks/rebuild.js:          console.log(lando.cli.formatData(utils.startTable(app), {format: 'table'}, {border: false}));
lando-recipes/tasks/init.js:  console.log(lando.cli.makeArt('init'));
lando-recipes/tasks/init.js:  console.log(lando.cli.formatData({

Which means we cannot use something like

const nodeModulesPath = /* ... */;
const lando = new Lando( {
// ...
	pluginDirs: [
		path.join( nodeModulesPath, '@lando', 'core' ),
		{
			path: path.join( nodeModulesPath, '@lando' ),
			subdir: '.',
			namespace: '@lando',
		},
	],
// ...
} );

pre-bootstrap-tasks will fail with:

TypeError: Cannot read property 'formatOptions' of undefined
    at module.exports (.../node_modules/@lando/core/plugins/lando-core/tasks/config.js:9:34)
    at .../node_modules/@lando/core/lib/lando.js:89:37
From previous event:
    at processImmediate (internal/timers.js:464:21)

@pirog
Copy link
Sponsor Member

pirog commented Jan 11, 2023

@sjinks i dont think we are ever going to make @lando/core 3.x into a "first class" library although you can probably get it to work that way with some clever spoofing.

https://github.com/lando/core-next will be a "true" library however it is still in development

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants