Documentation for project.properties

I’m looking for detailed documentation about the project.properties file, but so far I have only come across webpages stating that the file gets generated through the Workbench. Unfortunately, none go into any depth on syntax or keywords. Does anyone know where the file spec and description can be found? Extra points if the document details how to create/modify by hand.

If such a document doesn’t exist, does anyone have a github link to the project.properties parser so I can figure it out on my own?

That’s easy: You can use any raw text editor to type in the text.
The only compulsory entry is name which should be the same as the “root” directory of the project and the main .ino or .cpp file of your project.
Additionally you can add library dependencies in the form

dependencies.<nameOfDesiredLibrary>=<desiredVersion_x.y.z>

(These entries were in fact the main reason for the introduction of project.properties, back in the days - to allow for cloud based libraries to be added to a project without the need for hosting the library sources locally)

Alternatively you can use particle project create to create the file structure for a valid project (including project.properties) and particle library add to add the dependencies entry.

However, it would be nice if Particle: Create New Project and particle project create would add a comment section at the top of the file which listed all available options for that file (@m_m, do you think that can be added - similar to library.properties created via particle library create?)

But for a successful build project.properties is only a minor piece of the jigsaw puzzle. Much more important is the correct file structure.
Info about that can be obtained from the README.md file that is created each time you create a new project via Workbench or CLI.
And for Workbench the more important file is actually settings.json.

Thanks. I might not have asked my question as clearly as I’d hoped. I’m looking for details about the semantics of the project.properties file. I have a Makefile build system which calls buildscripts/1.8.0/Makefile directly, as particle’s CLI did not afford me the flexibility I wanted for my project. In particular, I would like to be able to include/exclude certain files from a build, much like I can with a Makefile.

My hope is that I can find a mechanism for doing this via project.properties, as otherwise my recourse will either be crude hackery of a shadow build, or editing Particles make build system directly (which potentially introduces incompatibilities and conflicts at each official CLI release).

This would be great. Readme.md was a nice idea for a starting point as well, but unfortunately there are no particulars there about the properties syntax and/or parser.