PyPalm for Palm webOS development

18 12 2009

In the recent days I had the chance to get my hands on a Palm Pre and sure this device may not be as feature complete as Apples iPhone but the UI is appealing and it brings some new UI concepts into the game. The development environment is really nice since the Palm emulator is not homegrown piece of software but a plain small linux that boots into a browser using VirtualBox as a virtualization solution.

Now the developer can choose between using either his editor of choice and the supplied command line tools or use a plugin for Eclipse that was developed by Palm. From my point of view this gives the developer a real freedom to choose whatever development workflow he likes and does not force him into new IDEs where you have to start learning your work environment from the beginning.

However the command line tools have a little shortcoming as they do not derive information from the appinfo.json that is available in the application directory. For me the first thing I created was a deploy bash script that would allow me to package, build and deploy to the virtual machine in one step. Again the issue was that already available information about the application from config files was not derived.

So I started writing a small command line application called PyPalm in Python that would allow all that what I mentioned above and regroup the Palm tools together.

To install PyPalm just open a terminal and use easy_install or pip to install the package via the command:

sudo easy_install pypalm

As soon as this is completed you can enjoy the full power of PyPalm. Just change to your applications directory and execute

pypalm --help

to get an idea of the supported commands. When you now execute

pypalm deploy

it will automatically determine the current version and ID of the application from the configuration file and package your application plus installing it to the VM or the attached phone.

Neat, isn’t it?

Currently the feature set is kind of small but there can be more (generators,…). If you have any ideas please feel free to leave a comment.