|
1 | 1 | #!/bin/bash
|
2 | 2 |
|
3 |
| -if [ "$#" -ne 1 ]; then |
4 |
| - echo "Usage: $0 <github-repo-url>" |
| 3 | +if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then |
| 4 | + echo "Usage: $0 <github-repo-url> <version-tag>" |
5 | 5 | exit 1
|
6 | 6 | fi
|
7 | 7 |
|
8 | 8 | REPO_URL="$1"
|
| 9 | +VER="$2" |
| 10 | + |
9 | 11 | REPO_URL_SUFFIX=$(echo $REPO_URL | sed -n 's|.*github.com/||p')
|
10 | 12 | OWNER=$(echo $REPO_URL_SUFFIX | cut -d '/' -f 1)
|
11 | 13 | REPO=$(echo $REPO_URL_SUFFIX | cut -d '/' -f 2)
|
| 14 | +[ -z "$VER" ] && REPOVER="$REPO" || REPOVER="$REPO@$VER" |
| 15 | + |
| 16 | +export KCL_FAST_EVAL=1 |
12 | 17 |
|
13 | 18 | if [ -z "$OWNER" ] || [ -z "$REPO" ]; then
|
14 | 19 | echo "Invalid GitHub repository URL."
|
15 | 20 | exit 1
|
16 | 21 | fi
|
| 22 | + |
17 | 23 | # Init the kcl module
|
18 |
| -kcl mod init $REPO |
| 24 | +if [ -z "$VER" ]; then |
| 25 | + kcl mod init $REPO |
| 26 | +else |
| 27 | + kcl mod init $REPO --version $VER |
| 28 | +fi |
| 29 | + |
19 | 30 | cd $REPO
|
| 31 | + |
20 | 32 | # Get the Kubernetes CRD files
|
21 |
| -wget "https://doc.crds.dev/raw/github.com/$OWNER/$REPO" |
| 33 | +wget "https://doc.crds.dev/raw/github.com/$OWNER/$REPOVER" |
22 | 34 | mkdir -p crds
|
23 |
| -mv $REPO crds/$REPO.yaml |
| 35 | +mv $REPOVER crds/$REPO.yaml |
| 36 | + |
24 | 37 | # Import Kubernetes CRD to KCL files
|
25 | 38 | kcl import -m crd -s ./crds/**
|
26 |
| -rm -rf main.k |
| 39 | + |
27 | 40 | # Add the k8s dependency
|
28 | 41 | kcl mod add k8s
|
29 |
| -rm -rf models/k8s |
30 |
| - |
31 |
| -models_dir="models" |
32 |
| -regex="^(.*)_(v[0-9]+(alpha[0-9]+|beta[0-9]+)?)(.*)$" |
| 42 | +rm -rf main.k models/{k8s,kcl.mod} |
33 | 43 |
|
34 |
| -if [ ! -d "$models_dir" ]; then |
35 |
| - echo "The directory '$models_dir' does not exist." |
36 |
| - exit 1 |
37 |
| -fi |
38 |
| - |
39 |
| -cd "$models_dir" |
40 |
| - |
41 |
| -for file in *; do |
42 |
| - if [ -f "$file" ]; then |
43 |
| - if [[ $file =~ $regex ]]; then |
44 |
| - version="${BASH_REMATCH[2]}" |
45 |
| - mkdir -p "../$version" |
46 |
| - mv "$file" "../$version/" |
47 |
| - else |
48 |
| - echo "File '$file' does not contain a version number." |
49 |
| - fi |
50 |
| - fi |
51 |
| -done |
52 |
| - |
53 |
| -cd - |
54 |
| -echo "Files have been grouped by version." |
55 |
| -rm -rf models |
56 | 44 | # Check KCL runs
|
57 |
| -for version_dir in *; do |
58 |
| - if [ -d "$version_dir" ]; then |
59 |
| - echo "Contents of '$version_dir':" |
60 |
| - kcl run ./$version_dir |
| 45 | +for version_dir in models/*/; do |
| 46 | + if [ $(basename $version_dir) == "unknown" ]; then |
| 47 | + rm -rf $version_dir |
| 48 | + continue |
61 | 49 | fi
|
| 50 | + echo "Contents of '$version_dir':" |
| 51 | + kcl run $version_dir |
| 52 | + mv $version_dir . |
62 | 53 | done
|
63 |
| -echo "Files have been grouped and listed by version." |
| 54 | +echo "Files have been listed by version." |
| 55 | + |
| 56 | +rmdir models || exit 1 |
| 57 | + |
64 | 58 | kcl doc generate
|
65 | 59 | mv ./docs/*.md README.md
|
0 commit comments