#!/bin/bash -e


(cd $GOPATH/src/google.golang.org/api; make generator)

$GOPATH/bin/google-api-go-generator \
	-api_json_file translate-nov2016-api.json \
	-api_pkg_base cloud.google.com/go/translate/internal \
	-output translate-nov2016-gen.nolicense

cat - translate-nov2016-gen.nolicense > translate-nov2016-gen.go <<EOF
// Copyright 2016 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

EOF



