// Copyright 2015 The Bazel Authors. All rights reserved.
//
// 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.
package com.google.devtools.build.lib.rules.objc;
import static com.google.devtools.build.lib.packages.Attribute.attr;
import static com.google.devtools.build.lib.packages.BuildType.LABEL;
import static com.google.devtools.build.lib.syntax.Type.STRING;
import com.google.devtools.build.lib.analysis.BaseRuleClasses;
import com.google.devtools.build.lib.analysis.RuleDefinition;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleClass.Builder;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
/**
* Rule definition for ios_device.
*/
public final class IosDeviceRule implements RuleDefinition {
static final String IOS_VERSION_ATTR_NAME = "ios_version";
static final String XCODE_ATTR_NAME = "xcode";
static final String TYPE_ATTR_NAME = "type";
static final String LOCALE_ATTR_NAME = "locale";
@Override
public RuleClass build(Builder builder, RuleDefinitionEnvironment env) {
return builder
.requiresConfigurationFragments(AppleConfiguration.class)
/*
The operating system version of the device. This corresponds to the
simctl
runtime. Defaults to the default ios sdk version for the xcode
version defined in the xcode
attribute, or uses the ios sdk version
configuration value, if xcode
is unspecified.
*/
.add(attr(IOS_VERSION_ATTR_NAME, STRING))
/*
The version of xcode to use to run the simulator. Defaults to the xcode version build
configuration value.
*/
.add(attr(XCODE_ATTR_NAME, LABEL)
.allowedRuleClasses("xcode_version")
.allowedFileTypes())
/*
The hardware type. This corresponds to the simctl
device
type.
*/
.add(attr(TYPE_ATTR_NAME, STRING)
.mandatory())
.add(attr(LOCALE_ATTR_NAME, STRING)
.undocumented("this is not yet supported by any test runner")
.value("en"))
.build();
}
@Override
public Metadata getMetadata() {
return RuleDefinition.Metadata.builder()
.name("ios_device")
.factoryClass(IosDevice.class)
.ancestors(BaseRuleClasses.BaseRule.class)
.build();
}
}
/*
This rule defines an iOS device profile that defines a simulator against which to run tests.
*/