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

com.github.eirslett.maven.plugins.frontend.lib.PnpmRunner Maven / Gradle / Ivy

package com.github.eirslett.maven.plugins.frontend.lib;

import com.github.eirslett.maven.plugins.frontend.lib.ProxyConfig.Proxy;

import java.util.ArrayList;
import java.util.List;

public interface PnpmRunner extends NodeTaskRunner {}

final class DefaultPnpmRunner extends NodeTaskExecutor implements PnpmRunner {
    static final String TASK_NAME = "pnpm";

    public DefaultPnpmRunner(NodeExecutorConfig config, ProxyConfig proxyConfig, String npmRegistryURL) {
        super(config, TASK_NAME, config.getPnpmPath().getAbsolutePath(), buildArguments(proxyConfig, npmRegistryURL));

        if (!config.getPnpmPath().exists() && config.getPnpmCjsPath().exists()) {
            setTaskLocation(config.getPnpmCjsPath().getAbsolutePath());
        }
    }

    // Visible for testing only.
    static List buildArguments(ProxyConfig proxyConfig, String npmRegistryURL) {
        List arguments = new ArrayList();
               
        if(npmRegistryURL != null && !npmRegistryURL.isEmpty()){
            arguments.add ("--registry=" + npmRegistryURL);
        }

        if(!proxyConfig.isEmpty()){
            Proxy proxy = null;
            if(npmRegistryURL != null && !npmRegistryURL.isEmpty()){
                proxy = proxyConfig.getProxyForUrl(npmRegistryURL);
            }

            if(proxy == null){
                proxy = proxyConfig.getSecureProxy();
            }

            if(proxy == null){
                proxy = proxyConfig.getInsecureProxy();
            }

            arguments.add("--https-proxy=" + proxy.getUri().toString());
            arguments.add("--proxy=" + proxy.getUri().toString());

            final String nonProxyHosts = proxy.getNonProxyHosts();
            if (nonProxyHosts != null && !nonProxyHosts.isEmpty()) {
                arguments.add("--noproxy=" + nonProxyHosts.replace('|',','));
            }
        }
        
        return arguments;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy