예제 #1
0
        public override bool Execute()
        {
            PrepareExecute();

            ExtensibilityDriver.Instance.LoadExtensions(SharpGenLogger,
                                                        ExtensionAssemblies.Select(x => x.ItemSpec).ToArray());

            var config = new ConfigFile
            {
                Files = ConfigFiles.Select(file => file.ItemSpec).ToList(),
                Id    = "SharpGen-MSBuild"
            };

            try
            {
                config = LoadConfig(config);

                return(!SharpGenLogger.HasErrors && Execute(config));
            }
            catch (CodeGenFailedException ex)
            {
                SharpGenLogger.Fatal("Internal SharpGen exception", ex);
                return(false);
            }
        }
예제 #2
0
        public override bool Execute()
        {
            BindingRedirectResolution.Enable();

            SharpGenLogger = new Logger(new MSBuildSharpGenLogger(Log), null);

            var config = new ConfigFile
            {
                Files = ConfigFiles.Select(file => file.ItemSpec).ToList(),
                Id    = "SharpGen-MSBuild"
            };

            try
            {
                config = LoadConfig(config);

                if (SharpGenLogger.HasErrors)
                {
                    return(false);
                }

                return(Execute(config));
            }
            catch (CodeGenFailedException ex)
            {
                Log.LogError(ex.Message);
                return(false);
            }
        }
        public override bool Execute()
        {
            var debug      = string.Equals("true", DebugTask?.Trim(), StringComparison.OrdinalIgnoreCase);
            var promptAuth = string.Equals("true", AlwaysPromptInteractiveAuth?.Trim(), StringComparison.OrdinalIgnoreCase);

            Config.Log.Information = x => Log.LogWarning(x);
            Config.Log.Error       = (ex, m) => Log.LogError("Error while processing secrets from keyvault. " + Environment.NewLine + ex);

            try
            {
                if (debug && !Debugger.IsAttached)
                {
                    Debugger.Launch();
                    Debugger.Break();
                }

                if (promptAuth)
                {
                    Log.LogWarning("KeyVaultBuildTask: Set to always prompting for auth information.");
                }

                var service = SecretServiceBuilder.Create()
                              .AlwaysPromptInteractiveAuth(promptAuth)
                              .WithDirectory(DirectoryId)
                              .WithServicePrincipal(ClientId, Secret);

                if (!string.IsNullOrEmpty(VaultAliases))
                {
                    foreach (var alias in VaultAliases?.Trim().Split(new [] { ';' }, StringSplitOptions.RemoveEmptyEntries))
                    {
                        var pair = alias.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
                        service.WithVaultAlias(pair.First(), pair.Last());
                        Log.LogWarning("Overriding vault '{0}' with '{1}'", pair.First(), pair.Last());
                    }
                }

                var transformKey = new TransformKeys(service.Build());
                var files        = ConfigFiles.Select(file => file.GetMetadata("Fullpath")).ToArray();

                Parallel.ForEach(files, file =>
                {
                    transformKey.SaveAsFile(file);
                });
            }
            catch (Exception ex)
            {
                TokenCache.DefaultShared.Clear();
                Config.Log.Error(ex, "Error occured processing secrets. ");
                if (debug)
                {
                    Debugger.Break();
                }
                return(false);
            }

            return(true);
        }