Exemplo n.º 1
0
        private async Task PackOneReferenceAsync(string file)
        {
            var currentPackage = Path.ChangeExtension(Path.GetFileName(file), "rpk");

            lock (_currentPackages)
            {
                _currentPackages[Array.IndexOf(_currentPackages, null)] = currentPackage;
            }
            using (var writer = ExternalReferencePackageWriter.Append(Path.Combine(_packageDirectory, currentPackage), new Uri("https://msdn.microsoft.com/")))
            {
                await GetItems(file).ForEachAsync(pair =>
                {
                    lock (writer)
                    {
                        writer.AddOrUpdateEntry(pair.EntryName + ".yml", pair.ViewModel);
                        _entryCount++;
                        _apiCount += pair.ViewModel.Count;
                    }
                });
            }
            lock (_currentPackages)
            {
                _currentPackages[Array.IndexOf(_currentPackages, currentPackage)] = null;
            }
        }
        public static void AddFiles(ExternalReferencePackageWriter writer, Uri baseUri, string urlPattern, string relativePath, IEnumerable <string> docPaths)
        {
            var uri = string.IsNullOrEmpty(relativePath) ? baseUri : new Uri(baseUri, relativePath);

            foreach (var item in from doc in docPaths
                     let vm = LoadViewModelNoThrow(doc)
                              where vm != null
                              let extRef = ToExternalReferenceViewModel(vm.Item2, uri, urlPattern).ToList()
                                           select new { EntryName = vm.Item1, Refs = extRef })
            {
                writer.AddOrUpdateEntry(item.EntryName, item.Refs);
            }
        }
Exemplo n.º 3
0
        public ParseResult Exec(RunningContext context)
        {
            var outputFile = Path.Combine(_options.OutputFolder ?? Environment.CurrentDirectory, _options.Name ?? "externalreference.rpk");

            try
            {
                var baseUri = new Uri(_options.BaseUrl);
                if (!baseUri.IsAbsoluteUri)
                {
                    return(new ParseResult(ResultLevel.Error, "BaseUrl should be absolute url."));
                }
                var source = _options.Source.TrimEnd('/', '\\');
                using (var package = _options.AppendMode ? ExternalReferencePackageWriter.Append(outputFile, baseUri) : ExternalReferencePackageWriter.Create(outputFile, baseUri))
                {
                    var files = FileGlob.GetFiles(source, new string[] { _options.Glob }, null).ToList();
                    if (_options.FlatMode)
                    {
                        package.AddFiles(string.Empty, files);
                    }
                    else
                    {
                        foreach (var g in from f in files
                                 group f by Path.GetDirectoryName(f) into g
                                 select new
                        {
                            Folder = g.Key.Substring(source.Length).Replace('\\', '/').Trim('/'),
                            Files = g.ToList(),
                        })
                        {
                            if (g.Folder.Length == 0)
                            {
                                package.AddFiles(string.Empty, g.Files);
                            }
                            else
                            {
                                package.AddFiles(g.Folder + "/", g.Files);
                            }
                        }
                    }
                }
                return(ParseResult.SuccessResult);
            }
            catch (Exception ex)
            {
                return(new ParseResult(ResultLevel.Error, ex.ToString()));
            }
        }
Exemplo n.º 4
0
        public ParseResult Exec(RunningContext context)
        {
            if (_helpMessage != null)
            {
                Console.WriteLine(_helpMessage);
                return(ParseResult.SuccessResult);
            }

            var extractMetadataResult = _metadataCommand.Exec(context);

            Logger.Log(extractMetadataResult);
            if (extractMetadataResult.ResultLevel == ResultLevel.Error)
            {
                return(extractMetadataResult);
            }

            // 2. convert.
            var inputModels = _metadataCommand.InputModels;
            var outputFile  = Path.Combine(_options.OutputFolder ?? Environment.CurrentDirectory, _options.Name ?? "externalreference.rpk");

            if (string.IsNullOrWhiteSpace(_options.BaseUrl))
            {
                return(new ParseResult(ResultLevel.Error, "BaseUrl cannot be empty."));
            }
            try
            {
                var baseUri = new Uri(_options.BaseUrl);
                if (!baseUri.IsAbsoluteUri)
                {
                    return(new ParseResult(ResultLevel.Error, "BaseUrl should be absolute url."));
                }
                using (var package = _options.AppendMode ? ExternalReferencePackageWriter.Append(outputFile, baseUri) : ExternalReferencePackageWriter.Create(outputFile, baseUri))
                {
                    package.AddProjects(inputModels.SelectMany(s => s.Items).Select(s => s.Key).ToList());
                }

                return(ParseResult.SuccessResult);
            }
            catch (Exception ex)
            {
                return(new ParseResult(ResultLevel.Error, ex.ToString()));
            }
        }
Exemplo n.º 5
0
        public void Exec(SubCommandRunningContext context)
        {
            var outputFile = Path.Combine(_options.OutputFolder ?? Environment.CurrentDirectory, _options.Name ?? "externalreference.rpk");
            var baseUri    = new Uri(_options.BaseUrl);

            if (!baseUri.IsAbsoluteUri)
            {
                throw new InvalidOptionException("BaseUrl should be absolute url.", "BaseUrl");
            }

            var source = _options.Source.TrimEnd('/', '\\');

            using (var package = _options.AppendMode ? ExternalReferencePackageWriter.Append(outputFile, baseUri) : ExternalReferencePackageWriter.Create(outputFile, baseUri))
            {
                var files = FileGlob.GetFiles(source, new string[] { _options.Glob }, null).ToList();
                if (_options.FlatMode)
                {
                    ExternalReferencePackageHelper.AddFiles(package, baseUri, _options.UrlPattern, string.Empty, files);
                }
                else
                {
                    foreach (var g in from f in files
                             group f by Path.GetDirectoryName(f) into g
                             select new
                    {
                        Folder = g.Key.Substring(source.Length).Replace('\\', '/').Trim('/'),
                        Files = g.ToList(),
                    })
                    {
                        if (g.Folder.Length == 0)
                        {
                            ExternalReferencePackageHelper.AddFiles(package, baseUri, _options.UrlPattern, string.Empty, g.Files);
                        }
                        else
                        {
                            ExternalReferencePackageHelper.AddFiles(package, baseUri, _options.UrlPattern, g.Folder + "/", g.Files);
                        }
                    }
                }
            }
        }
Exemplo n.º 6
0
 public void AddProjects(ExternalReferencePackageWriter writer, IReadOnlyList <string> projectPaths)
 {
     if (projectPaths == null)
     {
         throw new ArgumentNullException(nameof(projectPaths));
     }
     if (projectPaths.Count == 0)
     {
         throw new ArgumentException("Empty collection is not allowed.", nameof(projectPaths));
     }
     for (int i = 0; i < projectPaths.Count; i++)
     {
         var name = Path.GetFileName(projectPaths[i]);
         ExternalReferencePackageHelper.AddFiles(
             writer,
             new Uri(_options.BaseUrl),
             _options.UrlPattern,
             string.Empty,
             Directory.GetFiles(Path.Combine(projectPaths[i], "api"), "*.yml", SearchOption.TopDirectoryOnly));
     }
 }
Exemplo n.º 7
0
        public void Exec(SubCommandRunningContext context)
        {
            _metadataCommand.Exec(context);

            // 2. convert.
            var inputModels = _metadataCommand.InputModels;
            var outputFile  = Path.Combine(_options.OutputFolder ?? Environment.CurrentDirectory, _options.Name ?? "externalreference.rpk");

            if (string.IsNullOrWhiteSpace(_options.BaseUrl))
            {
                throw new InvalidOptionException("BaseUrl cannot be empty.", "BaseUrl");
            }

            var baseUri = new Uri(_options.BaseUrl);

            if (!baseUri.IsAbsoluteUri)
            {
                throw new InvalidOptionException("BaseUrl should be absolute url.", "BaseUrl");
            }
            using (var package = _options.AppendMode ? ExternalReferencePackageWriter.Append(outputFile, baseUri) : ExternalReferencePackageWriter.Create(outputFile, baseUri))
            {
                package.AddProjects(inputModels.SelectMany(s => s.Items).Select(s => s.Key).ToList());
            }
        }