From 73edfe81a77da178d93e880347cf22763b0a5876 Mon Sep 17 00:00:00 2001 From: Matt Klein Date: Fri, 12 Apr 2019 16:24:50 -0700 Subject: [PATCH] tmp Signed-off-by: Matt Klein --- .circleci/config.yml | 29 ++++ .github/stale.yml | 46 ++++++ .gitignore | 2 + .gitmodules | 3 + CODE_OF_CONDUCT.md | 4 + CONTRIBUTING.md | 134 +++++++++++++++++ DCO | 37 +++++ LICENSE | 202 +++++++++++++++++++++++++ NOTICE | 4 + OWNERS.md | 6 + README.md | 35 ++++- STYLE.md | 13 ++ VERSION | 1 + docs/README.md | 11 ++ docs/build.sh | 50 +++++++ docs/conf.py | 258 ++++++++++++++++++++++++++++++++ docs/requirements.txt | 17 +++ docs/root/_static/css/envoy.css | 11 ++ docs/root/favicon.ico | Bin 0 -> 67646 bytes docs/root/index.rst | 10 ++ envoy | 1 + 21 files changed, 872 insertions(+), 2 deletions(-) create mode 100644 .circleci/config.yml create mode 100644 .github/stale.yml create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 DCO create mode 100644 LICENSE create mode 100644 NOTICE create mode 100644 OWNERS.md create mode 100644 STYLE.md create mode 100644 VERSION create mode 100644 docs/README.md create mode 100755 docs/build.sh create mode 100644 docs/conf.py create mode 100644 docs/requirements.txt create mode 100644 docs/root/_static/css/envoy.css create mode 100644 docs/root/favicon.ico create mode 100644 docs/root/index.rst create mode 160000 envoy diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000000..8d3ba85f88 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,29 @@ +version: 2.1 + +executors: + ubuntu-build: + description: "A regular build executor based on ubuntu image" + docker: + - image: envoyproxy/envoy-build:cfc514546bc0284536893cca5fa43d7128edcd35 + # TODO(mattklein123): Get xlarge class enabled + resource_class: medium + working_directory: /source + +jobs: + docs: + executor: ubuntu-build + steps: + - checkout + - run: git submodule update --init + - run: docs/build.sh + - store_artifacts: + path: generated/docs + +workflows: + version: 2 + all: + jobs: + - docs: + filters: + tags: + only: /^v.*/ diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 0000000000..e33e9247d4 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,46 @@ +# Configuration for probot-stale - https://github.com/probot/stale + +# General configuration +# Label to use when marking as stale +staleLabel: stale + +# Pull request specific configuration +pulls: + # Number of days of inactivity before an Issue or Pull Request becomes stale + daysUntilStale: 7 + # Number of days of inactivity before a stale Issue or Pull Request is closed. + # Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. + daysUntilClose: 7 + # Comment to post when marking as stale. Set to `false` to disable + markComment: > + This pull request has been automatically marked as stale because it has not had + activity in the last 7 days. It will be closed in 7 days if no further activity occurs. Please + feel free to give a status update now, ping for review, or re-open when it's ready. + Thank you for your contributions! + # Comment to post when closing a stale Issue or Pull Request. + closeComment: > + This pull request has been automatically closed because it has not had + activity in the last 14 days. Please feel free to give a status update now, ping for review, or re-open when it's ready. + Thank you for your contributions! + # Limit the number of actions per hour, from 1-30. Default is 30 + limitPerRun: 1 + exemptLabels: + - no stalebot + +# Issue specific configuration +issues: + # TODO: Consider increasing the limitPerRun once we are satisfied with the bot's performance + limitPerRun: 1 + daysUntilStale: 30 + daysUntilClose: 7 + markComment: > + This issue has been automatically marked as stale because it has not had activity in the + last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or other activity + occurs. Thank you for your contributions. + closeComment: > + This issue has been automatically closed because it has not had activity in the + last 37 days. If this issue is still valid, please ping a maintainer and ask them to label it as "help wanted". + Thank you for your contributions. + exemptLabels: + - help wanted + - no stalebot diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..c71c2a94c6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +build_docs/ +generated/ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..899f296c69 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "envoy"] + path = envoy + url = git@github.com:envoyproxy/envoy.git diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..943a18613d --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,4 @@ +# Community Code of Conduct + +Envoy Mobile follows the +[CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..ff043571d5 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,134 @@ +We welcome contributions from the community. Please read the following guidelines carefully to +maximize the chances of your PR being merged. + +# Communication + +* Before starting work on a major feature, please reach out to us via GitHub, Slack, + email, etc. We will make sure no one else is already working on it and ask you to open a + GitHub issue. +* A "major feature" is defined as any change that is > 100 LOC altered (not including tests), or + changes any user-facing behavior. We will use the GitHub issue to discuss the feature and come to + agreement. This is to prevent your time being wasted, as well as ours. The GitHub review process + for major features is also important so that [organizations with commit access](OWNERS.md) can + come to agreement on design. If it is appropriate to write a design document, the document must + be hosted either in the GitHub tracking issue, or linked to from the issue and hosted in a + world-readable location. +* Small patches and bug fixes don't need prior communication. + +# Coding style + +* See [STYLE.md](STYLE.md) + +# Submitting a PR + +* TODO(mattklein123): Fill this in. + +# PR review policy for maintainers + +* Typically we try to turn around reviews within one business day. +* See [OWNERS.md](OWNERS.md) for the current list of maintainers. +* It is generally expected that a "domain expert" for the code the PR touches should review the + PR. This person does not necessarily need to be a maintainer. +* The above rule may be waived for PRs which only update docs or comments, or trivial changes to + tests and tools (where trivial is decided by the maintainer in question). +* If there is a question on who should review a PR please discuss in Slack. +* Anyone is welcome to review any PR that they want, whether they are a maintainer or not. +* Please **clean up the title and body** before merging. By default, GitHub fills the squash merge + title with the original title, and the commit body with every individual commit from the PR. + The maintainer doing the merge should make sure the title follows the guidelines above and should + overwrite the body with the original extended description from the PR (cleaning it up if necessary) + while preserving the PR author's final DCO sign-off. + +# DCO: Sign your work + +Envoy ships commit hooks that allow you to auto-generate the DCO signoff line if +it doesn't exist when you run `git commit`. Simply navigate to the project +root and run: + +```bash +./scripts/setup_git_hooks.sh +``` + +From here, simply commit as normal, and you will see the signoff at the bottom +of each commit. + +The sign-off is a simple line at the end of the explanation for the +patch, which certifies that you wrote it or otherwise have the right to +pass it on as an open-source patch. The rules are pretty simple: if you +can certify the below (from +[developercertificate.org](https://developercertificate.org/)): + +``` +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2004, 2006 The Linux Foundation and its contributors. +660 York Street, Suite 102, +San Francisco, CA 94110 USA + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. +``` + +then you just add a line to every git commit message: + + Signed-off-by: Joe Smith + +using your real name (sorry, no pseudonyms or anonymous contributions.) + +You can add the sign off when creating the git commit via `git commit -s`. + +If you want this to be automatic you can set up some aliases: + +```bash +git config --add alias.amend "commit -s --amend" +git config --add alias.c "commit -s" +``` + +## Fixing DCO + +If your PR fails the DCO check, it's necessary to fix the entire commit history in the PR. Best +practice is to [squash](https://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html) +the commit history to a single commit, append the DCO sign-off as described above, and [force +push](https://git-scm.com/docs/git-push#git-push---force). For example, if you have 2 commits in +your history: + +```bash +git rebase -i HEAD^^ +(interactive squash + DCO append) +git push origin -f +``` + +Note, that in general rewriting history in this way is a hindrance to the review process and this +should only be done to correct a DCO mistake. + +## Triggering CI re-run without making changes + +* TODO(mattklein123): Document when RepoKitteh is enabled. diff --git a/DCO b/DCO new file mode 100644 index 0000000000..8201f99215 --- /dev/null +++ b/DCO @@ -0,0 +1,37 @@ +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2004, 2006 The Linux Foundation and its contributors. +1 Letterman Drive +Suite D4700 +San Francisco, CA, 94129 + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000..760a01df5b --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner]. + + 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. \ No newline at end of file diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000000..caded72187 --- /dev/null +++ b/NOTICE @@ -0,0 +1,4 @@ +Envoy Mobile +Copyright 2019 Lyft + +Licensed under Apache License 2.0. See LICENSE for terms. diff --git a/OWNERS.md b/OWNERS.md new file mode 100644 index 0000000000..ad90b72e46 --- /dev/null +++ b/OWNERS.md @@ -0,0 +1,6 @@ +* See [CONTRIBUTING.md](CONTRIBUTING.md) for general contribution guidelines. + +This page lists all active maintainers and their areas of expertise. This can be used for +routing PRs, questions, etc. to the right place. + +TODO(mattklein123): Fill this in. diff --git a/README.md b/README.md index 36207e5aeb..f46edd6289 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,33 @@ -# envoy-edge -Client networking libraries based on the Envoy project +# Envoy Mobile + +Mobile client networking libraries based on the [Envoy](https://www.envoyproxy.io/) project. + +## Documentation + +* TODO(mattklein123): Fill in when hosted. + +## Contact + +* [envoy-mobile-announce](https://groups.google.com/forum/#!forum/envoy-mobile-announce): Low + frequency mailing list where we will email announcements only. +* [envoy-mobile-users](https://groups.google.com/forum/#!forum/envoy-mobile-users): General user + discussion. +* [envoy-mobile-dev](https://groups.google.com/forum/#!forum/envoy-mobile-dev): Envoy Mobile + developer discussion (APIs, feature design, etc.). +* [Slack](https://envoyproxy.slack.com/): Slack, to get invited go + [here](https://envoyslack.cncf.io). We can be found in the **#envoy-mobile** room. + +## Contributing + +Contributing to Envoy Mobile is fun! To get started: + +* [Contributing guide](CONTRIBUTING.md) +* Please make sure that you let us know if you are working on an issue so we don't duplicate work! + +## Copyright + +Envoy Mobile is Apache licensed and copyrighted by Lyft. Envoy and the Envoy logo are +copyrighted by the *Envoy proxy authors* and the +[Cloud Native Computing Foundation](https://cncf.io). The Envoy name is used with permission from +the CNCF under the assumption that if this project finds traction it will be donated to the +Envoy proxy project. diff --git a/STYLE.md b/STYLE.md new file mode 100644 index 0000000000..765534fd32 --- /dev/null +++ b/STYLE.md @@ -0,0 +1,13 @@ +# Envoy Mobile style guide + +## C++ coding style + +* C++ code uses the [Envoy style guide](https://github.com/envoyproxy/envoy/blob/master/STYLE.md) + +## Swift coding style + +* TODO(mattklein123): Fill this in. + +## Kotlin coding style + +* TODO(mattklein123): Fill this in. diff --git a/VERSION b/VERSION new file mode 100644 index 0000000000..0d4d124943 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.1.0-dev diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000000..abab328106 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,11 @@ +# Developer local docs build + +```bash +./docs/build.sh +``` + +The output can be found in `generated/docs`. + +# How the Envoy Mobile website and docs are updated + +TODO(mattklein123): Fill in when publishing is setup. diff --git a/docs/build.sh b/docs/build.sh new file mode 100755 index 0000000000..b935d76e26 --- /dev/null +++ b/docs/build.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +set -e + +. envoy/tools/shell_utils.sh + +# We need to set ENVOY_DOCS_VERSION_STRING and ENVOY_DOCS_RELEASE_LEVEL for Sphinx. +# We also validate that the tag and version match at this point if needed. +if [ -n "$CIRCLE_TAG" ] +then + # Check the git tag matches the version number in the VERSION file. + VERSION_NUMBER=$(cat VERSION) + if [ "v${VERSION_NUMBER}" != "${CIRCLE_TAG}" ]; then + echo "Given git tag does not match the VERSION file content:" + echo "${CIRCLE_TAG} vs $(cat VERSION)" + exit 1 + fi + # Check the version_history.rst contains current release version. + grep --fixed-strings "$VERSION_NUMBER" docs/root/intro/version_history.rst \ + || (echo "Git tag not found in version_history.rst" && exit 1) + + # Now that we now there is a match, we can use the tag. + export ENVOY_DOCS_VERSION_STRING="tag-$CIRCLE_TAG" + export ENVOY_DOCS_RELEASE_LEVEL=tagged + export ENVOY_BLOB_SHA="$CIRCLE_TAG" +else + BUILD_SHA=$(git rev-parse HEAD) + VERSION_NUM=$(cat VERSION) + export ENVOY_DOCS_VERSION_STRING="${VERSION_NUM}"-"${BUILD_SHA:0:6}" + export ENVOY_DOCS_RELEASE_LEVEL=pre-release + export ENVOY_BLOB_SHA="$BUILD_SHA" +fi + +SCRIPT_DIR=$(dirname "$0") +BUILD_DIR=build_docs +[[ -z "${DOCS_OUTPUT_DIR}" ]] && DOCS_OUTPUT_DIR=generated/docs +[[ -z "${GENERATED_RST_DIR}" ]] && GENERATED_RST_DIR=generated/rst + +rm -rf "${DOCS_OUTPUT_DIR}" +mkdir -p "${DOCS_OUTPUT_DIR}" + +rm -rf "${GENERATED_RST_DIR}" +mkdir -p "${GENERATED_RST_DIR}" + +source_venv "$BUILD_DIR" +pip install -r "${SCRIPT_DIR}"/requirements.txt + +# TODO(mattklein123): Add proto docs when we have them. +rsync -av "${SCRIPT_DIR}"/root/ "${SCRIPT_DIR}"/conf.py "${GENERATED_RST_DIR}" +sphinx-build -W --keep-going -b html "${GENERATED_RST_DIR}" "${DOCS_OUTPUT_DIR}" diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000000..28837cbe6a --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,258 @@ +# -*- coding: utf-8 -*- +# +# envoy documentation build configuration file, created by +# sphinx-quickstart on Sat May 28 10:51:27 2016. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +from datetime import datetime +import os +from sphinx.directives.code import CodeBlock +import sphinx_rtd_theme +import sys + + +# https://stackoverflow.com/questions/44761197/how-to-use-substitution-definitions-with-code-blocks +class SubstitutionCodeBlock(CodeBlock): + """ + Similar to CodeBlock but replaces placeholders with variables. See "substitutions" below. + """ + + def run(self): + """ + Replace placeholders with given variables. + """ + app = self.state.document.settings.env.app + new_content = [] + existing_content = self.content + for item in existing_content: + for pair in app.config.substitutions: + original, replacement = pair + item = item.replace(original, replacement) + new_content.append(item) + + self.content = new_content + return list(CodeBlock.run(self)) + + +def setup(app): + app.add_config_value('release_level', '', 'env') + app.add_config_value('substitutions', [], 'html') + app.add_directive('substitution-code-block', SubstitutionCodeBlock) + + +if not os.environ.get('ENVOY_DOCS_RELEASE_LEVEL'): + raise Exception("ENVOY_DOCS_RELEASE_LEVEL env var must be defined") + +release_level = os.environ['ENVOY_DOCS_RELEASE_LEVEL'] +blob_sha = os.environ['ENVOY_BLOB_SHA'] + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = ['sphinxcontrib.httpdomain', 'sphinx.ext.extlinks', 'sphinx.ext.ifconfig'] +extlinks = { + 'repo': ('https://github.com/envoyproxy/envoy/blob/{}/%s'.format(blob_sha), ''), + 'api': ('https://github.com/envoyproxy/envoy/blob/{}/api/%s'.format(blob_sha), ''), +} + +# Setup global substitutions +if 'pre-release' in release_level: + substitutions = [('|envoy_docker_image|', 'envoy-dev:{}'.format(blob_sha))] +else: + substitutions = [('|envoy_docker_image|', 'envoy:{}'.format(blob_sha))] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'envoy' +copyright = u'2019-{}, Lyft'.format(datetime.now().year) +author = u'Lyft' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. + +if not os.environ.get('ENVOY_DOCS_VERSION_STRING'): + raise Exception("ENVOY_DOCS_VERSION_STRING env var must be defined") + +# The short X.Y version. +version = os.environ['ENVOY_DOCS_VERSION_STRING'] +# The full version, including alpha/beta/rc tags. +release = os.environ['ENVOY_DOCS_VERSION_STRING'] + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This patterns also effect to html_static_path and html_extra_path +exclude_patterns = ['_build', '_venv', 'Thumbs.db', '.DS_Store'] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +#pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'sphinx_rtd_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] + +# The name for this set of Sphinx documents. +# " v documentation" by default. +#html_title = u'envoy v1.0.0' + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (relative to this directory) to use as a favicon of +# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +html_favicon = 'favicon.ico' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +html_style = 'css/envoy.css' + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +#html_extra_path = [] + +# If not None, a 'Last updated on:' timestamp is inserted at every page +# bottom, using the given strftime format. +# The empty string is equivalent to '%b %d, %Y'. +#html_last_updated_fmt = None + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh' +#html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# 'ja' uses this config value. +# 'zh' user can custom change `jieba` dictionary path. +#html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +#html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'envoydoc' diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 0000000000..44a91ddeec --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,17 @@ +GitPython==2.0.8 +Jinja2==2.10 +MarkupSafe==1.1.0 +Pygments==2.2.0 +alabaster==0.7.10 +babel==2.4.0 +docutils==0.14 +gitdb==0.6.4 +imagesize==0.7.1 +pytz==2017.2 +requests>=2.20.0 +six==1.10.0 +smmap==0.9.0 +snowballstemmer==1.2.1 +sphinx==1.8.1 +sphinxcontrib-httpdomain==1.6.1 +sphinx_rtd_theme==0.4.2 diff --git a/docs/root/_static/css/envoy.css b/docs/root/_static/css/envoy.css new file mode 100644 index 0000000000..390a0fec18 --- /dev/null +++ b/docs/root/_static/css/envoy.css @@ -0,0 +1,11 @@ +@import "theme.css"; + +/* Splits a long line descriptions in tables in to multiple lines */ +.wy-table-responsive table td, .wy-table-responsive table th { + white-space: normal !important; +} + +/* align multi line csv table columns */ +table.docutils div.line-block { + margin-left: 0; +} \ No newline at end of file diff --git a/docs/root/favicon.ico b/docs/root/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7cd45f110377fb45a3fce4ac12af2a4125fbaa34 GIT binary patch literal 67646 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 literal 0 HcmV?d00001 diff --git a/docs/root/index.rst b/docs/root/index.rst new file mode 100644 index 0000000000..917978ffb2 --- /dev/null +++ b/docs/root/index.rst @@ -0,0 +1,10 @@ +Envoy Mobile documentation +========================== + +.. ifconfig:: release_level in ('pre-release') + + .. attention:: + + This is pre-release documentation. There is risk of it not being consistent with what is + currently implemented in Envoy Mobile, though we try to make things consistent as quickly as + possible. diff --git a/envoy b/envoy new file mode 160000 index 0000000000..1e61a3f95f --- /dev/null +++ b/envoy @@ -0,0 +1 @@ +Subproject commit 1e61a3f95f2c4d9ac1e54feae8693cee7906e2eb