|Best friends forever.|
Actually it wasn't much work to do since I posted here the last time. I added some fancy functions to take apart the AndroidManifest.xml file - it was necessary since starting the REPL requires the Internet permission, and I wanted it to be added automatically (if it wasn't not already there). Also I get the package name and the main activity name from the manifest in order to start the application from Leiningen. Not so necessary, but convenient.
I managed to make all the project dependencies to get totally AOT-compiled for the development build. Now all of them are available in the REPL (as it turned out, they were not before).
Added a "new" task to create Android projects using leiningen.new.templates library.
Designed a fancy macro for running subprocesses (which form the 90% of my plugin). Now the subprocess runs silently by default, but if it's return code is not zero, then it prints out the errors. With the DEBUG flag enabled it prints the messages even if the process finishes successfully.
|Android wields the parentheses |
filled with the Power of Lisp
Learned how to read passwords from the console in Java. The official javadocs suggest to fill the array of password characters with zeros as soon as the password is no longer needed. I wonder how many potentially-unsafe data Clojure leaves in memory when I convert the array to string and pass it around for a bit? And how long will it live before the GC cleans it out?
Put together a little tutorial to explain how to start using lein-droid.
And by the way - GSoC has officially begun! So things would only get more interesting. So stay tuned and enjoy the end of the spring ;).