Sure. Note that with your patch, I needed to change the code a tiny bit. I just updated the code to that regard. Thanks,
Antoine On Wed, Sep 16, 2009 at 19:54, Alex Boisvert <[email protected]>wrote: > Antoine, > > Thanks for sharing! > > Would you mind if I copied the content on our wiki in the HOW-TO section? > I like having a one-stop-shop for all these little tips/tricks. > > alex > > > > On Wed, Sep 16, 2009 at 3:20 AM, Antoine Toulme > <[email protected]>wrote: > >> I posted a very quick guide to create a buildr plugin here: >> http://www.lunar-ocean.com/how-to-create-a-plugin-for-buildr/ >> >> I followed this guide to create the deb packaging plugin as well as >> buildr4osgi. >> >> Thanks, >> >> Antoine >> >> On Thu, Aug 20, 2009 at 22:19, Daniel Spiewak <[email protected]> >> wrote: >> >> > I agree. I (or someone else) will put it on there as soon as I get the >> > chance. >> > >> > Daniel >> > >> > On Wed, Aug 19, 2009 at 7:39 AM, Shane Witbeck < >> [email protected] >> > >wrote: >> > >> > > I haven't used your existing tasks yet but will give them a try when >> time >> > > permits. >> > > >> > > I think it would be worth putting the git guide you created for me on >> the >> > > wiki so other users who don't know how to use git have a lower hurdle >> if >> > > they want to fork/contribute. >> > > >> > > -Shane >> > > >> > > >> > > On Wed, Aug 19, 2009 at 12:32 AM, Daniel Spiewak <[email protected] >> > > >wrote: >> > > >> > > > I'm going to make a few tweaks as soon as I get the chance. In the >> > > > meantime, the best thing to do is to test this extension on a >> practical >> > > > project. Since you felt the need to write the :enhance task, I'm >> > > assuming >> > > > you're working on something with GAE. How well do the other tasks >> > work? >> > > > Do >> > > > they work at all? It's been a while since I played with it, and I >> > didn't >> > > > do >> > > > much intensive testing at the time. :-) >> > > > >> > > > Daniel >> > > > >> > > > On Tue, Aug 18, 2009 at 5:19 PM, Shane Witbeck < >> > [email protected] >> > > > >wrote: >> > > > >> > > > > After jumping through a few hoops, I updated my fork of gae.rb >> with >> > the >> > > > > enhance task. >> > > > > >> > > > > http://github.com/digitalsanctum/buildr/tree/gae >> > > > > >> > > > > -Shane >> > > > > >> > > > > >> > > > > On Mon, Aug 17, 2009 at 10:59 PM, Daniel Spiewak < >> > [email protected] >> > > > > >wrote: >> > > > > >> > > > > > I just looked at your GitHub home page (at >> > > > > > http://github.com/digitalsanctum). >> > > > > > I can see in your feed that you created the Buildr project, but >> I >> > > can't >> > > > > > navigate to it. Did you delete it? I suspect that this may be >> a >> > > case >> > > > > > where >> > > > > > GitHub got something stuck in its queue and is now refusing to >> > allow >> > > > > > anybody >> > > > > > access. You may have to open a support issue with them (they >> > usually >> > > > get >> > > > > > back to you within a few days). >> > > > > > >> > > > > > Daniel >> > > > > > >> > > > > > On Mon, Aug 17, 2009 at 8:52 PM, Shane Witbeck < >> > > > [email protected] >> > > > > > >wrote: >> > > > > > >> > > > > > > Daniel, >> > > > > > > >> > > > > > > All seemed to work fine except when I get to Step nine: >> > > > > > > >> > > > > > > jackal:buildr shane$ git push origin gae >> > > > > > > Repository not found. If you've just created it, please try >> again >> > > in >> > > > a >> > > > > > few >> > > > > > > seconds. >> > > > > > > fatal: The remote end hung up unexpectedly >> > > > > > > >> > > > > > > I had to do some manual hacking of my ~/.gitconfig file to get >> > this >> > > > > far. >> > > > > > > Here's what it looks like: >> > > > > > > >> > > > > > > [user] >> > > > > > > name = Shane Witbeck >> > > > > > > email = [email protected] >> > > > > > > [github] >> > > > > > > user = digitalsanctum >> > > > > > > token = 4704be457cb04aba23816c6d364a265d >> > > > > > > [remote "origin"] >> > > > > > > url = [email protected]:digitalsanctum/dotfiles.git >> > > > > > > >> > > > > > > >> > > > > > > Have any suggestions? >> > > > > > > >> > > > > > > Thanks, >> > > > > > > -Shane >> > > > > > > >> > > > > > > >> > > > > > > On Sun, Aug 16, 2009 at 6:08 PM, Daniel Spiewak < >> > > [email protected] >> > > > > >> > > > > > > wrote: >> > > > > > > >> > > > > > > > Actually, Apache mailing-lists seem to filter out >> attachments, >> > so >> > > I >> > > > > > never >> > > > > > > > got the file you sent. However, I can do you one better... >> > > > > > > > >> > > > > > > > *Presenting: Daniel Spiewak's Thirty Second Guide to >> > Contributing >> > > > to >> > > > > > > Buildr >> > > > > > > > using Git! >> > > > > > > > * >> > > > > > > > (ok, only thirty seconds if you type *really* fast) >> > > > > > > > >> > > > > > > > Step one: create a GitHub account. >> > > > > > > > Step two: clone the apache/buildr repository ( >> > > > > > > > http://github.com/apache/buildr) using the cleverly >> disguised >> > > > button >> > > > > > at >> > > > > > > > the >> > > > > > > > top. >> > > > > > > > Step three: hit the little "paste icon" next to the "Your >> Clone >> > > > URL". >> > > > > > > > Step four: install Git (use MsysGit on Windows). >> > > > > > > > Step five: run the following command in the directory you >> wish >> > to >> > > > > > contain >> > > > > > > > your buildr directory (paste the URL from earlier where >> > > indicated): >> > > > > > > > >> > > > > > > > $ git clone <url copied earlier> >> > > > > > > > $ cd buildr >> > > > > > > > >> > > > > > > > Step six: add my repository as a remote by using the >> following >> > > > > command. >> > > > > > > > Feel free to repeat this step for any other repositories you >> > wish >> > > > to >> > > > > > pull >> > > > > > > > from: >> > > > > > > > >> > > > > > > > $ git remote add daniel git:// >> github.com/djspiewak/buildr.git >> > > > > > > > >> > > > > > > > Step seven: fetch the changes from my repository: >> > > > > > > > >> > > > > > > > $ git fetch daniel >> > > > > > > > >> > > > > > > > Step eight: create a new branch based on my `gae` branch and >> > > select >> > > > > it >> > > > > > as >> > > > > > > > the current working branch: >> > > > > > > > >> > > > > > > > $ git branch gae daniel/gae >> > > > > > > > $ git checkout gae >> > > > > > > > >> > > > > > > > Step nine: hack, hack, hack, hack (you may find this >> cheatsheet >> > > > > > helpful: >> > > > > > > > http://ktown.kde.org/~zrusin/git/git-cheat-sheet-medium.png<http://ktown.kde.org/%7Ezrusin/git/git-cheat-sheet-medium.png> >> < >> > http://ktown.kde.org/%7Ezrusin/git/git-cheat-sheet-medium.png> >> > > <http://ktown.kde.org/%7Ezrusin/git/git-cheat-sheet-medium.png> >> > > > <http://ktown.kde.org/%7Ezrusin/git/git-cheat-sheet-medium.png> >> > > > > <http://ktown.kde.org/%7Ezrusin/git/git-cheat-sheet-medium.png> >> > > > > > <http://ktown.kde.org/%7Ezrusin/git/git-cheat-sheet-medium.png> >> > > > > > > < >> http://ktown.kde.org/%7Ezrusin/git/git-cheat-sheet-medium.png> >> > > > > > > > ) >> > > > > > > > Step ten: push your gae branch (including all of your >> commits) >> > up >> > > > to >> > > > > > your >> > > > > > > > clone of the Buildr repository: >> > > > > > > > >> > > > > > > > $ git push origin gae >> > > > > > > > >> > > > > > > > (note: once you have run the above command, future changes >> can >> > be >> > > > > > pushed >> > > > > > > > simply by running `git push`) >> > > > > > > > >> > > > > > > > Step eleven: let me know that you've made some changes! >> I'll >> > > pull >> > > > > your >> > > > > > > > changes into my repository (merging with my local gae >> branch). >> > > > > > > > >> > > > > > > > Rinse and repeat from step seven, and eventually we'll get >> > > > something >> > > > > > put >> > > > > > > > together that is ready to push into the main Buildr >> repository. >> > > > Once >> > > > > > > we're >> > > > > > > > ready, I'll merge our gae branch in with the trunk and >> commit >> > our >> > > > > > changes >> > > > > > > > using git-svn. It's easy! (actually, there's some legal >> > > releases >> > > > > > which >> > > > > > > > have to take place somewhere in there, but we can worry >> about >> > > those >> > > > > > > later) >> > > > > > > > >> > > > > > > > If you have any questions, feel free to ask here on the >> > > > mailing-list. >> > > > > > We >> > > > > > > > like to encourage contribution as much as possible, which is >> > the >> > > > main >> > > > > > > > reason >> > > > > > > > we have Git clones in the first place. You are of course >> free >> > to >> > > > > just >> > > > > > > send >> > > > > > > > us patch files (the best way to do this is by attaching them >> to >> > a >> > > > > JIRA >> > > > > > > > issue), but Git is a lot easier once you get the hang of it. >> > > > > > > > >> > > > > > > > Daniel >> > > > > > > > >> > > > > > > > On Sun, Aug 16, 2009 at 1:51 PM, Shane Witbeck < >> > > > > > [email protected] >> > > > > > > > >wrote: >> > > > > > > > >> > > > > > > > > Daniel, >> > > > > > > > > >> > > > > > > > > Thanks for the elaboration and pointer to the code you >> > started. >> > > I >> > > > > > added >> > > > > > > a >> > > > > > > > > "enhance" task to what you had in gae.rb and attached it. >> I'm >> > > not >> > > > > > > lingual >> > > > > > > > in >> > > > > > > > > git yet so I wasn't sure how to add it there. >> > > > > > > > > >> > > > > > > > > Thanks again, >> > > > > > > > > >> > > > > > > > > -Shane >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > On Sat, Aug 15, 2009 at 3:19 PM, Daniel Spiewak < >> > > > > [email protected] >> > > > > > > > >wrote: >> > > > > > > > > >> > > > > > > > >> Just to elaborate on this, we do accept submissions for >> > > > inclusion >> > > > > in >> > > > > > > the >> > > > > > > > >> core Buildr addons, but they do have to go through a >> review >> > > > > process >> > > > > > > and >> > > > > > > > >> such >> > > > > > > > >> before we determine whether or not there is enough >> interest >> > to >> > > > > merit >> > > > > > > > >> inclusion. A good, present-day example of this is the >> > (still >> > > > > > > > forthcoming) >> > > > > > > > >> checkstyle and pmd extensions, which have garnered >> > > considerable >> > > > > > > interest >> > > > > > > > >> and >> > > > > > > > >> are currently in the review/legal-release stage. >> > > > > > > > >> >> > > > > > > > >> As far as I'm concerned, GAE support would be very nice. >> > You >> > > > may >> > > > > > want >> > > > > > > > to >> > > > > > > > >> take a look at some preliminary work I've done in that >> > > > direction: >> > > > > > > > >> http://github.com/djspiewak/buildr (gae branch). I'm >> less >> > > > > > interested >> > > > > > > > in >> > > > > > > > >> Flex, but I know there have been other community members >> in >> > > the >> > > > > past >> > > > > > > who >> > > > > > > > >> have commented on Buildr's lack of support and requested >> > > > > improvement >> > > > > > > > >> (there >> > > > > > > > >> may even be an open issue in JIRA). >> > > > > > > > >> >> > > > > > > > >> Daniel >> > > > > > > > >> >> > > > > > > > >> On Sat, Aug 15, 2009 at 3:12 PM, Assaf Arkin < >> > > > [email protected]> >> > > > > > > > wrote: >> > > > > > > > >> >> > > > > > > > >> > On Sat, Aug 15, 2009 at 11:54 AM, Shane Witbeck < >> > > > > > > > >> [email protected] >> > > > > > > > >> > >wrote: >> > > > > > > > >> > >> > > > > > > > >> > > Daniel, >> > > > > > > > >> > > >> > > > > > > > >> > > Thanks a lot for the overview of extensions. I was >> > > actually >> > > > > more >> > > > > > > > >> > interested >> > > > > > > > >> > > in addon's found in addon/buildr such as openjpa.rb. >> My >> > > > > > apologies >> > > > > > > > for >> > > > > > > > >> not >> > > > > > > > >> > > being more clear with my naming of plugins vs. addons >> > vs. >> > > > > > > > extensions. >> > > > > > > > >> > Maybe >> > > > > > > > >> > > a better question to start would have been: When is >> it >> > > > > > appropriate >> > > > > > > > to >> > > > > > > > >> > > create >> > > > > > > > >> > > an addon vs. an extension? >> > > > > > > > >> > > >> > > > > > > > >> > > The topics I'm interested in creating an extension >> for >> > is >> > > > > around >> > > > > > > > Flex >> > > > > > > > >> and >> > > > > > > > >> > > Google App Engine for Java. GAE uses some bytecode >> > > > enhancement >> > > > > > > > similar >> > > > > > > > >> to >> > > > > > > > >> > > the OpenJPA addon that I'd like to be able to do from >> > > > Buildr. >> > > > > > > > >> > > >> > > > > > > > >> > > I'm familiar with extensions but I was under the >> > > impression >> > > > > that >> > > > > > > > >> > something >> > > > > > > > >> > > more robust in the works regarding a plugin >> framework. I >> > > > think >> > > > > > it >> > > > > > > > was >> > > > > > > > >> > Assaf >> > > > > > > > >> > > who mentioned it in a thread a while back. >> > > > > > > > >> > > >> > > > > > > > >> > > If extensions is meant to be the primary means of >> > > > "extending" >> > > > > > > > Buildr, >> > > > > > > > >> > > should >> > > > > > > > >> > > there be a less "ad-hoc" way of distributing them? >> > > > > > > > >> > >> > > > > > > > >> > >> > > > > > > > >> > There's a very robust extension API. We know it's >> robust >> > > > > because >> > > > > > > most >> > > > > > > > >> of >> > > > > > > > >> > Buildr is written in the form of extensions (compile, >> > test, >> > > > > > package, >> > > > > > > > etc >> > > > > > > > >> > are >> > > > > > > > >> > all extensions to a very small core). >> > > > > > > > >> > >> > > > > > > > >> > There are several ways to distribute extensions: >> > > > > > > > >> > - Put them in the same place (e.g. ~/.buildr) and >> require >> > > them >> > > > > > from >> > > > > > > > your >> > > > > > > > >> > buildfile >> > > > > > > > >> > - Put them in the project, typically under the tasks >> > > directory >> > > > > > > > >> > - As Ruby gems and specify which gems are used in the >> > > settings >> > > > > > file >> > > > > > > > >> > >> > > > > > > > >> > >> > > > > > > > >> > >> > > > > > > > >> > At some point in the past I split the Buildr code base >> in >> > > two. >> > > > > If >> > > > > > > it >> > > > > > > > >> was a >> > > > > > > > >> > core feature and well tested it went into core. If it >> > > wasn't >> > > > a >> > > > > > core >> > > > > > > > >> > feature, or simply untested, it went into addon. The >> idea >> > > was >> > > > > to >> > > > > > > > >> extract >> > > > > > > > >> > some addons into separate plugins (e.g. OpenJPA is a >> good >> > > > > > candidate) >> > > > > > > > and >> > > > > > > > >> > shame other addons into getting test coverage and >> entering >> > > > core >> > > > > > (e.g >> > > > > > > > >> > Jetty). >> > > > > > > > >> > >> > > > > > > > >> > Assaf >> > > > > > > > >> > >> > > > > > > > >> > >> > > > > > > > >> > >> > > > > > > > >> > > >> > > > > > > > >> > > >> > > > > > > > >> > > Thanks again, >> > > > > > > > >> > > >> > > > > > > > >> > > -Shane >> > > > > > > > >> > > >> > > > > > > > >> > > >> > > > > > > > >> > > On Sat, Aug 15, 2009 at 1:06 PM, Daniel Spiewak < >> > > > > > > > [email protected]> >> > > > > > > > >> > > wrote: >> > > > > > > > >> > > >> > > > > > > > >> > > > Actually, this is pretty much all you need to know: >> > > > > > > > >> > > > >> http://buildr.apache.org/extending.html#extensionsThese >> > > > > > docs >> > > > > > > > were >> > > > > > > > >> > > enough >> > > > > > > > >> > > > to get me up and running, building my first >> extension >> > > not >> > > > so >> > > > > > > long >> > > > > > > > >> ago. >> > > > > > > > >> > > > Buildr doesn't have formal plugins in the Maven >> sense; >> > > > > > > extensions >> > > > > > > > >> > require >> > > > > > > > >> > > a >> > > > > > > > >> > > > lot less ceremony. All you need to do is create >> the >> > > > > extension >> > > > > > > > >> > according >> > > > > > > > >> > > to >> > > > > > > > >> > > > the documentation previously linked, place it in a >> .rb >> > > > file >> > > > > > and >> > > > > > > > >> require >> > > > > > > > >> > > > that >> > > > > > > > >> > > > file from within your buildfile. It's pretty much >> as >> > > > simple >> > > > > > as >> > > > > > > > >> that. >> > > > > > > > >> > > > >> > > > > > > > >> > > > Distribution of extensions is usually pretty >> ad-hoc. >> > > > > However, >> > > > > > > it >> > > > > > > > is >> > > > > > > > >> > > > possible to package up a Buildr extension as a Ruby >> > Gem, >> > > > > which >> > > > > > > can >> > > > > > > > >> then >> > > > > > > > >> > > be >> > > > > > > > >> > > > uploaded to the Rubyforge repository and made >> > accessible >> > > > to >> > > > > > all >> > > > > > > > >> Buildr >> > > > > > > > >> > > > users >> > > > > > > > >> > > > through the following mechanism: >> > > > > > > > >> > > > http://buildr.apache.org/more_stuff.html#gems >> > > > > > > > >> > > > >> > > > > > > > >> > > > As for best practices, usually you will want to >> RDoc >> > any >> > > > > major >> > > > > > > > >> methods. >> > > > > > > > >> > > > Testing is nice, but it can be a little difficult >> to >> > > setup >> > > > a >> > > > > > > > formal >> > > > > > > > >> > test >> > > > > > > > >> > > > suite for a simple extension (Buildr's own test >> suite >> > > has >> > > > > some >> > > > > > > > >> fairly >> > > > > > > > >> > > > extensive infrastructure to ease this process). >> All >> > of >> > > my >> > > > > > "for >> > > > > > > > >> self" >> > > > > > > > >> > > > extensions have been tested mainly by hand (yeah, >> I'm >> > > > lazy). >> > > > > > > > >> > > > Architecturally, you should follow the example set >> by >> > > the >> > > > > Java >> > > > > > > > >> compiler >> > > > > > > > >> > > > (lib/buildr/java/compiler.rb). Buildr itself is >> just >> > a >> > > > set >> > > > > of >> > > > > > > > >> > extensions >> > > > > > > > >> > > > (even "core" functionality), so examples abound if >> > > you're >> > > > > > > willing >> > > > > > > > to >> > > > > > > > >> > look >> > > > > > > > >> > > > at >> > > > > > > > >> > > > the source code. >> > > > > > > > >> > > > >> > > > > > > > >> > > > Daniel >> > > > > > > > >> > > > >> > > > > > > > >> > > > On Sat, Aug 15, 2009 at 11:19 AM, Shane Witbeck < >> > > > > > > > >> > > [email protected] >> > > > > > > > >> > > > >wrote: >> > > > > > > > >> > > > >> > > > > > > > >> > > > > I'm looking for docs (other than looking at >> existing >> > > > > > plugins) >> > > > > > > to >> > > > > > > > >> help >> > > > > > > > >> > > me >> > > > > > > > >> > > > > determine the steps for building a plugin. Does >> > > anything >> > > > > > like >> > > > > > > > this >> > > > > > > > >> > > exist? >> > > > > > > > >> > > > > Any tips in terms of what a complete plugin >> should >> > > have >> > > > > (ie. >> > > > > > > > >> tests, >> > > > > > > > >> > > etc.) >> > > > > > > > >> > > > > before submitting it would be helpful as well. >> > > > > > > > >> > > > > >> > > > > > > > >> > > > > If formal docs on this topic don't already exist, >> I >> > > > think >> > > > > > this >> > > > > > > > >> would >> > > > > > > > >> > be >> > > > > > > > >> > > a >> > > > > > > > >> > > > > big help to Buildr and it's users. >> > > > > > > > >> > > > > >> > > > > > > > >> > > > > Thanks, >> > > > > > > > >> > > > > >> > > > > > > > >> > > > > -Shane >> > > > > > > > >> > > > > >> > > > > > > > >> > > > >> > > > > > > > >> > > >> > > > > > > > >> > >> > > > > > > > >> >> > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> > >
