using System;\r
using System.IO;\r
+using System.Net;\r
\r
namespace NaGet\r
{\r
/// 環境変数などを取り扱うクラス\r
/// </summary>\r
public sealed class Env\r
- {\r
+ { \r
/// <summary>\r
/// 呼び出し禁止\r
/// </summary>\r
private Env()\r
{\r
}\r
+ \r
+ #region pref.xml関連\r
+ \r
+ /// <summary>\r
+ /// 設定を格納\r
+ /// </summary>\r
+ private static NaGetLibPref pref;\r
+ \r
+ /// <summary>\r
+ /// 設定ファイルを読み込む。一回のみ呼ばれる。\r
+ /// </summary>\r
+ private static void loadPref()\r
+ {\r
+ string path = Path.Combine(Environment.CurrentDirectory, "pref.xml");\r
+ try {\r
+ if (! File.Exists(path)) throw new FileNotFoundException(string.Empty, path);\r
+ pref = NaGet.Utils.GetDeserializedObject<NaGetLibPref>(path);\r
+ } catch(Exception) {\r
+ pref = new NaGetLibPref();\r
+ }\r
+ }\r
+ \r
+ #endregion\r
\r
+ #region ファイルパス\r
\r
/// <summary> \r
/// ファイルリスト提供サーバのリストファイル \r
/// </summary>\r
+ [Obsolete]\r
public static readonly string ProviderListFile = "provider.list.txt";\r
+ \r
+ /// <summary>\r
+ /// ファイルリスト提供レポジトリリストのファイル\r
+ /// </summary>\r
+ public static readonly string RepositoriesListFile = "repos.list.xml";\r
\r
/// <summary>\r
/// ファイルリストから読み込まれたパッケージのリストファイル\r
/// </summary>\r
public static readonly string SystemInstalledPackageLogFile = "packages.sysinstalled.log.xml";\r
\r
- private static string appDataFolderPath = null;\r
- \r
/// <summary>\r
/// アプリケーションデータを保存するフォルダのパス\r
/// </summary>\r
public static string AppDataFolderPath\r
{\r
get {\r
- if (appDataFolderPath == null) {\r
-// string progFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);\r
-// if (Path.GetDirectoryName(Environment.CurrentDirectory) == progFiles) {\r
-// string appData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);\r
-// return Path.Combine(appData, "AppliStation");\r
-// } else {\r
- return Environment.CurrentDirectory;\r
-// }\r
- } else {\r
- return appDataFolderPath;\r
+ if (pref == null) loadPref();\r
+ \r
+ if (! string.IsNullOrEmpty(pref.AppDataFolder)) {\r
+ return pref.AppDataFolder;\r
}\r
+ \r
+ return Environment.CurrentDirectory;\r
}\r
- set { appDataFolderPath = value; }\r
}\r
\r
/// <summary>\r
return Path.Combine(ArchiveProgramFiles, ".system32");\r
}\r
}\r
+ \r
+ #endregion\r
+ \r
+ #region ネットワーク\r
+ \r
+ /// <summary>\r
+ /// ウェブアクセスのためのプロキシを取得する。\r
+ /// </summary>\r
+ /// <returns>プロキシ</returns>\r
+ public static IWebProxy WebProxy\r
+ {\r
+ get {\r
+ if (pref == null) loadPref();\r
+ \r
+ if (string.IsNullOrEmpty(pref.ProxyAddress)) {\r
+ // 設定されていないときはシステムのデフォルトを使う\r
+ return WebRequest.GetSystemWebProxy();\r
+ } else if (pref.ProxyAddress == "-") {\r
+ // "-"のとき直接接続\r
+ return null;\r
+ } else {\r
+ // host:portが設定されているならば、それをもとに設定\r
+ return new WebProxy(pref.ProxyAddress);\r
+ }\r
+ }\r
+ }\r
+ \r
+ #endregion\r
}\r
}\r