From e5a514089f20fbe8ec82176c45fb69e4f5963aaf Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Sat, 29 Feb 2020 22:55:36 +0100
Subject: [PATCH] docs: add and enforce readme files for each manager

Closes #5597
---
 lib/manager/ansible-galaxy/readme.md    |  1 +
 lib/manager/ansible/readme.md           |  1 +
 lib/manager/buildkite/readme.md         |  1 +
 lib/manager/bundler/readme.md           |  1 +
 lib/manager/cargo/readme.md             |  1 +
 lib/manager/cdnurl/readme.md            |  2 +-
 lib/manager/circleci/readme.md          |  1 +
 lib/manager/composer/readme.md          |  1 +
 lib/manager/deps-edn/readme.md          |  1 +
 lib/manager/docker-compose/readme.md    |  1 +
 lib/manager/dockerfile/readme.md        |  1 +
 lib/manager/droneci/readme.md           |  1 +
 lib/manager/git-submodules/readme.md    |  1 +
 lib/manager/gitlabci-include/readme.md  |  1 +
 lib/manager/gitlabci/readme.md          |  1 +
 lib/manager/gradle/readme.md            |  1 +
 lib/manager/helm-requirements/readme.md |  4 +++-
 lib/manager/helmfile/readme.md          |  1 +
 lib/manager/homebrew/readme.md          |  0
 lib/manager/html/readme.md              |  1 +
 lib/manager/leiningen/readme.md         |  1 +
 lib/manager/maven/readme.md             |  1 +
 lib/manager/metadata.spec.ts            | 24 ++++++++++++++++++++++++
 lib/manager/meteor/readme.md            |  0
 lib/manager/mix/readme.md               |  3 +++
 lib/manager/nvm/readme.md               |  1 +
 lib/manager/pip_setup/readme.md         |  1 +
 lib/manager/pipenv/readme.md            |  1 +
 lib/manager/poetry/readme.md            |  3 +++
 lib/manager/pub/readme.md               |  1 +
 lib/manager/ruby-version/readme.md      |  1 +
 lib/manager/travis/readme.md            |  1 +
 32 files changed, 59 insertions(+), 2 deletions(-)
 create mode 100644 lib/manager/ansible-galaxy/readme.md
 create mode 100644 lib/manager/ansible/readme.md
 create mode 100644 lib/manager/buildkite/readme.md
 create mode 100644 lib/manager/bundler/readme.md
 create mode 100644 lib/manager/cargo/readme.md
 create mode 100644 lib/manager/circleci/readme.md
 create mode 100644 lib/manager/composer/readme.md
 create mode 100644 lib/manager/deps-edn/readme.md
 create mode 100644 lib/manager/docker-compose/readme.md
 create mode 100644 lib/manager/dockerfile/readme.md
 create mode 100644 lib/manager/droneci/readme.md
 create mode 100644 lib/manager/git-submodules/readme.md
 create mode 100644 lib/manager/gitlabci-include/readme.md
 create mode 100644 lib/manager/gitlabci/readme.md
 create mode 100644 lib/manager/gradle/readme.md
 create mode 100644 lib/manager/helmfile/readme.md
 create mode 100644 lib/manager/homebrew/readme.md
 create mode 100644 lib/manager/html/readme.md
 create mode 100644 lib/manager/leiningen/readme.md
 create mode 100644 lib/manager/maven/readme.md
 create mode 100644 lib/manager/metadata.spec.ts
 create mode 100644 lib/manager/meteor/readme.md
 create mode 100644 lib/manager/mix/readme.md
 create mode 100644 lib/manager/nvm/readme.md
 create mode 100644 lib/manager/pip_setup/readme.md
 create mode 100644 lib/manager/pipenv/readme.md
 create mode 100644 lib/manager/poetry/readme.md
 create mode 100644 lib/manager/pub/readme.md
 create mode 100644 lib/manager/ruby-version/readme.md
 create mode 100644 lib/manager/travis/readme.md

diff --git a/lib/manager/ansible-galaxy/readme.md b/lib/manager/ansible-galaxy/readme.md
new file mode 100644
index 0000000000..dd2426cded
--- /dev/null
+++ b/lib/manager/ansible-galaxy/readme.md
@@ -0,0 +1 @@
+Extracts Ansible Galaxy dependencies from configuration files used by the `ansible-galaxy` CLI tool.
diff --git a/lib/manager/ansible/readme.md b/lib/manager/ansible/readme.md
new file mode 100644
index 0000000000..4b10e65c89
--- /dev/null
+++ b/lib/manager/ansible/readme.md
@@ -0,0 +1 @@
+Supports Docker-type dependency extraction from Ansible configuration files.
diff --git a/lib/manager/buildkite/readme.md b/lib/manager/buildkite/readme.md
new file mode 100644
index 0000000000..a5de9b3ae0
--- /dev/null
+++ b/lib/manager/buildkite/readme.md
@@ -0,0 +1 @@
+Used for updating Docker dependencies in Buildkite configuration files.
diff --git a/lib/manager/bundler/readme.md b/lib/manager/bundler/readme.md
new file mode 100644
index 0000000000..8627126cc0
--- /dev/null
+++ b/lib/manager/bundler/readme.md
@@ -0,0 +1 @@
+The `bundler` manager is used to extract dependencies from `Gemfile` and `Gemfile.lock` files.
diff --git a/lib/manager/cargo/readme.md b/lib/manager/cargo/readme.md
new file mode 100644
index 0000000000..5b564a57cd
--- /dev/null
+++ b/lib/manager/cargo/readme.md
@@ -0,0 +1 @@
+Extracts dependencies from `Cargo.toml` files, and also updates `Cargo.lock` files too if found.
diff --git a/lib/manager/cdnurl/readme.md b/lib/manager/cdnurl/readme.md
index bd3a355b54..22ff090b1f 100644
--- a/lib/manager/cdnurl/readme.md
+++ b/lib/manager/cdnurl/readme.md
@@ -1,4 +1,4 @@
-**Important**: This manager isn't aware of subresource integrity (SRI) hashes. It will search/replace any matching url it finds, without consideration for things such as script integrity hashes.
+**Important**: This manager isn't aware of subresource integrity (SRI) hashes. It will search/replace any matching url it finds, without consideration for things such as script integrity hashes. Use the `html` manager instead if you need SRI updating.
 
 To enable this manager, add the matching files to `cdnurl.fileMatch`. For example:
 
diff --git a/lib/manager/circleci/readme.md b/lib/manager/circleci/readme.md
new file mode 100644
index 0000000000..6465259d70
--- /dev/null
+++ b/lib/manager/circleci/readme.md
@@ -0,0 +1 @@
+The `circleci` manager extracts both `docker` as well as `orb` datasources from CircleCI config files.
diff --git a/lib/manager/composer/readme.md b/lib/manager/composer/readme.md
new file mode 100644
index 0000000000..9106ceb611
--- /dev/null
+++ b/lib/manager/composer/readme.md
@@ -0,0 +1 @@
+Extracts dependencies from `composer.json` files, and keeps the associated `composer.lock` file updated too.
diff --git a/lib/manager/deps-edn/readme.md b/lib/manager/deps-edn/readme.md
new file mode 100644
index 0000000000..d10ea63ba5
--- /dev/null
+++ b/lib/manager/deps-edn/readme.md
@@ -0,0 +1 @@
+Extracts Maven dependencies from `deps.edn` files.
diff --git a/lib/manager/docker-compose/readme.md b/lib/manager/docker-compose/readme.md
new file mode 100644
index 0000000000..5f11e6ab92
--- /dev/null
+++ b/lib/manager/docker-compose/readme.md
@@ -0,0 +1 @@
+Extracts all Docker images from with Docker Compose YAML files.
diff --git a/lib/manager/dockerfile/readme.md b/lib/manager/dockerfile/readme.md
new file mode 100644
index 0000000000..0bd5e05073
--- /dev/null
+++ b/lib/manager/dockerfile/readme.md
@@ -0,0 +1 @@
+Extracts all Docker images in a `Dockerfile`.
diff --git a/lib/manager/droneci/readme.md b/lib/manager/droneci/readme.md
new file mode 100644
index 0000000000..196ca18946
--- /dev/null
+++ b/lib/manager/droneci/readme.md
@@ -0,0 +1 @@
+Extracts docker-type dependencies from DroneCI config files.
diff --git a/lib/manager/git-submodules/readme.md b/lib/manager/git-submodules/readme.md
new file mode 100644
index 0000000000..bbe09c49b2
--- /dev/null
+++ b/lib/manager/git-submodules/readme.md
@@ -0,0 +1 @@
+Keeps git submodules updated within a repository.
diff --git a/lib/manager/gitlabci-include/readme.md b/lib/manager/gitlabci-include/readme.md
new file mode 100644
index 0000000000..151b2783d6
--- /dev/null
+++ b/lib/manager/gitlabci-include/readme.md
@@ -0,0 +1 @@
+Extracts "includes" dependencies from `gitlab-ci.yml` files.
diff --git a/lib/manager/gitlabci/readme.md b/lib/manager/gitlabci/readme.md
new file mode 100644
index 0000000000..761a024dee
--- /dev/null
+++ b/lib/manager/gitlabci/readme.md
@@ -0,0 +1 @@
+Extracts Docker dependencies from `gitlab-ci.yml` files.
diff --git a/lib/manager/gradle/readme.md b/lib/manager/gradle/readme.md
new file mode 100644
index 0000000000..dc424e651a
--- /dev/null
+++ b/lib/manager/gradle/readme.md
@@ -0,0 +1 @@
+Renovate extracts Gradle dependencies by calling a custom Gradle script. The Gradle binary is then used to extract Maven-type dependencies.
diff --git a/lib/manager/helm-requirements/readme.md b/lib/manager/helm-requirements/readme.md
index 26a4ce6ba7..38ba18ec41 100644
--- a/lib/manager/helm-requirements/readme.md
+++ b/lib/manager/helm-requirements/readme.md
@@ -1 +1,3 @@
-Renovate supports updating Helm Chart references within `requirements.yaml` files. If your Helm charts make use of Aliases then you will need to configure an `aliases` object in your config to tell Renovate where to look for them.
+Renovate supports updating Helm Chart references within `requirements.yaml` files.
+
+If your Helm charts make use of Aliases then you will need to configure an `aliases` object in your config to tell Renovate where to look for them.
diff --git a/lib/manager/helmfile/readme.md b/lib/manager/helmfile/readme.md
new file mode 100644
index 0000000000..1b3e489485
--- /dev/null
+++ b/lib/manager/helmfile/readme.md
@@ -0,0 +1 @@
+Checks `helmfile.yml` files and extracts dependencies for the `helm` datasource.
diff --git a/lib/manager/homebrew/readme.md b/lib/manager/homebrew/readme.md
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/lib/manager/html/readme.md b/lib/manager/html/readme.md
new file mode 100644
index 0000000000..f8291240bb
--- /dev/null
+++ b/lib/manager/html/readme.md
@@ -0,0 +1 @@
+The `html` manager extracts scripts and CSS includes pointing to cdnjs. It differs from the `cdnjs` manager in that it detects if an integrity hash is already present and updates it too if found.
diff --git a/lib/manager/leiningen/readme.md b/lib/manager/leiningen/readme.md
new file mode 100644
index 0000000000..cf9441b92d
--- /dev/null
+++ b/lib/manager/leiningen/readme.md
@@ -0,0 +1 @@
+Extracts Maven-type dependencies.
diff --git a/lib/manager/maven/readme.md b/lib/manager/maven/readme.md
new file mode 100644
index 0000000000..1a6beadccb
--- /dev/null
+++ b/lib/manager/maven/readme.md
@@ -0,0 +1 @@
+The `maven` manager focuses on extracting dependencies from `pom.xml`. It uses the official Maven versioning scheme.
diff --git a/lib/manager/metadata.spec.ts b/lib/manager/metadata.spec.ts
new file mode 100644
index 0000000000..e7f6afb62d
--- /dev/null
+++ b/lib/manager/metadata.spec.ts
@@ -0,0 +1,24 @@
+import * as fs from 'fs-extra';
+
+describe('manager metadata', () => {
+  const managerList: string[] = fs
+    .readdirSync(__dirname, { withFileTypes: true })
+    .filter(dirent => dirent.isDirectory())
+    .map(dirent => dirent.name)
+    .filter(name => !name.startsWith('__'))
+    .sort();
+  test.each(managerList)('%s has readme with no h1 or h2', async manager => {
+    let readme;
+    try {
+      readme = await fs.readFile(`${__dirname}/${manager}/readme.md`, 'utf8');
+    } catch (err) {
+      // do nothing
+    }
+    expect(readme).toBeDefined();
+    expect(
+      readme
+        .split('\n')
+        .some(line => line.startsWith('# ') || line.startsWith('## '))
+    ).toBe(false);
+  });
+});
diff --git a/lib/manager/meteor/readme.md b/lib/manager/meteor/readme.md
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/lib/manager/mix/readme.md b/lib/manager/mix/readme.md
new file mode 100644
index 0000000000..f63ab44019
--- /dev/null
+++ b/lib/manager/mix/readme.md
@@ -0,0 +1,3 @@
+The `mix` manager extracts dependencies for the `hex` datasource and uses Renovate's implementation of Hex SemVer to evaluate updates.
+
+The `mix` package manager itself is also used to keep the lock file up-to-date.
diff --git a/lib/manager/nvm/readme.md b/lib/manager/nvm/readme.md
new file mode 100644
index 0000000000..6c8891e649
--- /dev/null
+++ b/lib/manager/nvm/readme.md
@@ -0,0 +1 @@
+Simply keeps the `.nvmrc` file updated.
diff --git a/lib/manager/pip_setup/readme.md b/lib/manager/pip_setup/readme.md
new file mode 100644
index 0000000000..b3efeec015
--- /dev/null
+++ b/lib/manager/pip_setup/readme.md
@@ -0,0 +1 @@
+`setup.py` files are parsed by calling out to `python` and then using a mock to detect imported modules.
diff --git a/lib/manager/pipenv/readme.md b/lib/manager/pipenv/readme.md
new file mode 100644
index 0000000000..18fc18f9e5
--- /dev/null
+++ b/lib/manager/pipenv/readme.md
@@ -0,0 +1 @@
+`Pipenv.lock` updating is supported.
diff --git a/lib/manager/poetry/readme.md b/lib/manager/poetry/readme.md
new file mode 100644
index 0000000000..ffaf656ecd
--- /dev/null
+++ b/lib/manager/poetry/readme.md
@@ -0,0 +1,3 @@
+Both Poetry 0.x and 1.x versions are supported.
+
+Whenever the `pyproject.toml` file is updated, the Poetry lock file will be checked for updates as well.
diff --git a/lib/manager/pub/readme.md b/lib/manager/pub/readme.md
new file mode 100644
index 0000000000..0c74a49f38
--- /dev/null
+++ b/lib/manager/pub/readme.md
@@ -0,0 +1 @@
+This manager is used to keep pubspec files up-to-date.
diff --git a/lib/manager/ruby-version/readme.md b/lib/manager/ruby-version/readme.md
new file mode 100644
index 0000000000..28f43c0cd9
--- /dev/null
+++ b/lib/manager/ruby-version/readme.md
@@ -0,0 +1 @@
+This will maintain `.ruby-version` files. Available versions will be determined from the official Ruby downloads page.
diff --git a/lib/manager/travis/readme.md b/lib/manager/travis/readme.md
new file mode 100644
index 0000000000..de7ce41ad1
--- /dev/null
+++ b/lib/manager/travis/readme.md
@@ -0,0 +1 @@
+This manager is intended to keep Travis config files (`.travis.yml`) up-to-date. Currently it manages only the `node_js` section of files only.
-- 
GitLab