lando / core

Current Lando v3 runtime
https://docs.lando.dev/core/v3
GNU General Public License v3.0
9 stars 21 forks source link

Core Plugins are not usable without lando/cli #18

Open sjinks opened 1 year ago

sjinks commented 1 year ago

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 commented 1 year ago

@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