// Add dependency on the protobuf plugin
buildscript {
    repositories {
        maven {
            // The google mirror is less flaky than mavenCentral()
            url "https://maven-central.storage-download.googleapis.com/repos/central/data/"
        }
    }
    dependencies {
        classpath libraries.protobuf_plugin
    }
}

description = 'gRPC: Protobuf Nano'

dependencies {
    compile project(':grpc-core'),
            libraries.protobuf_nano,
            libraries.guava
    signature "org.codehaus.mojo.signature:java16:1.1@signature"
}

configureProtoCompilation()

if (project.hasProperty('protobuf')) {
  protobuf {
    generateProtoTasks {
      all().each { task ->
        task.builtins {
          remove java
          javanano {
            option 'ignore_services=true'
          }
        }
      }
    }
  }
}

idea {
    module {
        sourceDirs += file("${projectDir}/src/generated/test/javanano");
    }
}
