GithubHelp home page GithubHelp logo

macgregor / alexandria Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 0.0 2.39 MB

Integrate markdown docs with antiquated html document hosting platforms using standard Java build tools.

License: GNU General Public License v3.0

Java 98.87% Shell 1.13%
alexandria markdown markdown-to-html jive jive-sdk ci ci-cd maven-plugin cli

alexandria's Introduction

Alexandria

License: GPL v3 GitHub version Build Status Coverage Status Maintainability Maven Central

Integrate markdown docs with antiquated html document hosting platforms using standard Java build tools.

Alexandria bring CI concepts to document hosting platforms which dont integrate with the tools and processes we have grown reliant on. Keep your documents with your source code in friendly markdown and let Alexandria convert and sync them as part of your project's build process.

Any platform which offers a rest API can be added to the project by implementing an interface for creating, updating and deleting documents. Alexandria handles the rest.

$ mvn deploy
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------< com.github.macgregor:alexandria-demo >----------------
[INFO] Building alexandria-demo 0.1.2
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- alexandria-maven-plugin:0.1.2:index (alexandria) @ alexandria-demo ---
[INFO] Matched 4 files (1 indexed, 3 already indexed)
[INFO]
[INFO] --- alexandria-maven-plugin:0.0.6-SNAPSHOT:convert (alexandria) @ alexandria-demo ---
[INFO] 4 out of 4 files converted successfully.
[INFO]
[INFO] --- alexandria-maven-plugin:0.1.2:sync (alexandria) @ alexandria-demo ---
[INFO] images.md is already up to date (checksum: 1751689934, last updated: 2018-08-22T02:27:51.789Z)
[INFO] Update document at empahsis.md https://jive.com/docs/DOC-1140809-empahsismd
[INFO] Update document at codeblocks.md https://jive.com/docs/DOC-1140806-codeblocksmd
[INFO] Created new document at https://jive.com/docs/DOC-1140819
[INFO] Synced 4 out of 4 documents with remote https://jive.com/api/core/v3
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.118 s
[INFO] Finished at: 2018-08-21T23:02:07-04:00
[INFO] ------------------------------------------------------------------------

Requirements

  • maven 3.5.2 or greater (for running alexandria-maven-plugin only)
  • Java 8

Getting Started

  1. Check out the javadocs
  2. After you've ignored that, run mvn alexandria:index or java -jar alexandria-cli.jar index to generate a config file (.alexandria by default)
  3. add remote url, username, password and update metadata index if necessary (username and password can be set to an envrionment/system variable like ${env.foo})
  4. run mvn deploy or java -jar alexandria-cli.jar

See alexandria-demo for a working example of the maven plugin.

<plugin>
    <groupId>com.github.macgregor</groupId>
    <artifactId>alexandria-maven-plugin</artifactId>
    <version>0.1.4</version>
    <executions>
        <execution>
            <id>alexandria</id>
            <goals>
                <goal>index</goal>
                <goal>convert</goal>
                <goal>sync</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Concepts

Remotes

Remotes are hosting platforms to upload convertedPath files to. This will almost always be a rest interface for interacting with the platform's api. Remotes included with the release include:

  • NoOp Remote - default remote that can be used to run Alexandria without actually uploading to a remote, which can be useful for testing.
  • Jive Remote - uses the Jive rest api to upload documents to a Jive document platform.

The remote used is set and configured in the Alexandria config file.

remote:
  baseUrl: "https:/jive.com/api/core/v3"
  username: "macgregor"
  password: "password"
  class: "com.github.macgregor.alexandria.remotes.jive.JiveRemote"

New remotes can be added by implementing the Remote interface which defines methods that will be called to create, update or delete a document with the remote.

Alexandria Lifecycle: index -> convert -> sync

Each of these phases can be run independently and reran without any issue. Both mvn deploy and java -jar alexandria-cli.jar will run all three in order. In general errors are collected as they occur and thrown in a batch at the end of a lifecycle phase so that a problem in 1 file wont interfere with others that are fine.

Index

Alexandria generates and stores metadata about your documents. The indexing phase finds documents and adds them to the index file for later use. You can also create or modify this index by hand, for example if the document already exists on the remote you may want to specify the remoteUri so the file is updated and not recreated.

Convert

The convert phase uses the existing metadata index to convert files from markdown to html using flexmark to do the heavy lifting. If your remote supports native markdown, you can set supportsNativeMarkdown and the conversion phase will be skipped and sync will upload the source markdown file.

Sync

This is where most of the complexity is.

  • create - if no remoteUri is set in the metadata, create the deocument
  • update - if remoteUri is set in the metadata and the runtime sourceChecksum of the file is different than the stored sourceChecksum (or sourceChecksum is not set), update the document
  • delete - if a file exists in the index but cannot be found on the local file system, it is considered to be deleted and removed from the remote.

Quirks

  • Line breaks can be frustratingly hard to get exactly how you want Putting one or even two newlines between a paragraph doesnt give you a nice space between paragraphs like it does on github. If you really need that white space add a <p/>\n or <br/>\n tag between paragraphs (the newline is important).
  • if you are using the alexandria-mojo-plugin on a project that is pom packaging (so just a pom file), you cant you mvn deploy as there is nothing to deploy. You will have to run the goals explicitly: mvn alexandria:index alexandria:clean alexandria:sync. This is a maven thing.

Trobleshooting

  • crazy long error about eclipse loggers when trying to install alexandria-maven-plugin. Upgrade maven to at least 3.5.2
  • trace level maven logging: mvn alexandria:sync -Dorg.slf4j.simpleLogger.defaultLogLevel=trace

Links

alexandria's People

Contributors

macgregor avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

alexandria's Issues

include/exclude glob patterns unintuitive

file system:

projectRoot/
    -> docs/
        -> messages.md
        -> client_provision.md

mojo plugin:

<plugin>
  <groupId>com.github.macgregor</groupId>
  <artifactId>alexandria-maven-plugin</artifactId>
  <version>0.1.4</version>
  <configuration>
    <failBuild>false</failBuild>
    <timeout>60</timeout>
    <includes>
      <include>docs/client_provision.md</include>
      <include>docs/messages.md</include>
    </includes>
  </configuration>
  <executions>
    <execution>
      <id>alexandria</id>
      <goals>
        <goal>index</goal>
        <goal>convert</goal>
        <goal>sync</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Doesnt match though it seems like it should. also tried "**/docs/messages.md", "/**/docs/messages.md", "./docs/messages.md" none of which worked. "**messages.md" worked as did just "messages.md".

Pretty sure the PathFinder is recursively walking the directory tree and only doing matching against file name, which apart from being unintuitive could lead to problems matching multiple files with the same name but in different directories (like README.md's in submodules). It could also have something to do with matching against absolute paths, since all paths are made absolute during processing, but then "**/docs/messages.md" should have worked.

add classes to html renderer for jive

code blocks: class="language-%s line-numbers" in the pre tag, not the code tag which is default
tables:

  • <table class="j-table jiveBorder" style="border: 1px solid #c6c6c6;">
  • header:
<thead>
  <tr style="background-color: #efefef;">
  <th>Tables</th>
  </tr>
</thead>
  • alignment uses style="text-align: center;" instead of "align"

support multiple remotes or pipeline deployments

two use cases here:

  1. two completely different remotes, like Jive and Google docs (or whatever, not suggesting supporting google docs api).
  2. multiple sequential environments of the same type of remote, so pre-prod then prod instances.

This will likely never be implemented unless there is outside interest.

Add optional warning to remote doc

Something like "managed by Alexandria changes made here will be overwritten"

Maybe include link to the markdown doc in the source repository.

jive - new local file based on existing document throws null pointer exception

When adding a local file to the index that already exists in jive, we get a NPE when sync runs. Its probably not properly finding the content id for some reason

[ERROR] BatchProcessException{message=Alexandria batch error., exceptions=[HttpException{
   message="HttpException: Unexpected error executing PUT",
   rootCauseMessage="NullPointerException: pathSegment == null",
   metadata=
{
  "sourcePath" : "REDACTED/docs/index.md",
  "title" : "Unified Message Bus (UMB) Documentation Index",
  "remoteUri" : "https://REDACTED/docs/DOC-1072237",
  "convertedChecksum" : 3681148503,
  "extraProps" : {
    "jiveParentUri" : "https://REDACTED/groups/REDACTED",
    "jiveParentApiUri" : "https://REDACTED/api/core/v3/places/1508053",
    "jiveParentPlaceId" : "1508053",
    "jiveTrackingTag" : "b3e2f348-6a72-47f5-a7dd-20b4df432157"
  }
}
   request=null
   response=null
}
]}
[ERROR] HttpException: Unexpected error executing PUT
com.github.macgregor.alexandria.exceptions.HttpException: Unexpected error executing PUT
    at com.github.macgregor.alexandria.exceptions.HttpException$Builder.build (HttpException.java:107)
    at com.github.macgregor.alexandria.remotes.RemoteDocument.put (RemoteDocument.java:165)
    at com.github.macgregor.alexandria.remotes.jive.JiveRemote.update (JiveRemote.java:220)
    at com.github.macgregor.alexandria.AlexandriaSync.lambda$syncWithRemote$1 (AlexandriaSync.java:97)
    at com.github.macgregor.alexandria.BatchProcess.execute (BatchProcess.java:97)
    at com.github.macgregor.alexandria.AlexandriaSync.syncWithRemote (AlexandriaSync.java:77)
    at com.github.macgregor.alexandria.Alexandria.syncWithRemote (Alexandria.java:93)
    at com.github.macgregor.alexandria.SyncMojo.execute (SyncMojo.java:19)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: java.lang.NullPointerException: pathSegment == null
    at okhttp3.HttpUrl$Builder.addPathSegment (HttpUrl.java:1043)
    at com.github.macgregor.alexandria.remotes.Requests.addSegments (Requests.java:72)
    at com.github.macgregor.alexandria.remotes.Requests.routeBuilder (Requests.java:41)
    at com.github.macgregor.alexandria.remotes.RemoteDocument.route (RemoteDocument.java:276)
    at com.github.macgregor.alexandria.remotes.RemoteDocument.put (RemoteDocument.java:152)
    at com.github.macgregor.alexandria.remotes.jive.JiveRemote.update (JiveRemote.java:220)
    at com.github.macgregor.alexandria.AlexandriaSync.lambda$syncWithRemote$1 (AlexandriaSync.java:97)
    at com.github.macgregor.alexandria.BatchProcess.execute (BatchProcess.java:97)
    at com.github.macgregor.alexandria.AlexandriaSync.syncWithRemote (AlexandriaSync.java:77)
    at com.github.macgregor.alexandria.Alexandria.syncWithRemote (Alexandria.java:93)
    at com.github.macgregor.alexandria.SyncMojo.execute (SyncMojo.java:19)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
[WARNING]
com.github.macgregor.alexandria.exceptions.BatchProcessException: Alexandria batch error.
    at com.github.macgregor.alexandria.exceptions.BatchProcessException$Builder.build (BatchProcessException.java:63)
    at com.github.macgregor.alexandria.BatchProcess.execute (BatchProcess.java:135)
    at com.github.macgregor.alexandria.AlexandriaSync.syncWithRemote (AlexandriaSync.java:77)
    at com.github.macgregor.alexandria.Alexandria.syncWithRemote (Alexandria.java:93)
    at com.github.macgregor.alexandria.SyncMojo.execute (SyncMojo.java:19)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)

Jive throwing 401 sometimes doing search before create

BatchProcessException{message=Alexandria batch error., exceptions=[HttpException{
   message="HttpException: GET https://redacted/api/core/v3/contents?fields=id%2CcontentID%2Ctags%2Cupdated%2Cpublished%2CparentPlace%2Csubject%2Cresources%2Ccontent%2Cvia%2Cparent&filter=tag%2842f4477d-fa30-4729-a721-809fb42b3d1c%29&count=25&startIndex=0 - 401 (excepted one of [20X])",
   rootCauseMessage="HttpException: GET https://redacted/api/core/v3/contents?fields=id%2CcontentID%2Ctags%2Cupdated%2Cpublished%2CparentPlace%2Csubject%2Cresources%2Ccontent%2Cvia%2Cparent&filter=tag%2842f4477d-fa30-4729-a721-809fb42b3d1c%29&count=25&startIndex=0 - 401 (excepted one of [20X])",
   metadata=
{
  "sourcePath" : "redacted/docs/result_message.md",
  "title" : "result_message.md",
  "convertedChecksum" : 3321649118,
  "extraProps" : {
    "jiveTrackingTag" : "42f4477d-fa30-4729-a721-809fb42b3d1c"
  }
}
]}

[ERROR] HttpException: GET https://mojo.redhat.com/api/core/v3/contents?fields=id%2CcontentID%2Ctags%2Cupdated%2Cpublished%2CparentPlace%2Csubject%2Cresources%2Ccontent%2Cvia%2Cparent&filter=tag%2842f4477d-fa30-4729-a721-809fb42b3d1c%29&count=25&startIndex=0 - 401 (excepted one of [20X])
com.github.macgregor.alexandria.exceptions.HttpException: GET https://redacted/api/core/v3/contents?fields=id%2CcontentID%2Ctags%2Cupdated%2Cpublished%2CparentPlace%2Csubject%2Cresources%2Ccontent%2Cvia%2Cparent&filter=tag%2842f4477d-fa30-4729-a721-809fb42b3d1c%29&count=25&startIndex=0 - 401 (excepted one of [20X])
    at com.github.macgregor.alexandria.exceptions.HttpException$Builder.build (HttpException.java:109)
    at com.github.macgregor.alexandria.remotes.RemoteDocument.doRequest (RemoteDocument.java:328)
    at com.github.macgregor.alexandria.remotes.RemoteDocument$RemoteDocumentIterator.nextPage (RemoteDocument.java:478)
    at com.github.macgregor.alexandria.remotes.RemoteDocument$RemoteDocumentIterator.hasNext (RemoteDocument.java:438)
    at com.github.macgregor.alexandria.remotes.RemoteDocument$RemoteDocumentPage.first (RemoteDocument.java:368)
    at com.github.macgregor.alexandria.remotes.jive.JiveRemote.findDocument (JiveRemote.java:300)
    at com.github.macgregor.alexandria.remotes.jive.JiveRemote.create (JiveRemote.java:167)
    at com.github.macgregor.alexandria.AlexandriaSync.lambda$syncWithRemote$1 (AlexandriaSync.java:90)
    at com.github.macgregor.alexandria.BatchProcess.execute (BatchProcess.java:97)
    at com.github.macgregor.alexandria.AlexandriaSync.syncWithRemote (AlexandriaSync.java:77)
    at com.github.macgregor.alexandria.Alexandria.syncWithRemote (Alexandria.java:93)
    at com.github.macgregor.alexandria.SyncMojo.execute (SyncMojo.java:19)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)

Jive rest api suuuucks. Not sure why this happened, as it cleared up eventually on its own. Possibly a transient error server side, in which case this error is expected, perhaps retries might help if it is a very short lived problem. It could also be a quirk in Jive when a newly created document is in a weird state and the search throws a 401 for some reason when it should be a better error code. I've seen similar errors that I built safeguards for, maybe this is another one.

maven plugin metadata not quite right

intellij doesnt like configuration section, complains about syntax error. You also have to explicitly set index/convert/sync executions for it to work.

maven plugin throwing null pointer exception for rootDir()

this it has to do with having a parent pom that isnt relative (the parent doesnt have a baseDir because its remote on maven central or wherever).

workaround: manually specify config path and input:

<configuration>
                        <configPath>${basedir}/.alexandria</configPath>
                        <inputs>
                            <input>${basedir}</input>
                        </inputs>
</configuration> 

jive code block rendering is still off

missing line numbers:

<pre class="language-none line-numbers"><code>foo<br />bar&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;<span class="line-numbers-rows"><span>&zwj;</span><span>&zwj;</span></span></code></pre>

language markup is also off. The syntax highlighter in the gui is adding more stlying like:

<code>remote<span class="token punctuation">:</span>  <br />  <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>  <br />metadata<span class="token punctuation">:</span>  <br /><span class="token operator">-</span> sourcePath<span class="token punctuation">:</span> <span class="token string">"docs/images.md"</span> 

Might not be worth trying to get it working perfectly.

tidy up javadoc build

  1. Javadocs are built too many times during the process which slows down the build
  2. Javadoc maven plugin is not properly linking to external classes, including submodules which produces warnings (might have something to do with the classpath being used during

Nice to have: aggregate javadocs into a single site.

Support other Jive Content types than Document

jive documents have different types (e.g. document, blog, discussion, etc) and need to be specified. Alexandria currently only supports document types. It could be expanded on without too much effort, but will likely not be supported unless there is interest.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.