private static void ConfigEnvironmentVariable(UrlTemplate urlTemplate)
 {
     if (urlTemplate.ClearData)
     {
         logger.Info("Clearing environment variable HTTP_PROXY and HTTPS_PROXY for current user");
         EnvironmentVariables.ClearHttpProxy(EnvironmentVariableTarget.User);
         EnvironmentVariables.ClearHttpsProxy(EnvironmentVariableTarget.User);
     }
     else
     {
         // Configure environment variables
         logger.Info("Setting environment variable HTTP_PROXY and HTTPS_PROXY for current user");
         logger.Info("A lot of applications such as: Ruby Gem, Ionic, Cordova, etc will be work with this configuration");
         if (urlTemplate.MustBeAuthenticated)
         {
             EnvironmentVariables.SetHttpProxy(urlTemplate.GetProxy(), EnvironmentVariableTarget.User);
             EnvironmentVariables.SetHttpsProxy(urlTemplate.GetProxySsl(), EnvironmentVariableTarget.User);
         }
         else
         {
             EnvironmentVariables.SetHttpProxy(urlTemplate.GetProxy(), EnvironmentVariableTarget.User);
             EnvironmentVariables.SetHttpsProxy(urlTemplate.GetProxySsl(), EnvironmentVariableTarget.User);
         }
     }
 }
        private static void ConfigBower(UrlTemplate urlTemplate)
        {
            // Configure bower
            if (Msdos.IsInstalled("bower.cmd"))
            {
                // bowerrc user file
                var bowerrc = Path.Combine(Windows.GetCurrentUserFolder(), ".bowerrc");

                if (urlTemplate.ClearData)
                {
                    logger.Info("Clearing proxy for bower");
                    Msdos.Run("npm.cmd", $@"config delete proxy");
                    Msdos.Run("npm.cmd", $@"config delete https-proxy");

                    if (File.Exists(bowerrc))
                    {
                        System.IO.File.Delete(bowerrc);
                    }
                }
                else
                {
                    logger.Info("Setting proxy for bower");
                    Msdos.Run("npm.cmd", $@"npm config set proxy {urlTemplate.GetProxy()}");
                    Msdos.Run("npm.cmd", $@"npm config set https-proxy {urlTemplate.GetProxySsl()}");

                    if (!File.Exists(bowerrc))
                    {
                        // create settings
                        var obj = new JObject();
                        obj.Add("proxy", urlTemplate.GetProxy());
                        obj.Add("https-proxy", urlTemplate.GetProxySsl());
                        obj.Add("no-proxy", urlTemplate.GetProxyExceptions());

                        System.IO.File.WriteAllText(bowerrc, obj.ToString());
                    }
                    else
                    {
                        // update settings
                        var content = System.IO.File.ReadAllText(bowerrc);
                        var obj     = JObject.Parse(content);
                        obj["proxy"]       = urlTemplate.GetProxy();
                        obj["https-proxy"] = urlTemplate.GetProxySsl();
                        obj["no-proxy"]    = urlTemplate.GetProxyExceptions();

                        System.IO.File.WriteAllText(bowerrc, obj.ToString());
                    }
                }
            }
        }
 private static void ConfigYarn(UrlTemplate urlTemplate)
 {
     // Configure yarn
     if (Msdos.IsInstalled("yarn.cmd"))
     {
         if (urlTemplate.ClearData)
         {
             logger.Info("Clearing proxy for yarn");
             Msdos.Run("yarn.cmd", $@"config delete proxy");
             Msdos.Run("yarn.cmd", $@"config delete https-proxy");
         }
         else
         {
             logger.Info("Setting proxy for yarn");
             Msdos.Run("yarn.cmd", $@"npm config set proxy {urlTemplate.GetProxy()}");
             Msdos.Run("yarn.cmd", $@"npm config set https-proxy {urlTemplate.GetProxySsl()}");
         }
     }
 }
 private static void ConfigGit(UrlTemplate urlTemplate)
 {
     // Configure GIT
     if (Msdos.IsInstalled("git.exe", "version"))
     {
         if (urlTemplate.ClearData)
         {
             logger.Info("Clearing proxy for GIT");
             Msdos.Run("git.exe", $"config --global --unset http.proxy");
             Msdos.Run("git.exe", $"config --global --unset https.proxy");
         }
         else
         {
             logger.Info("Setting proxy for GIT");
             Msdos.Run("git.exe", $"config --global http.proxy {urlTemplate.GetProxy()}");
             Msdos.Run("git.exe", $"config --global https.proxy {urlTemplate.GetProxySsl()}");
         }
     }
 }
        private static void ConfigNpm(UrlTemplate urlTemplate)
        {
            // Configure npm
            if (Msdos.IsInstalled("npm.cmd", "version"))
            {
                if (urlTemplate.ClearData)
                {
                    logger.Info("Clearing proxy for npm");
                    Msdos.Run("npm.cmd", $@"config delete proxy");
                    Msdos.Run("npm.cmd", $@"config delete https-proxy");
                }
                else
                {
                    logger.Info("Setting proxy for npm");
                    Msdos.Run("npm.cmd", $@"config set proxy {urlTemplate.GetProxy()}");
                    Msdos.Run("npm.cmd", $@"config set https-proxy {urlTemplate.GetProxySsl()}");

                    var npmrc = Path.Combine(Windows.GetCurrentUserFolder(), ".npmrc");
                    // npmrc file is managed automatically
                }
            }
        }