Exemple #1
0
        private static void MergeOptionsToConfig(MergeCommandOptions options, ref MergeJsonItemConfig config)
        {
            // base directory for content from command line is current directory
            // e.g. C:\folder1>docfx build folder2\docfx.json --content "*.cs"
            // for `--content "*.cs*`, base directory should be `C:\folder1`
            string optionsBaseDirectory = Directory.GetCurrentDirectory();

            config.OutputFolder = options.OutputFolder;

            if (!string.IsNullOrEmpty(options.OutputFolder))
            {
                config.Destination = Path.GetFullPath(Path.Combine(options.OutputFolder, config.Destination ?? string.Empty));
            }
            if (options.Content != null)
            {
                if (config.Content == null)
                {
                    config.Content = new FileMapping(new FileMappingItem());
                }
                config.Content.Add(
                    new FileMappingItem
                {
                    Files        = new FileItems(options.Content),
                    SourceFolder = optionsBaseDirectory
                });
            }
            config.FileMetadata   = BuildCommand.GetFileMetadataFromOption(config.FileMetadata, options.FileMetadataFilePath, null);
            config.GlobalMetadata = BuildCommand.GetGlobalMetadataFromOption(config.GlobalMetadata, options.GlobalMetadataFilePath, null, options.GlobalMetadata);
            if (options.TocMetadata != null)
            {
                config.TocMetadata = new ListWithStringFallback(options.TocMetadata);
            }
        }
Exemple #2
0
 private static MetadataMergeParameters ConfigToParameter(MergeJsonItemConfig config, string baseDirectory, string outputDirectory) =>
 new MetadataMergeParameters
 {
     OutputBaseDir = outputDirectory,
     Metadata      = config.GlobalMetadata?.ToImmutableDictionary() ?? ImmutableDictionary <string, object> .Empty,
     FileMetadata  = ConvertToFileMetadataItem(baseDirectory, config.FileMetadata),
     TocMetadata   = config.TocMetadata?.ToImmutableList() ?? ImmutableList <string> .Empty,
     Files         = GetFileCollectionFromFileMapping(
         baseDirectory,
         DocumentType.Article,
         GlobUtility.ExpandFileMapping(baseDirectory, config.Content)),
 };
Exemple #3
0
        private static MergeJsonConfig ParseOptions(MergeCommandOptions options)
        {
            var             configFile = options.ConfigFile;
            MergeJsonConfig config;

            if (string.IsNullOrEmpty(configFile))
            {
                if (!File.Exists(DocAsCode.Constants.ConfigFileName))
                {
                    if (options.Content == null)
                    {
                        throw new ArgumentException("Either provide config file or specify content files to start building documentation.");
                    }
                    else
                    {
                        config = new MergeJsonConfig();
                        var item = new MergeJsonItemConfig();
                        MergeOptionsToConfig(options, ref item);
                        config.Add(item);
                        return(config);
                    }
                }
                else
                {
                    Logger.Log(LogLevel.Verbose, $"Config file {DocAsCode.Constants.ConfigFileName} is found.");
                    configFile = DocAsCode.Constants.ConfigFileName;
                }
            }

            config = CommandUtility.GetConfig <MergeConfig>(configFile).Item;
            if (config == null)
            {
                var message = $"Unable to find build subcommand config in file '{configFile}'.";
                Logger.LogError(message, code: ErrorCodes.Config.BuildConfigNotFound);
                throw new DocumentException(message);
            }

            for (int i = 0; i < config.Count; i++)
            {
                var round = config[i];
                round.BaseDirectory = Path.GetDirectoryName(configFile);

                MergeOptionsToConfig(options, ref round);
            }

            return(config);
        }