private async Task InstallPlatformAsync(string platformVersion) { if (NeedToInstallPlatform(platformVersion)) { Logger.Info($"Installing platform {platformVersion}"); var platformRelease = await GithubManager.GetPlatformRelease(platformVersion); var platformAssetUrl = platformRelease.Assets.FirstOrDefault().BrowserDownloadUrl; var platformZip = TemporaryDirectory / "platform.zip"; if (string.IsNullOrEmpty(platformAssetUrl)) { ControlFlow.Fail($"No platform's assets found with tag {platformVersion}"); } await HttpTasks.HttpDownloadFileAsync(platformAssetUrl, platformZip); CompressionTasks.Uncompress(platformZip, RootDirectory); } }
public void Test(string archiveFile) { var rootFile = Path.Combine(TestTempDirectory, "rootfile.txt"); var nestedFile = Path.Combine(TestTempDirectory, "a", "b", "c", "nestedfile.txt"); TextTasks.WriteAllText(rootFile, "root"); TextTasks.WriteAllText(nestedFile, "nested"); var archive = Path.Combine(TestTempDirectory, archiveFile); CompressionTasks.Compress(TestTempDirectory, archive); File.Exists(archive).Should().BeTrue(); File.Delete(rootFile); File.Delete(nestedFile); Directory.GetFiles(TestTempDirectory, "*").Should().HaveCount(1); CompressionTasks.Uncompress(archive, TestTempDirectory); File.Exists(rootFile).Should().BeTrue(); File.ReadAllText(rootFile).Should().Be("root"); File.Exists(nestedFile).Should().BeTrue(); File.ReadAllText(nestedFile).Should().Be("nested"); }
const string LuaVersion = "5.3.5"; // From Delivr void DownloadToolsWindows() { Logger.Info("Downloading FFmpeg."); string ffmpegVersion = HttpTasks.HttpDownloadString( "https://www.gyan.dev/ffmpeg/builds/release-version"); Logger.Info($"Downloading FFmpeg {ffmpegVersion}."); HttpTasks.HttpDownloadFile( $"https://github.com/GyanD/codexffmpeg/releases/download/{ffmpegVersion}/ffmpeg-{ffmpegVersion}-full_build.zip", ToolsTempDirectory / "ffmpeg.zip"); AbsolutePath ffmpegExtractTempPath = ToolsTempDirectory / "ffmpeg"; Logger.Info("Extracting FFmpeg."); CompressionTasks.UncompressZip( ToolsTempDirectory / "ffmpeg.zip", ffmpegExtractTempPath); ForceCopyDirectoryRecursively( ffmpegExtractTempPath / $"ffmpeg-{ffmpegVersion}-full_build" / "bin", ToolsDirectory); Logger.Info("Downloading x264."); HttpTasks.HttpDownloadFile( $"https://artifacts.videolan.org/x264/release-win64/x264-{X264Version}.exe", ToolsDirectory / "x264.exe"); Logger.Info("Downloading x265."); new[] { 8, 10, 12 }.ForEach(x => { HttpTasks.HttpDownloadFile( $"https://builds.x265.eu/x265-64bit-{x}bit-latest.exe", ToolsDirectory / $"x265-64bit-{x}bit-latest.exe"); }); Logger.Info($"Downloading PowerShell v{PowerShellVersion}."); HttpTasks.HttpDownloadFile( $"https://github.com/PowerShell/PowerShell/releases/download/v{PowerShellVersion}/PowerShell-{PowerShellVersion}-win-x64.zip", ToolsTempDirectory / "pwsh.zip"); Logger.Info("Extracting PowerShell."); CompressionTasks.UncompressZip( ToolsTempDirectory / "pwsh.zip", ToolsDirectory); Logger.Info("Downloading Node.js."); HttpTasks.HttpDownloadFile( $"https://nodejs.org/dist/v{NodejsVersion}/node-v{NodejsVersion}-win-x64.zip", ToolsTempDirectory / "node.zip"); AbsolutePath nodeExtractTempPath = ToolsTempDirectory / "node"; Logger.Info("Extracting Node.js."); CompressionTasks.UncompressZip( ToolsTempDirectory / "node.zip", nodeExtractTempPath); ForceCopyDirectoryRecursively( nodeExtractTempPath / $"node-v{NodejsVersion}-win-x64", ToolsDirectory); Logger.Info("Downloading Python."); HttpTasks.HttpDownloadFile( $"https://www.python.org/ftp/python/{PythonVersion}/python-{PythonVersion}-embed-amd64.zip", ToolsTempDirectory / "python.zip"); Logger.Info("Extracting Python."); CompressionTasks.UncompressZip( ToolsTempDirectory / "python.zip", ToolsDirectory); Logger.Info("Downloading Lua."); HttpTasks.HttpDownloadFile( $"https://raw.githubusercontent.com/Afanyiyu/Delivr/master/lua/lua-{LuaVersion}-win.zip", ToolsTempDirectory / "lua.zip"); Logger.Info("Extracting Lua."); CompressionTasks.UncompressZip( ToolsTempDirectory / "lua.zip", ToolsDirectory); Logger.Info("Downloading json.lua."); HttpTasks.HttpDownloadFile( "https://raw.githubusercontent.com/Afanyiyu/Delivr/master/lua/json.lua.zip", ToolsTempDirectory / "json.lua.zip"); Logger.Info("Extracting json.lua."); CompressionTasks.UncompressZip( ToolsTempDirectory / "json.lua.zip", ToolsDirectory); Logger.Info("Downloading 7za."); HttpTasks.HttpDownloadFile( "https://raw.githubusercontent.com/develar/7zip-bin/master/win/x64/7za.exe", ToolsTempDirectory / "7za.exe"); Logger.Info("Moving 7za."); CopyFileToDirectory( ToolsTempDirectory / "7za.exe", ToolsDirectory); Logger.Info("Downloading HwEnc."); HttpTasks.HttpDownloadFile( "https://raw.githubusercontent.com/Afanyiyu/Delivr/master/rmbox/hwenc.zip", ToolsTempDirectory / "hwenc.zip"); Logger.Info("Extracting HwEnc."); CompressionTasks.UncompressZip( ToolsTempDirectory / "hwenc.zip", ToolsDirectory); Logger.Info("Downloading QAAC."); HttpTasks.HttpDownloadFile( "https://raw.githubusercontent.com/Afanyiyu/Delivr/master/rmbox/qaac.zip", ToolsTempDirectory / "qaac.zip"); Logger.Info("Extracting QAAC."); CompressionTasks.UncompressZip( ToolsTempDirectory / "qaac.zip", ToolsDirectory); Logger.Info("Downloading VapourSynth."); HttpTasks.HttpDownloadFile( "https://raw.githubusercontent.com/Afanyiyu/Delivr/master/rmbox/vsfm.zip", ToolsTempDirectory / "vsfm.zip"); Logger.Info("Extracting VapourSynth."); CompressionTasks.UncompressZip( ToolsTempDirectory / "vsfm.zip", ToolsDirectory); }
void DownloadToolsLinux() { Logger.Info("Downloading FFmpeg."); HttpTasks.HttpDownloadFile( "https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz", ToolsTempDirectory / "ffmpeg.tar.xz"); // You need to extract "ffmpeg.tar.xz" yourself. CopyFileToDirectory( ToolsTempDirectory / "ffmpeg.tar.xz", ToolsDirectory); Logger.Info("Downloading x264."); HttpTasks.HttpDownloadFile( $"https://artifacts.videolan.org/x264/release-debian-amd64/x264-{X264Version}", ToolsDirectory / "x264.exe"); Logger.Info($"Downloading PowerShell v{PowerShellVersion}."); HttpTasks.HttpDownloadFile( $"https://github.com/PowerShell/PowerShell/releases/download/v{PowerShellVersion}/PowerShell-{PowerShellVersion}-linux-x64.tar.gz", ToolsTempDirectory / "pwsh.tar.gz"); Logger.Info("Extracting PowerShell."); CompressionTasks.UncompressTarGZip( ToolsTempDirectory / "pwsh.tar.gz", ToolsDirectory); Logger.Info("Downloading Node.js."); HttpTasks.HttpDownloadFile( $"https://nodejs.org/dist/v{NodejsVersion}/node-v{NodejsVersion}-linux-x64.tar.xz", ToolsTempDirectory / "node.tar.xz"); // You need to extract "node.tar.xz" yourself. CopyFileToDirectory( ToolsTempDirectory / "node.tar.xz", ToolsDirectory); // You need to compile Python yourself. Logger.Info("Downloading Lua."); HttpTasks.HttpDownloadFile( $"https://raw.githubusercontent.com/Afanyiyu/Delivr/master/lua/lua-{LuaVersion}-linux.zip", ToolsTempDirectory / "lua.zip"); Logger.Info("Extracting Lua."); CompressionTasks.UncompressZip( ToolsTempDirectory / "lua.zip", ToolsDirectory); Logger.Info("Downloading json.lua."); HttpTasks.HttpDownloadFile( "https://raw.githubusercontent.com/Afanyiyu/Delivr/master/lua/json.lua.zip", ToolsTempDirectory / "json.lua.zip"); Logger.Info("Extracting json.lua."); CompressionTasks.UncompressZip( ToolsTempDirectory / "json.lua.zip", ToolsDirectory); Logger.Info("Downloading 7za."); HttpTasks.HttpDownloadFile( "https://raw.githubusercontent.com/develar/7zip-bin/master/linux/x64/7za", ToolsTempDirectory / "7za"); Logger.Info("Moving 7za."); CopyFileToDirectory( ToolsTempDirectory / "7za", ToolsDirectory); }
void DownloadToolsMacos() { Logger.Info("Downloading FFmpeg."); new[] { "ffmpeg", "ffprobe", "ffplay", "ffserver" }.ForEach(x => { Logger.Info($"Downloading {x}."); HttpTasks.HttpDownloadFile( $"https://evermeet.cx/ffmpeg/getrelease/{x}/zip", ToolsTempDirectory / $"{x}.zip"); Logger.Info($"Extracting {x}."); CompressionTasks.UncompressZip( ToolsTempDirectory / $"{x}.zip", ToolsDirectory); }); Logger.Info("Downloading x264."); HttpTasks.HttpDownloadFile( $"https://artifacts.videolan.org/x264/release-macos-x86_64/x264-{X264Version}", ToolsDirectory / "x264.exe"); Logger.Info($"Downloading PowerShell v{PowerShellVersion}."); HttpTasks.HttpDownloadFile( $"https://github.com/PowerShell/PowerShell/releases/download/v{PowerShellVersion}/PowerShell-{PowerShellVersion}-osx-x64.tar.gz", ToolsTempDirectory / "pwsh.tar.gz"); Logger.Info("Extracting PowerShell."); CompressionTasks.UncompressTarGZip( ToolsTempDirectory / "pwsh.tar.gz", ToolsDirectory); Logger.Info("Downloading Node.js."); HttpTasks.HttpDownloadFile( $"https://nodejs.org/dist/v{NodejsVersion}/node-v{NodejsVersion}-darwin-x64.tar.gz", ToolsTempDirectory / "node.tar.gz"); AbsolutePath nodeExtractTempPath = ToolsTempDirectory / "node"; Logger.Info("Extracting Node.js."); CompressionTasks.UncompressTarGZip( ToolsTempDirectory / "node.tar.gz", nodeExtractTempPath); // You need to manually install npm. ForceCopyDirectoryRecursively( nodeExtractTempPath / $"node-v{NodejsVersion}-darwin-x64" / "bin", ToolsDirectory); // You need to compile Python yourself. Logger.Info("Downloading Lua."); HttpTasks.HttpDownloadFile( $"https://raw.githubusercontent.com/Afanyiyu/Delivr/master/lua/lua-{LuaVersion}-osx.zip", ToolsTempDirectory / "lua.zip"); Logger.Info("Extracting Lua."); CompressionTasks.UncompressZip( ToolsTempDirectory / "lua.zip", ToolsDirectory); Logger.Info("Downloading json.lua."); HttpTasks.HttpDownloadFile( "https://raw.githubusercontent.com/Afanyiyu/Delivr/master/lua/json.lua.zip", ToolsTempDirectory / "json.lua.zip"); Logger.Info("Extracting json.lua."); CompressionTasks.UncompressZip( ToolsTempDirectory / "json.lua.zip", ToolsDirectory); Logger.Info("Downloading 7za."); HttpTasks.HttpDownloadFile( "https://raw.githubusercontent.com/develar/7zip-bin/master/mac/x64/7za", ToolsTempDirectory / "7za"); Logger.Info("Moving 7za."); CopyFileToDirectory( ToolsTempDirectory / "7za", ToolsDirectory); }