package com.kickstarter.libs;
import android.content.pm.PackageInfo;
import android.support.annotation.NonNull;
import com.kickstarter.BuildConfig;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import java.util.Locale;
public final class Build {
private final PackageInfo packageInfo;
public Build(final @NonNull PackageInfo packageInfo) {
this.packageInfo = packageInfo;
}
public @NonNull String applicationId() {
return packageInfo.packageName;
}
public DateTime dateTime() {
return new DateTime(BuildConfig.BUILD_DATE, DateTimeZone.UTC).withZone(DateTimeZone.getDefault());
}
public static boolean isInternal() {
return BuildConfig.FLAVOR_AUDIENCE.equals("internal");
}
public static boolean isExternal() {
return !isInternal();
}
/**
* Returns `true` if the build is compiled in debug mode, `false` otherwise.
*/
public boolean isDebug() {
return BuildConfig.DEBUG;
}
/**
* Returns `true` if the build is compiled in release mode, `false` otherwise.
*/
public boolean isRelease() {
return !BuildConfig.DEBUG;
}
public String sha() {
return BuildConfig.GIT_SHA;
}
public Integer versionCode() {
return packageInfo.versionCode;
}
public String versionName() {
return packageInfo.versionName;
}
public String variant() {
// e.g. internalDebug, externalRelease
return new StringBuilder().append(BuildConfig.FLAVOR_AUDIENCE)
.append(BuildConfig.BUILD_TYPE.substring(0, 1).toUpperCase(Locale.US))
.append(BuildConfig.BUILD_TYPE.substring(1))
.toString();
}
}