Skip to content

Latest commit

 

History

History
117 lines (95 loc) · 3.82 KB

README.md

File metadata and controls

117 lines (95 loc) · 3.82 KB

dagger-doc

Download

Generate documentation for your Dagger topology. A annotation processor scans for Dagger2 annotations and generates a dependency graph out of it. The result writer of the annotation processor is pluggable (ServiceLocator). The default writer spits out a text file in mermaid syntax. You can convert this into a SVG by pasting it into the mermaid online editor. A result could look like that:

module-overview

News

  • 2019/05/15 - 0.4 Release: HTML Report
  • 2018/10/30 - 0.3 Release: Fix multiple multi bindings
  • 2018/10/25 - 0.2 Release: @ModuleDoc annotation with category/layer
  • 2018/10/12 - 0.1 Release: Show simple component/module relations

Usage

Gradle

  • Define a new configuration named 'daggerDoc':
configurations {
    daggerDoc
}
  • Setup the required dependencies:
dependencies {
    daggerDoc 'io.morethan.daggerdoc:dagger-doc-annotation-processor:0.2'
}
  • Add the daggerDoc task:
task daggerDoc(type: JavaCompile, group: 'build', description: 'Generates a visual dagger dependency report') {
    source = sourceSets.main.java
    classpath = configurations.compile + configurations.daggerDoc
    
    //log, mermaid, graphviz
    def writers = project.properties.get('writers', '');
    options.compilerArgs = [
            "-proc:only",
            "-processor", "io.morethan.daggerdoc.DaggerDocProcessor",
            "-Awriters=${writers}"
    ]
    destinationDir = file("build/reports/dagger")
}

Gradle KTS

  • Define a new configuration named 'daggerDoc':
val daggerDoc by configurations.creating
  • Setup the required dependencies:
dependencies {
    daggerDoc(group = "io.morethan.daggerdoc", name = "dagger-doc-annotation-processor", version = "0.2")
}
  • Add the daggerDoc task:
task<JavaCompile>("daggerDoc") {
    source = sourceSets["main"].java
    classpath = sourceSets["main"].runtimeClasspath + configurations.annotationProcessor + configurations["daggerDoc"]
    options.compilerArgs.addAll(arrayOf(
        "-proc:only", 
        "-processor", 
        "io.morethan.daggerdoc.DaggerDocProcessor"))
    destinationDir = file("build/reports/dagger")
}

Project Build

Useful Tasks

  • Build html report files
    • Plain NPM
    cd html-report
    npm run build
    npm run watch
    
    • With Gradle: ./gradlew npmBuild
  • Open index.html of html-report: ./gradlew openHtmlReport
  • Generate project reports for example project: ./gradlew daggerDoc --no-daemon --offline

Release Project

  • Tell gradle about the gpg key and sonatype/bintray/signing credentials, e.g. through ~/.gradle/gradle.properties

    • sonatypeUsername=$yourSonatypeUser
    • sonatypePassword=$yourSonatypePassword
    • bintrayUser=$yourBintrayUser
    • bintrayKey=$yourBintrayKey
    • signing.keyId=$yourKeyId
    • signing.password=$yourKeyPassphrase
    • signing.secretKeyRingFile=/Users/$username/.gnupg/secring.gpg
  • Increase version in build.properties to the release version and commit

  • Build the release: ./gradlew publish

  • Upload to Bintray repository: ./gradlew bintrayUpload and release the artifacts on https://bintray.com

  • Check artifacts for arrival: http://jcenter.bintray.com/io/morethan/daggerdoc/

  • Tag the release with

git tag -a $releaseVersion -m "Tag for $releaseVersion release"
git push --tags

Resources