From 434f9c3f8631b76e8eacae7145a6f5d3f0557653 Mon Sep 17 00:00:00 2001 From: Petr Bokoc Date: Mar 14 2019 13:52:53 +0000 Subject: Initial commit --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9f3ebf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +build +cache +public diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..ba8d521 --- /dev/null +++ b/LICENSE @@ -0,0 +1,10 @@ +The text of and illustrations in this document are licensed by Red Hat +under a Creative Commons Attribution–Share Alike 3.0 Unported license +("CC-BY-SA"). An explanation of CC-BY-SA is available at +http://creativecommons.org/licenses/by-sa/3.0/. In accordance with +CC-BY-SA, if you distribute this document or an adaptation of it, you +must provide the URL for the original version. + +Red Hat, as the licensor of this document, waives the right to +enforce, and agrees not to assert, Section 4d of CC-BY-SA to the +fullest extent permitted by applicable law. diff --git a/README.md b/README.md new file mode 100644 index 0000000..47cd4c1 --- /dev/null +++ b/README.md @@ -0,0 +1,121 @@ +# Fedora Docs Template + +This repository contains a minimal source structure for a new Fedora Docs source. + +## Structure + +``` +|-- README.md +|-- antora.yml ....................... 1. +|-- build.sh ......................... 2. +|-- preview.sh ....................... 3. +|-- site.yml ......................... 4. +`-- modules + `-- ROOT ......................... 5. + |-- assets + | `-- images ............... 6. + | `-- pizza.png + |-- nav.adoc ................. 7. + `-- pages .................... 8. + |-- architecture.adoc + |-- community.adoc + |-- faq.adoc + |-- index.adoc + |-- pizza-dough.adoc + `-- pizza-owen.adoc +``` + +1. Metadata definition. +2. A script that does a local build. Uses docker. +3. A script that shows a preview of the site in a web browser by running a local web server. Uses docker. +4. A definition file for the build script. +5. A "root module of this documentation component". Please read below for an explanation. +6. **Images** to be used on any page. +7. **Menu definition.** Also defines the hierarchy of all the pages. +8. **Pages with the actual content.** They can be also organised into subdirectories if desired. + +## Components and Modules + +Antora introduces two new terms: + +* **Component** — Simply put, a component is a part of the documentation website with its own menu. Components can also be versioned. In the Fedora Docs, we use separate components for user documentation, the Fedora Poject, Fedora council, Mindshare, FESCO, but also subprojects such as CommOps or Modulartity. +* **Module** — A component can be broken down into multiple modules. Modules still share a single menu on the site, but their sources can be stored in different git repositories, even owned by different groups. The default module is called "ROOT" (that's what is in this example). If you don't want to use multiple modules, only use "ROOT". But to define more modules, simply duplicate the "ROOT" directory and name it anything you want. You can store modules in one or more git repositories. + +## Local preview + +This repo includes scripts to build and preview the contents of this repository. + +**NOTE**: Please note that if you reference pages from other repositoreis, such links will be broken in this local preview as it only builds this repository. If you want to rebuild the whole Fedora Docs site, please see [the Fedora Docs build repository](https://pagure.io/fedora-docs/docs-fp-o/) for instructions. + +Both scripts work on Fedora (using Podman) and macOS (using Docker). + +To build and preview the site, run: + +``` +$ ./build.sh && ./preview.sh +``` + +The result will be available at http://localhost:8080 + +### Installing Podman on Fedora + +Fedora Workstation doesn't come with Podman preinstalled by default — so you might need to install it using the following command: + +``` +$ sudo dnf install podman +``` + +### Preview as a part of the whole Fedora Docs site + +You can also build the whole Fedora Docs site locally to see your changes in the whole context. +This is especially useful for checking if your `xref` links work properly. + +To do this, you need to clone the main [Fedora Docs build repository](https://pagure.io/fedora-docs/docs-fp-o), modify the `site.yml` file to reference a repo with your changes, and build it. +Steps: + +Clone the main repository and cd into it: + +``` +$ git clone https://pagure.io/fedora-docs/docs-fp-o.git +$ cd docs-fp-o +``` + +Find a reference to the repository you're changing in the `site.yml` file, and change it so it points to your change. +So for example, if I made a modification to the Modularity docs, I would find: + +``` +... + - url: https://pagure.io/fedora-docs/modularity.git + branches: + - master +... +``` + +And replaced it with a pointer to my fork: +``` +... + - url: https://pagure.io/forks/asamalik/fedora-docs/modularity.git + branches: + - master +... +``` + +I could also point to a local repository, using `HEAD` as a branch to preview the what's changed without the need of making a commit. + +**Note:** I would need to move the repository under the `docs-fp-o` directory, because the builder won't see anything above. +So I would need to create a `repositories` directory in `docs-fp-o` and copy my repository into it. + +``` +... + - url: ./repositories/modularity + branches: + - HEAD +... +``` + +To build the whole site, I would run the following in the `docs-fp-o` directory. + +``` +$ ./build.sh && ./preview.sh +``` + diff --git a/antora.yml b/antora.yml new file mode 100644 index 0000000..a5649e5 --- /dev/null +++ b/antora.yml @@ -0,0 +1,16 @@ +# Name will be mostly visible in the URL. Treat it as an indentifier. +# Tip: If you want to use the local preview scripts that come with this repository, please change this value in the site.yml file as well. (under site/start_page) +name: fedora-infra # <---- PLEASE MODIFY + +# Title will be visible on the page. +title: Fedora Infrastructure Documentation # <---- PLEASE MODIFY + +# If you don't plan to have multiple versions of the docs (for example, to document multiple versions of some software), you can ignore this field. Otherwise, change "master" to a specific version. +version: master + +# We encourage you to name the index page as "index.adoc". If you absolutely have to use a different name, please reflect it here. You can ignore this field otherwise. +start_page: taiga:index + +# This lists all the menu definitions of your component. +nav: +- modules/taiga/nav.adoc diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..1e4db2d --- /dev/null +++ b/build.sh @@ -0,0 +1,46 @@ +#!/bin/sh + +image="docker.io/antora/antora" +cmd="--html-url-extension-style=indexify site.yml" + +if [ "$(uname)" == "Darwin" ]; then + # Running on macOS. + # Let's assume that the user has the Docker CE installed + # which doesn't require a root password. + echo "" + echo "This build script is using Docker container runtime to run the build in an isolated environment." + echo "" + docker run --rm -it -v $(pwd):/antora $image $cmd + +elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then + # Running on Linux. + # Check whether podman is available, else faill back to docker + # which requires root. + + if [ -f /usr/bin/podman ]; then + echo "" + echo "This build script is using Podman to run the build in an isolated environment." + echo "" + podman run --rm -it -v $(pwd):/antora:z $image $cmd + + elif [ -f /usr/bin/docker ]; then + echo "" + echo "This build script is using Docker to run the build in an isolated environment." + echo "" + + if groups | grep -wq "docker"; then + docker run --rm -it -v $(pwd):/antora:z $image $cmd + else + echo "" + echo "This build script is using $runtime to run the build in an isolated environment. You might be asked for your password." + echo "You can avoid this by adding your user to the 'docker' group, but be aware of the security implications. See https://docs.docker.com/install/linux/linux-postinstall/." + echo "" + sudo docker run --rm -it -v $(pwd):/antora:z $image $cmd + fi + else + echo "" + echo "Error: Container runtime haven't been found on your system. Fix it by:" + echo "$ sudo dnf install podman" + exit 1 + fi +fi diff --git a/modules/taiga/assets/images/pizza.png b/modules/taiga/assets/images/pizza.png new file mode 100644 index 0000000..bdecba7 Binary files /dev/null and b/modules/taiga/assets/images/pizza.png differ diff --git a/modules/taiga/nav.adoc b/modules/taiga/nav.adoc new file mode 100644 index 0000000..a4054d4 --- /dev/null +++ b/modules/taiga/nav.adoc @@ -0,0 +1,5 @@ +* xref:architecture.adoc[Architecture] +** xref:pizza-owen.adoc[Pizza Owen] +** xref:pizza-dough.adoc[Pizza Dough] +* xref:community.adoc[Community] +* xref:faq.adoc[FAQ] diff --git a/modules/taiga/pages/architecture.adoc b/modules/taiga/pages/architecture.adoc new file mode 100644 index 0000000..97c3e57 --- /dev/null +++ b/modules/taiga/pages/architecture.adoc @@ -0,0 +1,3 @@ += Pizza Factory Architecture + +The architecture of our pizza factory is quite simple. We bake our very expensive xref:pizza-dough.adoc[pizza dough] in a very cheap xref:pizza-owen.adoc[pizza owen]. This way, we can achieve a medicore result for a high price and a reasonable number of failures. diff --git a/modules/taiga/pages/community.adoc b/modules/taiga/pages/community.adoc new file mode 100644 index 0000000..def9977 --- /dev/null +++ b/modules/taiga/pages/community.adoc @@ -0,0 +1,3 @@ += Pizza Factory Community + +Our community is basically the same as the community of Fedora Docs. That's mostly because this is a template for new pieces of the Fedora Docs. diff --git a/modules/taiga/pages/faq.adoc b/modules/taiga/pages/faq.adoc new file mode 100644 index 0000000..8a8da48 --- /dev/null +++ b/modules/taiga/pages/faq.adoc @@ -0,0 +1,7 @@ += Frequently Asked Questions (FAQ) + +[qanda] +Can I see a built preview of this template to get a better idea about the result?:: + Of course you can! Just look at the README of the repository — it should tell you everything. +Is writing documentation hard and dreadful?:: + Absolutely not. Writing documentation in asciidoc is very simple and straighforward. And in fact, writing documentation makes you very happy. Just try and see for yourself! diff --git a/modules/taiga/pages/index.adoc b/modules/taiga/pages/index.adoc new file mode 100644 index 0000000..f11d625 --- /dev/null +++ b/modules/taiga/pages/index.adoc @@ -0,0 +1,7 @@ += The Pizza Project + +The Pizza Project is a useful project with a very bad name — it helps you with writing some new documentation for Fedora. + +In fact, this is just a source template for a new piece of the Fedora Docs. + +image::pizza.png[Pizza] diff --git a/modules/taiga/pages/pizza-dough.adoc b/modules/taiga/pages/pizza-dough.adoc new file mode 100644 index 0000000..5b59bae --- /dev/null +++ b/modules/taiga/pages/pizza-dough.adoc @@ -0,0 +1,3 @@ += Pizza Dough Architecture + +I would never thought that a pizza dough can have an architecture. Yet here we are. diff --git a/modules/taiga/pages/pizza-owen.adoc b/modules/taiga/pages/pizza-owen.adoc new file mode 100644 index 0000000..b15ebaf --- /dev/null +++ b/modules/taiga/pages/pizza-owen.adoc @@ -0,0 +1,3 @@ += Pizza Owen Architecture + +Pizza owen architecture would be described on this page. Since this is just a template, I choose to disappoint you and not describe the pizza owen architecture. diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..f7093b3 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,14 @@ +server { + listen 80; + server_name localhost; + + location / { + root /antora/public; + index index.html index.htm; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} diff --git a/preview.sh b/preview.sh new file mode 100755 index 0000000..aeed9f1 --- /dev/null +++ b/preview.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +if [ "$(uname)" == "Darwin" ]; then + # Running on macOS. + # Let's assume that the user has the Docker CE installed + # which doesn't require a root password. + echo "The preview will be available at http://localhost:8080/" + docker run --rm -v $(pwd):/antora:ro -v $(pwd)/nginx.conf:/etc/nginx/conf.d/default.conf:ro -p 8080:80 nginx + +elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then + # Running on Linux. + # Fedora Workstation has python3 installed as a default, so using that + echo "" + echo "The preview is available at http://localhost:8080" + echo "" + python3 -m http.server --directory ./public 8080 +fi diff --git a/site.yml b/site.yml new file mode 100644 index 0000000..c3c1130 --- /dev/null +++ b/site.yml @@ -0,0 +1,20 @@ +site: + title: Local Preview + start_page: fedora-infra:taiga:index +content: + sources: + - url: . + branches: HEAD +ui: + bundle: + url: https://asamalik.fedorapeople.org/ui-bundle.zip + snapshot: true + default_layout: with_menu +output: + clean: true + dir: ./public + destinations: + - provider: archive +runtime: + pull: true + cache_dir: ./cache