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;
}
}