<?php
/**
 * Copyright 2020 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.
 */

namespace Google\Cloud\Bigtable;

use Google\Cloud\Core\ArrayTrait;
use Google\Cloud\Core\EmulatorTrait;

/**
 * Common method to configure emulator support based on configuration options
 * and `BIGTABLE_EMULATOR_HOST` environment variable.
 */
trait EmulatorSupportTrait
{
    use ArrayTrait;
    use EmulatorTrait;

    /**
     * Add transport configuration for emulator support if needed.
     *
     * Supersedes {@see Google\ApiCore\GapicClientTrait::modifyClientOptions()} method.
     *
     * @param array $options
     */
    protected function modifyClientOptions(array &$options)
    {
        $emulatorHost = getenv('BIGTABLE_EMULATOR_HOST');

        $options += [
            'hasEmulator' => (bool) $emulatorHost,
            'emulatorHost' => $emulatorHost,
        ];
        if ($options['hasEmulator']) {
            $options = $this->arrayMergeRecursive($options, $this->emulatorGapicConfig($options['emulatorHost']));
        }
    }
}
