private IEnumerable <ExtractMetadataInputModel> GetInputModels(MetadataJsonConfig configs) { foreach (var config in configs) { config.Raw |= configs.Raw; config.Force |= configs.Force; yield return(ConvertToInputModel(config)); } }
private MetadataJsonConfig MergeConfig(MetadataJsonConfig config, CommandContext context) { config.BaseDirectory = context?.BaseDirectory ?? config.BaseDirectory; if (context?.SharedOptions != null) { config.OutputFolder = context.SharedOptions.RootOutputFolder ?? config.OutputFolder; config.Force |= context.SharedOptions.ForceRebuild; config.Raw |= context.SharedOptions.PreserveRawInlineComments; } return(config); }
private static MetadataJsonConfig GetConfigFromOptions(MetadataCommandOptions options) { string jsonConfig; // Glob pattern is not allowed for command line options if (TryGetJsonConfig(options.Projects, out jsonConfig)) { var command = (MetadataCommand)CommandFactory.ReadConfig(jsonConfig, null).Commands.FirstOrDefault(s => s is MetadataCommand); if (command == null) { throw new DocumentException($"Unable to find {CommandType.Build} subcommand config in file '{Constants.ConfigFileName}'."); } var config = command.Config; config.BaseDirectory = Path.GetDirectoryName(jsonConfig); config.OutputFolder = options.OutputFolder; foreach (var item in config) { item.Raw |= options.PreserveRawInlineComments; item.Force |= options.ForceRebuild; } return(config); } else { var config = new MetadataJsonConfig(); config.Add(new MetadataJsonItemConfig { Force = options.ForceRebuild, Destination = options.OutputFolder, Raw = options.PreserveRawInlineComments, Source = new FileMapping(new FileMappingItem() { Files = new FileItems(options.Projects) }) { Expanded = true } }); return(config); } }
public MetadataCommand(MetadataJsonConfig config, CommandContext context) { Config = MergeConfig(config, context); InputModels = GetInputModels(Config); }