Properties localProperties = new Properties() def localPropertiesFile = project.rootProject.file('local.properties') if (localPropertiesFile.exists()) { localProperties.load(localPropertiesFile.newDataInputStream()) } ext.readRawSecretOrNull = { secretName -> def localPropSecret = localProperties.getProperty(secretName) def secret = (localPropSecret != null) ? localPropSecret : System.getenv(secretName) if (secret == null || secret.isEmpty()) return null return secret } ext.readStringSecretOrNull = { secretName -> def secret = readRawSecretOrNull(secretName) if (secret == null) return null return maybeWrapInQuotes(secret) } ext.readStringSecret = { secretName -> return readStringSecretOrNull(secretName) ?: secretNotFound(secretName) } private static def secretNotFound(secretName) { throw new NoSuchElementException("${secretName} secret is not found in local.properties or environment variables") } static def maybeWrapInQuotes(content) { return content.startsWith("\"") ? content : "\"" + content + "\"" }