001/*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *   http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied.  See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 */
019package org.apache.maven.enforcer.rules.property;
020
021import javax.inject.Named;
022
023/**
024 * This rule checks that certain environment variable is set.
025 *
026 * @author <a href='mailto:marvin[at]marvinformatics[dot]com'>Marvin Froeder</a>
027 */
028@Named("requireEnvironmentVariable")
029public final class RequireEnvironmentVariable extends AbstractPropertyEnforcerRule {
030
031    /**
032     * Specify the required variable.
033     */
034    private String variableName = null;
035
036    public void setVariableName(String variableName) {
037        this.variableName = variableName;
038    }
039
040    @Override
041    public String resolveValue() {
042        return System.getenv(variableName);
043    }
044
045    @Override
046    public String getCacheId() {
047        return String.valueOf(toString().hashCode());
048    }
049
050    @Override
051    public String getPropertyName() {
052        return variableName;
053    }
054
055    @Override
056    public String getName() {
057        return "Environment variable";
058    }
059
060    @Override
061    public String toString() {
062        return String.format(
063                "RequireEnvironmentVariable[message=%s, variableName=%s, regex=%s, regexMessage=%s]",
064                getMessage(), variableName, getRegex(), getRegexMessage());
065    }
066}