agamm / comeback

Project restoration in one command, auto open everything!
MIT License
22 stars 5 forks source link

[FEATURE] Restructure config file #12

Closed yammesicka closed 5 years ago

yammesicka commented 5 years ago

Some plugins may perform multiple tasks:

In the best scenario, two plugins should be able to interact (Spotify: Play a random song, Slack: Post that song on the #music channel).

Let's talk about the possible structure of the .comeback file.

GitLab's CI format looks to me like a great example.

agamm commented 5 years ago

Something like this?

job1:
  chrome:
    url: url0
  pycharm:
    cwd: path0
  vlc:
    path: path0
    volume: 100
  git:
    pull: origin master
    #merges automatically?

job2:
  chrome:
    url: url1
  pycharm:
    cwd: path1

This may also work for your example, what do you think?

chrome:
    url: [url0,url1...]
pycharm:
    cwd: [path0, path1]
vlc:
    path: path0
    volume: 100
git:
    pull: origin master
    #merges automatically?
agamm commented 5 years ago

Also, we may need to think about 80/20, what will be the most used use case, maybe we can favor simplicity (helps with a learning curve which is important for a project like this). For example: opening sublime, chrome and a terminal will become:

job0:
  sublime:
    cwd: blabla
  chrome:
    url: blabla
  terminal:
    cwd: blabla

instead of (which is less indented and doesn't have an unnecessary job0 wrapper):

sublime:
  cwd: blabla
chrome:
  url: blabla
terminal:
  cwd: blabla

A solution for the 20 maybe adding a parameter that makes the .comeback behave with jobs like gitlab. Or a shabang stlye patch for the config. Or just using something hybrid like the first comment I did.

Open to your thoughts :)

agamm commented 5 years ago

We will use JSON, as @yammesicka and @yoavgolan helped decide. So it will be a list of dicts.