Example #1
0
        public static async Task <InitResult> Initialize(WorcsDocument document)
        {
            if (!document.HasFlag(WorcsDocumentFlags.WorkingDirExists))
            {
                return(InitResult.TempDirNotFound);
            }

            if (document.HasFlag(WorcsDocumentFlags.RepositoryExists))
            {
                return(InitResult.RepoAlreadyExists);
            }

            Repository.Init(document.RepoDir);
            document.SetFlag(WorcsDocumentFlags.RepositoryExists);
            document.SetFlag(WorcsDocumentFlags.HasUncommitedChanges);

            return(InitResult.Success);
        }
Example #2
0
        public static async Task <PackResult> Pack(WorcsDocument document)
        {
            if (!document.HasFlag(WorcsDocumentFlags.WorkingDirExists))
            {
                return(PackResult.WorkingDirNotFound);
            }

            var workingDir  = document.WorkingDir;
            var archivePath = Path.Combine(workingDir, "temp.docx");

            ZipFile.CreateFromDirectory(document.RepoDir, archivePath, CompressionLevel.Optimal, false);

            var wordFileDir = Path.GetDirectoryName(document.WordFilepath) ?? "";
            var backupName  = document.WordFilename + ".old";
            var backupPath  = Path.Combine(wordFileDir, backupName);

            File.Move(document.WordFilepath, backupPath, true);
            File.Copy(archivePath, document.WordFilepath);
            File.Delete(archivePath);

            return(PackResult.Success);
        }
Example #3
0
        public static async Task <UnpackResult> Unpack(WorcsDocument document)
        {
            if (!document.HasFlag(WorcsDocumentFlags.WorkingDirExists))
            {
                var userTempDir = Path.GetTempPath();
                var tempDirName = await document.GetHashedFilename();

                document.WorkingDir = Path.Combine(userTempDir, TempDirParentName, tempDirName);
                document.RepoDir    = Path.Combine(document.WorkingDir, RepoDirName);
                document.SetFlag(WorcsDocumentFlags.WorkingDirExists);
            }

            if (!File.Exists(document.WordFilepath))
            {
                return(UnpackResult.FileNotFound);
            }

            await Console.Out.WriteLineAsync($"Unpacking word file {document.WordFilepath} to temp repo dir {document.RepoDir}.");

            ZipFile.ExtractToDirectory(document.WordFilepath, document.RepoDir, true);

            return(UnpackResult.Success);
        }
Example #4
0
        public static async Task <CommitResult> CommitAllChanged(WorcsDocument document, Signature author, string summary)
        {
            if (!document.HasFlag(WorcsDocumentFlags.RepositoryExists))
            {
                return(CommitResult.RepositoryNotFound);
            }

            if (!document.HasFlag(WorcsDocumentFlags.HasUncommitedChanges))
            {
                return(CommitResult.NoChanges);
            }

            var timestampFile = Path.Combine(document.RepoDir, "changed.tmp");
            await File.WriteAllTextAsync(timestampFile, DateTimeOffset.UtcNow.ToString());

            using var repo = new Repository(document.RepoDir);
            Commands.Stage(repo, "*");

            _ = repo.Commit(summary, author, author);

            document.RemoveFlag(WorcsDocumentFlags.HasUncommitedChanges);

            return(CommitResult.Success);
        }