Example #1
0
 private MetadataJsonConfig ParseOptions(MetadataCommandOptions options)
 {
     string configFile;
     if (TryGetJsonConfig(options.Projects, out configFile))
     {
         var config = CommandUtility.GetConfig<MetadataConfig>(configFile).Item;
         if (config == null) throw new DocumentException($"Unable to find metadata subcommand config in file '{configFile}'.");
         config.BaseDirectory = Path.GetDirectoryName(configFile);
         config.OutputFolder = options.OutputFolder;
         foreach (var item in config)
         {
             item.Raw |= options.PreserveRawInlineComments;
             item.Force |= options.ForceRebuild;
             item.ShouldSkipMarkup |= options.ShouldSkipMarkup;
             item.FilterConfigFile = options.FilterConfigFile ?? item.FilterConfigFile;
         }
         return config;
     }
     else
     {
         var config = new MetadataJsonConfig();
         config.Add(new MetadataJsonItemConfig
         {
             Force = options.ForceRebuild,
             ShouldSkipMarkup = options.ShouldSkipMarkup,
             Destination = options.OutputFolder,
             Raw = options.PreserveRawInlineComments,
             Source = new FileMapping(new FileMappingItem(options.Projects.ToArray())) { Expanded = true },
             FilterConfigFile = options.FilterConfigFile
         });
         return config;
     }
 }
Example #2
0
 private MetadataJsonConfig ParseOptions(MetadataCommandOptions options)
 {
     string configFile;
     if (TryGetJsonConfig(options.Projects, out configFile))
     {
         var config = CommandUtility.GetConfig<MetadataConfig>(configFile).Item;
         if (config == null) throw new DocumentException($"Unable to find metadata subcommand config in file '{configFile}'.");
         config.BaseDirectory = Path.GetDirectoryName(configFile);
         config.OutputFolder = options.OutputFolder;
         foreach (var item in config)
         {
             item.Raw |= options.PreserveRawInlineComments;
             item.Force |= options.ForceRebuild;
             item.FilterConfigFile = options.FilterConfigFile ?? item.FilterConfigFile;
         }
         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(options.Projects.ToArray())) { Expanded = true },
             FilterConfigFile = options.FilterConfigFile
         });
         return config;
     }
 }
Example #3
0
 private IEnumerable <ExtractMetadataInputModel> GetInputModels(MetadataJsonConfig configs)
 {
     foreach (var config in configs)
     {
         config.Raw   |= configs.Raw;
         config.Force |= configs.Force;
         yield return(ConvertToInputModel(config));
     }
 }
Example #4
0
 private IEnumerable<ExtractMetadataInputModel> GetInputModels(MetadataJsonConfig configs)
 {
     foreach (var config in configs)
     {
         config.Raw |= configs.Raw;
         config.Force |= configs.Force;
         yield return ConvertToInputModel(config);
     }
 }
Example #5
0
 private IEnumerable<Microsoft.DocAsCode.Metadata.ManagedReference.ExtractMetadataInputModel> GetInputModels(MetadataJsonConfig configs)
 {
     foreach (var config in configs)
     {
         config.Raw |= configs.Raw;
         config.Force |= configs.Force;
         yield return ConvertToInputModel(config);
     }
 }
Example #6
0
        private MetadataJsonConfig ParseOptions(MetadataCommandOptions options, out string baseDirectory, out string outputFolder)
        {
            MetadataJsonConfig config;

            baseDirectory = null;
            if (TryGetJsonConfig(options.Projects, out string configFile))
            {
                config = CommandUtility.GetConfig <MetadataConfig>(configFile).Item;
                if (config == null)
                {
                    throw new DocumentException($"Unable to find metadata subcommand config in file '{configFile}'.");
                }

                baseDirectory = Path.GetDirectoryName(configFile);
            }
            else
            {
                config = new MetadataJsonConfig
                {
                    new MetadataJsonItemConfig
                    {
                        Destination = options.OutputFolder,
                        Source      = new FileMapping(new FileMappingItem(options.Projects.ToArray()))
                        {
                            Expanded = true
                        }
                    }
                };
            }

            var msbuildProperties = ResolveMSBuildProperties(options);

            foreach (var item in config)
            {
                item.Force                |= options.ForceRebuild;
                item.Raw                  |= options.PreserveRawInlineComments;
                item.ShouldSkipMarkup     |= options.ShouldSkipMarkup;
                item.DisableGitFeatures   |= options.DisableGitFeatures;
                item.DisableDefaultFilter |= options.DisableDefaultFilter;
                if (!string.IsNullOrEmpty(options.FilterConfigFile))
                {
                    item.FilterConfigFile = Path.GetFullPath(options.FilterConfigFile);
                }

                if (!string.IsNullOrEmpty(options.GlobalNamespaceId))
                {
                    item.GlobalNamespaceId = options.GlobalNamespaceId;
                }

                if (item.MSBuildProperties == null)
                {
                    item.MSBuildProperties = msbuildProperties;
                }
                else
                {
                    // Command line properties overwrites the one defined in docfx.json
                    foreach (var pair in msbuildProperties)
                    {
                        item.MSBuildProperties[pair.Key] = pair.Value;
                    }
                }
            }

            outputFolder = options.OutputFolder;

            return(config);
        }
Example #7
0
 public MetadataCommand(MetadataCommandOptions options)
 {
     Config = ParseOptions(options, out BaseDirectory, out OutputFolder);
 }
Example #8
0
 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;
 }
Example #9
0
 public MetadataCommand(MetadataJsonConfig config, CommandContext context)
 {
     Config = MergeConfig(config, context);
     InputModels = GetInputModels(Config);
 }
Example #10
0
 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;
     }
 }