diff --git a/.ci/check-metadata.sh b/.ci/check-metadata.sh new file mode 100755 index 000000000000..23ba1754cd83 --- /dev/null +++ b/.ci/check-metadata.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +cd "$(dirname "$(readlink -f "$BASH_SOURCE")")/.." + +# metadata.sh takes directories with a 'metadata.json' in them +# metadata.json is expected in every repo +# "." so that the canonical source metadata.json is checked too +./metadata.sh */ . diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 130d1c4e7cdc..ebe9572e6e2a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,3 +46,8 @@ jobs: fetch-depth: 0 - run: .ci/check-pr-no-readme.sh if: ${{ github.event_name == 'pull_request' }} + metadata: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - run: .ci/check-metadata.sh diff --git a/README.md b/README.md index 5ce616d5f612..f5c063314991 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ After opening your Pull Request the changes will be checked by an automated `mar - Create a `license.md` (required) - Create a `maintainer.md` (required) - Create a `github-repo` (required) +- Create a `metadata.json` (required) - Add a `logo.png` (recommended) Optionally: @@ -128,6 +129,18 @@ The image is automatically scaled to a 120 pixel square for the top of the Docke This file should contain a link to the maintainers of the Dockerfile. +## `metadata.json` + +This file contains data about the repo for Docker Hub. The minimum file is defined below. `./metadata.sh [repo-name]` must be used to correctly format it (use `-w` to apply its suggested format changes). Only three sorted unique Docker Hub categories are allowed. `metadata.json` in the root contains the list of categories to choose from. See descriptions for the categories on the [Docker docs site](https://docs.docker.com/docker-hub/repos/categories/). + +```json +{ + "hub": { + "categories": [] + } +} +``` + ## `README-short.txt` This is the short description for the Docker Hub, limited to 100 characters in a single line. diff --git a/adminer/metadata.json b/adminer/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/adminer/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/aerospike/metadata.json b/aerospike/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/aerospike/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/almalinux/metadata.json b/almalinux/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/almalinux/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/alpine/metadata.json b/alpine/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/alpine/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/alt/metadata.json b/alt/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/alt/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/amazoncorretto/metadata.json b/amazoncorretto/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/amazoncorretto/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/amazonlinux/metadata.json b/amazonlinux/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/amazonlinux/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/api-firewall/metadata.json b/api-firewall/metadata.json new file mode 100644 index 000000000000..538442b9d959 --- /dev/null +++ b/api-firewall/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "api-management" + ] + } +} diff --git a/arangodb/metadata.json b/arangodb/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/arangodb/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/archlinux/metadata.json b/archlinux/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/archlinux/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/backdrop/metadata.json b/backdrop/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/backdrop/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/bash/metadata.json b/bash/metadata.json new file mode 100644 index 000000000000..67e782480585 --- /dev/null +++ b/bash/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "developer-tools" + ] + } +} diff --git a/bonita/metadata.json b/bonita/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/bonita/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/buildpack-deps/metadata.json b/buildpack-deps/metadata.json new file mode 100644 index 000000000000..67e782480585 --- /dev/null +++ b/buildpack-deps/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "developer-tools" + ] + } +} diff --git a/busybox/metadata.json b/busybox/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/busybox/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/caddy/metadata.json b/caddy/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/caddy/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/cassandra/metadata.json b/cassandra/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/cassandra/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/centos/metadata.json b/centos/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/centos/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/chronograf/metadata.json b/chronograf/metadata.json new file mode 100644 index 000000000000..5f9ae9afb8e1 --- /dev/null +++ b/chronograf/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "monitoring-and-observability" + ] + } +} diff --git a/cirros/metadata.json b/cirros/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/cirros/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/clearlinux/metadata.json b/clearlinux/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/clearlinux/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/clefos/metadata.json b/clefos/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/clefos/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/clojure/metadata.json b/clojure/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/clojure/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/composer/metadata.json b/composer/metadata.json new file mode 100644 index 000000000000..67e782480585 --- /dev/null +++ b/composer/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "developer-tools" + ] + } +} diff --git a/consul/metadata.json b/consul/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/consul/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/convertigo/metadata.json b/convertigo/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/convertigo/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/couchbase/metadata.json b/couchbase/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/couchbase/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/couchdb/metadata.json b/couchdb/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/couchdb/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/crate/metadata.json b/crate/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/crate/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/dart/metadata.json b/dart/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/dart/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/debian/metadata.json b/debian/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/debian/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/docker/metadata.json b/docker/metadata.json new file mode 100644 index 000000000000..67e782480585 --- /dev/null +++ b/docker/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "developer-tools" + ] + } +} diff --git a/drupal/metadata.json b/drupal/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/drupal/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/eclipse-mosquitto/metadata.json b/eclipse-mosquitto/metadata.json new file mode 100644 index 000000000000..66ae22756c7e --- /dev/null +++ b/eclipse-mosquitto/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "message-queues" + ] + } +} diff --git a/eclipse-temurin/metadata.json b/eclipse-temurin/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/eclipse-temurin/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/eggdrop/metadata.json b/eggdrop/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/eggdrop/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/elasticsearch/metadata.json b/elasticsearch/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/elasticsearch/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/elixir/metadata.json b/elixir/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/elixir/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/emqx/metadata.json b/emqx/metadata.json new file mode 100644 index 000000000000..66ae22756c7e --- /dev/null +++ b/emqx/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "message-queues" + ] + } +} diff --git a/erlang/metadata.json b/erlang/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/erlang/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/express-gateway/metadata.json b/express-gateway/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/express-gateway/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/fedora/metadata.json b/fedora/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/fedora/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/flink/metadata.json b/flink/metadata.json new file mode 100644 index 000000000000..2b3b7cd7c11f --- /dev/null +++ b/flink/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "data-science" + ] + } +} diff --git a/fluentd/metadata.json b/fluentd/metadata.json new file mode 100644 index 000000000000..5f9ae9afb8e1 --- /dev/null +++ b/fluentd/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "monitoring-and-observability" + ] + } +} diff --git a/friendica/metadata.json b/friendica/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/friendica/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/gazebo/metadata.json b/gazebo/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/gazebo/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/gcc/metadata.json b/gcc/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/gcc/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/geonetwork/metadata.json b/geonetwork/metadata.json new file mode 100644 index 000000000000..2b3b7cd7c11f --- /dev/null +++ b/geonetwork/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "data-science" + ] + } +} diff --git a/get-categories.sh b/get-categories.sh new file mode 100755 index 000000000000..7d678f700757 --- /dev/null +++ b/get-categories.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +workdir="$(readlink -f "$BASH_SOURCE")" +workdir="$(dirname "$workdir")" + +jsonFile='metadata.json' +canonicalMetadataFile="$workdir/$jsonFile" + +# add categories slugs to canonicalMetadataFile without losing other keys there +curl -fsSL https://hub.docker.com/v2/categories | jq -s --sort-keys ' + .[0] as $allCategories + | .[1] + | .hub.categories = ( [ $allCategories[].slug ] | sort ) +' - "$canonicalMetadataFile" | tee "$canonicalMetadataFile.new" +mv "$canonicalMetadataFile.new" "$canonicalMetadataFile" diff --git a/ghost/metadata.json b/ghost/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/ghost/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/golang/metadata.json b/golang/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/golang/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/gradle/metadata.json b/gradle/metadata.json new file mode 100644 index 000000000000..67e782480585 --- /dev/null +++ b/gradle/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "developer-tools" + ] + } +} diff --git a/groovy/metadata.json b/groovy/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/groovy/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/haproxy/metadata.json b/haproxy/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/haproxy/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/haskell/metadata.json b/haskell/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/haskell/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/haxe/metadata.json b/haxe/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/haxe/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/hello-world/metadata.json b/hello-world/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/hello-world/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/hitch/metadata.json b/hitch/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/hitch/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/httpd/metadata.json b/httpd/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/httpd/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/hylang/metadata.json b/hylang/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/hylang/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/ibm-semeru-runtimes/metadata.json b/ibm-semeru-runtimes/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/ibm-semeru-runtimes/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/ibmjava/metadata.json b/ibmjava/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/ibmjava/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/influxdb/metadata.json b/influxdb/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/influxdb/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/irssi/metadata.json b/irssi/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/irssi/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/jetty/metadata.json b/jetty/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/jetty/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/jobber/metadata.json b/jobber/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/jobber/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/joomla/metadata.json b/joomla/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/joomla/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/jruby/metadata.json b/jruby/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/jruby/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/julia/metadata.json b/julia/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/julia/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/kapacitor/metadata.json b/kapacitor/metadata.json new file mode 100644 index 000000000000..5f9ae9afb8e1 --- /dev/null +++ b/kapacitor/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "monitoring-and-observability" + ] + } +} diff --git a/kibana/metadata.json b/kibana/metadata.json new file mode 100644 index 000000000000..5f9ae9afb8e1 --- /dev/null +++ b/kibana/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "monitoring-and-observability" + ] + } +} diff --git a/kong/metadata.json b/kong/metadata.json new file mode 100644 index 000000000000..538442b9d959 --- /dev/null +++ b/kong/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "api-management" + ] + } +} diff --git a/lightstreamer/metadata.json b/lightstreamer/metadata.json new file mode 100644 index 000000000000..66ae22756c7e --- /dev/null +++ b/lightstreamer/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "message-queues" + ] + } +} diff --git a/liquibase/metadata.json b/liquibase/metadata.json new file mode 100644 index 000000000000..67e782480585 --- /dev/null +++ b/liquibase/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "developer-tools" + ] + } +} diff --git a/logstash/metadata.json b/logstash/metadata.json new file mode 100644 index 000000000000..5f9ae9afb8e1 --- /dev/null +++ b/logstash/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "monitoring-and-observability" + ] + } +} diff --git a/mageia/metadata.json b/mageia/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/mageia/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/mariadb/metadata.json b/mariadb/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/mariadb/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/matomo/metadata.json b/matomo/metadata.json new file mode 100644 index 000000000000..5f9ae9afb8e1 --- /dev/null +++ b/matomo/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "monitoring-and-observability" + ] + } +} diff --git a/maven/metadata.json b/maven/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/maven/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/mediawiki/metadata.json b/mediawiki/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/mediawiki/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/memcached/metadata.json b/memcached/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/memcached/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/metadata.json b/metadata.json new file mode 100644 index 000000000000..e12e4b04f598 --- /dev/null +++ b/metadata.json @@ -0,0 +1,22 @@ +{ + "hub": { + "categories": [ + "api-management", + "content-management-system", + "data-science", + "databases-and-storage", + "developer-tools", + "integration-and-delivery", + "internet-of-things", + "languages-and-frameworks", + "machine-learning-and-ai", + "message-queues", + "monitoring-and-observability", + "networking", + "operating-systems", + "security", + "web-analytics", + "web-servers" + ] + } +} diff --git a/metadata.sh b/metadata.sh new file mode 100755 index 000000000000..cc215de796f9 --- /dev/null +++ b/metadata.sh @@ -0,0 +1,118 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +workdir="$(readlink -f "$BASH_SOURCE")" +workdir="$(dirname "$workdir")" +cd "$workdir" + +jsonFile='metadata.json' +canonicalMetadataFile="./$jsonFile" +export maxCategories=3 + +self="$(basename "$0")" + +usage() { + cat <&2 && false; })" +eval set -- "$opts" + +write= + +while :; do + flag="$1" + shift + case "$flag" in + --help | -h) usage && exit 0 ;; + --write | -w) write=1 ;; + --) break ;; + *) + { + echo "error: unknown flag: $flag" + usage + } >&2 + exit 1 + ;; + esac +done + +repos=( "$@" ) +if [ "${#repos[@]}" -eq 0 ]; then + repos=( */ ) +fi +repos=( "${repos[@]%/}" ) + +failures=0 +for repo in "${repos[@]}"; do + repoFile="$repo/$jsonFile" + if [ ! -s "$repoFile" ]; then + echo >&2 "error: $repoFile does not exist or is empty" + (( failures++ )) || : + continue + fi + + # sort object keys and pretty print with jq as our "cannonical json" + # sort categories array, no duplicates + if ! repoFileJson="$(jq -s --sort-keys '.[0] | .hub.categories |= unique' "$repoFile")"; then + echo >&2 "error parsing '$repoFile'; invalid JSON?" + (( failures++ )) || : + continue + fi + if ! filediff="$(diff -u "$repoFile" <(cat <<<"$repoFileJson"))"; then + cat <<<"$filediff" + if [ -n "$write" ]; then + cat <<<"$repoFileJson" > "$repoFile" + else + (( failures++ )) || : + fi + fi + + # TODO also check for required keys and/or types? + # the canonicalMetadataFile doesn't have too many categories since it is the source of categories + # all other metadata.json files must not be more than maxCategories or have categories that aren't in the canonical set + if [ "$repoFile" != "$canonicalMetadataFile" ]; then + export repoFile + if errorText="$(jq -r --slurpfile canonical "$canonicalMetadataFile" ' + .hub.categories + | ( + length + | if . > (env.maxCategories | tonumber) then + "error: \(env.repoFile): too many categories: \(.) (max \(env.maxCategories))" + else empty end + ), + ( + . - $canonical[0].hub.categories + | if length > 0 then + "error: \(env.repoFile): unknown categories \(.)" + else empty end + ) + ' "$repoFile")"; then + if [ -n "$errorText" ]; then + echo >&2 "$errorText" + (( failures++ )) || : + fi + else + echo >&2 "error parsing '$repoFile'; invalid JSON?" + (( failures++ )) || : + continue + fi + fi +done + +exit "$failures" diff --git a/mongo-express/metadata.json b/mongo-express/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/mongo-express/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/mongo/metadata.json b/mongo/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/mongo/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/monica/metadata.json b/monica/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/monica/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/mono/metadata.json b/mono/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/mono/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/mysql/metadata.json b/mysql/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/mysql/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/nats-streaming/metadata.json b/nats-streaming/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/nats-streaming/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/nats/metadata.json b/nats/metadata.json new file mode 100644 index 000000000000..66ae22756c7e --- /dev/null +++ b/nats/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "message-queues" + ] + } +} diff --git a/neo4j/metadata.json b/neo4j/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/neo4j/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/neurodebian/metadata.json b/neurodebian/metadata.json new file mode 100644 index 000000000000..2b3b7cd7c11f --- /dev/null +++ b/neurodebian/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "data-science" + ] + } +} diff --git a/nextcloud/metadata.json b/nextcloud/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/nextcloud/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/nginx/metadata.json b/nginx/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/nginx/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/node/metadata.json b/node/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/node/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/notary/metadata.json b/notary/metadata.json new file mode 100644 index 000000000000..f1e52700787d --- /dev/null +++ b/notary/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "security" + ] + } +} diff --git a/odoo/metadata.json b/odoo/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/odoo/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/open-liberty/metadata.json b/open-liberty/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/open-liberty/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/openjdk/metadata.json b/openjdk/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/openjdk/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/oraclelinux/metadata.json b/oraclelinux/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/oraclelinux/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/orientdb/metadata.json b/orientdb/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/orientdb/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/percona/metadata.json b/percona/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/percona/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/perl/metadata.json b/perl/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/perl/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/photon/metadata.json b/photon/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/photon/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/php-zendserver/metadata.json b/php-zendserver/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/php-zendserver/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/php/metadata.json b/php/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/php/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/phpmyadmin/metadata.json b/phpmyadmin/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/phpmyadmin/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/plone/metadata.json b/plone/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/plone/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/postfixadmin/metadata.json b/postfixadmin/metadata.json new file mode 100644 index 000000000000..67e782480585 --- /dev/null +++ b/postfixadmin/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "developer-tools" + ] + } +} diff --git a/postgres/metadata.json b/postgres/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/postgres/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/push.pl b/push.pl index d9ef38e2544f..f5d69dd98494 100755 --- a/push.pl +++ b/push.pl @@ -8,6 +8,7 @@ use File::Temp; use Getopt::Long; use Mojo::File; +use Mojo::JSON qw(decode_json); use Mojo::UserAgent; use Mojo::Util qw(decode encode trim url_escape); @@ -211,6 +212,35 @@ sub prompt_for_edit { my $repoDetails = $repoTx->res->json; $repoDetails->{description} //= ''; $repoDetails->{full_description} //= ''; + $repoDetails->{categories} //= []; + my @repoCategories = sort map { $_->{slug} } @{ $repoDetails->{categories} }; + + # read local categories from metadata.json + my $repoMetadataBytes = Mojo::File->new($repoName . '/metadata.json')->slurp; + my $repoMetadataJson = decode_json $repoMetadataBytes; + my @localRepoCategories = sort @{ $repoMetadataJson->{hub}{categories} }; + + # check if the local categories differ in length or items from the remote + my $needCat = @localRepoCategories != @repoCategories; + if (! $needCat) { + foreach my $i (0 .. @localRepoCategories) { + last if ! defined $repoCategories[$i]; # length difference already covered, so we can bail + if ($localRepoCategories[$i] ne $repoCategories[$i]) { + $needCat = 1; + last; + } + } + } + if ($needCat) { + say 'updating ' . $repoName . ' categories'; + my $catsPatch = $ua->patch($repoUrl . 'categories/' => { %$authorizationHeader, Accept => 'application/json' } => json => [ + map { { + slug => $_, + name => 'All those moments will be lost in time, like tears in rain... Time to die.', + } } @{ $repoMetadataJson->{hub}{categories} } + ]); + die 'patch to categories failed: ' . $catsPatch->res->text unless $catsPatch->res->is_success; + } my $hubShort = prompt_for_edit($repoDetails->{description}, $repoName . '/README-short.txt'); my $hubLong = prompt_for_edit($repoDetails->{full_description}, $repoName . '/README.md', $hubLengthLimit); diff --git a/pypy/metadata.json b/pypy/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/pypy/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/python/metadata.json b/python/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/python/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/r-base/metadata.json b/r-base/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/r-base/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/rabbitmq/metadata.json b/rabbitmq/metadata.json new file mode 100644 index 000000000000..66ae22756c7e --- /dev/null +++ b/rabbitmq/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "message-queues" + ] + } +} diff --git a/rakudo-star/metadata.json b/rakudo-star/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/rakudo-star/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/redis/metadata.json b/redis/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/redis/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/redmine/metadata.json b/redmine/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/redmine/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/registry/metadata.json b/registry/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/registry/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/rethinkdb/metadata.json b/rethinkdb/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/rethinkdb/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/rocket.chat/metadata.json b/rocket.chat/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/rocket.chat/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/rockylinux/metadata.json b/rockylinux/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/rockylinux/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/ros/metadata.json b/ros/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/ros/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/ruby/metadata.json b/ruby/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/ruby/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/rust/metadata.json b/rust/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/rust/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/sapmachine/metadata.json b/sapmachine/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/sapmachine/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/satosa/metadata.json b/satosa/metadata.json new file mode 100644 index 000000000000..538442b9d959 --- /dev/null +++ b/satosa/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "api-management" + ] + } +} diff --git a/scratch/metadata.json b/scratch/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/scratch/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/silverpeas/metadata.json b/silverpeas/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/silverpeas/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/sl/metadata.json b/sl/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/sl/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/solr/metadata.json b/solr/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/solr/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/sonarqube/metadata.json b/sonarqube/metadata.json new file mode 100644 index 000000000000..4e2e34b2be0e --- /dev/null +++ b/sonarqube/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "integration-and-delivery" + ] + } +} diff --git a/spark/metadata.json b/spark/metadata.json new file mode 100644 index 000000000000..2b3b7cd7c11f --- /dev/null +++ b/spark/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "data-science" + ] + } +} diff --git a/spiped/metadata.json b/spiped/metadata.json new file mode 100644 index 000000000000..f1e52700787d --- /dev/null +++ b/spiped/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "security" + ] + } +} diff --git a/storm/metadata.json b/storm/metadata.json new file mode 100644 index 000000000000..2b3b7cd7c11f --- /dev/null +++ b/storm/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "data-science" + ] + } +} diff --git a/swift/metadata.json b/swift/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/swift/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/swipl/metadata.json b/swipl/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/swipl/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/teamspeak/metadata.json b/teamspeak/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/teamspeak/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/telegraf/metadata.json b/telegraf/metadata.json new file mode 100644 index 000000000000..5f9ae9afb8e1 --- /dev/null +++ b/telegraf/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "monitoring-and-observability" + ] + } +} diff --git a/tomcat/metadata.json b/tomcat/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/tomcat/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/tomee/metadata.json b/tomee/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/tomee/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/traefik/metadata.json b/traefik/metadata.json new file mode 100644 index 000000000000..296c4ec2a848 --- /dev/null +++ b/traefik/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "networking" + ] + } +} diff --git a/ubuntu/metadata.json b/ubuntu/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/ubuntu/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/unit/metadata.json b/unit/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/unit/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/varnish/metadata.json b/varnish/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/varnish/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/vault/metadata.json b/vault/metadata.json new file mode 100644 index 000000000000..f1e52700787d --- /dev/null +++ b/vault/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "security" + ] + } +} diff --git a/websphere-liberty/metadata.json b/websphere-liberty/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/websphere-liberty/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/wordpress/metadata.json b/wordpress/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/wordpress/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/xwiki/metadata.json b/xwiki/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/xwiki/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/yourls/metadata.json b/yourls/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/yourls/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/znc/metadata.json b/znc/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/znc/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/zookeeper/metadata.json b/zookeeper/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/zookeeper/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +}