Zake was created to take some of the repetitive work out of building SAPlink nuggets for release. One of the more tedious parts of running the SAPlink project (300+ downloads since Dec. 29th 06) is actually putting together the nugget so everyone can easily install it. Zake basically borrows what I believe to be the best of Rake, using Ruby syntax to create the build instructions, and will soon incorporate the ideas of Make, using file dependencies. It also borrows most of it’s name from those project too, except with my own slight SAP Z-program spin. I hope you find it useful sometime soon.
As of today, Zake allows you to script the regular ZSAPlink commands like, install an object from a Slinkee, add objects to a nugget, etc. It does all this with one difference — it can directly read your Subversion repository. When you tell Zake to get a file it can be from a HTTP address, which means you can commit a new version of a source file to your Subversion repository and then run a Zake script you have written and have a new nugget built without doing any real work yourself. Here is an example Zake script I used to build the Zake Nugget:
data zakeSlinkee type ref to if_ixml_document. data zake type ref to zake. create object zake exporting svnpath = 'http://saplink.googlecode.com'.
This builds the Zake object and attaches Zake to a web address, in this case the SAPlink hosting site. Zake will only read source files from HTTP addresses. If you want to use something internal feel free to setup your own Subversion server. If you ever hope to have multiple people working on your project you need a central version repository.
zakeSlinkee = zake->getFile( '/svn/trunk/Zake/CLAS_ZAKE.slnk' ).
Now you can ask Zake to fetch files from the SVN repository and build iXMLDocuments out of them.
zake->createNugget( 'Zake-0.0.1' ).
This creates an empty Nugget inside Zake with the specified name. Zake can manage many Nuggets at one time, which allows for more complex builds from your repository.
zake->AddObjectToNugget( nuggetName = 'Zake-0.0.1' xmlDocument = zakeSlinkee ).
This adds the zakeSlinkee to the nugget given in the name, again this allows you do whatever complex tasks you need.
zake->saveNugget( nuggetname = 'Zake-0.0.1' target = 'C:\foobar\nugg_zake.nugg' ).
This saves the Nugget to a local file, soon I hope to add the ability to upload this file to your SVN repository.
How to get it
If you want to download and play with Zake, you can get the current version here. Zake is dependent on SAPlink version 0.1.3 which can be downloaded from the SAPlink download page. The Zake command reference can be found in the wiki, it has all the current method syntax and description for release 0.0.1. Zake is just another ABAP class so to install it grab the Zake Nugget and use SAPlink to install it, then just activate the new class and you are all set.
Peer into the Future
In the future I hope to add a lot more features to Zake, things like syntax check, activation and maybe even add Unit testing via eCatt. With those features you could easily run your Zake script to put the object on your system as inactive, syntax check it, activate it and then run unit tests on it. The whole while producing a HTML document that reports any errors Zake has encountered. This file could then be posted along with your nugget back to your subversion repository. This would take elements from Make, Rake and even Mozilla’s Tinderbox to allow ABAP projects to easily build/maintain/unit test their systems and easily package them for distribution.