/**
 * 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': 'androidx.annotation:annotation:1.0.0-alpha1',
        'support-appcompat-v7': 'androidx.appcompat:appcompat:1.0.0-alpha1',
        'support-recyclerview-v7': 'androidx.recyclerview:recyclerview:1.0.0-alpha1'
    ]
}

apply from: 'rules.gradle'
