Beispiel #1
0
        public IEnumerable <string> ExplodeDirectory(ExplodeDirectory directory)
        {
            string packageFolder = directory.BottleDirectory;
            var    fileSet       = new FileSet
            {
                Include = "*.zip"
            };

            directory.Log.Trace("Searching for zip files in package directory " + packageFolder);

            var packageFileNames = _fileSystem.FileNamesFor(fileSet, packageFolder);

            return(packageFileNames.Select(file =>
            {
                var packageName = Path.GetFileNameWithoutExtension(file);
                var explodedDirectory = FileSystem.Combine(directory.DestinationDirectory, packageName);

                var request = new ExplodeRequest {
                    Directory = explodedDirectory,
                    ExplodeAction = () => Explode(file, explodedDirectory, ExplodeOptions.DeleteDestination),
                    GetVersion = () => _service.GetVersion(file),
                    LogSameVersion = () => _logger.WritePackageZipFileWasSameVersionAsExploded(file)
                };


                explode(request);

                return explodedDirectory;
            }).ToList());  // Needs to be evaluated right now.
        }
Beispiel #2
0
        private string explodeZipAndReturnDirectory(string file, string applicationDirectory)
        {
            var directory = FubuMvcPackages.DirectoryForPackageZipFile(applicationDirectory, file);
            var request   = new ExplodeRequest {
                Directory      = directory,
                ExplodeAction  = () => Explode(applicationDirectory, file),
                GetVersion     = () => _service.GetVersion(file),
                LogSameVersion = () => _logger.WritePackageZipFileWasSameVersionAsExploded(file)
            };


            explode(request);

            return(directory);
        }
Beispiel #3
0
        private void explode(ExplodeRequest request)
        {
            if (_fileSystem.DirectoryExists(request.Directory))
            {
                var packageVersion = request.GetVersion();
                var folderVersion  = ReadVersion(request.Directory);

                if (packageVersion == folderVersion)
                {
                    request.LogSameVersion();
                    return;
                }
            }

            request.ExplodeAction();
        }
Beispiel #4
0
        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 = () => ConsoleWriter.Write("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);

                packageInfo.Files.RegisterFolder(name, child.ToFullPath());
            });
        }
Beispiel #5
0
        public void ExplodeAssembly(string applicationDirectory, Assembly assembly, IPackageFiles files)
        {
            var directory = FubuMvcPackages.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());
            });
        }
Beispiel #6
0
        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());
            });
        }
Beispiel #7
0
        private string explodeZipAndReturnDirectory(string file, string applicationDirectory)
        {
            var directory = BottleFiles.DirectoryForPackageZipFile(applicationDirectory, file);

            var request = new ExplodeRequest{
                Directory = directory,
                ExplodeAction = () => Explode(file, directory, ExplodeOptions.DeleteDestination),
                GetVersion = () => _service.GetVersion(file),
                LogSameVersion = () => _logger.WritePackageZipFileWasSameVersionAsExploded(file)
            };

            explode(request);

            return directory;
        }
Beispiel #8
0
        private void explode(ExplodeRequest request)
        {
            if (_fileSystem.DirectoryExists(request.Directory))
            {
                var packageVersion = request.GetVersion();
                var folderVersion = ReadVersion(request.Directory);

                if (packageVersion == folderVersion)
                {
                    request.LogSameVersion();
                    return;
                }
            }

            request.ExplodeAction();
        }
        public void ExplodeAssembly(string applicationDirectory, Assembly assembly, IPackageFiles files)
        {
            var directory = FileSystem.Combine(
                applicationDirectory,
                "bin",
                FubuMvcPackages.FubuPackagesFolder, assembly.GetName().Name);

            var request = new ExplodeRequest{
                Directory = directory,
                GetVersion = () =>
                {
                    return assembly.GetName().Version.ToString();
                },
                LogSameVersion = () => Console.WriteLine("Assembly {0} has already been 'exploded' onto disk".ToFormat(assembly.GetName().FullName)),

                ExplodeAction = () => explodeAssembly(assembly, directory, files)
            };

            explode(request);

            _fileSystem.ChildDirectoriesFor(directory).Each(child =>
            {
                var name = Path.GetFileName(child);

                files.RegisterFolder(name, child.ToFullPath());
            });
        }
        public IEnumerable<string> ExplodeDirectory(ExplodeDirectory directory)
        {
            string packageFolder = directory.PackageDirectory;
            var fileSet = new FileSet
                          {
                              Include = "*.zip"
                          };

            directory.Log.Trace("Searching for zip files in package directory " + packageFolder);

            var packageFileNames = _fileSystem.FileNamesFor(fileSet, packageFolder);

            return packageFileNames.Select(file =>
            {
                var packageName = Path.GetFileNameWithoutExtension(file);
                var explodedDirectory = FileSystem.Combine(directory.DestinationDirectory, packageName);

                // TODO -- need more logging here. Pass in the log and have it log what happens internally
                var request = new ExplodeRequest{
                    Directory = explodedDirectory,
                    ExplodeAction = () => Explode(file, explodedDirectory, ExplodeOptions.DeleteDestination),
                    GetVersion = () => _service.GetVersion(file),
                    LogSameVersion = () => _logger.WritePackageZipFileWasSameVersionAsExploded(file)
                };


                explode(request);

                return explodedDirectory;
            }).ToList();  // Needs to be evaluated right now.
        }