/**
 * Include this gradle file if you are building against this as a standalone gradle library project,
 * but are defining the compile SDK version and build tools version at the top-level.
 *
 * For example, you can include the following in your settings.gradle file:
 *      include ':setup-wizard-lib'
 *      project(':setup-wizard-lib').projectDir = new File(PATH_TO_THIS_DIRECTORY)
 *      project(':setup-wizard-lib').buildFileName = 'standalone-rules.gradle'
 *
 * And then you can include the :setup-wizard-lib project as one of your dependencies
 *      dependencies {
 *          compile project(path: ':setup-wizard-lib', configuration: 'gingerbreadCompatRelease')
 *      }
 */

ext {
    // For standalone project clients, since the source may not be available, we fetch the
    // dependencies from maven. To add a dependency, you want to specify something like this:
    //      ext {
    //          deps = ['project-name': 'com.example.group:project-name:1.0.0']
    //      }
    //
    // And then in rules.gradle you can reference the dependency by
    //      dependencies {
    //          compile deps['project-name']
    //      }
    //
    deps = [
        'support-annotations': 'com.android.support:support-annotations:23.4.0',
        'support-appcompat-v7': 'com.android.support:appcompat-v7:23.4.0',
        'support-recyclerview-v7': 'com.android.support:recyclerview-v7:23.4.0'
    ]
}

apply from: 'rules.gradle'
