= Viewing the Kudu web site locally

This repository contains a handy wrapper tool called 'site_tool'
which takes care of installing and running the correct version of
jekyll.

NOTE: this tool has the following minimum dependencies:

* Python 2.6.6
* Ruby 1.9.3 and the Ruby development headers. On Ubuntu, these are the `ruby`
  and `ruby-dev` packages.
* libxslt and libxml2 development headers. On Ubuntu, these are the
  `libxslt-dev` and `libxml2-dev` packages.

[source,bash]
----
./site_tool jekyll serve
----

This will start a local web server on http://localhost:4000/ where you can view
the site just like it renders on the site.

In addition to serving static content, jekyll will render Markdown (the kramdown
flavor) and also supports templating using Liquid templates.

NOTE: to use `site_tool` on CentOS 6.x, Ruby 1.9.3 and a compatible version of
the V8 Javascript engine must be installed by enabling the `ruby193` and
`v8314` SCL repos, installing the `ruby193` and `ruby193-ruby-devel` packages,
and running `scl enable ruby193 bash` before running `site_tool`.

= Checking for broken links or syntax errors

Use the following command to verify that you didn't introduce any broken links
or HTML errors:

[source,bash]
----
./site_tool proof
----

= Updating the Kudu Website

To update HTML or MarkDown pages in this directory, edit them and git commit, then
push your changes to http://kudu.apache.org/docs/contributing.html#_contributing_patches_using_gerrit[Gerrit]
by issuing a command like:

[source,bash]
----
git push gerrit HEAD:refs/for/gh-pages --no-thin
----

== Updating the Site Navigation

To update the site navigation or overall page layout, edit `_layouts/default.html`. Submit your proposed
changes to Gerrit, as above.

== Updating the CSS

See the `css/` directory.

`kudu.css`:: Styles for the overall website.
`asciidoc.css`:: Overrides for the documentation.

== Updating the Documentation

For instructions on updating the Kudu documentation (the contents of the `docs/`
directory in this branch), and the Java API documentation (the contents of the
`apidocs/` directory in this branch, see
https://github.com/apache/incubator-kudu#building-kudu-documentation.
