private void InternalExecute() { _packages.Clear(); if (string.IsNullOrEmpty(Url)) { throw new ArgumentException("Url"); } if (IsSharePointOnline) { if (string.IsNullOrEmpty(UserName)) { throw new ArgumentException("UserName"); } if (string.IsNullOrEmpty(UserPassword)) { throw new ArgumentException("UserPassword"); } } var spService = new SharePointService(); spService.WithSharePointContext(Url, UserName, UserPassword, IsSharePointOnline, context => { var repoFolder = AppDomain.CurrentDomain.BaseDirectory; var repo = PackageRepositoryFactory.Default.CreateRepository(repoFolder); // create manager with empty repo to avoid connectivity var packageManager = new DefaultMetaPackSolutionPackageManager(repo, context); //var packages = packageManager.LocalRepository.GetPackages(); var packages = packageManager.LocalRepository.Search( string.Empty, Enumerable.Empty <string>(), this.PreRelease); packages = packages.GroupBy(p => p.Id) .Select(g => g.OrderByDescending(p => p.Version).FirstOrDefault()); packages = packages.Where(p => p != null); foreach (var package in packages) { _packages.Add(package); Out.WriteLine(package.GetFullName()); } }); }
protected virtual void InternalExecute() { if (PackageSources.Count == 0) { throw new ArgumentException("Source"); } if (string.IsNullOrEmpty(Id)) { throw new ArgumentException("Id"); } if (string.IsNullOrEmpty(Url)) { throw new ArgumentException("Url"); } if (IsSharePointOnline) { if (string.IsNullOrEmpty(UserName)) { throw new ArgumentException("UserName"); } if (string.IsNullOrEmpty(UserPassword)) { throw new ArgumentException("UserPassword"); } } var spService = new SharePointService(); spService.WithSharePointContext(Url, UserName, UserPassword, IsSharePointOnline, context => { // connect to remote repo var repo = new AggregateRepository(PackageRepositoryFactory.Default, PackageSources, true); IPackage package = null; if (!string.IsNullOrEmpty(Version)) { MetaPackTrace.Info("Fetching package [{0}] with version [{1}]", Id, Version); package = repo.FindPackage(Id, new SemanticVersion(Version)); } else { MetaPackTrace.Info("Fetching the latest package [{0}]", Id); package = repo.FindPackage(Id); } if (package == null) { MetaPackTrace.Info("Cannot find package [{0}]. Throwing exception.", Id); throw new ArgumentException("package"); } else { } MetaPackTrace.Info("Found package [{0}] version [{1}].", package.Id, package.Version); MetaPackTrace.Info("Installing package to SharePoint web site..."); // create manager with repo and current web site var packageManager = CreatePackageManager(repo, context); // install package if (Force) { MetaPackTrace.Info("Force flag is true. Looking for existing package..."); var currentPackage = packageManager.LocalRepository.FindPackage( package.Id, package.Version, this.PreRelease, true); if (currentPackage != null) { MetaPackTrace.Info(string.Format( "Package [{0}] version [{1}] already exists. Uninstalling...", currentPackage.Id, currentPackage.Version)); packageManager.UninstallPackage(package); // we need a fresh start due to cached nuet packages // TODO - rewrite SharePointCSOMFileSystem to support deletions better packageManager = CreatePackageManager(repo, context); } else { MetaPackTrace.Info(string.Format( "Package [{0}] version [{1}] does not exist. It will be deployed.", package.Id, package.Version)); } } else { var currentPackage = packageManager.LocalRepository.FindPackage( package.Id, package.Version, this.PreRelease, true); if (currentPackage != null) { MetaPackTrace.Info(string.Format( "Package [{0}] version [{1}] already exists. Use --force flag to redeploy it.", currentPackage.Id, currentPackage.Version)); return; } } packageManager.InstallPackage(package, false, PreRelease); MetaPackTrace.Info("Completed installation. All good!"); }); }
private void InternalExecute() { if (string.IsNullOrEmpty(Source)) { throw new ArgumentException("Source"); } if (string.IsNullOrEmpty(Id)) { throw new ArgumentException("Id"); } if (string.IsNullOrEmpty(Url)) { throw new ArgumentException("Url"); } if (IsSharePointOnline) { if (string.IsNullOrEmpty(UserName)) { throw new ArgumentException("UserName"); } if (string.IsNullOrEmpty(UserPassword)) { throw new ArgumentException("UserPassword"); } } var spService = new SharePointService(); spService.WithSharePointContext(Url, UserName, UserPassword, IsSharePointOnline, context => { // connect to remote repo Out.WriteLine("Connecting to NuGet repository:[{0}]", Source); var repo = PackageRepositoryFactory.Default.CreateRepository(Source); IPackage package = null; if (!string.IsNullOrEmpty(Version)) { Out.WriteLine("Fetching package [{0}] with version [{1}]", Id, Version); package = repo.FindPackage(Id, new SemanticVersion(Version)); } else { Out.WriteLine("Fetching the latest package [{0}]", Id); package = repo.FindPackage(Id); } if (package == null) { Out.WriteLine("Cannot find package [{0}]. Throwing exception.", Id); throw new ArgumentException("package"); } else { Out.WriteLine("Found remote package [{0}].", package.GetFullName()); } Out.WriteLine("Checking local package [{0}]", Id); // create manager with repo and current web site var packageManager = new DefaultMetaPackSolutionPackageManager(repo, context); //var localPackage = packageManager.LocalRepository.FindPackage(package.Id, package.Version, true, true); var localPackages = packageManager.LocalRepository.FindPackagesById(package.Id); var localPackage = localPackages.OrderByDescending(p => p.Version) .FirstOrDefault(); if (localPackage != null) { Out.WriteLine("Found local package [{0}] with version [{1}]", localPackage.Id, localPackage.Version); } if (localPackage == null) { Out.WriteLine("Cannot find local package. Performing install..."); } else { if (localPackage.Version < package.Version) { Out.WriteLine("Local package version is behind remote one: [{0}] < [{1}]", localPackage.Version, package.Version); } else { Out.WriteLine("Local package version greater or equal remote one: [{0}] >= [{1}]. No update is required.", localPackage.Version, package.Version); return; } } Out.WriteLine("Installing package [{0}] to SharePoint web site...", package.GetFullName()); // install package packageManager.InstallPackage(package, false, PreRelease); Out.WriteLine("Completed installation. All good!"); }); }