Better Support for adding cores/boards/programmers/variants in user's Sketchbook

Hi !

So I am an Electrical Engineering student, but my love lies with Software (I have some contributions to the Android OS for eg). I just bought a couple Arduino boards for minor projects in college, and well, being an Eclipse/Idea aficionado, the IDE seemed pretty basic. While that is ok, I found quickly, that while adding libraries is easy peasy into Sketchbook/libraries folder, adding board, variant, core and programmer support wasn't as straightforward.

  1. I saw on todo.txt that splitting boards.txt into multiple files is on the cards. (I think splitting programmers.txt is a good idea too)

  2. Loading hardware files from sketchbook is provisioned in code, BUT, Packages and platforms seem to be HashMaps. So here lies a big problem.

if you have "ide/hardware/arduino/" and "sketchbook/hardware/arduino/", essentially, when you use IDE, only the boards/programmers in sketchbook are accessible, and the ones that came by default with IDE aren't because the "arduino" package from sketchbook overrides the IDE one.

Ideally ofcourse, it should be that anything I add in my sketchbook should be additional to the default IDE stuff (like it is for libraries). i.e. If the IDE supports 15 AVR boards and 2 ARM boards, if I add 2 AVR and 1 ARM board support via sketchbook, the IDE should allow me to use 17 AVR boards and 3 ARMs.

To that effect I have opened up a pull req

The commits in it are : -

  1. updating the todo.txt file a little. seems like it wasn't done in last 2 years.
  2. made boards.txt multifile (it is boards/*.txt now)
  3. added support for merging packages and platforms for hardwares, cores, variants, programmers. So you get support for all hardware that came with IDE, and in addition to that, those that you add in your sketchbook :slight_smile: