public void PushPackage(string packageFileName, Stream packageStream) { packageFileName = PackageNameUtility.NormalizeFileName(packageFileName); var packageFile = _directory.GetFile(packageFileName); using (var destinationStream = packageFile.OpenWrite()) packageStream.CopyTo(destinationStream); var zipPackage = new CachedZipPackage(null, packageFile, null, ExportBuilders.All); IndexDocument.Document.Root.Add( new XElement("wrap", new XAttribute("name", zipPackage.Name), new XAttribute("version", zipPackage.Version), new XElement("link", new XAttribute("rel", "package"), new XAttribute("href", packageFile.Name)), zipPackage.Dependencies.Select(x=>new XElement("depends", x.ToString())) )); SaveIndex(IndexDocument); return; }
public IPackageInfo Publish(string packageFileName, Stream packageStream) { var fileWithoutExtension = packageFileName.Trim().ToLowerInvariant().EndsWith(".wrap") ? Path.GetFileNameWithoutExtension(packageFileName) : packageFileName; if (_packages.Any(x=>x.FullName.EqualsNoCase(fileWithoutExtension))) throw new InvalidOperationException("Package already exists in repository."); var inMemoryFile = new InMemoryFile("c:\\" + Guid.NewGuid()); using(var stream = inMemoryFile.OpenWrite()) packageStream.CopyTo(stream); var tempFolder = new CachedZipPackage(null, inMemoryFile, null, null); var package = new InMemoryPackage { Name = PackageNameUtility.GetName(fileWithoutExtension), Version = PackageNameUtility.GetVersion(fileWithoutExtension), Source = this, Dependencies = tempFolder.Dependencies.ToList(), Anchored = tempFolder.Anchored }; _packages.Add(package); return package; }
public IPackageInfo Publish(string packageFileName, Stream packageStream) { packageFileName = PackageNameUtility.NormalizeFileName(packageFileName); var wrapFile = BasePath.GetFile(packageFileName); if (wrapFile.Exists) return null; using (var file = wrapFile.OpenWrite()) packageStream.CopyTo(file); var newPackageCacheDir = _rootCacheDirectory.GetDirectory(wrapFile.NameWithoutExtension); var newPackage = new CachedZipPackage(this, wrapFile, newPackageCacheDir, ExportBuilders.All); Packages.Add(new PackageLocation(newPackageCacheDir, newPackage)); return newPackage; }
IEnumerable<ICommandOutput> ValidateInputs() { var namedRepository = GetRemoteRepository(Remote); if (namedRepository == null) { yield return new Errors.UnknownRemoteRepository(Remote); foreach (var _ in HintRemoteRepositories()) yield return _; yield break; } _remoteRepository = namedRepository as ISupportPublishing; if (_remoteRepository == null) { yield return new Error("Repository '{0}' doesn't support publishing.", namedRepository.Name); yield break; } if (Path != null) { var packageFile = FileSystem.GetFile(Path); if (!packageFile.Exists) { yield return new Errors.FileNotFound(Path); yield break; } else { _packageStream = () => packageFile.OpenRead(); _packageFileName = packageFile.Name; var package = new CachedZipPackage(null, packageFile, null, null); _packageName = package.Name; _packageVersion = package.Version; } } else if (Name != null) { // get latest version of the Named package if (!Environment.CurrentDirectoryRepository.PackagesByName.Contains(Name)) { yield return new Error("No package named '{0}' was found."); yield break; } var packageToCopy = Environment.CurrentDirectoryRepository.PackagesByName[Name].OrderByDescending(x=>x.Version).First(); _packageStream = () => packageToCopy.Load().OpenStream(); _packageFileName = packageToCopy.FullName + ".wrap"; _packageName = packageToCopy.Name; _packageVersion = packageToCopy.Version; } else { yield return new Error("Please specify either a file path using the -Path input, or a name using -Name."); } }