Skip to content

Commit

Permalink
dev: generate docs/generated/redact_safe.md in dev
Browse files Browse the repository at this point in the history
This file can't properly be bazelfied because generating it requires
access to the entire source tree, which we can't easily pass into the
Bazel sandbox. Instead it gets special non-Bazel support in `dev` and a
special validation in CI.

Closes cockroachdb#67923

Release note: None
  • Loading branch information
rickystewart committed Aug 12, 2021
1 parent ab15e5f commit 870f292
Show file tree
Hide file tree
Showing 7 changed files with 54 additions and 12 deletions.
12 changes: 1 addition & 11 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -1560,17 +1560,7 @@ bin/.docgen_http: bin/docgen bin/.bootstrap
.PHONY: docs/generated/redact_safe.md

docs/generated/redact_safe.md:
@(echo "The following types are considered always safe for reporting:"; echo; \
echo "File | Type"; echo "--|--") >$@.tmp || { rm -f $@.tmp; exit 1; }
@git grep --recurse-submodules -n '^func \(.*\) SafeValue\(\)' | \
grep -v '^vendor/github.com/cockroachdb/redact' | \
sed -E -e 's/^([^:]*):[0-9]+:func \(([^ ]* )?(.*)\) SafeValue.*$$/\1 | \`\3\`/g' | \
sort >>$@.tmp || { rm -f $@.tmp; exit 1; }
@git grep --recurse-submodules -n 'redact\.RegisterSafeType' | \
grep -vE '^([^:]*):[0-9]+:[ ]*//' | \
grep -v '^vendor/github.com/cockroachdb/redact' | \
sed -E -e 's/^([^:]*):[0-9]+:.*redact\.RegisterSafeType\((.*)\).*/\1 | \`\2\`/g' | \
sort >>$@.tmp || { rm -f $@.tmp; exit 1; }
./build/bazelutil/generate_redact_safe.sh >$@.tmp || { rm -f $@.tmp; exit 1; }
@mv -f $@.tmp $@

EVENTLOG_PROTOS = \
Expand Down
16 changes: 16 additions & 0 deletions build/bazelutil/generate_redact_safe.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/env bash

set -euo pipefail

echo "The following types are considered always safe for reporting:"
echo
echo "File | Type"; echo "--|--"
git grep --recurse-submodules -n '^func \(.*\) SafeValue\(\)' | \
grep -v '^vendor/github.com/cockroachdb/redact' | \
sed -E -e 's/^([^:]*):[0-9]+:func \(([^ ]* )?(.*)\) SafeValue.*$$/\1 | \`\3\`/g' | \
sort
git grep --recurse-submodules -n 'redact\.RegisterSafeType' | \
grep -vE '^([^:]*):[0-9]+:[ ]*//' | \
grep -v '^vendor/github.com/cockroachdb/redact' | \
sed -E -e 's/^([^:]*):[0-9]+:.*redact\.RegisterSafeType\((.*)\).*/\1 | \`\2\`/g' | \
sort
7 changes: 7 additions & 0 deletions build/teamcity/cockroach/ci/builds/build_linux_x86_64.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ do
then
echo "File $FILE does not match with checked-in version. Got diff:"
echo "$RESULT"
echo "Run './dev generate docs'"
FAILED=1
fi
done
Expand All @@ -47,6 +48,12 @@ do
FAILED=1
fi
done
REAL_REDACT_SAFE=$($root/build/bazelutil/generate_redact_safe.sh)
RESULT=$(diff <(echo "$REAL_REDACT_SAFE") $root/docs/generated/redact_safe.md)
if [[ ! $? -eq 0 ]]
then
echo "docs/generated/redact_safe.md is not up-to-date. Run './dev generate docs'"
fi

if [[ ! -z "$FAILED" ]]
then
Expand Down
7 changes: 6 additions & 1 deletion pkg/cmd/dev/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,12 @@ func (d *dev) generateDocs(cmd *cobra.Command) error {
}
}
}
return nil
// docs/generated/redact_safe.md needs special handling.
output, err := d.exec.CommandContextSilent(ctx, filepath.Join(workspace, "build", "bazelutil", "generate_redact_safe.sh"))
if err != nil {
return err
}
return d.os.WriteFile(filepath.Join(workspace, "docs", "generated", "redact_safe.md"), string(output))
}

func (*dev) generateUnimplemented(*cobra.Command) error {
Expand Down
15 changes: 15 additions & 0 deletions pkg/cmd/dev/io/os/os.go
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,21 @@ func (o *OS) ReadFile(filename string) (string, error) {
return ret, err
}

// WriteFile wraps around ioutil.ReadFile, writing the given contents to
// the given file on disk.
func (o *OS) WriteFile(filename, contents string) error {
command := fmt.Sprintf("echo %s > %s", strings.TrimSpace(contents), filename)
o.logger.Print(command)

if o.Recording == nil {
// Do the real thing.
return ioutil.WriteFile(filename, []byte(contents), 0666)
}

_, err := o.replay(command)
return err
}

// CopyFile copies a file from one location to another.
func (o *OS) CopyFile(src, dst string) error {
command := fmt.Sprintf("cp %s %s", src, dst)
Expand Down
2 changes: 2 additions & 0 deletions pkg/cmd/dev/testdata/generate.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,5 @@ cp /private/var/tmp/_bazel/99e666e4e674209ecdb66b46371278df/execroot/cockroach/b
cp /private/var/tmp/_bazel/99e666e4e674209ecdb66b46371278df/execroot/cockroach/bazel-out/darwin-fastbuild/bin/docs/generated/sql/functions.md go/src/github.com/cockroachdb/cockroach/docs/generated/sql/functions.md
cp /private/var/tmp/_bazel/99e666e4e674209ecdb66b46371278df/execroot/cockroach/bazel-out/darwin-fastbuild/bin/docs/generated/sql/operators.md go/src/github.com/cockroachdb/cockroach/docs/generated/sql/operators.md
cp /private/var/tmp/_bazel/99e666e4e674209ecdb66b46371278df/execroot/cockroach/bazel-out/darwin-fastbuild/bin/docs/generated/sql/window_functions.md go/src/github.com/cockroachdb/cockroach/docs/generated/sql/window_functions.md
go/src/github.com/cockroachdb/cockroach/build/bazelutil/generate_redact_safe.sh
echo MOCK_REDACT_SAFE_OUTPUT > go/src/github.com/cockroachdb/cockroach/docs/generated/redact_safe.md
7 changes: 7 additions & 0 deletions pkg/cmd/dev/testdata/recording/generate.txt
Original file line number Diff line number Diff line change
Expand Up @@ -124,3 +124,10 @@ cp /private/var/tmp/_bazel/99e666e4e674209ecdb66b46371278df/execroot/cockroach/b

cp /private/var/tmp/_bazel/99e666e4e674209ecdb66b46371278df/execroot/cockroach/bazel-out/darwin-fastbuild/bin/docs/generated/sql/window_functions.md go/src/github.com/cockroachdb/cockroach/docs/generated/sql/window_functions.md
----

go/src/github.com/cockroachdb/cockroach/build/bazelutil/generate_redact_safe.sh
----
MOCK_REDACT_SAFE_OUTPUT

echo MOCK_REDACT_SAFE_OUTPUT > go/src/github.com/cockroachdb/cockroach/docs/generated/redact_safe.md
----

0 comments on commit 870f292

Please sign in to comment.