Playdate SDK project management tool

Hello all, I'm super excited to be here! I've been playing with the SDK while I wait for my Playdate to arrive, and in doing so I noticed that the ecosystem seemed to be lacking a good project management tool.

Right now, as a developer I can rely on a few VSCode templates and tasks to help make development easier, but I really enjoy my neovim setup for lua development, so that's a little less than ideal. I really would love a tool along the lines of npm or cargo that helps me create new projects, build the pdx files, and run the project in the emulator, all from one command + subcommands.

So I went ahead and wrote that tool. I'm calling it toybox for now. Currently, it is somewhat rudimentary, and it does literally only the above mentioned tasks, provided that the SDK is already installed and available in your PATH:

  • toybox init - initializes a playdate project in the current folder by creating a pdxinfo if one doesn't already exist
  • toybox new - scaffolds a new project with a pdxinfo, a source folder with a main.lua that prints hello world on the screen
  • toybox build - reads the pdxinfo and calls pdc to compile the code in source, and outputs the pdx file to the target folder
  • toybox run - will build the pdx file by calling build first, then open the pdx file in the emulator.

All of the functionality above is already available by other means, but not in a single tool as far as I could see.

My question for the community is: Is there interest in such a tool? I would love to share it, and collaborate on making it better for everyone.

5 Likes

I think that's a great idea. What is your tool written in?

Reason I'm asking is because toybox is the name of the package manager that Jeremy MacAnally put together in Go and that I ported to Python.

Maybe there is some synergy there?

1 Like

Oh wow!!! I had no idea! Mine is written in rust, but it is way less developed than this!
The already existing toybox looks exactly like the tool I had been looking for.

As far as my code goes, I’ll share the repo here just for the curious, but beware the code is rough still.

Your toybox is definitely way more polished and useful :smiley:

As far as name goes, toybox is such a perfect name. I can see how this would happen.

I spent more time reading about toyboxpy. Actually, there's a lot of room for merging both tools.
I went with Rust because it is the language I use the most outside of ruby, and I figured having a nice compiled binary would be a plus, but that sort of makes integrating it with toyboxpy a little hard.

I can't really ask that toyboxpy be re-written in rust (not to say anything about the meme), but I am not really that proficient in python to contribute much individually. I would be pretty happy to put our heads together and see if we can find a way to merge the two. It would certainly move both projects closer to the tool I had in mind when I started this!

toybox.py only does dependency management at the moment. There is one setupMakefile command to help with bare-bone makefile setups but this definitely would need fleshing out.

There is definitely room to add the commands your tool has to toybox.py. We would just have to make sure all those work on all platforms.

Maybe an opportunity for you to brush up on your Python? If not, it's also cool for you to release yours as a separate tool too. It sounds useful.