The Docs Decomposer is an inventory tool for documentation at Puppet Labs. With it, you can:
- Import the pages and content from a given Puppet Labs project or upstream.
- Flag, comment on, tag, and assign risk/priority to each page
- Review each page with the option to quickly reveal only:
- Heading structure (h-tags)
- Code and command line examples/steps (pre/code elements)
- Procedures (ordered, unordered lists)
- Screenshots (images)
It supports multiple users, each of which can leave comments or set flags under their own identity. Users designated as an "admin" can set the risk or priority of a page and also add/remove tags.
The tool depends on the puppetlabs/puppet-docs and puppetlabs/puppet-docs-private repos to import content into its database:
cd repos
git clone git@github.com:puppetlabs/puppet-docs-private.git
git clone git@github.com:puppetlabs/puppet-docs.git
# bundle install --path vendor/bundle
The config/application.rb
file contains settings that drive which
content is imported into the tool:
The docs.projects
setting uses the directory name and version
numbers of projects as found in the docs repo to drive which projects
and versions are captured:
config.docs.projects = {'pe' => ['3.7','3.3'], 'puppet' => ['3.7', '4.0']}
The docs.dev_project
setting sets which directory in the private
repo is being used to do work on the next release. In the case of
Puppet Enterprise 3.8, that's PE 3.7.
config.docs.dev_project = {'pe' => '3.7'}
Note: If the docs workflow ever changes to creating the new release under its own version name/number, the release number value will need to change to reflect the directory the work is being done in.
The config.docs.dev_project_number
setting sets how the tool will
report the version number of the development release:
config.docs.dev_project_number = "3.8-dev"
To create the database and establish the initial tables:
# bundle exec RAILS_ENV=production rake db:migrate
Use the scripts/dev_file_importer.rb
script to import content from
the private repo.
# bundle exec RAILS_ENV=production rails r scripts/dev_file_importer.rb
Note: This is clunky and needs to be fixed. This is how it works for now.
The tool has a few rake tasks to help with setup once the app is
cloned and you've run rake db:migrate
. The setup:import_content
task will handle refreshing the two docs repos, moving the correct
content into place, and importing HTML from either live or preview
servers.
# bundle exec RAILS_ENV=production rake setup:import_content
The tool uses the unicorn-rails
gem to make sure Rails is using
Unicorn. All that's required to get it running is:
# bundle exec RAILS_ENV=production rake assets:precompile
# bundle exec rails s -e production -d
Visit the app's /docs
URL for a manual on usage.