From e5a29beb96d9fc8a31e9f0adc650f6b2bd09c4ec Mon Sep 17 00:00:00 2001 From: Sam Judd Date: Fri, 23 Sep 2022 15:36:58 -0700 Subject: [PATCH] Add an integration with Dokka to generate Glide docs. --- build.gradle | 78 ++++++++++++++++++++++++++++++----- gradle.properties | 2 + library/build.gradle | 13 ++++++ static/glide_circle_logo.png | Bin 0 -> 6795 bytes static/logo-icon.svg | 7 ++++ static/logo-styles.css | 17 ++++++++ 6 files changed, 107 insertions(+), 10 deletions(-) create mode 100644 static/glide_circle_logo.png create mode 100644 static/logo-icon.svg create mode 100644 static/logo-styles.css diff --git a/build.gradle b/build.gradle index ca02d253e9..0885f50b6b 100644 --- a/build.gradle +++ b/build.gradle @@ -5,27 +5,31 @@ buildscript { repositories { google() mavenCentral() - maven { - url "https://oss.sonatype.org/content/repositories/snapshots" - } gradlePluginPortal() } dependencies { - classpath "com.android.tools.build:gradle:${ANDROID_GRADLE_VERSION}" + classpath "com.android.tools.build:gradle:$ANDROID_GRADLE_VERSION" if (!hasProperty('DISABLE_ERROR_PRONE')) { - classpath "net.ltgt.gradle:gradle-errorprone-plugin:${ERROR_PRONE_PLUGIN_VERSION}" + classpath "net.ltgt.gradle:gradle-errorprone-plugin:$ERROR_PRONE_PLUGIN_VERSION" } classpath 'com.guardsquare:proguard-gradle:7.1.0' - classpath "se.bjurr.violations:violations-gradle-plugin:${VIOLATIONS_PLUGIN_VERSION}" - classpath "androidx.benchmark:benchmark-gradle-plugin:${ANDROID_X_BENCHMARK_VERSION}" - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${JETBRAINS_KOTLIN_VERSION}" + classpath "se.bjurr.violations:violations-gradle-plugin:$VIOLATIONS_PLUGIN_VERSION" + classpath "androidx.benchmark:benchmark-gradle-plugin:$ANDROID_X_BENCHMARK_VERSION" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$JETBRAINS_KOTLIN_VERSION" classpath "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin:$KSP_GRADLE_PLUGIN_VERSION" - classpath "org.jetbrains.kotlinx:binary-compatibility-validator:0.11.0" + classpath "org.jetbrains.kotlinx:binary-compatibility-validator:$JETBRAINS_KOTLINX_BINARY_COMPATIBILITY_VALIDATOR_VERSION" + classpath "org.jetbrains.dokka:dokka-gradle-plugin:$JETBRAINS_DOKKA_VERSION" } } +repositories { + google() + mavenCentral() +} + apply plugin: 'binary-compatibility-validator' +apply plugin: 'org.jetbrains.dokka' apiValidation { ignoredProjects += ["ksp", "test", "gallery"] @@ -41,8 +45,23 @@ if (JavaVersion.current().isJava8Compatible()) { } } -subprojects { project -> +dokkaHtmlMultiModule.configure { + moduleName.set("Glide") +} +afterEvaluate { + tasks.named("dokkaHtmlMultiModule") { + pluginsMapConfiguration.set( + [ + "org.jetbrains.dokka.base.DokkaBase": """{ + "customStyleSheets": ["${projectDir.toString()}/static/logo-styles.css"], + "customAssets" : ["${projectDir.toString()}/static/logo-icon.svg", "${projectDir.toString()}/static/glide_circle_logo.png"] + }""" + ] + ) + } +} +subprojects { project -> repositories { google() mavenCentral() @@ -61,6 +80,45 @@ subprojects { project -> } } + // Exclude packages not intended for public use. + if (![ + "testutil", + "flickr", + "giphy", + "imgur", + "svg", + "gallery", + "contacturi", + "test", + "gif_decoder", + "gifencoder", + "compiler", + "benchmark", + "instrumentation" + ].contains(project.getName())) { + afterEvaluate { + project.apply plugin: 'org.jetbrains.dokka' + + project.tasks.dokkaHtmlPartial.configure { + dokkaSourceSets { + // Kotlin works out of the box + if (!project.plugins.hasPlugin("kotlin-android") && project.plugins.hasPlugin("com.android.library")) { + // Java Android modules + register("main") { + sourceRoots.from(project.android.sourceSets.main.java.srcDirs) + + } + } else if (project.plugins.hasPlugin("java") && "ksp" != project.getName()) { + // Java only modules (ksp is not useful and uses multiple plugins) + register("main") { + sourceRoots.from(sourceSets.main.java.srcDirs) + } + } + } + } + } + } + tasks.withType(JavaCompile) { // gifencoder is a legacy project that has a ton of warnings and is basically never // modified, so we're not going to worry about cleaning it up. diff --git a/gradle.properties b/gradle.properties index 4c8c2e7b8e..5aaa543099 100644 --- a/gradle.properties +++ b/gradle.properties @@ -71,6 +71,8 @@ JETBRAINS_KOTLINX_COROUTINES_VERSION=1.6.4 JETBRAINS_KOTLINX_COROUTINES_TEST_VERSION=1.6.4 JETBRAINS_KOTLIN_VERSION=1.7.0 JETBRAINS_KOTLIN_TEST_VERSION=1.7.0 +JETBRAINS_KOTLINX_BINARY_COMPATIBILITY_VALIDATOR_VERSION=0.11.0 +JETBRAINS_DOKKA_VERSION=1.7.10 ## Other dependency versions ACCOMPANIEST_VERSION=0.25.1 diff --git a/library/build.gradle b/library/build.gradle index 8bbc1c7ee4..846a10998a 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -69,6 +69,19 @@ android { } } +// Change the name to make it a little more obvious where the main library +// documentation has gone. Using a capital letter happens to make this first in +// the list too... +afterEvaluate { + dokkaHtmlPartial.configure { + dokkaSourceSets { + named("main") { + moduleName.set("Glide") + } + } + } +} + check.dependsOn(':library:pmd:pmd') check.dependsOn(':library:test:check') diff --git a/static/glide_circle_logo.png b/static/glide_circle_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3b6daa24cc4cf7443d54344f432b294f387c3b93 GIT binary patch literal 6795 zcmZ`;2UJsAvpyjZI#Q$vC;=5TKoUSeYUnDx6Oadx)%`yQJN5{bP_B` zM+v=3lMbTN%M0H7-~Yb5-pg7!d(O-^`sg(FJlWucMc;7H(E(s&nFgQ)K>#pW0s$1{3+rDph%8_FuRhutp!|&i07dc$ z0N`xUf05Y~e_M;Q!GFtzC&0b>6%_!Wm~}Qr`=NETW$iuP;kLIt?Xd75cdruwARi=4 z7TvLaw$LDVHxFOgAO(Tn2wAdxqDBZne?$CS6$H>a`cPF*A1qV~j)Wrx6zQN)sJzcD z2U$ZkjlbNnKW9%5=*hgccAoxz3IYNrM1Oz&jMLBA;lE5CzJH}fP7rZoL5RVT zi2utC8|3`|xSd%3bo-sxpLFsklgX-jx_kLxeSOJcDT>MeCiq{v|AzM`-Vp2S>E?fu zg^7o=pQ89*F8@;h+e^>K8B1Q46Su!v{;B&nUf;>n&y!ptA7}d;9)4IKa)^I<|A+AZ zNBm>1le}g1orAD$Xfa0g4OLaDw>X7L^{Ml|5mTAjhb#qi9d0`O{&q*Q89u__N+`^u(O z&iQnx#0RIau_93czXeqIwv z*@eZf7h4T*>w90o)%BJx2yvU4+(J(i(Nm&IgTsc%P_ccIz(BGjLK3sw8oq|Vte|u0 zA|}-JKs2BpwxZQ_w)l{#VENA6*tE>NAF|N2D5 z!=*YigtTgGkln?O-|(TrU?B?6-WbF`xzq75bG8k<{WzgZ=L_C_^UdKp!U4Mbvt4Ol zTR5u((l`r21H$sU=s}H0cI~}&>PLzE5aSjHG)I)?)}seJnv6;}udmq$M@exKmC;;?QC8?H}E_5-zS{tS4CbemRZfduzHL6+$+!5>i|J-KnP3hGcuj* zb{=~RI_pbDpx(`qD%aasQCG|aV*KN!hVO0QRl8IdCXqsXTGKM@xaZ&!Nkx|=z19@2 zr5gR+OgkVqBKlUk#cXJxyZb20nG~@flnO7^20ARw+#Dnad2l-}I^pRLr0(Mv=C0Fb z6MFFaB@jtKr|t4iP;B7K9n>6dwN~cABYP^C*YVnFLo&4p{rqrhp)w;E%PpJS#in;| z63T^idALM-D)$J^0PDmh$%yQeflKgx5p-i%GOkD)IU7s!0{H6XgfPdRajeAR<`=AOB5O-R76I42GJT39gRR7LBjN#JLN&=wMC*0K%}(ruSL$MoljiQ88m(`BzUXwfetX&@bTOr$9rG)`On3&TpBZmz2x zVJjb3_9C*u;G3tM+SY@I-%UmziY=(iM<^rh6l@gBzA?Q!Uk4d!3H&@&&ldGZ(6w0L z=0zCr1fA71qyN(6(7~)G=2RptD+Or^HSt5K*ZJMjIPI3|r8h4%FH(r)QpDeoBdyl) zjrqza(&2Q&dgJqRYt)3FM{g!1oK4Ar+-QW9fkx@w^6#1{-KT@@99UWeJveqfltqnps-csCeig?Zwq0_n<;8beQ({BUK`ZIX3C`F) z0*EY+;-EQjC9n6zXVVUD?LwE_Ik1U$@o!fR~?Bof%0BMX7J&eS> zmkJv`xQzk3%LUlm>c=T2LfkBgpRLj=sG3n)0e9_sb>L5RZir6j!#c)W zr#s6HajSI28bi=#RD6ZY!V9jS0#ZzLku0O%u|M9%oT^NinNOr}GjSNKF$Q$b&GQqa zl$DV|6Npk~NeqkC#(3PqY1$!JS4r0R@q|BtehHt(Z`i+cx?=R>iZS3O zAW^R(_Y}(I#FL@g8OUEozSjnG|kYWke2U_@c#k zSrJsNw5$um=+YlI;k37R=_o~f7rGYM=|Do|Rc zSyyohY?N#y)YVoPUR}OdVvc?Yd6)W(;p-4~W8h~3T?mUit2B*9!?})mBXFR=B|<0< zCNzTP<68gTQs(-p@xp}c$8EWh)@oNI+N7i|Clj^MNXHE%sJih$`D-5^P+8enA#1Y z`SDVqY2u-IgLlirq|Op3!kt;WHyy{FUVG|+RB+}#&b^Z7+76o_uh4MT#iGDx*_;Ni z;x1Yk2qt%pQO|o2v3&T{nJb46vR$pdkb~Y6Bv*B%QW<%v6(Q}#H)N}*QGE)%wKein z0$1X{Q8Z%y>SZ$UF}a_CzFcQapc{3#kHhjh(Vdp!SJtoIE*d!lOM>8Gk(d@^i3IKq zz3@}`iO2|k;)wIM<2?|l=L2I1aT#ewZspAbpKQph3uzWc`SH}~JMACX>gJuveYM0Z zy`Y|4Bu=A|oPf=S%pVx%%iRkJ#^tSLQ|K+EzaA&2;X6i7qof_mWgulE<-|9{u!Lp6 z{K%$os=RWJBKd_lc`f(mUb(Sc(~F=+Z(+ZPHo;LJI;^+*11Hl)nUlzMi84A%Udq<; z%QxRYsSd$m#VD5s;h*hfW(&z7FiGC%jlXo$pZUS1ECi1lW8G&9+4@T3wVr8DpCNDV zG>-Nz0W!t@T%9M&wL#Os`~5?Cc`o6plR8^PTHHSc+S_3?8Y|QtuU5dz-e_a3Qh84p zFkm27ANi~}5~CELFK)}1e$UfJSu?fjoIqLR9TT|@vDf6LYE7AAeKW+F%%7t*C_2q0 zi}^a5mKBLDF={0Di5WXwbVaxW%C(}}>HivHVHhd0M5iP3MI`qf!Xd=7=zk3RC|2(+Ikhsf4Zw+8N`!!swJ z{Z%v)q+0&z#Ag57mV{WYIi<}*aHvJaH^}VPv`H69JbG^_?UGG}shG&RIPpHaJdRwW0BiEwra5dkDb!=|qpN-hAvJ<-s>_7s zXJk3DM}h{jf7&;5DG2$0Do*YyD-!FQt4x>DGP#3r*rS>sccKu5@Sc-r)#2-xmZo@`NMh6BW_Z&t zc=M7WDHw-!9dXU$((z=*=1@4L6<-2z{S!`zQd!rX%D5ly3raR5lF(? zL#NcQiy-jEC6M;p72Rh&_*VVTryj01VOV6jNAd|t;mdA`Hr7X4f*5SY+x^_h6wYGI zmQ}*n@n{X9N!Sucjo-$@{?J9c%53Q1fcs#Ab#3rY9mR3ToX5N4CjZ!jd+wX5uA-Am zyMxCVQqJ6MkpEjSUtKWcrDmm3XqZxJIOnjdSG7f^xmzm}KFpFB@6HX$id z!=M&;s0%*s90iviA6`E0Lxh9Dz&*N{x}qFNoj%CmI5a@FX5&^Tf^h-(IlNvQJ>4%4 z$>CvVc27*@epbH|{t#}gL>kZWyI|weoA9N@`zL7hO?F3+Ku6g8-gx*x0$t43bxp<+ z509GT!@Z)&arMPH_&Y6edHx?9FPFoYspAA|~0w=`prS4^tRL0hrgfPv}KXn)ey3CU@*- zV7o@&EG|hRW69|SVZyc@q)51utk4~`9R~U+=SsOz?%1dYH>Jqg?_DzhC*|Yv<>bY_ zwp|_&zO+B>HOer0zE*SmW^|x#Nrnd1dmdIb#)+|@j?d%5&?Q*v*EU)`{gl|xAQ^(n zYZ1YMyuu$mJnv>V7Jg}bH${!^7=W`WP?r0@s&5e2L&lelXre8ZdTGiC&!L^;ke!now zGHl%U48XoK%u|{o-X!gI;M@(8#0j~KoZh;-P387hbwsnz+l0I@=VLMtf2G8yyr9TA za?Z-fqc=`|{HxcZnJ7hSPEXmnaY^gRZPXm56daaLghd&Xdnq7V2qtg-A!N8*wapGa zszeCkto0CHna=iQ&a{?+m0o9AGAS?UO;iAkbOrIA`8Vsts z!SolxTHxQyO2N)ix%z}HI8&HCPs|x!;-1e_^66H?f)DE)ae+iwtK`i2c$yAfgVvx4 zpfCn#rsdKY!=ny^Z-<$@O&3vGF<~;9hUv9nK&AlI&A&4EUm`rpX7$Os?}F z`m-H0MFjx5P&bEab}OQ-s|0$J4sTE)qLwvitkhuQe@2wKO5M^yMa|q0ckiRJitQo# z^_!9Wpv-TM5ne7(RDDZK9*Dj|WIuptrY0Fdx6p*rA{D@k-U9Lw>%3>0VVX>T(0m9$ zr$R(5p?g?=@Jqy~}W>q7H&pmCGbkdC8q zTK)NU;ZE62tL$G9VBA+rXOQpOe?4_%tGD&m~G%x7sy=kavDN%f8 zsd5`TCo+{Nq=-6%(idu`vUcHz*!@>!9kKw?ePI<4;_gzc-uvar@EFlswu-_5O zzK}3DP`k_FWwqzdj-k@J{M1&tSGwouXN;Ddl%C-X2iw zXd3Vqp9@;*=qe`!vp1wj$BGjodwX}D<-kx0J5Zp57#Qj^1(R%|IEpP_ zP@V%l;&yoHE0_$lj{M*isVM($gHX#9&aBwxl&a{)I!9@P=)tAR8FQ<`PgZydbR!N- z=!KUMQ8aNXnGH>htOYn^3zg|jk;pk3Q@phx!s^c3ym~xFdboB^y|YJ2c3_Ud6lvfg zAu{nOTyDQ*7E+aFUi&atJ=ZBcY8j^Gsr2}UPll~Gu&`-|a{pytT;%&kgkXw~0|}!q zZ=XqRmYlr0|3x5gZ6?g>wxtU_!N;{PJ__!Xevg8~?`VFQ^V^X0s%?kbYLO@nW#V{A zi{0a;A)u{kzl)AqFsK$h;w5?K~{H)o1!B zm5BVsB~M>mu~1)IJWY`}RC5LQfr#?o`VjoFm=j(5ipD8fz=tDf^=f75aDkxtb-4nZl_zm;GT1n9m_LsC~n}oQd`O{m&_{#Kk=m zEoDmT4*R?YGdHOOiNK8eC@a<4Eu&hSv+j?8IFdJ}Sz)HyfwFo(4E>k%dFZgst#BsYYqKzZLYrI88GH`B)k18$>b_RqthWH?)hyuRs z+h1F59w(~Gu6(wEx1z#J6M1>4(N`#H-d%F;tZ>51n3^#@Uv9kqWPo{5WN~xg(YBV9 zGzY!`lG~L!Jh01Lpo`X1v74Ebl>nJC|#|;MfyZsK%N1 zY53Pz>^=*Il61?YcDq}~hkX-%)lW0m + + + \ No newline at end of file diff --git a/static/logo-styles.css b/static/logo-styles.css new file mode 100644 index 0000000000..90520ba175 --- /dev/null +++ b/static/logo-styles.css @@ -0,0 +1,17 @@ +.library-name a { + position: relative; + --logo-width: 75px; + margin-left: calc(var(--logo-width) + 5px); +} + +.library-name a::before { + content: ''; + background: url("../images/glide_circle_logo.png") center no-repeat; + background-size: contain; + position: absolute; + width: var(--logo-width); + height: 50px; + top: -18px; + left: calc(-1 * var(--logo-width) - 5px); + /* other styles required to make your page pretty */ +} \ No newline at end of file