Example #1
0
 private void HdzValidator(int byteNumber)
 {
     using (var writer = new FileStream(Environment.ExpandEnvironmentVariables("%TEMP%") + "\\HDZtest_i.txt", FileMode.Create))
     {
         byte[] arr = Encoding.Default.GetBytes("1234567890");
         for (int i = 0; i < (byteNumber / 10); i++)
         {
             writer.Write(arr, 0, 10);
         }
         writer.Flush();
         var arch = new HdzArchive();
         arch.FileName = writer.Name.Replace("HDZtest_i.txt", "HDZtest_a.hdz");
         arch.AddItem(writer.Name, new HdzHeaderItem("HDZtest_o.txt"));
         arch.Save(HdzArchive.Versions.V1);
         arch = new HdzArchive(arch.FileName);
         arch.ExtractItemsFromHdz(new System.Collections.Generic.List <string> {
             "HDZtest_o.txt"
         });
         using (var reader = new FileStream(writer.Name.Replace("HDZtest_i.txt", "HDZtest_o.txt"), FileMode.Open))
         {
             writer.Seek(0, SeekOrigin.Begin);
             var res1 = Checksum(writer);
             var res2 = Checksum(reader);
             Assert.AreEqual(res1, res2);
         }
     }
 }
Example #2
0
        private static string NewImpl(string[] args)
        {
            string prcName = "", deployPath = "", deployBin = "", srcHdz = "", srcPath = "";

            for (var i = 0; i < args.Length; i++)
            {
                switch (args[i])
                {
                case "/hdz":
                    srcHdz  = args[++i];
                    srcPath = srcHdz.Substring(0, srcHdz.LastIndexOf('\\') + 1);
                    break;

                case "/path":
                    deployBin  = args[++i];
                    deployPath = deployBin.Substring(0, deployBin.LastIndexOf('\\') + 1);
                    prcName    = deployBin.Substring(deployPath.Length);
                    break;

                case "/exe":
                    prcName = args[++i];
                    break;

                default:
                    throw new ArgumentException("Invalid command line!");
                }
            }
            prcName    = prcName.Trim('"');
            deployPath = deployPath.Trim('"');
            deployBin  = deployBin.Trim('"');
            srcHdz     = srcHdz.Trim('"');
            srcPath    = srcPath.Trim('"');
            WaitForExit(prcName);
            var hdz = new HdzArchive(srcHdz);

            if (!hdz.HdzItems.ContainsKey(SCRIPT_FILE_NAME))
            {
                throw new ArgumentException("HDZ doesn't contain " + SCRIPT_FILE_NAME);
            }
            hdz.ExtractItemsFromHdz();
            foreach (var fn in hdz.HdzItems.Keys)
            {
                if (fn == SCRIPT_FILE_NAME)
                {
                    continue;
                }
                EnsureFileMoved(srcPath + fn, deployPath + fn);
            }
            using (var stream = new StreamReader(srcPath + SCRIPT_FILE_NAME, System.Text.Encoding.Default))
            {
                var empty = false;
                do
                {
                    string line = stream.ReadLine();
                    if (string.IsNullOrEmpty(line))
                    {
                        empty = true;
                    }
                    else
                    {
                        var    command = line.Substring(0, 2);
                        string arg1, arg2 = "";
                        var    idx = line.IndexOf("::");
                        if (idx > 0)
                        {
                            arg1 = deployPath + line.Substring(3, idx - 3);
                            arg2 = deployPath + line.Substring(idx + 2);
                        }
                        else
                        {
                            arg1 = deployPath + line.Substring(3);
                        }
                        switch (command)
                        {
                        case "mf":
                            EnsureFileMoved(arg1, arg2);
                            break;

                        case "md":
                            EnsureFSOperation(arg1, arg2, "{0} is moved to {1} successfully.", FileOps.Md);
                            break;

                        case "cd":
                            EnsureFSOperation(arg1, null, "{0} is created successfully.", FileOps.Cd);
                            break;

                        case "df":
                            EnsureFSOperation(arg1, null, "{0} is deleted successfully.", FileOps.Df);
                            break;

                        case "dd":
                            EnsureFSOperation(arg1, null, "{0} is deleted successfully.", FileOps.Dd);
                            break;

                        default:
                            throw new Exception(string.Format("Invalid command «{0}» in script file!", command));
                        }
                    }
                } while (!empty);
            }
            EnsureFSOperation(srcPath + SCRIPT_FILE_NAME, null, "{0} is cleaned up successfully.", FileOps.Df);
            return(deployBin);
        }