private async Task uploadReleaseAssets(AppKey appKey, AppVersionKey versionKey, XtiGitHubRepository gitHubRepo, GitHubRelease release)
        {
            Console.WriteLine("Uploading app.zip");
            var publishDir = getPublishDir(appKey, versionKey);
            var appZipPath = Path.Combine(publishDir, "app.zip");

            if (File.Exists(appZipPath))
            {
                File.Delete(appZipPath);
            }
            ZipFile.CreateFromDirectory(Path.Combine(publishDir, "App"), appZipPath);
            using (var appStream = new MemoryStream(File.ReadAllBytes(appZipPath)))
            {
                appStream.Seek(0, SeekOrigin.Begin);
                await gitHubRepo.UploadReleaseAsset(release, new FileUpload(appStream, "app.zip", "application/zip"));
            }
            var publishSetupDir = Path.Combine(publishDir, "Setup");

            if (Directory.Exists(publishSetupDir))
            {
                Console.WriteLine("Uploading setup.zip");
                var setupZipPath = Path.Combine(publishDir, "setup.zip");
                if (File.Exists(setupZipPath))
                {
                    File.Delete(setupZipPath);
                }
                ZipFile.CreateFromDirectory(publishSetupDir, setupZipPath);
                using (var setupStream = new MemoryStream(File.ReadAllBytes(setupZipPath)))
                {
                    setupStream.Seek(0, SeekOrigin.Begin);
                    await gitHubRepo.UploadReleaseAsset(release, new FileUpload(setupStream, "setup.zip", "application/zip"));
                }
            }
        }
        public Task <XtiGitHubRepository> CreateGitHubRepo(string ownerName, string repoName)
        {
            XtiGitHubRepository repo = gitHubRepo ?? (gitHubRepo = new FakeXtiGitHubRepository(ownerName));

            return(Task.FromResult(repo));
        }