public List <LocalReleaseInfo> ScanAppsDirPath() { var list = new List <LocalReleaseInfo>(); var files = GetSyrupPath(_appsDirPath); foreach (var fileInfo in files) { var syrup = JsonConvert.DeserializeObject <SyrupFileInfo>(File.ReadAllText(fileInfo.FullName)); var parentDir = fileInfo.Directory; if ((parentDir == null) || parentDir.GetFiles(Consts.SYRUP_ACTIVE_APP_FILE, SearchOption.TopDirectoryOnly).Any()) { continue; } var item = new LocalReleaseInfo { App = syrup.App, Name = syrup.Name, File = syrup.File, Sha = syrup.Sha, SemVer = syrup.SemVer, RelaseDate = syrup.RelaseDate, IsExtracted = true }; list.Add(item); } return(list); }
public void CopyToActiveDir(LocalReleaseInfo release) { var versionAppDirPath = Path.Combine(_appsDirPath, release.Name); var currentAppDirPath = Path.Combine(_appsDirPath, release.App); Misc.RemoveFilesAndDirsInDir(currentAppDirPath); var di = new DirectoryInfo(versionAppDirPath); foreach (var d in di.GetDirectories()) { var dst = Path.Combine(currentAppDirPath, d.Name); Misc.CopyDirectory(d.FullName, dst); } var syrupFile = release.File + Consts.SYRUP_FILE_EXTENSION; var srcSyrupFile = Path.Combine(_appsDirPath, release.Name, syrupFile); if (File.Exists(srcSyrupFile)) { var dstSyrupFile = Path.Combine(currentAppDirPath, syrupFile); File.Copy(srcSyrupFile, dstSyrupFile); } var activeFile = Path.Combine(currentAppDirPath, "syrup-active-config.json"); File.WriteAllText(activeFile, "{}"); }
public void RunBefore() { LocalReleaseInfo releaseInfo = new LocalReleaseInfo { App = "VideoAnalyzer" }; _scriptService.RunBeforeMakeCurrent(releaseInfo); }
public void MakeActive(LocalReleaseInfo release) { _releaseInfoLocals.ForEach(x => x.Value.IsActive = false); var r = _releaseInfoLocals.FirstOrDefault(x => x.Key == release.Name).Value; if (r != null) { r.IsActive = true; } }
public void PutReleaseToNugetDir(LocalReleaseInfo release, string path) { var filePathInNugets = Path.Combine(_syrupNugetsDirPath, release.Name, release.File); var dirPathInNugets = Path.GetDirectoryName(filePathInNugets); Misc.CreateDirIfNotExist(dirPathInNugets); Misc.RemoveFilesInDir(dirPathInNugets); File.Move(path, filePathInNugets); GenerateSyrupFile(release, filePathInNugets); release.IsLocalNuget = true; }
public SyrupExecuteResult RunAfterMakeCurrent(LocalReleaseInfo releaseInfo) { _log.Debug($"RunAfterMakeCurrent; File: {releaseInfo.File}"); var rootPath = new DirectoryInfo(_pathToApps).Parent?.FullName; var currentAppPath = Path.Combine(_pathToApps, releaseInfo.App); var scriptsPath = Path.Combine(currentAppPath, "_syrup\\scripts"); var scriptPath = Path.Combine(scriptsPath, "after-make-current.csx"); var globals = new ExecutorRequest(scriptPath, rootPath, currentAppPath, releaseInfo.Name); var res = Run(globals); return(res); }
private void GenerateSyrupFile(LocalReleaseInfo release, string filePath) { var sha = GetSha1Hash(filePath); var file = Path.GetFileName(filePath); var syrupFilePath = filePath + Consts.SYRUP_FILE_EXTENSION; var res = new SyrupFileInfo { App = release.App, Name = release.Name, File = file, RelaseDate = release.RelaseDate, SemVer = release.SemVer, Sha = sha }; var json = JsonConvert.SerializeObject(res, Formatting.Indented); File.WriteAllText(syrupFilePath, json); }
public void MakeUpdateFromLocal(List <LocalReleaseInfo> relaseInfos) { foreach (var releaseInfo in relaseInfos) { LocalReleaseInfo ri; if (_releaseInfoLocals.TryGetValue(releaseInfo.Name, out ri)) { ri.App = releaseInfo.App; ri.IsOnServer = true; ri.File = releaseInfo.File; ri.Channel = releaseInfo.Channel; ri.FileUrl = releaseInfo.FileUrl; ri.RelaseDate = releaseInfo.RelaseDate; ri.SemVer = releaseInfo.SemVer; ri.Sha = releaseInfo.Sha; ri.IsLocalNuget = releaseInfo.IsLocalNuget; ri.IsExtracted = releaseInfo.IsExtracted; ri.IsActive = releaseInfo.IsActive; } else { var rl = new LocalReleaseInfo { App = releaseInfo.App, Name = releaseInfo.Name, File = releaseInfo.File, SemVer = releaseInfo.SemVer, Sha = releaseInfo.Sha, RelaseDate = releaseInfo.RelaseDate, IsLocalNuget = releaseInfo.IsLocalNuget, IsExtracted = releaseInfo.IsExtracted, IsActive = releaseInfo.IsActive }; if (!_releaseInfoLocals.TryAdd(releaseInfo.Name, rl)) { throw new CannotAddToLocalRelaseInfoServiceException(); } } } }
public void MakeUpdateFromServer(List <ReleaseInfo> relaseInfos) { _releaseInfoLocals.ForEach(x => x.Value.IsOnServer = false); foreach (var releaseInfo in relaseInfos) { LocalReleaseInfo ri; if (_releaseInfoLocals.TryGetValue(releaseInfo.Name, out ri)) { ri.IsOnServer = true; ri.App = releaseInfo.App; ri.File = releaseInfo.File; ri.Channel = releaseInfo.Channel; ri.FileUrl = releaseInfo.FileUrl; ri.RelaseDate = releaseInfo.RelaseDate; ri.SemVer = releaseInfo.SemVer; ri.Sha = releaseInfo.Sha; } else { var rl = new LocalReleaseInfo { App = releaseInfo.App, Name = releaseInfo.Name, Channel = releaseInfo.Channel, File = releaseInfo.File, FileUrl = releaseInfo.FileUrl, SemVer = releaseInfo.SemVer, Sha = releaseInfo.Sha, RelaseDate = releaseInfo.RelaseDate, IsOnServer = true }; if (!_releaseInfoLocals.TryAdd(releaseInfo.Name, rl)) { throw new CannotAddToLocalRelaseInfoServiceException(); } } } }
public void ExtractNugetToApps(LocalReleaseInfo release) { var pathInNuget = Path.Combine(_syrupNugetsDirPath, release.Name, release.File); var syrupInNuget = Path.Combine(_syrupNugetsDirPath, release.Name, release.File + Consts.SYRUP_FILE_EXTENSION); if (File.Exists(pathInNuget)) { var dirInApps = Path.Combine(_appsDirPath, release.Name); Misc.CreateDirIfNotExist(dirInApps); Misc.RemoveFilesAndDirsInDir(dirInApps); ZipFile.ExtractToDirectory(pathInNuget, dirInApps); if (File.Exists(syrupInNuget)) { var filePath = Path.Combine(dirInApps, release.File + Consts.SYRUP_FILE_EXTENSION); File.Copy(syrupInNuget, filePath); release.IsExtracted = true; CleanNugetRemains(dirInApps); } } }
public List <LocalReleaseInfo> ScanNugetsDirPath() { var list = new List <LocalReleaseInfo>(); var files = GetSyrupPath(_syrupNugetsDirPath); foreach (var fileInfo in files) { var syrup = JsonConvert.DeserializeObject <SyrupFileInfo>(File.ReadAllText(fileInfo.FullName)); var item = new LocalReleaseInfo { App = syrup.App, Name = syrup.Name, File = syrup.File, Sha = syrup.Sha, SemVer = syrup.SemVer, RelaseDate = syrup.RelaseDate, IsLocalNuget = true }; list.Add(item); } return(list); }