k8s.io/kubernetes@v1.31.0-alpha.0.0.20240520171757-56147500dadc/hack/update-generated-docs.sh (about)

     1  #!/usr/bin/env bash
     2  
     3  # Copyright 2014 The Kubernetes Authors.
     4  #
     5  # Licensed under the Apache License, Version 2.0 (the "License");
     6  # you may not use this file except in compliance with the License.
     7  # You may obtain a copy of the License at
     8  #
     9  #     http://www.apache.org/licenses/LICENSE-2.0
    10  #
    11  # Unless required by applicable law or agreed to in writing, software
    12  # distributed under the License is distributed on an "AS IS" BASIS,
    13  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14  # See the License for the specific language governing permissions and
    15  # limitations under the License.
    16  
    17  # This file is not intended to be run automatically. It is meant to be run
    18  # immediately before exporting docs. We do not want to check these documents in
    19  # by default.
    20  
    21  set -o errexit
    22  set -o nounset
    23  set -o pipefail
    24  
    25  KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
    26  source "${KUBE_ROOT}/hack/lib/init.sh"
    27  
    28  kube::golang::setup_env
    29  kube::util::ensure-temp-dir
    30  
    31  BINS=(
    32  	./cmd/gendocs
    33  	./cmd/genkubedocs
    34  	./cmd/genman
    35  	./cmd/genyaml
    36  )
    37  GOPROXY=off go install "${BINS[@]}"
    38  
    39  # Run all doc generators.
    40  # $1 is the directory to put those generated documents
    41  generate_docs() {
    42    local dest="$1"
    43  
    44    mkdir -p "${dest}/docs/user-guide/kubectl/"
    45    gendocs "${dest}/docs/user-guide/kubectl/"
    46  
    47    mkdir -p "${dest}/docs/admin/"
    48    genkubedocs "${dest}/docs/admin/" "kube-apiserver"
    49    genkubedocs "${dest}/docs/admin/" "kube-controller-manager"
    50    genkubedocs "${dest}/docs/admin/" "kube-proxy"
    51    genkubedocs "${dest}/docs/admin/" "kube-scheduler"
    52    genkubedocs "${dest}/docs/admin/" "kubelet"
    53    genkubedocs "${dest}/docs/admin/" "kubeadm"
    54  
    55    mkdir -p "${dest}/docs/man/man1/"
    56    genman "${dest}/docs/man/man1/" "kube-apiserver"
    57    genman "${dest}/docs/man/man1/" "kube-controller-manager"
    58    genman "${dest}/docs/man/man1/" "kube-proxy"
    59    genman "${dest}/docs/man/man1/" "kube-scheduler"
    60    genman "${dest}/docs/man/man1/" "kubelet"
    61    genman "${dest}/docs/man/man1/" "kubectl"
    62    genman "${dest}/docs/man/man1/" "kubeadm"
    63  
    64    mkdir -p "${dest}/docs/yaml/kubectl/"
    65    genyaml "${dest}/docs/yaml/kubectl/"
    66  
    67    # create the list of generated files
    68    pushd "${dest}" > /dev/null || return 1
    69    touch docs/.generated_docs
    70    find . -type f | cut -sd / -f 2- | LC_ALL=C sort > docs/.generated_docs
    71    popd > /dev/null || return 1
    72  }
    73  
    74  # Removes previously generated docs-- we don't want to check them in. $KUBE_ROOT
    75  # must be set.
    76  remove_generated_docs() {
    77    if [ -e "${KUBE_ROOT}/docs/.generated_docs" ]; then
    78      # remove all of the old docs; we don't want to check them in.
    79      while read -r file; do
    80        rm "${KUBE_ROOT}/${file}" 2>/dev/null || true
    81      done <"${KUBE_ROOT}/docs/.generated_docs"
    82      # The docs/.generated_docs file lists itself, so we don't need to explicitly
    83      # delete it.
    84    fi
    85  }
    86  
    87  # generate into KUBE_TMP
    88  generate_docs "${KUBE_TEMP}"
    89  
    90  # remove all of the existing docs in KUBE_ROOT
    91  remove_generated_docs
    92  
    93  # Copy fresh docs into the repo.
    94  # the shopt is so that we get docs/.generated_docs from the glob.
    95  shopt -s dotglob
    96  cp -af "${KUBE_TEMP}"/* "${KUBE_ROOT}"
    97  shopt -u dotglob