Esempio n. 1
0
        public async Task <PackagesLock> DownloadModuleLock(string outputPath, IEnumerable <string> loadOnStartup)
        {
            var modulesLock = await ModulesResource.FetchModules(PrismModule.ClientFramework, _restClient);

            var requiredPackages = new Dictionary <PackageIdentity, IImmutableList <PackageIdentity> >();

            void AddPackages(IEnumerable <PackageIdentity> identities)
            {
                foreach (var identity in identities)
                {
                    if (!requiredPackages.ContainsKey(identity))
                    {
                        var dependencies = modulesLock[identity];
                        requiredPackages.Add(identity, dependencies);
                        AddPackages(dependencies);
                    }
                }
            }

            AddPackages(loadOnStartup.Select(x => modulesLock.First(y => y.Key.Id.Equals(x, StringComparison.OrdinalIgnoreCase)).Key));

            var requiredPackagesLock = new PackagesLock(requiredPackages);

            _fileSystem.File.WriteAllText(_fileSystem.Path.Combine(outputPath, "modules.lock"), JsonConvert.SerializeObject(requiredPackagesLock));

            return(requiredPackagesLock);
        }
Esempio n. 2
0
        public async Task <PackagesLock> DownloadModuleLock(string outputPath, IEnumerable <string> loadOnStartup)
        {
            var modulesLock = await ModulesResource.FetchModules(PrismModule.ClientFramework, _restClient);

            var requiredPackages = new Dictionary <PackageIdentity, IImmutableList <PackageIdentity> >();

            void AddPackages(IEnumerable <PackageIdentity> identities)
            {
                foreach (var identity in identities)
                {
                    if (!requiredPackages.ContainsKey(identity))
                    {
                        var dependencies = modulesLock[identity];
                        requiredPackages.Add(identity, dependencies);
                        AddPackages(dependencies);
                    }
                }
            }

            var loadOnStartupPackages = new List <PackageIdentity>();

            foreach (var module in loadOnStartup)
            {
                var lockedPackage = modulesLock.Where(y => y.Key.Id.Equals(module, StringComparison.OrdinalIgnoreCase));
                if (!lockedPackage.Any())
                {
                    _logger.LogWarning($"The module {module} is not installed on the server and cannot be loaded on startup. Please remove it from the config.");
                    continue;
                }

                loadOnStartupPackages.Add(lockedPackage.First().Key);
            }

            AddPackages(loadOnStartupPackages);

            var requiredPackagesLock = new PackagesLock(requiredPackages);

            _fileSystem.File.WriteAllText(_fileSystem.Path.Combine(outputPath, "modules.lock"), JsonConvert.SerializeObject(requiredPackagesLock));

            return(requiredPackagesLock);
        }