public void Execute(PackagesInput input, IFileSystem fileSystem) { var exploder = BuildExploder(); if (input.CleanAllFlag) { exploder.CleanAll(input.AppFolder); } if (input.ExplodeFlag) { // TODO -- will need to do this for assembly packages as well Console.WriteLine("Exploding all the package zip files for the application at " + input.AppFolder); exploder.ExplodeAllZipsAndReturnPackageDirectories(input.AppFolder, new PackageLog()); } // TODO -- this doesn't work for anything but fubu if (input.RemoveAllFlag) { var packageFolder = BottleFiles.GetApplicationPackagesDirectory(input.AppFolder); Console.WriteLine("Removing all package files and directories from the application at " + packageFolder); new FileSystem().DeleteDirectory(packageFolder); } // TODO -- this needs to be redone //exploder.LogPackageState(input.AppFolder); }
protected void theExistingVersionIs(string packageName, Guid guid) { string directory = BottleFiles.GetDirectoryForExplodedPackage(theApplicationDirectory, packageName); MockFor <IFileSystem>().Stub(x => x.FileExists(directory, BottleFiles.VersionFile)).Return(true); MockFor <IFileSystem>().Stub(x => x.ReadStringFromFile(directory, BottleFiles.VersionFile)).Return(guid.ToString()); }
private void logExplodedDirectories(string applicationDirectory) { var explodedDirectory = BottleFiles.GetExplodedPackagesDirectory(applicationDirectory); var existingDirectories = _fileSystem.ChildDirectoriesFor(explodedDirectory); _logger.WriteExistingDirectories(applicationDirectory, existingDirectories); }
public void CleanAll(string applicationDirectory) { var directory = BottleFiles.GetExplodedPackagesDirectory(applicationDirectory); clearExplodedDirectories(directory); // This is here for legacy installations that may have old exploded packages in bin/fubu-packages clearExplodedDirectories(BottleFiles.GetApplicationPackagesDirectory(applicationDirectory)); }
protected void assertZipFileWasNotExploded(string packageName) { var fileName = FileSystem.Combine(theApplicationDirectory, "bin", BottleFiles.PackagesFolder, packageName + ".zip"); var directoryName = BottleFiles.GetDirectoryForExplodedPackage(theApplicationDirectory, packageName); MockFor <IZipFileService>().AssertWasNotCalled(x => x.ExtractTo(fileName, directoryName, ExplodeOptions.DeleteDestination)); }
public IEnumerable <string> FindAssemblies(string applicationDirectory) { var assemblyNames = new FileSet { Include = "*.dll", DeepSearch = false }; var directory = BottleFiles.GetApplicationPackagesDirectory(applicationDirectory); return(_fileSystem.FindFiles(directory, assemblyNames).Select(Path.GetFileNameWithoutExtension)); }
private IEnumerable <string> findPackageFileNames(string applicationDirectory) { var fileSet = new FileSet { Include = "*.zip" }; var packageFolder = BottleFiles.GetApplicationPackagesDirectory(applicationDirectory); return(_fileSystem.FileNamesFor(fileSet, packageFolder)); }
public void the_version_file_exists() { var guid = Guid.NewGuid(); theExistingVersionIs("pak1", guid); string directory = BottleFiles.GetDirectoryForExplodedPackage(theApplicationDirectory, "pak1"); ClassUnderTest.ReadVersion(directory).ShouldEqual(guid); }
public IEnumerable <string> ExplodeAllZipsAndReturnPackageDirectories(string applicationDirectory, IPackageLog log) { LogWriter.Current.Trace("Exploding all the package zip files for the application at " + applicationDirectory); return(ExplodeDirectory(new ExplodeDirectory() { DestinationDirectory = BottleFiles.GetExplodedPackagesDirectory(applicationDirectory), BottleDirectory = BottleFiles.GetApplicationPackagesDirectory(applicationDirectory), Log = log })); }
private IEnumerable <string> findPackageFileNames(string applicationDirectory, IPackageLog log) { var fileSet = new FileSet { Include = "*.zip" }; var packageFolder = BottleFiles.GetApplicationPackagesDirectory(applicationDirectory); log.Trace("Searching for zip files in package directory " + packageFolder); return(_fileSystem.FileNamesFor(fileSet, packageFolder)); }
protected void theZipFilesAre(params string[] packageNames) { var zipFiles = packageNames.Select( x => FileSystem.Combine(theApplicationDirectory, "bin", BottleFiles.PackagesFolder, x + ".zip")); var directory = BottleFiles.GetApplicationPackagesDirectory(theApplicationDirectory); MockFor <IFileSystem>().Stub(x => x.FileNamesFor(new FileSet() { Include = "*.zip" }, directory)).Return(zipFiles); }
private string explodeZipAndReturnDirectory(string file, string applicationDirectory) { var directory = BottleFiles.DirectoryForPackageZipFile(applicationDirectory, file); var request = new ExplodeRequest { Directory = directory, ExplodeAction = () => Explode(applicationDirectory, file, BottleFiles.DirectoryForPackageZipFile(applicationDirectory, file), ExplodeOptions.DeleteDestination), GetVersion = () => _service.GetVersion(file), LogSameVersion = () => _logger.WritePackageZipFileWasSameVersionAsExploded(file) }; explode(request); return(directory); }
protected void thePackagesAlreadyExplodedAre(params string[] packageNames) { var directories = packageNames.Select(x => { return(BottleFiles.GetDirectoryForExplodedPackage(theApplicationDirectory, x)); }); directories.Each(dir => { MockFor <IFileSystem>().Stub(x => x.DirectoryExists(dir)).Return(true); }); MockFor <IFileSystem>().Stub(x => x.ChildDirectoriesFor(BottleFiles.GetExplodedPackagesDirectory(theApplicationDirectory))) .Return(directories); MockFor <IFileSystem>().Stub(x => x.ChildDirectoriesFor(BottleFiles.GetApplicationPackagesDirectory(theApplicationDirectory))) .Return(new string[0]); }
private void explodeAssembly(Assembly assembly, string directory) { _fileSystem.DeleteDirectory(directory); _fileSystem.CreateDirectory(directory); assembly.GetManifestResourceNames().Where(BottleFiles.IsEmbeddedPackageZipFile).Each(name => { var folderName = BottleFiles.EmbeddedPackageFolderName(name); var stream = assembly.GetManifestResourceStream(name); var description = "Resource {0} in Assembly {1}".ToFormat(name, assembly.GetName().FullName); var destinationFolder = FileSystem.Combine(directory, folderName); _service.ExtractTo(description, stream, destinationFolder); var version = assembly.GetName().Version.ToString(); _fileSystem.WriteStringToFile(FileSystem.Combine(directory, BottleFiles.VersionFile), version); }); }
public void ExplodeAssembly(string applicationDirectory, Assembly assembly, IPackageInfo packageInfo) { var directory = BottleFiles.GetDirectoryForExplodedPackage(applicationDirectory, assembly.GetName().Name); var request = new ExplodeRequest { Directory = directory, GetVersion = () => assembly.GetName().Version.ToString(), LogSameVersion = () => { var message = "Assembly {0} has already been 'exploded' onto disk".ToFormat(assembly.GetName().FullName); PackageRegistry.Diagnostics.LogFor(packageInfo).Trace(message); }, ExplodeAction = () => explodeAssembly(assembly, directory) }; explode(request); _fileSystem.ChildDirectoriesFor(directory).Each(child => { var name = Path.GetFileName(child); packageInfo.Files.RegisterFolder(name, child.ToFullPath()); }); }
public void ExplodeAssembly(string applicationDirectory, Assembly assembly, IPackageFiles files) { var directory = BottleFiles.GetDirectoryForExplodedPackage(applicationDirectory, assembly.GetName().Name); var request = new ExplodeRequest { Directory = directory, GetVersion = () => assembly.GetName().Version.ToString(), LogSameVersion = () => Console.WriteLine( "Assembly {0} has already been 'exploded' onto disk".ToFormat(assembly.GetName().FullName)), ExplodeAction = () => explodeAssembly(assembly, directory) }; explode(request); _fileSystem.ChildDirectoriesFor(directory).Each(child => { var name = Path.GetFileName(child); files.RegisterFolder(name, child.ToFullPath()); }); }
public void get_package_folder_name() { BottleFiles.EmbeddedPackageFolderName("a.b.c.pak-webcontent.zip").ShouldEndWith("webcontent"); BottleFiles.EmbeddedPackageFolderName("a.b.c.pak-data.zip").ShouldEndWith("data"); }
public void is_package_zip_negative_2() { BottleFiles.IsEmbeddedPackageZipFile("a.b.c.webcontent.zip").ShouldBeFalse(); }
public void is_package_zip_positive() { BottleFiles.IsEmbeddedPackageZipFile("a.b.c.pak-webcontent.zip").ShouldBeTrue(); }
protected void assertPackageFolderWasDeleted(string packageName) { var packageDirectory = BottleFiles.GetDirectoryForExplodedPackage(theApplicationDirectory, packageName); MockFor <IFileSystem>().AssertWasCalled(x => x.DeleteDirectory(packageDirectory)); }