All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nextflow.SysEnv.groovy Maven / Gradle / Ivy

Go to download

A DSL modelled around the UNIX pipe concept, that simplifies writing parallel and scalable pipelines in a portable manner

The newest version!
/*
 * Copyright 2013-2024, Seqera Labs
 *
 * 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 nextflow

import groovy.transform.CompileStatic
import groovy.transform.PackageScope

/**
 * Helper class that holds a reference system environment and
 * allow to swap to a different one for testing purposes
 * 
 * @author Paolo Di Tommaso 
 */
@CompileStatic
class SysEnv {

    private static Holder holder = new Holder(System.getenv())

    private static final List> history = new ArrayList>()

    static boolean containsKey(String key) {
        return holder.containsKey(key)
    }
    
    static Map get()  {
        return holder
    }

    static String get(String name) {
        return holder.get(name)
    }

    static String get(String name, String defValue) {
        return holder.containsKey(name) ? holder.get(name) : defValue
    }

    static boolean getBool(String name, boolean defValue) {
        final result = get(name,String.valueOf(defValue))
        return Boolean.parseBoolean(result)
    }

    static void push(Map env) {
        history.push(holder.getTarget())
        holder.setTarget(env)
    }

    static void pop() {
        holder.setTarget(history.pop())
    }

}

@PackageScope
class Holder implements Map {
    @Delegate Map target
    Holder(Map target) { this.target = target }
    void setTarget(Map target) { this.target=target }
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy