#!/usr/bin/env bash
# Copyright 2023 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

# This script copies this directory to golang.org/x/exp/trace.
# Just point it at a Go commit or a local Go checkout.

set -e

if [ "$#" -ne 1 ]; then
	echo 'gen.bash expects one argument: a go.googlesource.com/go commit hash to generate the package from or a path to a Go checkout'
	exit 1
fi

# Determine the source.
if [ -d $1 ]; then
	echo "assuming Go checkout at $1..."

	# Select the Go checkout.
	GODIR=$1
else
	echo "using $1 as a commit hash..."

	# Check out Go.
	TMP=$(mktemp -d)
	git -C $TMP clone https://go.googlesource.com/go
	git -C $TMP/go checkout $1
	GODIR=$TMP/go
fi

# Define src and dst.
SRC=$GODIR/src/internal/trace/v2
DST=$(dirname $0)

# Copy.
cp -r $SRC/* $DST
rm $DST/mkexp.bash

# Remove the trace_test.go file and the testprogs it invokes.
# This really tests the tracer, it's not necessary to it bring along
# The trace tests are also problematic because they fail to run on
# Go versions before tip. The testprog directory is problematic because
# of //go:build ignore, so we'd have to complicate the logic below to
# support it.
rm $DST/trace_test.go
rm -r $DST/testdata/testprog

# Remove mktests.go because its a //go:build ignore file, so it would
# complicate the logic below. This codebase isn't the source of truth
# anyway.
rm $DST/testdata/mktests.go

# Make some packages internal.
mv $DST/raw $DST/internal/raw
mv $DST/event $DST/internal/event
mv $DST/version $DST/internal/version
mv $DST/testtrace $DST/internal/testtrace

# Move the debug commands out of testdata.
mv $DST/testdata/cmd $DST/cmd

# Fix up import paths.
find $DST -name '*.go' | xargs -- sed -i 's/internal\/trace\/v2/golang.org\/x\/exp\/trace/'
find $DST -name '*.go' | xargs -- sed -i 's/golang.org\/x\/exp\/trace\/raw/golang.org\/x\/exp\/trace\/internal\/raw/'
find $DST -name '*.go' | xargs -- sed -i 's/golang.org\/x\/exp\/trace\/event/golang.org\/x\/exp\/trace\/internal\/event/'
find $DST -name '*.go' | xargs -- sed -i 's/golang.org\/x\/exp\/trace\/event\/go122/golang.org\/x\/exp\/trace\/internal\/event\/go122/'
find $DST -name '*.go' | xargs -- sed -i 's/golang.org\/x\/exp\/trace\/version/golang.org\/x\/exp\/trace\/internal\/version/'
find $DST -name '*.go' | xargs -- sed -i 's/golang.org\/x\/exp\/trace\/testtrace/golang.org\/x\/exp\/trace\/internal\/testtrace/'
find $DST -name '*.go' | xargs -- sed -i 's/internal\/txtar/golang.org\/x\/tools\/txtar/'

# Add build tag for Go 1.21 and generated code comment.
find $DST -name '*.go' | xargs -- sed -i '/LICENSE file./a \
\
// Code generated by "gen.bash" from internal/trace/v2; DO NOT EDIT.\n\n//go:build go1.21'

# Format the files.
find $DST -name '*.go' | xargs -- gofmt -w -s
