dojo / cli

:rocket: Dojo - command line tooling.
http://dojo.io
Other
26 stars 34 forks source link

Pass command helper to command's `eject` method #192

Open mwistrand opened 6 years ago

mwistrand commented 6 years ago

Bug

eject is currently treated as a command rather than an operation on commands, and as such any given command's eject method is passed a unique Helper rather than that associated with the command. As a result, it is not possible to access the command's options in the dojorc, as the helper's configuration uses eject as its internal key, so helper.configuration.get() actually reads from the non-existent eject key. This also means that calling helper.configuration.set() from within eject methods across commands results in multiple writes to the same object.

Package Version:

Code

// dojorc
{
    "my-command": {
          "hello": "world"
    }
}

```typescript
eject(helper: Helper) {
    console.log(helper.configuration.get());
    helper.configuration.set({ "hello": "dojo 2 world" });
}

Expected behavior:

{ "hello": "world" } is logged to the console and the dojorc is updated to:

{
    "my-command": { "hello": "dojo 2 world" }
}

Actual behavior:

{} is logged to the console as there is no eject key, and the dojorc is updated to:

{
    "my-command": { "hello": "world" },
    "eject": { "hello": "dojo 2 world" }
}