Exemplo n.º 1
0
        /// <summary>
        /// Extracts a given IPAC file into the output directory provided
        /// </summary>
        /// <param name="path">Path to IPAC</param>
        /// <param name="folder">Path to output the extracted IPAC</param>
        static void ExtractIPAC(string path, string folder)
        {
            if (!File.Exists(path))
            {
                Console.WriteLine("{0} does not exist as a file, falling back to batch mode.", path);

                if (Directory.Exists(path))
                {
                    var ext = new List <string> {
                        ".ipac", ".IPAC"
                    };
                    var myFiles = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).Where(s => ext.Contains(Path.GetExtension(s)));

                    foreach (string file in myFiles)
                    {
                        var    currentChildDir = folder + "\\" + Path.GetDirectoryName(file.Replace(path, ""));
                        string filename        = Path.GetFileName(file);
                        string dest            = currentChildDir + "\\_" + filename + "_\\";
                        string dir             = Path.GetDirectoryName(dest);
                        if (!Directory.Exists(dir))
                        {
                            Directory.CreateDirectory(dir);
                        }

                        try
                        {
                            IPAC ipac = new IPAC(file);

                            if (ipac != null)
                            {
                                ipac.Unpack(dest);
                            }

                            if (bVerbose)
                            {
                                Console.WriteLine("Converted {0} to {1}", file, dest);
                            }
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("Oops! {0} failed!\nException: {1}", path, e.ToString());

                            ++iNumFailedOperations;
                        }
                        ++iNumOperations;
                    }
                }
                else
                {
                    Console.WriteLine("{0} does not exist. Cancelling operation.", path);
                    return;
                }
            }
            else
            {
                try
                {
                    IPAC ipac = new IPAC(path);

                    if (ipac != null)
                    {
                        ipac.Unpack(folder);
                    }

                    if (bVerbose)
                    {
                        Console.WriteLine("Converted {0} to {1}", path, folder);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("Oops! {0} failed!\nException: {1}", path, e.ToString());

                    ++iNumFailedOperations;
                }
                ++iNumOperations;
            }
            return;
        }