OSDN Git Service

AppliStation-GUI,ソフトコレクションファイルのエクスポートにファイルの種類を選べる機能を追加
[applistation/AppliStation.git] / na-get-lib / NaGet.Packages / RepositoriesList.cs
1 using System;\r
2 using System.ComponentModel;\r
3 using System.Xml.Serialization;\r
4 using System.Collections.Generic;\r
5 \r
6 namespace NaGet.Packages\r
7 {\r
8         /// <summary>\r
9         /// レポジトリのリストを表現するクラス\r
10         /// </summary>\r
11         public class RepositoriesList\r
12         {\r
13                 /// <summary>\r
14                 /// レポジトリの配列\r
15                 /// </summary>\r
16                 public RepositoryInfo[] Repositories = null;\r
17                 \r
18                 /// <summary>\r
19                 /// デフォルトコンストラクタ\r
20                 /// </summary>\r
21                 public RepositoriesList()\r
22                 {\r
23                 }\r
24                 \r
25                 /// <summary>\r
26                 /// 有効なレポジトリの配列を返す\r
27                 /// </summary>\r
28                 [XmlIgnore]\r
29                 public IEnumerable<RepositoryInfo> EnabledRepositories {\r
30                         get {\r
31                                 foreach (RepositoryInfo repo in Repositories) {\r
32                                         if (repo.Enabled) {\r
33                                                 yield return repo;\r
34                                         }\r
35                                 }\r
36                         }\r
37                 }\r
38                 \r
39                 /// <summary>\r
40                 /// provider.list.txtから変換してRepositoriesListとして返す\r
41                 /// </summary>\r
42                 /// <param name="path">変換もとのprovider.list.txtのパス</param>\r
43                 /// <returns>変換されたRepositoriesList</returns>\r
44                 public static RepositoriesList MigrateFromProviderListTxt(string path)\r
45                 {\r
46                         List<RepositoryInfo> repos = new List<RepositoryInfo>();\r
47                         using(System.IO.StreamReader reader = new System.IO.StreamReader(path)) {\r
48                                 string line;\r
49                                 while ((line = reader.ReadLine()) != null) {\r
50                                         RepositoryInfo repo = new RepositoryInfo();\r
51                                         repo.Enabled = true;\r
52                                         repo.Url = new LocationEntry(line);\r
53                                         repo.Name = string.Empty;\r
54                                         repos.Add(repo);\r
55                                 }\r
56                         }\r
57                         \r
58                         RepositoriesList repolist = new RepositoriesList();\r
59                         repolist.Repositories = repos.ToArray();\r
60                         return repolist;\r
61                 }\r
62         }\r
63         \r
64         /// <summary>\r
65         /// レポジトリで提供されるソフトリストのフォーマットを返す\r
66         /// </summary>\r
67         public enum RepositoryType : uint\r
68         {\r
69                 /// <summary>\r
70                 /// AppliStation Native XML Format Version 1.0\r
71                 /// </summary>\r
72                 [XmlEnum(Name="ASNATIVEv1.0")]\r
73                 APPLISTATION_NATIVE_XML_1_0 = 0,\r
74         }\r
75         \r
76         /// <summary>\r
77         /// パッケージリストを提供するレポジトリの参照情報を格納するクラス\r
78         /// </summary>\r
79         public class RepositoryInfo\r
80         {\r
81                 /// <summary>\r
82                 /// レポジトリの提供するソフトリストの名称\r
83                 /// </summary>\r
84                 [XmlAttribute]\r
85                 [ReadOnly(true)]\r
86                 public string Name;\r
87                 \r
88                 /// <summary>\r
89                 /// ソフトリストの形式\r
90                 /// </summary>\r
91                 [XmlAttribute]\r
92                 public RepositoryType Type;\r
93                 \r
94                 /// <summary>\r
95                 /// ソフトリストの取得先URL\r
96                 /// </summary>\r
97                 public LocationEntry Url;\r
98                 \r
99                 /// <summary>\r
100                 /// ソフトリストを読み取るか否か(無視するか否か)のフラグ。\r
101                 /// </summary>\r
102                 [XmlAttribute]\r
103                 [DefaultValue(true)]\r
104                 public bool Enabled = true;\r
105         }\r
106 }\r