blob: 0e3aab0db65ff2967e1842eef541b50ec15533fc [file] [log] [blame]
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',
],
)