private void WriteToPackageList(Func <FileStream> packageListOpenStream, Action <PackageList> actionToPerformOnPackageList) { FileStream fileStream; bool fileExists = true; try { fileStream = packageListOpenStream.Invoke(); } catch (FileNotFoundException) { string packageListFileName = GetPackageListFilePath(); fileStream = File.Open(packageListFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None); fileExists = false; } using (fileStream) { PackageList packageList; if (fileExists) { packageList = LoadPackageList(fileStream); } else { packageList = PackageList.CreateNewPackageList(); } actionToPerformOnPackageList.Invoke(packageList); fileStream.SetLength(0); packageList.Save(fileStream); } }
private PackageList LoadPackageList(FileStream fileStream) { PackageList packageList; try { packageList = PackageList.Load(fileStream, packageListMigrations); } catch (Exception e) { throw new InvalidOperationException($"Reading of package list from '{fileStream.Name}' failed: {e.Message}", e); } return(packageList); }
internal IPackageInfo GetSinglePackageInfo(string packageId, ListMode listMode) { try { using (FileStream fileStream = OpenPackageListForReadOperation()) { PackageList packageList = LoadPackageList(fileStream); IPackageInfo packageInfo = packageList.FetchSinglePackageListInfo(packageId, listMode); return(packageInfo); } } catch (FileNotFoundException) { return(null); } }
// TODO For MatchMode.All the searchPattern is useless public IReadOnlyCollection <IPackageInfo> GetPackageInfo(string searchPattern, ListMode listMode, MatchMode matchMode) { try { using (FileStream fileStream = OpenPackageListForReadOperation()) { PackageList packageList = LoadPackageList(fileStream); var packageInfos = packageList.FetchPackageListInfo(searchPattern, listMode, matchMode); return(packageInfos); } } catch (FileNotFoundException) { return(null); } }