build.gradle revision 181c04c839c38d6f2b9ef6214c2ec858307a70ee
1181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver/*
2181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * Copyright 2012, Google Inc.
3181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * All rights reserved.
4181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver *
5181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * Redistribution and use in source and binary forms, with or without
6181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * modification, are permitted provided that the following conditions are
7181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * met:
8181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver *
9181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver *     * Redistributions of source code must retain the above copyright
10181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * notice, this list of conditions and the following disclaimer.
11181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver *     * Redistributions in binary form must reproduce the above
12181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * copyright notice, this list of conditions and the following disclaimer
13181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * in the documentation and/or other materials provided with the
14181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * distribution.
15181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver *     * Neither the name of Google Inc. nor the names of its
16181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * contributors may be used to endorse or promote products derived from
17181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * this software without specific prior written permission.
18181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver *
19181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver */
31181c04c839c38d6f2b9ef6214c2ec858307a70eeBen Gruver
327d7ee58ad94dc2ea4cd35e3b8e14577648e3bdddBen Gruversubprojects {
337d7ee58ad94dc2ea4cd35e3b8e14577648e3bdddBen Gruver    apply plugin: 'java'
347d7ee58ad94dc2ea4cd35e3b8e14577648e3bdddBen Gruver
355cf9fe7c0af588670265a5804dfae9ab8bb5c391Ben Gruver    ext.baseVersion = '1.3.4'
365cf9fe7c0af588670265a5804dfae9ab8bb5c391Ben Gruver    ext.jarVersion = baseVersion
377d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver
387d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver    // For non-release builds, we want to append the commit and
397d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver    // dirty status to the version
407d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver    gradle.taskGraph.whenReady {
417d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver        if (!it.hasTask(release)) {
427d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver            def versionSuffix
437d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver            try {
447d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver                def git = org.eclipse.jgit.api.Git.open(file('.'))
457d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver                def head = git.getRepository().getRef("HEAD")
467d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver                versionSuffix = head.getObjectId().abbreviate(8).name()
477d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver
487d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver                if (!git.status().call().clean) {
497d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver                    versionSuffix += '-dirty'
507d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver                }
517d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver            } catch (Exception) {
527d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver                // In case we can't get the commit for some reason,
537d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver                // just use -dev
547d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver                versionSuffix = 'dev'
557d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver            }
567d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver
575cf9fe7c0af588670265a5804dfae9ab8bb5c391Ben Gruver            version = baseVersion + '-' + versionSuffix
585cf9fe7c0af588670265a5804dfae9ab8bb5c391Ben Gruver
595cf9fe7c0af588670265a5804dfae9ab8bb5c391Ben Gruver            // use <version>-dev for the jar name, rather than the
605cf9fe7c0af588670265a5804dfae9ab8bb5c391Ben Gruver            // full commit+dirty string
615cf9fe7c0af588670265a5804dfae9ab8bb5c391Ben Gruver            jarVersion = baseVersion + '-dev'
62c9afead1a95863a28f58df4a46d9395c2a918ad5Ben Gruver        } else {
63c9afead1a95863a28f58df4a46d9395c2a918ad5Ben Gruver            version = baseVersion
645cf9fe7c0af588670265a5804dfae9ab8bb5c391Ben Gruver        }
655cf9fe7c0af588670265a5804dfae9ab8bb5c391Ben Gruver
665cf9fe7c0af588670265a5804dfae9ab8bb5c391Ben Gruver        jar {
675cf9fe7c0af588670265a5804dfae9ab8bb5c391Ben Gruver            version = jarVersion
687d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver        }
697d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver    }
707d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver
717d7ee58ad94dc2ea4cd35e3b8e14577648e3bdddBen Gruver    repositories {
727d7ee58ad94dc2ea4cd35e3b8e14577648e3bdddBen Gruver        mavenCentral()
737d7ee58ad94dc2ea4cd35e3b8e14577648e3bdddBen Gruver    }
747d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver
757d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver    // Note: please don't use this. This is strictly for the official releases
767d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver    // that are posted on the googlecode download page.
777d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver    task release {
787d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver    }
797d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver}
807d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver
817d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver
827d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruverbuildscript {
837d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver    repositories {
847d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver        mavenCentral()
857d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver    }
867d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver    dependencies {
877d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver        classpath 'org.eclipse.jgit:org.eclipse.jgit:2.0.0.201206130900-r'
887d1263a4ff78ce92b2008e4664fb855f7d03da87Ben Gruver    }
897d7ee58ad94dc2ea4cd35e3b8e14577648e3bdddBen Gruver}