Exemple #1
0
        public bool Extract(IFileHierarchyFile garFile)
        {
            Asserts.True(garFile.Exists,
                         $"Could not extract GAR because it does not exist: {garFile.FullName}");

            var directoryPath = StringUtil.UpTo(garFile.FullName, ".gar");
            var directory     = new FinDirectory(directoryPath);

            if (directory.Exists)
            {
                return(false);
            }

            var logger = Logging.Create <ZarExtractor>();

            logger.LogInformation($"Extracting GAR {garFile.LocalPath}...");

            Gar gar;

            {
                using var er =
                          new EndianBinaryReader(garFile.Impl.OpenRead(),
                                                 Endianness.LittleEndian);
                gar = new Gar(er);
            }

            foreach (var fileType in gar.FileTypes)
            {
                foreach (var file in fileType.Files)
                {
                    var fileName = file.FileName;

                    if (!fileName.EndsWith($".{fileType.TypeName}"))
                    {
                        fileName = $"{fileName}.{fileType.TypeName}";
                    }

                    var filePath = Path.Join(directoryPath, fileName);
                    Directory.CreateDirectory(Path.GetDirectoryName(filePath) !);
                    File.WriteAllBytes(filePath, file.Bytes);
                }
            }

            garFile.Impl.Info.Delete();

            return(true);
        }
Exemple #2
0
 public Bar(Gar g, Har h, Tar t)
 {
     Console.WriteLine("Bar ctor with gar, har and tar.");
 }
Exemple #3
0
 public Bar(Gar g)
 {
     Console.WriteLine("Bar ctor with Gar.");
 }
Exemple #4
0
 public Foo(Gar g, Har h)
 {
 }
Exemple #5
0
 public Foo(Gar g)
 {
     Console.WriteLine("The one with Gar");
 }
Exemple #6
0
 public Foo(Bar b, Gar g)
 {
     Console.WriteLine("Bar and gar");
 }