This is an automated email from the ASF dual-hosted git repository.
dbarnes pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode-native.git
The following commit(s) were added to refs/heads/develop by this push:
new eb011b8 GEODE-7303: Simplify native client UG builds (#538)
eb011b8 is described below
commit eb011b8a3c88291cc356ce1fb72d906e3de9a6ce
Author: Alberto Bustamante Reyes <[email protected]>
AuthorDate: Fri Oct 18 23:05:42 2019 +0200
GEODE-7303: Simplify native client UG builds (#538)
- Now each user guide has its separated book directory
- The docker-based solution of GEODE-7272 has been applied to
each user guide
---
docs/README.md | 103 +---------
docs/docker/Dockerfile | 26 +--
docs/docker/README.md | 34 ++++
docs/docker/build-docs.sh | 69 +++++++
docs/docker/build-image-common.sh | 63 +++++++
docs/docker/view-docs.sh | 59 ++++++
.../.gitignore | 0
.../Gemfile | 0
docs/geode-native-book-cpp/Gemfile.lock | 207 +++++++++++++++++++++
.../config.yml} | 0
.../source/archive_menus/_default.erb | 0
.../source/images/Apache_Geode_logo_symbol.png | Bin
.../images/Apache_Geode_logo_symbol_white.png | Bin
.../master_middleman/source/images/favicon.ico | Bin
.../master_middleman/source/javascripts/book.js | 0
.../source/javascripts/waypoints/context.js | 0
.../source/javascripts/waypoints/group.js | 0
.../javascripts/waypoints/noframeworkAdapter.js | 0
.../source/javascripts/waypoints/sticky.js | 0
.../source/javascripts/waypoints/waypoint.js | 0
.../source/layouts/_book-footer.erb | 0
.../master_middleman/source/layouts/_header.erb | 0
.../source/layouts/_local-header.erb | 0
.../master_middleman/source/layouts/_title.erb | 0
.../source/stylesheets/book-styles.scss | 0
.../stylesheets/partials/_book-base-values.scss | 0
.../source/stylesheets/partials/_book-vars.scss | 0
.../source/subnavs/geode-nc-nav.erb | 0
.../redirects.rb} | 0
.../.gitignore | 0
.../Gemfile | 0
docs/geode-native-book-dotnet/Gemfile.lock | 207 +++++++++++++++++++++
.../config.yml | 0
.../source/archive_menus/_default.erb | 0
.../source/images/Apache_Geode_logo_symbol.png | Bin
.../images/Apache_Geode_logo_symbol_white.png | Bin
.../master_middleman/source/images/favicon.ico | Bin
.../master_middleman/source/javascripts/book.js | 0
.../source/javascripts/waypoints/context.js | 0
.../source/javascripts/waypoints/group.js | 0
.../javascripts/waypoints/noframeworkAdapter.js | 0
.../source/javascripts/waypoints/sticky.js | 0
.../source/javascripts/waypoints/waypoint.js | 0
.../source/layouts/_book-footer.erb | 0
.../master_middleman/source/layouts/_header.erb | 0
.../source/layouts/_local-header.erb | 0
.../master_middleman/source/layouts/_title.erb | 0
.../source/stylesheets/book-styles.scss | 0
.../stylesheets/partials/_book-base-values.scss | 0
.../source/stylesheets/partials/_book-vars.scss | 0
.../source/subnavs/geode-nc-nav.erb | 0
.../redirects.rb | 0
docs/geode-native-book/config.yml.DOTNET | 49 -----
docs/geode-native-book/redirects.rb.DOTNET | 25 ---
docs/{docker => manual-build}/Dockerfile | 0
docs/manual-build/README.md | 68 +++++++
56 files changed, 719 insertions(+), 191 deletions(-)
diff --git a/docs/README.md b/docs/README.md
index 6ac1cec..a226b43 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -2,110 +2,17 @@
This document contains instructions for building and viewing the Apache Geode
Native Client User Guides.
-- [About](#about)
-- [Bookbinder Usage](#bookbinder-usage)
-- [Docker Setup](#docker-setup)
-- [Building the Documentation](#building-the-documentation)
-
<a name="about"></a>
## About
The Geode-Native repository provides the full source for the Apache Geode
Native Client User Guides in markdown format (see
_geode-project-dir_/geode-docs/CONTRIBUTE.md for more information on how to use
markdown in this context). Users can build the markdown into an HTML user guide
using [Bookbinder](https://github.com/pivotal-cf/bookbinder) and the
instructions below.
-The User Guide can be produced in two versions: one for the .NET native
client, the other for the C++ native client. You specify which version to build
by copying two language-specific configuration files, each to its
generically-named counterpart, then running the Bookbinder build.
-
-For example, to build the .NET version of the Native Client User Guide, first
copy the DOTNET configuration files to their generically-named counterparts:
-
-```
-cd geode-native-book
-cp config.yml.DOTNET config.yml
-cp redirects.rb.DOTNET redirects.rb
-```
-Then run Bookbinder to create the guide.
-
-Similarly, to generate the C++ Native Client User Guide, first copy the CPP
configuration files:
-
-```
-cd geode-native-book
-cp config.yml.CPP config.yml
-cp redirects.rb.CPP redirects.rb
-```
-Then run Bookbinder to create the guide.
-
-Bookbinder is a Ruby gem that binds a unified documentation web application
from markdown, html, and/or DITA source material. The source material for
bookbinder must be stored either in local directories or in GitHub
repositories. Bookbinder runs [Middleman](http://middlemanapp.com/) to produce
a Rackup app that can be deployed locally or as a web application.
-
-<a name="bookbinder-usage"></a>
-## Bookbinder Usage
-
-Bookbinder is meant to be used from within a project called a **book**. The
book includes a configuration file that describes which documentation
repositories to use as source materials. Bookbinder provides a set of scripts
to aggregate those repositories and publish them to various locations.
-
-For Geode Native Client, a preconfigured **book** is provided in the directory
_geode-native-project-dir_/docs/geode-native-book. The book gathers content
from the language-specific directory
_geode-native-project-dir_/docs/geode-native-docs-dotnet or
geode-native-docs-cpp. You can use this configuration to build an HTML version
of the Apache Geode Native Client User Guides on your local system.
-
-<a name="docker-setup"></a>
-## Docker Setup
-
-For ease of use, a Docker image is provided that contains a self-consistent
Bookbinder environment. [Install Docker](https://docs.docker.com/install/) if
you have not already done so.
-
-<a name="building-the-documentation"></a>
-## Building the Documentation
-
-1. Navigate to the directory that contains the Dockerfile and run the `docker
build` command to create the Bookbinder-enabled Docker image:
-
- ```bash
- $ cd geode-native/docs/docker
- $ docker build -t geode-native-userman .
- ```
-
-1. Run the Docker image in interactive mode with a command similar to the
following:
-
- ```bash
- $ docker run -it -p 9292:9292 -p 1234:1234 -v
PATH-TO-GEODE-NATIVE/docs:/docs geode-native-userman
- ```
-
- where `PATH-TO-GEODE-NATIVE` is the fully-qualified path to the
geode-native repo. This brings up the interactive Docker container, with `/` as
your current working directory.
-
-1. To build the documentation, `cd` to the book directory:
-
- ```bash
- $ cd docs/geode-native-book
- ```
-
-1. Run `bundle install` to install the dependencies required to build the user
guide.
-
- ```bash
- $ bundle install
- ```
-
-1. Copy the language-specific configuration files to their generically-named
counterparts. For the .NET book, copy the DOTNET configuration files to their
generically-named conterparts:
-
-```
-cd geode-native-book
-cp config.yml.DOTNET config.yml
-cp redirects.rb.DOTNET redirects.rb
-```
-
-Similarly, to generate the C++ Native Client User Guide, first copy the CPP
configuration files:
-
-```
-cd geode-native-book
-cp config.yml.CPP config.yml
-cp redirects.rb.CPP redirects.rb
-```
-
-1. Invoke bookbinder to build the user guide. Bookbinder converts the markdown
source into HTML, which it puts in the `final_app` directory:
-
- ```bash
- $ bundle exec bookbinder bind local
- ```
-
-1. To start a local website of the Apache Geode Native Client User Guide,
navigate to the `final_app` directory and run `rackup`:
+The User Guide can be produced in two versions: one for the .NET native
client, the other for the C++ native client.
- ```bash
- $ cd final_app
- $ rackup
- ```
+## Automatic build
- Note: You may be prompted to run `bundle install` to supply any missing
components. Do that, then re-try the `rackup` command.
+Documentation can be built and previewed using the utility scripts at
[docs/docker](https://github.com/apache/geode-native/tree/develop/docs/docker).
These scripts use Docker, removing the requirement of installing Ruby and
Bookbinder. They are based on the instructions described in
[docs/manual-build](https://github.com/apache/geode-native/tree/develop/manual-build).
- You can now view the local documentation in a browser at
<http://localhost:9292>.
+## Manual build
+Documentation can be built in a less-automated way, as described at
[docs/manual-build](https://github.com/apache/geode-native/tree/develop/manual-build).
diff --git a/docs/docker/Dockerfile b/docs/docker/Dockerfile
index c062c64..dceadd9 100644
--- a/docs/docker/Dockerfile
+++ b/docs/docker/Dockerfile
@@ -14,24 +14,12 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-FROM ubuntu:latest
+FROM ruby:2.3.1
-RUN apt-get update
-RUN apt-get install -y curl git gnupg2
-RUN gpg2 --keyserver hkp://keys.gnupg.net --recv-keys
409B6B1796C275462A1703113804BB82D39DC0E3
7D2BAF1CF37B13E2069D6956105BD0E739499BDB || \
- gpg2 --keyserver hkp://pgp.mit.edu --recv-keys
409B6B1796C275462A1703113804BB82D39DC0E3
7D2BAF1CF37B13E2069D6956105BD0E739499BDB || \
- gpg2 --keyserver hkp://ha.pool.sks-keyservers.net --recv-keys
409B6B1796C275462A1703113804BB82D39DC0E3
7D2BAF1CF37B13E2069D6956105BD0E739499BDB
+LABEL Vendor="Apache Geode"
+LABEL version=unstable
+LABEL [email protected]
-RUN \curl -sSL https://get.rvm.io | bash
-RUN /bin/bash -l -c "rvm requirements"
-RUN /bin/bash -l -c "rvm install 2.3.0"
-RUN /bin/bash -l -c "gem install bundler --no-document -v '=1.16.1'"
-
-RUN /bin/bash -l -c "cp /etc/hosts ~/hosts.new"
-RUN /bin/bash -l -c 'sed -i -E "s/(::1\s)localhost/\1/g" ~/hosts.new'
-
-RUN echo "alias rackup='rackup -o 0.0.0'" >> /etc/profile
-
-EXPOSE 9292
-
-ENTRYPOINT ["/bin/sh", "-c" , "cat ~/hosts.new > /etc/hosts && . /etc/profile
&& alias rackup='rackup -o 0.0.0.0' && /bin/bash -l" ]
+ADD Gemfile Gemfile
+ADD Gemfile.lock Gemfile.lock
+RUN bundle install
diff --git a/docs/docker/README.md b/docs/docker/README.md
new file mode 100644
index 0000000..a4cbd8e
--- /dev/null
+++ b/docs/docker/README.md
@@ -0,0 +1,34 @@
+# Automatic generation of Apache Geode Native Client User Guides
+This document contains instructions for building and viewing the Apache Geode
Native Client User Guides for C++ and .NET languages.
+
+
+## Building the User Guides
+The build-docs.sh script invokes Bookbinder to transform the markdown files to
HTML using Docker, which has been provisioned with Bookbinder and Ruby. To
build the guide, run the script from a shell prompt:
+
+- For C++ user guide:
+```
+$ ./build-docs.sh cpp
+```
+
+- For .NET user guide:
+```
+$ ./build-docs.sh dotnet
+```
+
+## Viewing the User Guides
+After the HTML files are generated, view-docs.sh can be used to start a
webserver and review the documentation.
+
+- For C++ user guide:
+```
+$ ./view-docs.sh cpp
+```
+In a browser, navigate to `http://localhost:9191` to view the user guide.
+
+- For .NET user guide:
+```
+$ ./view-docs.sh dotnet
+```
+In a browser, navigate to `http://localhost:9292` to view the user guide.
+
+
+The other files in this folder (`build-image-common.sh` and `Dockerfile`) are
utilities used by `build-docs.sh` and `view-docs.sh`.
diff --git a/docs/docker/build-docs.sh b/docs/docker/build-docs.sh
new file mode 100755
index 0000000..83a7e95
--- /dev/null
+++ b/docs/docker/build-docs.sh
@@ -0,0 +1,69 @@
+#!/bin/bash
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+set -u
+
+if [ "$#" -ne 1 ]; then
+ echo "ERROR: Illegal number of parameters"
+ echo ""
+ echo "Usage: `basename $0` [ cpp | dotnet ]"
+ exit 1
+fi
+LANG=$1
+if [ "${LANG}" != "cpp" ] && [ "${LANG}" != "dotnet" ]
+then
+ echo "ERROR: Incorrect language specified."
+ echo ""
+ echo "Usage: `basename $0` [ cpp | dotnet ]"
+ exit 1
+fi
+SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+
+. $SCRIPT_DIR/build-image-common.sh
+
+DOCS_DIR=${SCRIPT_DIR}/../
+BOOK_DIR=${DOCS_DIR}/geode-native-book-${LANG}
+LOG_FILE=${SCRIPT_DIR}/build-${LANG}-docs-output.txt
+
+echo "Running Bookbinder inside Docker container to generate documentation..."
+echo " Complete log can be found in ${LOG_FILE}"
+
+docker run -i -t \
+ --rm=true \
+ -w "${BOOK_DIR}" \
+ -v "$PWD:${DOCS_DIR}" \
+ ${IMAGE_NAME}-${USER_NAME} \
+ /bin/bash -c "bundle exec bookbinder bind local &> ${LOG_FILE}"
+
+SUCCESS=$(grep "Bookbinder bound your book into" ${LOG_FILE})
+
+if [[ "${SUCCESS}" == "" ]];then
+ echo "Something went wrong while generating documentation, check log."
+else
+ echo ${SUCCESS}
+fi
+
+docker run -i -t \
+ --rm=true \
+ -w "${BOOK_DIR}" \
+ -v "$PWD:${DOCS_DIR}" \
+ ${IMAGE_NAME}-${USER_NAME} \
+ /bin/bash -c "chown -R ${USER_ID}:${GROUP_ID} ${LOG_FILE} ${BOOK_DIR}/output
${BOOK_DIR}/final_app"
+
+
+popd 1> /dev/null
+
diff --git a/docs/docker/build-image-common.sh
b/docs/docker/build-image-common.sh
new file mode 100644
index 0000000..1222c73
--- /dev/null
+++ b/docs/docker/build-image-common.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+set -u
+
+export DOCKER_ENV_VERSION="0.1"
+
+SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+
+#Stupid OSX has a different mktemp command
+TMP_DIR=`mktemp -d 2>/dev/null || mktemp -d -t 'geodedocs'`
+
+function cleanup() {
+ rm -rf $TMP_DIR
+}
+
+trap cleanup EXIT
+
+IMAGE_NAME="geode-native/docsbuild:${DOCKER_ENV_VERSION}"
+
+pushd ${TMP_DIR} 1> /dev/null
+cp ${SCRIPT_DIR}/Dockerfile .
+cp ${SCRIPT_DIR}/../geode-native-book-${LANG}/Gemfile* .
+
+echo "Building ${IMAGE_NAME} image..."
+docker build -q -t ${IMAGE_NAME} .
+
+popd 1> /dev/null
+
+if [ "$(uname -s)" == "Linux" ]; then
+ USER_NAME=${SUDO_USER:=$USER}
+ USER_ID=$(id -u "${USER_NAME}")
+ GROUP_ID=$(id -g "${USER_NAME}")
+else # boot2docker uid and gid
+ USER_NAME=$USER
+ USER_ID=1000
+ GROUP_ID=50
+fi
+
+echo "Building ${IMAGE_NAME}-${USER_NAME} image..."
+docker build -q -t "${IMAGE_NAME}-${USER_NAME}" - <<UserSpecificDocker
+FROM ${IMAGE_NAME}
+RUN groupadd --non-unique -g ${GROUP_ID} ${USER_NAME}
+RUN useradd -g ${GROUP_ID} -u ${USER_ID} -k /root -m ${USER_NAME}
+ENV HOME /home/${USER_NAME}
+UserSpecificDocker
+
+# Go to root
+pushd ${SCRIPT_DIR}/../ 1> /dev/null
diff --git a/docs/docker/view-docs.sh b/docs/docker/view-docs.sh
new file mode 100755
index 0000000..b91ffad
--- /dev/null
+++ b/docs/docker/view-docs.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+set -e -u
+
+if [ "$#" -ne 1 ]; then
+ echo "ERROR: Illegal number of parameters"
+ echo ""
+ echo "Usage: `basename $0` [ cpp | dotnet ]"
+ exit 1
+fi
+
+LANG=$1
+if [ "${LANG}" != "cpp" ] && [ "${LANG}" != "dotnet" ]
+then
+ echo "ERROR: Incorrect language specified."
+ echo ""
+ echo "Usage: `basename $0` [ cpp | dotnet ]"
+ exit 1
+fi
+
+PORT=9292
+if [ "${LANG}" = "cpp" ]
+then
+ PORT=9191
+fi
+
+SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+
+. $SCRIPT_DIR/build-image-common.sh
+
+DOCS_DIR=${SCRIPT_DIR}/../
+BOOK_DIR=${DOCS_DIR}/geode-native-book-${LANG}
+
+echo "Starting up web server..."
+docker run -i -t \
+ --rm=true \
+ -w "${BOOK_DIR}/final_app/" \
+ -v "$PWD:${DOCS_DIR}" \
+ -p 127.0.0.1:${PORT}:${PORT} \
+ ${IMAGE_NAME}-${USER_NAME} \
+ /bin/bash -c "bundle install; rackup --host 0.0.0.0 -p ${PORT}"
+
+popd 1> /dev/null
+
diff --git a/docs/geode-native-book/.gitignore
b/docs/geode-native-book-cpp/.gitignore
similarity index 100%
copy from docs/geode-native-book/.gitignore
copy to docs/geode-native-book-cpp/.gitignore
diff --git a/docs/geode-native-book/Gemfile b/docs/geode-native-book-cpp/Gemfile
similarity index 100%
copy from docs/geode-native-book/Gemfile
copy to docs/geode-native-book-cpp/Gemfile
diff --git a/docs/geode-native-book-cpp/Gemfile.lock
b/docs/geode-native-book-cpp/Gemfile.lock
new file mode 100644
index 0000000..8ccdcfc
--- /dev/null
+++ b/docs/geode-native-book-cpp/Gemfile.lock
@@ -0,0 +1,207 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ activesupport (4.2.11.1)
+ i18n (~> 0.7)
+ minitest (~> 5.1)
+ thread_safe (~> 0.3, >= 0.3.4)
+ tzinfo (~> 1.1)
+ addressable (2.6.0)
+ public_suffix (>= 2.0.2, < 4.0)
+ ansi (1.5.0)
+ backports (3.15.0)
+ bookbindery (10.1.14)
+ ansi (~> 1.4)
+ css_parser
+ elasticsearch
+ fog-aws (~> 0.7.1)
+ font-awesome-sass (= 4.7.0)
+ git (~> 1.2.8)
+ middleman (= 4.1.10)
+ middleman-compass
+ middleman-livereload
+ middleman-sprockets
+ middleman-syntax (= 2.1.0)
+ nokogiri (= 1.8.2)
+ puma
+ rack-rewrite
+ redcarpet (~> 3.2.3)
+ rouge (!= 1.9.1)
+ therubyracer
+ thor (= 0.19.1)
+ builder (3.2.3)
+ chunky_png (1.3.11)
+ coffee-script (2.4.1)
+ coffee-script-source
+ execjs
+ coffee-script-source (1.12.2)
+ compass (1.0.3)
+ chunky_png (~> 1.2)
+ compass-core (~> 1.0.2)
+ compass-import-once (~> 1.0.5)
+ rb-fsevent (>= 0.9.3)
+ rb-inotify (>= 0.9)
+ sass (>= 3.3.13, < 3.5)
+ compass-core (1.0.3)
+ multi_json (~> 1.0)
+ sass (>= 3.3.0, < 3.5)
+ compass-import-once (1.0.5)
+ sass (>= 3.2, < 3.5)
+ concurrent-ruby (1.1.5)
+ contracts (0.13.0)
+ css_parser (1.7.0)
+ addressable
+ dotenv (2.7.5)
+ elasticsearch (7.3.0)
+ elasticsearch-api (= 7.3.0)
+ elasticsearch-transport (= 7.3.0)
+ elasticsearch-api (7.3.0)
+ multi_json
+ elasticsearch-transport (7.3.0)
+ faraday
+ multi_json
+ em-websocket (0.5.1)
+ eventmachine (>= 0.12.9)
+ http_parser.rb (~> 0.6.0)
+ erubis (2.7.0)
+ eventmachine (1.2.7)
+ excon (0.65.0)
+ execjs (2.7.0)
+ faraday (0.15.4)
+ multipart-post (>= 1.2, < 3)
+ fast_blank (1.0.0)
+ fastimage (2.1.5)
+ ffi (1.11.1)
+ fog-aws (0.7.6)
+ fog-core (~> 1.27)
+ fog-json (~> 1.0)
+ fog-xml (~> 0.1)
+ ipaddress (~> 0.8)
+ fog-core (1.45.0)
+ builder
+ excon (~> 0.58)
+ formatador (~> 0.2)
+ fog-json (1.2.0)
+ fog-core
+ multi_json (~> 1.10)
+ fog-xml (0.1.3)
+ fog-core
+ nokogiri (>= 1.5.11, < 2.0.0)
+ font-awesome-sass (4.7.0)
+ sass (>= 3.2)
+ formatador (0.2.5)
+ git (1.2.9.1)
+ haml (5.1.1)
+ temple (>= 0.8.0)
+ tilt
+ hamster (3.0.0)
+ concurrent-ruby (~> 1.0)
+ hashie (3.6.0)
+ http_parser.rb (0.6.0)
+ i18n (0.7.0)
+ ipaddress (0.8.3)
+ kramdown (1.17.0)
+ libv8 (3.16.14.19)
+ listen (3.0.8)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ memoist (0.16.0)
+ middleman (4.1.10)
+ coffee-script (~> 2.2)
+ compass-import-once (= 1.0.5)
+ haml (>= 4.0.5)
+ kramdown (~> 1.2)
+ middleman-cli (= 4.1.10)
+ middleman-core (= 4.1.10)
+ sass (>= 3.4.0, < 4.0)
+ middleman-cli (4.1.10)
+ thor (>= 0.17.0, < 2.0)
+ middleman-compass (4.0.1)
+ compass (>= 1.0.0, < 2.0.0)
+ middleman-core (>= 4.0.0)
+ middleman-core (4.1.10)
+ activesupport (~> 4.2)
+ addressable (~> 2.3)
+ backports (~> 3.6)
+ bundler (~> 1.1)
+ contracts (~> 0.13.0)
+ dotenv
+ erubis
+ execjs (~> 2.0)
+ fast_blank
+ fastimage (~> 2.0)
+ hamster (~> 3.0)
+ hashie (~> 3.4)
+ i18n (~> 0.7.0)
+ listen (~> 3.0.0)
+ memoist (~> 0.14)
+ padrino-helpers (~> 0.13.0)
+ parallel
+ rack (>= 1.4.5, < 2.0)
+ sass (>= 3.4)
+ servolux
+ tilt (~> 1.4.1)
+ uglifier (~> 3.0)
+ middleman-livereload (3.4.6)
+ em-websocket (~> 0.5.1)
+ middleman-core (>= 3.3)
+ rack-livereload (~> 0.3.15)
+ middleman-sprockets (4.1.1)
+ middleman-core (~> 4.0)
+ sprockets (>= 3.0)
+ middleman-syntax (2.1.0)
+ middleman-core (>= 3.2)
+ rouge (~> 1.0)
+ mini_portile2 (2.3.0)
+ minitest (5.11.3)
+ multi_json (1.13.1)
+ multipart-post (2.1.1)
+ nio4r (2.4.0)
+ nokogiri (1.8.2)
+ mini_portile2 (~> 2.3.0)
+ padrino-helpers (0.13.3.4)
+ i18n (~> 0.6, >= 0.6.7)
+ padrino-support (= 0.13.3.4)
+ tilt (>= 1.4.1, < 3)
+ padrino-support (0.13.3.4)
+ activesupport (>= 3.1)
+ parallel (1.17.0)
+ public_suffix (3.1.1)
+ puma (4.0.1)
+ nio4r (~> 2.0)
+ rack (1.6.11)
+ rack-livereload (0.3.17)
+ rack
+ rack-rewrite (1.5.1)
+ rb-fsevent (0.10.3)
+ rb-inotify (0.10.0)
+ ffi (~> 1.0)
+ redcarpet (3.2.3)
+ ref (2.0.0)
+ rouge (1.11.1)
+ sass (3.4.25)
+ servolux (0.13.0)
+ sprockets (3.7.2)
+ concurrent-ruby (~> 1.0)
+ rack (> 1, < 3)
+ temple (0.8.1)
+ therubyracer (0.12.3)
+ libv8 (~> 3.16.14.15)
+ ref
+ thor (0.19.1)
+ thread_safe (0.3.6)
+ tilt (1.4.1)
+ tzinfo (1.2.5)
+ thread_safe (~> 0.1)
+ uglifier (3.2.0)
+ execjs (>= 0.3.0, < 3)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ bookbindery
+ libv8
+
+BUNDLED WITH
+ 1.17.3
diff --git a/docs/geode-native-book/config.yml.CPP
b/docs/geode-native-book-cpp/config.yml
similarity index 100%
rename from docs/geode-native-book/config.yml.CPP
rename to docs/geode-native-book-cpp/config.yml
diff --git
a/docs/geode-native-book/master_middleman/source/archive_menus/_default.erb
b/docs/geode-native-book-cpp/master_middleman/source/archive_menus/_default.erb
similarity index 100%
copy from
docs/geode-native-book/master_middleman/source/archive_menus/_default.erb
copy to
docs/geode-native-book-cpp/master_middleman/source/archive_menus/_default.erb
diff --git
a/docs/geode-native-book/master_middleman/source/images/Apache_Geode_logo_symbol.png
b/docs/geode-native-book-cpp/master_middleman/source/images/Apache_Geode_logo_symbol.png
similarity index 100%
copy from
docs/geode-native-book/master_middleman/source/images/Apache_Geode_logo_symbol.png
copy to
docs/geode-native-book-cpp/master_middleman/source/images/Apache_Geode_logo_symbol.png
diff --git
a/docs/geode-native-book/master_middleman/source/images/Apache_Geode_logo_symbol_white.png
b/docs/geode-native-book-cpp/master_middleman/source/images/Apache_Geode_logo_symbol_white.png
similarity index 100%
copy from
docs/geode-native-book/master_middleman/source/images/Apache_Geode_logo_symbol_white.png
copy to
docs/geode-native-book-cpp/master_middleman/source/images/Apache_Geode_logo_symbol_white.png
diff --git a/docs/geode-native-book/master_middleman/source/images/favicon.ico
b/docs/geode-native-book-cpp/master_middleman/source/images/favicon.ico
similarity index 100%
copy from docs/geode-native-book/master_middleman/source/images/favicon.ico
copy to docs/geode-native-book-cpp/master_middleman/source/images/favicon.ico
diff --git a/docs/geode-native-book/master_middleman/source/javascripts/book.js
b/docs/geode-native-book-cpp/master_middleman/source/javascripts/book.js
similarity index 100%
copy from docs/geode-native-book/master_middleman/source/javascripts/book.js
copy to docs/geode-native-book-cpp/master_middleman/source/javascripts/book.js
diff --git
a/docs/geode-native-book/master_middleman/source/javascripts/waypoints/context.js
b/docs/geode-native-book-cpp/master_middleman/source/javascripts/waypoints/context.js
similarity index 100%
copy from
docs/geode-native-book/master_middleman/source/javascripts/waypoints/context.js
copy to
docs/geode-native-book-cpp/master_middleman/source/javascripts/waypoints/context.js
diff --git
a/docs/geode-native-book/master_middleman/source/javascripts/waypoints/group.js
b/docs/geode-native-book-cpp/master_middleman/source/javascripts/waypoints/group.js
similarity index 100%
copy from
docs/geode-native-book/master_middleman/source/javascripts/waypoints/group.js
copy to
docs/geode-native-book-cpp/master_middleman/source/javascripts/waypoints/group.js
diff --git
a/docs/geode-native-book/master_middleman/source/javascripts/waypoints/noframeworkAdapter.js
b/docs/geode-native-book-cpp/master_middleman/source/javascripts/waypoints/noframeworkAdapter.js
similarity index 100%
copy from
docs/geode-native-book/master_middleman/source/javascripts/waypoints/noframeworkAdapter.js
copy to
docs/geode-native-book-cpp/master_middleman/source/javascripts/waypoints/noframeworkAdapter.js
diff --git
a/docs/geode-native-book/master_middleman/source/javascripts/waypoints/sticky.js
b/docs/geode-native-book-cpp/master_middleman/source/javascripts/waypoints/sticky.js
similarity index 100%
copy from
docs/geode-native-book/master_middleman/source/javascripts/waypoints/sticky.js
copy to
docs/geode-native-book-cpp/master_middleman/source/javascripts/waypoints/sticky.js
diff --git
a/docs/geode-native-book/master_middleman/source/javascripts/waypoints/waypoint.js
b/docs/geode-native-book-cpp/master_middleman/source/javascripts/waypoints/waypoint.js
similarity index 100%
copy from
docs/geode-native-book/master_middleman/source/javascripts/waypoints/waypoint.js
copy to
docs/geode-native-book-cpp/master_middleman/source/javascripts/waypoints/waypoint.js
diff --git
a/docs/geode-native-book/master_middleman/source/layouts/_book-footer.erb
b/docs/geode-native-book-cpp/master_middleman/source/layouts/_book-footer.erb
similarity index 100%
copy from
docs/geode-native-book/master_middleman/source/layouts/_book-footer.erb
copy to
docs/geode-native-book-cpp/master_middleman/source/layouts/_book-footer.erb
diff --git a/docs/geode-native-book/master_middleman/source/layouts/_header.erb
b/docs/geode-native-book-cpp/master_middleman/source/layouts/_header.erb
similarity index 100%
copy from docs/geode-native-book/master_middleman/source/layouts/_header.erb
copy to docs/geode-native-book-cpp/master_middleman/source/layouts/_header.erb
diff --git
a/docs/geode-native-book/master_middleman/source/layouts/_local-header.erb
b/docs/geode-native-book-cpp/master_middleman/source/layouts/_local-header.erb
similarity index 100%
copy from
docs/geode-native-book/master_middleman/source/layouts/_local-header.erb
copy to
docs/geode-native-book-cpp/master_middleman/source/layouts/_local-header.erb
diff --git a/docs/geode-native-book/master_middleman/source/layouts/_title.erb
b/docs/geode-native-book-cpp/master_middleman/source/layouts/_title.erb
similarity index 100%
copy from docs/geode-native-book/master_middleman/source/layouts/_title.erb
copy to docs/geode-native-book-cpp/master_middleman/source/layouts/_title.erb
diff --git
a/docs/geode-native-book/master_middleman/source/stylesheets/book-styles.scss
b/docs/geode-native-book-cpp/master_middleman/source/stylesheets/book-styles.scss
similarity index 100%
copy from
docs/geode-native-book/master_middleman/source/stylesheets/book-styles.scss
copy to
docs/geode-native-book-cpp/master_middleman/source/stylesheets/book-styles.scss
diff --git
a/docs/geode-native-book/master_middleman/source/stylesheets/partials/_book-base-values.scss
b/docs/geode-native-book-cpp/master_middleman/source/stylesheets/partials/_book-base-values.scss
similarity index 100%
copy from
docs/geode-native-book/master_middleman/source/stylesheets/partials/_book-base-values.scss
copy to
docs/geode-native-book-cpp/master_middleman/source/stylesheets/partials/_book-base-values.scss
diff --git
a/docs/geode-native-book/master_middleman/source/stylesheets/partials/_book-vars.scss
b/docs/geode-native-book-cpp/master_middleman/source/stylesheets/partials/_book-vars.scss
similarity index 100%
copy from
docs/geode-native-book/master_middleman/source/stylesheets/partials/_book-vars.scss
copy to
docs/geode-native-book-cpp/master_middleman/source/stylesheets/partials/_book-vars.scss
diff --git
a/docs/geode-native-book/master_middleman/source/subnavs/geode-nc-nav.erb
b/docs/geode-native-book-cpp/master_middleman/source/subnavs/geode-nc-nav.erb
similarity index 100%
copy from
docs/geode-native-book/master_middleman/source/subnavs/geode-nc-nav.erb
copy to
docs/geode-native-book-cpp/master_middleman/source/subnavs/geode-nc-nav.erb
diff --git a/docs/geode-native-book/redirects.rb.CPP
b/docs/geode-native-book-cpp/redirects.rb
similarity index 100%
rename from docs/geode-native-book/redirects.rb.CPP
rename to docs/geode-native-book-cpp/redirects.rb
diff --git a/docs/geode-native-book/.gitignore
b/docs/geode-native-book-dotnet/.gitignore
similarity index 100%
rename from docs/geode-native-book/.gitignore
rename to docs/geode-native-book-dotnet/.gitignore
diff --git a/docs/geode-native-book/Gemfile
b/docs/geode-native-book-dotnet/Gemfile
similarity index 100%
rename from docs/geode-native-book/Gemfile
rename to docs/geode-native-book-dotnet/Gemfile
diff --git a/docs/geode-native-book-dotnet/Gemfile.lock
b/docs/geode-native-book-dotnet/Gemfile.lock
new file mode 100644
index 0000000..8ccdcfc
--- /dev/null
+++ b/docs/geode-native-book-dotnet/Gemfile.lock
@@ -0,0 +1,207 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ activesupport (4.2.11.1)
+ i18n (~> 0.7)
+ minitest (~> 5.1)
+ thread_safe (~> 0.3, >= 0.3.4)
+ tzinfo (~> 1.1)
+ addressable (2.6.0)
+ public_suffix (>= 2.0.2, < 4.0)
+ ansi (1.5.0)
+ backports (3.15.0)
+ bookbindery (10.1.14)
+ ansi (~> 1.4)
+ css_parser
+ elasticsearch
+ fog-aws (~> 0.7.1)
+ font-awesome-sass (= 4.7.0)
+ git (~> 1.2.8)
+ middleman (= 4.1.10)
+ middleman-compass
+ middleman-livereload
+ middleman-sprockets
+ middleman-syntax (= 2.1.0)
+ nokogiri (= 1.8.2)
+ puma
+ rack-rewrite
+ redcarpet (~> 3.2.3)
+ rouge (!= 1.9.1)
+ therubyracer
+ thor (= 0.19.1)
+ builder (3.2.3)
+ chunky_png (1.3.11)
+ coffee-script (2.4.1)
+ coffee-script-source
+ execjs
+ coffee-script-source (1.12.2)
+ compass (1.0.3)
+ chunky_png (~> 1.2)
+ compass-core (~> 1.0.2)
+ compass-import-once (~> 1.0.5)
+ rb-fsevent (>= 0.9.3)
+ rb-inotify (>= 0.9)
+ sass (>= 3.3.13, < 3.5)
+ compass-core (1.0.3)
+ multi_json (~> 1.0)
+ sass (>= 3.3.0, < 3.5)
+ compass-import-once (1.0.5)
+ sass (>= 3.2, < 3.5)
+ concurrent-ruby (1.1.5)
+ contracts (0.13.0)
+ css_parser (1.7.0)
+ addressable
+ dotenv (2.7.5)
+ elasticsearch (7.3.0)
+ elasticsearch-api (= 7.3.0)
+ elasticsearch-transport (= 7.3.0)
+ elasticsearch-api (7.3.0)
+ multi_json
+ elasticsearch-transport (7.3.0)
+ faraday
+ multi_json
+ em-websocket (0.5.1)
+ eventmachine (>= 0.12.9)
+ http_parser.rb (~> 0.6.0)
+ erubis (2.7.0)
+ eventmachine (1.2.7)
+ excon (0.65.0)
+ execjs (2.7.0)
+ faraday (0.15.4)
+ multipart-post (>= 1.2, < 3)
+ fast_blank (1.0.0)
+ fastimage (2.1.5)
+ ffi (1.11.1)
+ fog-aws (0.7.6)
+ fog-core (~> 1.27)
+ fog-json (~> 1.0)
+ fog-xml (~> 0.1)
+ ipaddress (~> 0.8)
+ fog-core (1.45.0)
+ builder
+ excon (~> 0.58)
+ formatador (~> 0.2)
+ fog-json (1.2.0)
+ fog-core
+ multi_json (~> 1.10)
+ fog-xml (0.1.3)
+ fog-core
+ nokogiri (>= 1.5.11, < 2.0.0)
+ font-awesome-sass (4.7.0)
+ sass (>= 3.2)
+ formatador (0.2.5)
+ git (1.2.9.1)
+ haml (5.1.1)
+ temple (>= 0.8.0)
+ tilt
+ hamster (3.0.0)
+ concurrent-ruby (~> 1.0)
+ hashie (3.6.0)
+ http_parser.rb (0.6.0)
+ i18n (0.7.0)
+ ipaddress (0.8.3)
+ kramdown (1.17.0)
+ libv8 (3.16.14.19)
+ listen (3.0.8)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ memoist (0.16.0)
+ middleman (4.1.10)
+ coffee-script (~> 2.2)
+ compass-import-once (= 1.0.5)
+ haml (>= 4.0.5)
+ kramdown (~> 1.2)
+ middleman-cli (= 4.1.10)
+ middleman-core (= 4.1.10)
+ sass (>= 3.4.0, < 4.0)
+ middleman-cli (4.1.10)
+ thor (>= 0.17.0, < 2.0)
+ middleman-compass (4.0.1)
+ compass (>= 1.0.0, < 2.0.0)
+ middleman-core (>= 4.0.0)
+ middleman-core (4.1.10)
+ activesupport (~> 4.2)
+ addressable (~> 2.3)
+ backports (~> 3.6)
+ bundler (~> 1.1)
+ contracts (~> 0.13.0)
+ dotenv
+ erubis
+ execjs (~> 2.0)
+ fast_blank
+ fastimage (~> 2.0)
+ hamster (~> 3.0)
+ hashie (~> 3.4)
+ i18n (~> 0.7.0)
+ listen (~> 3.0.0)
+ memoist (~> 0.14)
+ padrino-helpers (~> 0.13.0)
+ parallel
+ rack (>= 1.4.5, < 2.0)
+ sass (>= 3.4)
+ servolux
+ tilt (~> 1.4.1)
+ uglifier (~> 3.0)
+ middleman-livereload (3.4.6)
+ em-websocket (~> 0.5.1)
+ middleman-core (>= 3.3)
+ rack-livereload (~> 0.3.15)
+ middleman-sprockets (4.1.1)
+ middleman-core (~> 4.0)
+ sprockets (>= 3.0)
+ middleman-syntax (2.1.0)
+ middleman-core (>= 3.2)
+ rouge (~> 1.0)
+ mini_portile2 (2.3.0)
+ minitest (5.11.3)
+ multi_json (1.13.1)
+ multipart-post (2.1.1)
+ nio4r (2.4.0)
+ nokogiri (1.8.2)
+ mini_portile2 (~> 2.3.0)
+ padrino-helpers (0.13.3.4)
+ i18n (~> 0.6, >= 0.6.7)
+ padrino-support (= 0.13.3.4)
+ tilt (>= 1.4.1, < 3)
+ padrino-support (0.13.3.4)
+ activesupport (>= 3.1)
+ parallel (1.17.0)
+ public_suffix (3.1.1)
+ puma (4.0.1)
+ nio4r (~> 2.0)
+ rack (1.6.11)
+ rack-livereload (0.3.17)
+ rack
+ rack-rewrite (1.5.1)
+ rb-fsevent (0.10.3)
+ rb-inotify (0.10.0)
+ ffi (~> 1.0)
+ redcarpet (3.2.3)
+ ref (2.0.0)
+ rouge (1.11.1)
+ sass (3.4.25)
+ servolux (0.13.0)
+ sprockets (3.7.2)
+ concurrent-ruby (~> 1.0)
+ rack (> 1, < 3)
+ temple (0.8.1)
+ therubyracer (0.12.3)
+ libv8 (~> 3.16.14.15)
+ ref
+ thor (0.19.1)
+ thread_safe (0.3.6)
+ tilt (1.4.1)
+ tzinfo (1.2.5)
+ thread_safe (~> 0.1)
+ uglifier (3.2.0)
+ execjs (>= 0.3.0, < 3)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ bookbindery
+ libv8
+
+BUNDLED WITH
+ 1.17.3
diff --git a/docs/geode-native-book/config.yml
b/docs/geode-native-book-dotnet/config.yml
similarity index 100%
rename from docs/geode-native-book/config.yml
rename to docs/geode-native-book-dotnet/config.yml
diff --git
a/docs/geode-native-book/master_middleman/source/archive_menus/_default.erb
b/docs/geode-native-book-dotnet/master_middleman/source/archive_menus/_default.erb
similarity index 100%
rename from
docs/geode-native-book/master_middleman/source/archive_menus/_default.erb
rename to
docs/geode-native-book-dotnet/master_middleman/source/archive_menus/_default.erb
diff --git
a/docs/geode-native-book/master_middleman/source/images/Apache_Geode_logo_symbol.png
b/docs/geode-native-book-dotnet/master_middleman/source/images/Apache_Geode_logo_symbol.png
similarity index 100%
rename from
docs/geode-native-book/master_middleman/source/images/Apache_Geode_logo_symbol.png
rename to
docs/geode-native-book-dotnet/master_middleman/source/images/Apache_Geode_logo_symbol.png
diff --git
a/docs/geode-native-book/master_middleman/source/images/Apache_Geode_logo_symbol_white.png
b/docs/geode-native-book-dotnet/master_middleman/source/images/Apache_Geode_logo_symbol_white.png
similarity index 100%
rename from
docs/geode-native-book/master_middleman/source/images/Apache_Geode_logo_symbol_white.png
rename to
docs/geode-native-book-dotnet/master_middleman/source/images/Apache_Geode_logo_symbol_white.png
diff --git a/docs/geode-native-book/master_middleman/source/images/favicon.ico
b/docs/geode-native-book-dotnet/master_middleman/source/images/favicon.ico
similarity index 100%
rename from docs/geode-native-book/master_middleman/source/images/favicon.ico
rename to
docs/geode-native-book-dotnet/master_middleman/source/images/favicon.ico
diff --git a/docs/geode-native-book/master_middleman/source/javascripts/book.js
b/docs/geode-native-book-dotnet/master_middleman/source/javascripts/book.js
similarity index 100%
rename from docs/geode-native-book/master_middleman/source/javascripts/book.js
rename to
docs/geode-native-book-dotnet/master_middleman/source/javascripts/book.js
diff --git
a/docs/geode-native-book/master_middleman/source/javascripts/waypoints/context.js
b/docs/geode-native-book-dotnet/master_middleman/source/javascripts/waypoints/context.js
similarity index 100%
rename from
docs/geode-native-book/master_middleman/source/javascripts/waypoints/context.js
rename to
docs/geode-native-book-dotnet/master_middleman/source/javascripts/waypoints/context.js
diff --git
a/docs/geode-native-book/master_middleman/source/javascripts/waypoints/group.js
b/docs/geode-native-book-dotnet/master_middleman/source/javascripts/waypoints/group.js
similarity index 100%
rename from
docs/geode-native-book/master_middleman/source/javascripts/waypoints/group.js
rename to
docs/geode-native-book-dotnet/master_middleman/source/javascripts/waypoints/group.js
diff --git
a/docs/geode-native-book/master_middleman/source/javascripts/waypoints/noframeworkAdapter.js
b/docs/geode-native-book-dotnet/master_middleman/source/javascripts/waypoints/noframeworkAdapter.js
similarity index 100%
rename from
docs/geode-native-book/master_middleman/source/javascripts/waypoints/noframeworkAdapter.js
rename to
docs/geode-native-book-dotnet/master_middleman/source/javascripts/waypoints/noframeworkAdapter.js
diff --git
a/docs/geode-native-book/master_middleman/source/javascripts/waypoints/sticky.js
b/docs/geode-native-book-dotnet/master_middleman/source/javascripts/waypoints/sticky.js
similarity index 100%
rename from
docs/geode-native-book/master_middleman/source/javascripts/waypoints/sticky.js
rename to
docs/geode-native-book-dotnet/master_middleman/source/javascripts/waypoints/sticky.js
diff --git
a/docs/geode-native-book/master_middleman/source/javascripts/waypoints/waypoint.js
b/docs/geode-native-book-dotnet/master_middleman/source/javascripts/waypoints/waypoint.js
similarity index 100%
rename from
docs/geode-native-book/master_middleman/source/javascripts/waypoints/waypoint.js
rename to
docs/geode-native-book-dotnet/master_middleman/source/javascripts/waypoints/waypoint.js
diff --git
a/docs/geode-native-book/master_middleman/source/layouts/_book-footer.erb
b/docs/geode-native-book-dotnet/master_middleman/source/layouts/_book-footer.erb
similarity index 100%
rename from
docs/geode-native-book/master_middleman/source/layouts/_book-footer.erb
rename to
docs/geode-native-book-dotnet/master_middleman/source/layouts/_book-footer.erb
diff --git a/docs/geode-native-book/master_middleman/source/layouts/_header.erb
b/docs/geode-native-book-dotnet/master_middleman/source/layouts/_header.erb
similarity index 100%
rename from docs/geode-native-book/master_middleman/source/layouts/_header.erb
rename to
docs/geode-native-book-dotnet/master_middleman/source/layouts/_header.erb
diff --git
a/docs/geode-native-book/master_middleman/source/layouts/_local-header.erb
b/docs/geode-native-book-dotnet/master_middleman/source/layouts/_local-header.erb
similarity index 100%
rename from
docs/geode-native-book/master_middleman/source/layouts/_local-header.erb
rename to
docs/geode-native-book-dotnet/master_middleman/source/layouts/_local-header.erb
diff --git a/docs/geode-native-book/master_middleman/source/layouts/_title.erb
b/docs/geode-native-book-dotnet/master_middleman/source/layouts/_title.erb
similarity index 100%
rename from docs/geode-native-book/master_middleman/source/layouts/_title.erb
rename to
docs/geode-native-book-dotnet/master_middleman/source/layouts/_title.erb
diff --git
a/docs/geode-native-book/master_middleman/source/stylesheets/book-styles.scss
b/docs/geode-native-book-dotnet/master_middleman/source/stylesheets/book-styles.scss
similarity index 100%
rename from
docs/geode-native-book/master_middleman/source/stylesheets/book-styles.scss
rename to
docs/geode-native-book-dotnet/master_middleman/source/stylesheets/book-styles.scss
diff --git
a/docs/geode-native-book/master_middleman/source/stylesheets/partials/_book-base-values.scss
b/docs/geode-native-book-dotnet/master_middleman/source/stylesheets/partials/_book-base-values.scss
similarity index 100%
rename from
docs/geode-native-book/master_middleman/source/stylesheets/partials/_book-base-values.scss
rename to
docs/geode-native-book-dotnet/master_middleman/source/stylesheets/partials/_book-base-values.scss
diff --git
a/docs/geode-native-book/master_middleman/source/stylesheets/partials/_book-vars.scss
b/docs/geode-native-book-dotnet/master_middleman/source/stylesheets/partials/_book-vars.scss
similarity index 100%
rename from
docs/geode-native-book/master_middleman/source/stylesheets/partials/_book-vars.scss
rename to
docs/geode-native-book-dotnet/master_middleman/source/stylesheets/partials/_book-vars.scss
diff --git
a/docs/geode-native-book/master_middleman/source/subnavs/geode-nc-nav.erb
b/docs/geode-native-book-dotnet/master_middleman/source/subnavs/geode-nc-nav.erb
similarity index 100%
rename from
docs/geode-native-book/master_middleman/source/subnavs/geode-nc-nav.erb
rename to
docs/geode-native-book-dotnet/master_middleman/source/subnavs/geode-nc-nav.erb
diff --git a/docs/geode-native-book/redirects.rb
b/docs/geode-native-book-dotnet/redirects.rb
similarity index 100%
rename from docs/geode-native-book/redirects.rb
rename to docs/geode-native-book-dotnet/redirects.rb
diff --git a/docs/geode-native-book/config.yml.DOTNET
b/docs/geode-native-book/config.yml.DOTNET
deleted file mode 100644
index 162a67b..0000000
--- a/docs/geode-native-book/config.yml.DOTNET
+++ /dev/null
@@ -1,49 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-
-book_repo: apache/geode-native/docs/geode-native-book
-public_host: localhost
-
-sections:
-- repository:
- name: geode-native-docs-dotnet
- directory: docs/geode-native/dotnet/111
- subnav_template: geode-nc-nav
-
-template_variables:
- product_name_long: Apache Geode
- product_name: Geode
- product_name_lc: geode
- product_version: "1.11"
- product_version_nodot: 111
- product_language: dotnet
- client_name: Geode Native Client for .NET
- min_java_update: 121
- support_url: http://geode.apache.org/community
- product_url: http://geode.apache.org
- book_title: Apache Geode Native .NET Documentation
- book_header_img: /images/Apache_Geode_logo_symbol_white.png
- support_link: <a href="http://geode.apache.org/community"
target="_blank">Community</a>
- support_call_to_action: <a href="http://geode.apache.org/community"
target="_blank">Need Help?</a>
- changelog_href:
https://cwiki.apache.org/confluence/display/GEODE/Release+Notes
- product_link: <div class="header-item"><a
href="http://geode.apache.org">Back to Product Page</a></div>
- domain_name: apache.org
- book_title_short: Geode Native .NET Docs
- local_header_title: Apache Geode Native .NET
- local_header_img: /images/Apache_Geode_logo_symbol.png
-
-broken_link_exclusions:
iefix|using_custom_classes|arrowhead|cppdocs|dotnetdocs|#
diff --git a/docs/geode-native-book/redirects.rb.DOTNET
b/docs/geode-native-book/redirects.rb.DOTNET
deleted file mode 100644
index 07afaee..0000000
--- a/docs/geode-native-book/redirects.rb.DOTNET
+++ /dev/null
@@ -1,25 +0,0 @@
-#Licensed to the Apache Software Foundation (ASF) under one or more
-#contributor license agreements. See the NOTICE file distributed with
-#this work for additional information regarding copyright ownership.
-#The ASF licenses this file to You 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.
-
-# Links to API Documentation #
-r301 %r{/releases/latest/javadoc/(.*)},
'https://geode.apache.org/releases/latest/javadoc/$1'
-r302 %r{/cppdocs/(.*)}, 'https://geode.apache.org/releases/latest/cppdocs/$1'
-r302 %r{/dotnetdocs/(.*)},
'https://geode.apache.org/releases/latest/dotnetdocs/$1'
-
-# Links to User Guides #
-rewrite '/', '/docs/geode-native/dotnet/111/about-client-users-guide.html'
-rewrite '/index.html',
'/docs/geode-native/dotnet/111/about-client-users-guide.html'
-r301 %r{/serverman/(.*)}, 'https://geode.apache.org/docs/guide/111/$1'
-r301 %r{/geodeman/(.*)}, 'https://geode.apache.org/docs/guide/111/$1'
diff --git a/docs/docker/Dockerfile b/docs/manual-build/Dockerfile
similarity index 100%
copy from docs/docker/Dockerfile
copy to docs/manual-build/Dockerfile
diff --git a/docs/manual-build/README.md b/docs/manual-build/README.md
new file mode 100644
index 0000000..2558667
--- /dev/null
+++ b/docs/manual-build/README.md
@@ -0,0 +1,68 @@
+# Apache Geode Native Client User Guides
+
+This document contains instructions for building and viewing the Apache Geode
Native Client User Guides.
+
+## Bookbinder Usage
+
+Bookbinder is meant to be used from within a project called a **book**. The
book includes a configuration file that describes which documentation
repositories to use as source materials. Bookbinder provides a set of scripts
to aggregate those repositories and publish them to various locations.
+
+For Geode Native Client, a preconfigured **book** is provided for each user
guide (C++ and .NET) in the directories
`_geode-native-project-dir_/docs/geode-native-book-cpp` and
`_geode-native-project-dir_/docs/geode-native-book-dotnet`. Each book gathers
content from the language-specific directory
_geode-native-project-dir_/docs/geode-native-docs-cpp or
geode-native-docs-dotnet. You can use this configuration to build an HTML
version of the Apache Geode Native Client User Guides on your [...]
+
+<a name="docker-setup"></a>
+## Docker Setup
+
+For ease of use, a Docker image is provided that contains a self-consistent
Bookbinder environment. [Install Docker](https://docs.docker.com/install/) if
you have not already done so.
+
+<a name="building-the-documentation"></a>
+## Building the Documentation
+
+1. Navigate to the directory that contains the Dockerfile and run the `docker
build` command to create the Bookbinder-enabled Docker image:
+
+ ```bash
+ $ cd geode-native/docs/manual-build
+ $ docker build -t geode-native-userman .
+ ```
+
+1. Run the Docker image in interactive mode with a command similar to the
following:
+
+ ```bash
+ $ docker run -it -p 9292:9292 -p 1234:1234 -v
PATH-TO-GEODE-NATIVE/docs:/docs geode-native-userman
+ ```
+
+ where `PATH-TO-GEODE-NATIVE` is the fully-qualified path to the
geode-native repo. This brings up the interactive Docker container, with `/` as
your current working directory.
+
+1. To build the documentation, `cd` to the book directory:
+
+ For C++ guide:
+ ```bash
+ $ cd docs/geode-native-book-cpp
+ ```
+
+ For .NET guide:
+ ```bash
+ $ cd docs/geode-native-book-dotnet
+ ```
+
+1. Run `bundle install` to install the dependencies required to build the user
guide.
+
+ ```bash
+ $ bundle install
+ ```
+
+1. Invoke bookbinder to build the user guide. Bookbinder converts the markdown
source into HTML, which it puts in the `final_app` directory:
+
+ ```bash
+ $ bundle exec bookbinder bind local
+ ```
+
+1. To start a local website of the Apache Geode Native Client User Guide,
navigate to the `final_app` directory and run `rackup`:
+
+ ```bash
+ $ cd final_app
+ $ rackup
+ ```
+
+ Note: You may be prompted to run `bundle install` to supply any missing
components. Do that, then re-try the `rackup` command.
+
+ You can now view the local documentation in a browser at
<http://localhost:9292>.
+