wayneashleyberry / wunderline

✅️ Command-line client for Wunderlist, the easiest way to get stuff done.
https://git.io/vM45l
MIT License
310 stars 29 forks source link

RFC: Enhanced Task Interface #92

Open jmcclell opened 7 years ago

jmcclell commented 7 years ago

The API supports Tasks, Subtasks, Users, Notes, etc.

We should try to expand the CLI to support these operations.

The first thing I would propose is to change the command structure slightly so that we have sub-command groups:

wunderline add wunderline done

Would become

wunderline task add wunderline task done

This opens us up to be able to do things like:

wunderline list add wunderline folder add wunderline task add-subtask

With the interface change, I think an edit command could work similarly to the done command, as well as several other convenience-methods for editing single attributes.

$ wunderline task done do the thing
? Select tasks to mark as done (Press <space> to select)                                                                                                                                                                              
❯◯ Talk about the do the thing task
❯◯ Do the thing

$ wunderline task edit do the thing
? Task to edit: [1-2]
❯ [1] Talk about the do the thing task
❯ [2] Do the thing

Modifying task: Talk about the do the thing task
title: (Talk about the do the thing task)
complete: (No) <Y/n>
assignedTo: (jmcclell) some-other
    ? Assign to user: [1-2]
     ❯ [1] some-other-user1
     ❯ [2] some-other-user2
assignedTo: (some-other-user1)
starred: (Yes) <Y/n> n

Changes to make:
  assignedTo: jmcclell -> some-other-user1
  starred: Yes -> No

Make changes? (Y/n)

Task updated.

$ wunderline task star do the thing task
? Task to star: [1-2]
❯ [1] Talk about the do the thing task
❯ [2] Do the thing

Etc.

I wanted to get some opinions from the maintainers and other users before I embarked on any changes or submitted any PRs. Perhaps there are some other features that are important or better ways for this to be implemented.