import re ### Helper functions # List all jars matching globfile def get_all_jars(globfile): jar_deps = [] for jarfile in glob([globfile]): name = 'jars__' + re.sub(r'^.*/([^/]+)\.jar$', r'\1', jarfile) jar_deps.append(':' + name) prebuilt_jar( name = name, binary_jar = jarfile, ) return jar_deps # Generate the build config values from the gradle.properties file def get_build_config_values(filename): values = ['String APP_PN_KEY = "org.wordpress.android.playstore"'] for line in open(filename).readlines(): if line.startswith('wp.'): key, value = line.strip().replace(" ", "").split("=") key = key.replace("wp.", "").upper().replace(".", "_") values.append('String %s = "%s"' % (key, value)) return values ### Inject versionCode and versionName in the AndroidManifest.xml file genrule( name = 'processed_manifest', srcs = [ 'tools/inject_version_in_manifest.py', 'WordPress/src/main/AndroidManifest.xml', 'WordPress/build.gradle' ], cmd = 'tools/inject_version_in_manifest.py WordPress/src/main/AndroidManifest.xml WordPress/build.gradle > $OUT', out = 'AndroidManifest.xml', ) ### Define aar and jar dependencies / auto-generated remote_file( name = 'appcompat-v7-file', out = 'appcompat-v7.aar', url = 'mvn:com.android.support:appcompat-v7:aar:23.1.0', sha1 = '0ec99fae8716984ec56489fb45d1ae752724bae7', ) android_prebuilt_aar( name = 'appcompat-v7', aar = ':appcompat-v7-file', ) remote_file( name = 'cardview-v7-file', out = 'cardview-v7.aar', url = 'mvn:com.android.support:cardview-v7:aar:23.1.0', sha1 = '9c0994ace3fd3339ea99521e66570adb5df3d5b2', ) android_prebuilt_aar( name = 'cardview-v7', aar = ':cardview-v7-file', ) remote_file( name = 'design-file', out = 'design.aar', url = 'mvn:com.android.support:design:aar:23.1.0', sha1 = '88a6c3ea503e2740c2091e8d5112d383a21f05fe', ) android_prebuilt_aar( name = 'design', aar = ':design-file', ) remote_file( name = 'recyclerview-v7-file', out = 'recyclerview-v7.aar', url = 'mvn:com.android.support:recyclerview-v7:aar:23.1.0', sha1 = '9baf22ce2d5c1162365bfce00766e47ebd768fbc', ) android_prebuilt_aar( name = 'recyclerview-v7', aar = ':recyclerview-v7-file', ) remote_file( name = 'support-v13-file', out = 'support-v13.aar', url = 'mvn:com.android.support:support-v13:aar:23.1.0', sha1 = '77e34b6545e8594b102bf97c50c57071f161f88f', ) android_prebuilt_aar( name = 'support-v13', aar = ':support-v13-file', ) remote_file( name = 'support-v4-file', out = 'support-v4.aar', url = 'mvn:com.android.support:support-v4:aar:23.1.0', sha1 = '8820cb60b2eb5c707be237476fef1b78aa3ccdbe', ) android_prebuilt_aar( name = 'support-v4', aar = ':support-v4-file', ) remote_file( name = 'wpcomrest-file', out = 'wpcomrest.aar', url = 'mvn:com.automattic:rest:aar:1.0.2', sha1 = 'e632a6f347ae2ae39a01b22c5b2dd8f44d0116da', ) android_prebuilt_aar( name = 'wpcomrest', aar = ':wpcomrest-file', ) remote_file( name = 'tracks-file', out = 'tracks.aar', url = 'mvn:com.automattic:tracks:aar:1.1.0', sha1 = '2dbad8d69e7d118b6930115040d284f2319be497', ) android_prebuilt_aar( name = 'tracks', aar = ':tracks-file', ) remote_file( name = 'crashlytics-file', out = 'crashlytics.aar', url = 'mvn:com.crashlytics.sdk.android:crashlytics:aar:2.2.2', sha1 = 'b0b2570cfe1a36d8f4b9680ad62d2aabe51dc2f7', ) android_prebuilt_aar( name = 'crashlytics', aar = ':crashlytics-file', ) remote_file( name = 'photoview-file', out = 'photoview.aar', url = 'mvn:com.github.chrisbanes.photoview:library:aar:1.2.4', sha1 = '8abf92fe0df72a97547a172474dcd538722a5371', ) android_prebuilt_aar( name = 'photoview', aar = ':photoview-file', ) remote_file( name = 'play-services-gcm-file', out = 'play-services-gcm.aar', url = 'mvn:com.google.android.gms:play-services-gcm:aar:8.1.0', sha1 = 'd86d8b4c502c6169773b27496290ed5c0f294d73', ) android_prebuilt_aar( name = 'play-services-gcm', aar = ':play-services-gcm-file', ) remote_file( name = 'play-services-base-file', out = 'play-services-base.aar', url = 'mvn:com.google.android.gms:play-services-base:aar:8.1.0', sha1 = '6ec5b3f737b28a64818b5d245d839e2290994a49', ) android_prebuilt_aar( name = 'play-services-basement', aar = ':play-services-basement-file', ) remote_file( name = 'play-services-basement-file', out = 'play-services-basement.aar', url = 'mvn:com.google.android.gms:play-services-basement:aar:8.1.0', sha1 = '997dfcce730a948ff7a59d20fa38161a7d513720', ) android_prebuilt_aar( name = 'play-services-base', aar = ':play-services-base-file', ) remote_file( name = 'gson-file', out = 'gson.jar', url = 'mvn:com.google.code.gson:gson:jar:2.2.2', sha1 = '1f96456ca233dec780aa224bff076d8e8bca3908', ) prebuilt_jar( name = 'gson', binary_jar = ':gson-file', ) remote_file( name = 'helpshift-file', out = 'helpshift.aar', url = 'mvn:com.helpshift:android-aar:aar:3.12.0', sha1 = '113f25994931714e120a675d8abe9703aeab4699', ) android_prebuilt_aar( name = 'helpshift', aar = ':helpshift-file', ) remote_file( name = 'volley-file', out = 'volley.aar', url = 'mvn:com.mcxiaoke.volley:library:aar:1.0.18', sha1 = 'eb970d6cf6ae79345692431dc029e26828096758', ) android_prebuilt_aar( name = 'volley', aar = ':volley-file', ) remote_file( name = 'mixpanel-android-file', out = 'mixpanel-android.aar', url = 'mvn:com.mixpanel.android:mixpanel-android:aar:4.6.4', sha1 = '2ae3e05fdb0008a5cd0364a63ab03bd99b6b6205', ) android_prebuilt_aar( name = 'mixpanel-android', aar = ':mixpanel-android-file', ) remote_file( name = 'simperium-file', out = 'simperium.aar', url = 'mvn:com.simperium.android:simperium:aar:0.6.6', sha1 = '46a189de8974bdbf16ee20fc0cdd99f666650dff', ) android_prebuilt_aar( name = 'simperium', aar = ':simperium-file', ) remote_file( name = 'tagsoup-file', out = 'tagsoup.jar', url = 'mvn:org.ccil.cowan.tagsoup:tagsoup:jar:1.2.1', sha1 = '5584627487e984c03456266d3f8802eb85a9ce97', ) prebuilt_jar( name = 'tagsoup', binary_jar = ':tagsoup-file', ) remote_file( name = 'drag-sort-listview-file', out = 'drag-sort-listview.aar', url = 'mvn:org.wordpress:drag-sort-listview:aar:0.6.1', sha1 = '238699f638a40b9850d7dfabe65ffdf93cd9bfa2', ) android_prebuilt_aar( name = 'drag-sort-listview', aar = ':drag-sort-listview-file', ) remote_file( name = 'emailchecker-file', out = 'emailchecker.aar', url = 'mvn:org.wordpress:emailchecker:aar:0.3', sha1 = 'd5f9d7dbb36560357b4894495366bd80303d031d', ) android_prebuilt_aar( name = 'emailchecker', aar = ':emailchecker-file', ) remote_file( name = 'graphview-file', out = 'graphview.aar', url = 'mvn:org.wordpress:graphview:aar:3.4.0', sha1 = '710db0f26a101d4dc6042601e122469d5fcc1439', ) android_prebuilt_aar( name = 'graphview', aar = ':graphview-file', ) remote_file( name = 'mediapicker-file', out = 'mediapicker.aar', url = 'mvn:org.wordpress:mediapicker:aar:1.2.4', sha1 = 'ce142db12fb37e6f0d0dc08d76aeb2feb8ac711b', ) android_prebuilt_aar( name = 'mediapicker', aar = ':mediapicker-file', ) remote_file( name = 'passcodelock-file', out = 'passcodelock.aar', url = 'mvn:org.wordpress:passcodelock:aar:1.0.0', sha1 = 'b203d519db2f6ec0507fd1cb46e3f001da4db10e', ) android_prebuilt_aar( name = 'passcodelock', aar = ':passcodelock-file', ) remote_file( name = 'persistentedittext-file', out = 'persistentedittext.aar', url = 'mvn:org.wordpress:persistentedittext:aar:1.0.1', sha1 = 'ed8c682b51d2bdf70bf4dc879b92bc676422a1e8', ) android_prebuilt_aar( name = 'persistentedittext', aar = ':persistentedittext-file', ) remote_file( name = 'slidinguppanel-file', out = 'slidinguppanel.aar', url = 'mvn:org.wordpress:slidinguppanel:aar:1.0.0', sha1 = '225937b13cd93277379dbd5168206706a0f049a7', ) android_prebuilt_aar( name = 'slidinguppanel', aar = ':slidinguppanel-file', ) ## Manually created remote_file( name = 'androidpinning-file', out = 'androidpinning.aar', url = 'mvn:org.thoughtcrime.ssl.pinning:AndroidPinning:aar:1.0.0', sha1 = '01a3bcfa0b90580c3119f0eb2a620560b6e99495', ) android_prebuilt_aar( name = 'androidpinning', aar = ':androidpinning-file', ) remote_file( name = 'fabric-file', out = 'fabric.aar', url = 'mvn:io.fabric.sdk.android:fabric:aar:1.2.0', sha1 = '3ccb675269c6fc7b002bba0a97318d0109c4e3ae', ) android_prebuilt_aar( name = 'fabric', aar = ':fabric-file', ) remote_file( name = 'commons-lang-file', out = 'commons-lang.jar', url = 'mvn:commons-lang:commons-lang:jar:2.6', sha1 = '0ce1edb914c94ebc388f086c6827e8bdeec71ac2', ) prebuilt_jar( name = 'commons-lang', binary_jar = ':commons-lang-file' ) remote_file( name = 'support-annotations-file', out = 'support-annotations.jar', url = 'mvn:com.android.support:support-annotations:jar:23.1.0', sha1 = '92e3fc113ec3ee36b64603a38857b95700025633', ) prebuilt_jar( name = 'support-annotations', binary_jar = ':support-annotations-file' ) remote_file( name = 'eventbus-file', out = 'eventbus.jar', url = 'mvn:de.greenrobot:eventbus:jar:2.4.0', sha1 = 'ddd166d01b3158d1c00576d29f7ed15c030df719', ) prebuilt_jar( name = 'eventbus', binary_jar = ':eventbus-file', ) remote_file( name = 'androidasync-file', out = 'androidasync.jar', url = 'mvn:com.koushikdutta.async:androidasync:jar:2.1.3', sha1 = '52aed89a155265a48984ecc06aa8dec12674edad', ) prebuilt_jar( name = 'androidasync', binary_jar = ':androidasync-file', ) ### WordPressUtils android_build_config( name = 'build-config-utils', package = 'org.wordpress.android.util', ) android_resource( name = 'wpandroid-utils-res', package = 'org.wordpress.android.util', res = 'libs/utils/WordPressUtils/src/main/res', ) android_library( name = 'wpandroid-utils', srcs = glob(['libs/utils/WordPressUtils/src/main/java/**/*.java']), deps = [ ':support-v4', ':wpandroid-utils-res', ':build-config-utils', ':volley', ':commons-lang', ] ) ### WordPressEditor android_resource( name = 'wpandroid-editor-res', package = 'org.wordpress.android.editor', res = 'libs/editor/WordPressEditor/src/main/res', # TODO: exclude fonts assets = 'libs/editor/WordPressEditor/src/main/assets', ) android_library( name = 'wpandroid-editor', srcs = glob(['libs/editor/WordPressEditor/src/main/java/**/*.java']), deps = [ ':volley', ':support-v4', ':wpandroid-utils', ':wpanalytics', ':wpandroid-editor-res', ':appcompat-v7', ':support-annotations', ] ) ### WordPressAnalytics android_library( name = 'wpanalytics', srcs = glob(['libs/analytics/WordPressAnalytics/src/main/java/**/*.java']), deps = [ ':wpandroid-utils', ':mixpanel-android', ':tracks', ] ) ### WordPressNetworking android_library( name = 'wpnetworking', srcs = glob(['libs/networking/WordPressNetworking/src/main/java/**/*.java']), deps = [ ':wpcomrest', ':wpandroid-utils', ':volley', ] ) ### Main app keystore( name = 'debug_keystore', store = 'keystore/debug.keystore', properties = 'keystore/debug.keystore.properties', ) android_resource( name = 'zres', # when buck merge resources, it sort them by name, # the last one override previous package = 'org.wordpress.android', res = 'WordPress/src/main/res', assets = 'WordPress/src/main/assets', deps = [ ':appcompat-v7', ':design', ':passcodelock', ':wpandroid-utils', ':wpandroid-utils-res', ':wpandroid-editor-res', ':drag-sort-listview', ':mediapicker', ':cardview-v7', ] ) android_build_config( name = 'build-config', package = 'org.wordpress.android', values = get_build_config_values('WordPress/gradle.properties'), ) android_library( name = 'main-lib', srcs = glob(['WordPress/src/main/java/org/**/*.java']), deps = [ ':wpandroid-editor-res', ':zres', ':volley', ':appcompat-v7', ':support-v13', ':support-v4', ':design', ':recyclerview-v7', ':cardview-v7', ':persistentedittext', ':wpandroid-utils', ':wpandroid-editor', ':wpcomrest', ':wpanalytics', ':graphview', ':build-config', ':drag-sort-listview', ':simperium', ':mediapicker', ':slidinguppanel', ':passcodelock', ':wpnetworking', ':helpshift', ':emailchecker', ':crashlytics', ':fabric', ':photoview', ':androidpinning', ':support-annotations', ':commons-lang', ':eventbus', ':gson', ':tagsoup', ':play-services-gcm', ':play-services-base', ':play-services-basement', ':androidasync', ], ) android_binary( name = 'wpandroid', manifest = ':processed_manifest', keystore = ':debug_keystore', package_type = 'debug', deps = [ ':main-lib', ], )