|
#! /bin/bash |
|
|
|
language=python |
|
artman_yaml=artman_dogs.yaml |
|
|
|
echo "–> –> –> Deleting previous artman-genfiles artifacts" |
|
rm_genfiles_output="`rm -rfv ./artman-genfiles`" |
|
echo "–> –> –> Deleted `echo -e "$rm_genfiles_output" | wc -l` files/dirs" |
|
|
|
root="`pwd`" |
|
|
|
# Required dependencies (or it blows up) |
|
googleapis_dir="$(samplegen --info | grep "googleapis =" | awk '{print $3}')" |
|
mkdir -pv ./google/{api,rpc,type,longrunning,iam/v1} |
|
for filepath in google/api/{http,annotations}.proto; do |
|
cp -v "$googleapis_dir/$filepath" "./$filepath" |
|
done |
|
|
|
echo "–> –> –> Generating Python Library" |
|
gapicgenerator_dir="$(samplegen --info | grep "gapic_generator =" | awk '{print $3}')" |
|
output=`docker run --rm -e RUNNING_IN_ARTMAN_DOCKER=True -v "$(pwd):/googleapis" \ |
|
-v "$gapicgenerator_dir:/toolkit" -w /googleapis googleapis/artman /bin/bash -c \ |
|
"artman --local --config $artman_yaml generate ${language}_gapic" 2>&1` |
|
docker_exit_code=$? |
|
echo -e $output |
|
|
|
if [ $docker_exit_code -ne 0 ]; then |
|
if [[ "$output" =~ "Path gapic not found in" ]]; then |
|
echo "–> –> –> Generation may have failed ($docker_exit_code)" |
|
echo "–> –> –> 'dogs' related directories created:" |
|
find $root/artman-genfiles -type d -name "*dog*" |
|
else |
|
echo "–> –> –> Generating $language failed ($docker_exit_code)" |
|
exit $docker_exit_code |
|
fi |
|
fi |
|
|
|
python_library_root="artman-genfiles/python/dogs-v1" |
|
python_samples_path="samples/codelabs/dogs_v1/gapic/list_dogs" |
|
|
|
cd "$root/$python_library_root" |
|
|
|
echo "–> –> –> FIX standardize import namespaces" |
|
grep -rl "from codelabs.dogs\.v1" codelabs | xargs -n1 sed -i.bak -e "s/from codelabs.dogs.v1/from codelabs.dogs_v1/" |
|
find codelabs/ -name "*.py.bak" -exec rm {} \; |
|
|
|
echo "–> –> –> Copy pb2 proto files into package" |
|
mv ../grpc-codelabs-dogs-v1/codelabs/dogs_v1/proto codelabs/dogs_v1/ |
|
touch codelabs/dogs_v1/proto/__init__.py |
|
|
|
echo "–> –> –> FIX pb2 proto imports" |
|
grep -rl "from codelabs.dogs_v1 import dogs_pb2" . | xargs -n1 sed -i.bak -e "s/dogs_v1 import dogs_pb2/dogs_v1.proto import dogs_pb2/" |
|
find codelabs/ -name "*.py.bak" -exec rm {} \; |
|
|
|
echo "–> –> –> FIX samples to use localhost server (without auth)" |
|
for sample in `find samples/codelabs/dogs_v1/gapic -name "*.py"`; do |
|
sed -i.bak -e $'s/import sys/import sys\\\nfrom grpc import insecure_channel/' "$sample" |
|
find samples/ -name "*.py.bak" -exec rm {} \; |
|
sed -i.bak -e 's/\.DogsServiceClient()/.DogsServiceClient(channel=insecure_channel("localhost:2222"))/' "$sample" |
|
find samples/ -name "*.py.bak" -exec rm {} \; |
|
done |
|
|
|
echo "–> –> –> FIX setup.py" |
|
for replacement in "s/^.*namespace.*$//" \ |
|
"s/if 'google.cloud'.*$//" \ |
|
"s/startswith('google')/startswith('codelabs')/" |
|
do |
|
sed -i.bak -e "$replacement" setup.py |
|
done |
|
|
|
echo "–> –> –> Install Generated Library" |
|
virtualenv --python python3 env |
|
source env/bin/activate |
|
pip install . |
|
|
|
echo "–> –> –> Running Python Samples" |
|
echo "–> –> –> Sample: List Dogs" |
|
python samples/codelabs/dogs_v1/gapic/list_dogs/list_dogs_request_list_dogs.py |
|
echo "–> –> –> Sample: Add Dog" |
|
python samples/codelabs/dogs_v1/gapic/add_dog/add_dog_request_add_dog.py --name "Rex" |
|
echo "–> –> –> Sample: List Dogs" |
|
python samples/codelabs/dogs_v1/gapic/list_dogs/list_dogs_request_list_dogs.py |
|
echo "–> –> –> Sample: Remove Dogs" |
|
python samples/codelabs/dogs_v1/gapic/remove_dog/remove_dog_request_remove_dog.py --name "Rex" |
|
echo "–> –> –> Sample: List Dogs" |
|
python samples/codelabs/dogs_v1/gapic/list_dogs/list_dogs_request_list_dogs.py |