using System; using System.Xml.Serialization; using System.Collections.Generic; namespace NaGet.Packages { /// /// レポジトリのリストを表現するクラス /// public class RepositoriesList { /// /// レポジトリの配列 /// public RepositoryInfo[] Repositories = null; /// /// デフォルトコンストラクタ /// public RepositoriesList() { } /// /// 有効なレポジトリの配列を返す /// [XmlIgnore] public RepositoryInfo[] EnabledRepositories { get { return Array.FindAll(Repositories, delegate(RepositoryInfo repo) { return repo.Enabled; }); } } /// /// provider.list.txtから変換してRepositoriesListとして返す /// /// 変換もとのprovider.list.txtのパス /// 変換されたRepositoriesList public static RepositoriesList MigrateFromProviderListTxt(string path) { List repos = new List(); using(System.IO.StreamReader reader = new System.IO.StreamReader(path)) { string line; while ((line = reader.ReadLine()) != null) { RepositoryInfo repo = new RepositoryInfo(); repo.Enabled = true; repo.Url = new LocationEntry(line); repo.Name = string.Empty; repos.Add(repo); } } RepositoriesList repolist = new RepositoriesList(); repolist.Repositories = repos.ToArray(); return repolist; } } /// /// パッケージリストを提供するレポジトリの参照情報を格納するクラス /// public sealed class RepositoryInfo { /// /// レポジトリの提供するソフトリストの名称 /// [XmlAttribute] public string Name; /// /// ソフトリストの取得先URL /// public LocationEntry Url; /// /// ソフトリストを読み取るか否か(無視するか否か)のフラグ。 /// [XmlAttribute] public bool Enabled = true; } }