com.exadatum.xsuite.xmaven.bash.doc.DefaultDocPageGenerator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bash-maven-plugin Show documentation
Show all versions of bash-maven-plugin Show documentation
Bash Maven Plugin is used to generate documentation as well as to run unit test for bash scripts.
The newest version!
package com.exadatum.xsuite.xmaven.bash.doc;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
/*-
* #%L
* Exadatum Bash Function Document Generator
* %%
* Copyright (C) 2016 - 2017 Exadatum Software Services Pvt. Ltd.
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.runtime.RuntimeConstants;
/**
* Default documentation page generator based on velocity templates.
*/
public class DefaultDocPageGenerator implements DocGenerator {
/**
* Variable to be used inside velocity template. It is {@link List} of
* {@link DocBlock } objects
*/
public static final String TVAR_DOCS = "tvar_doc_blocks";
/*
* (non-Javadoc)
*
* @see com.exadatum.xsuite.xmaven.xbdg.DocGenerator#generate(
* com.exadatum.xsuite.xmaven.xbdg.DocGeneratorContext)
*/
@Override
public void generate(final DocGeneratorContext context) throws IOException {
VelocityEngine ve = new VelocityEngine();
ve.init();
ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH,
context.getPageTemplate().getParentFile().getAbsolutePath());
ve.init();
Template template = ve.getTemplate(context.getPageTemplate().getName());
VelocityContext vc = new VelocityContext();
vc.put(TVAR_DOCS, context.getDocBlocks());
Writer sw = new OutputStreamWriter(
new FileOutputStream(context.getOutputPage()),
StandardCharsets.UTF_8);
template.merge(vc, sw);
}
}