/// <summary> /// Initialises the ports tree from a PortDir structure. /// </summary> private LocalRepository() { _xmlconf = Configuration.LoadSeries(); _categories = new List<ICategory>(Category.Enumerate(this)); _hdmasked = this.GetMaskedPackages(); _unmasked = this.GetUnmaskedPackages(); }
/// <summary> /// Loads the Fusion configuration series. /// </summary> /// <param name="reload">flag to reload configuration</param> /// <returns>a configuration instance with loaded values</returns> public static Configuration LoadSeries(bool reload) { if (_instance != null && !reload) return _instance; _instance = new Configuration(); bool isadmin = Security.IsNTAdmin(); string homedirenv = Environment.GetEnvironmentVariable("FUSION_HOME"); string progdata = String.IsNullOrEmpty(homedirenv) ? Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + @"\Fusion" : homedirenv; _instance.ConfDir = new DirectoryInfo(progdata + @"\etc"); _instance.DistFilesDir = new DirectoryInfo(progdata + @"\distfiles"); _instance.PortDir = new DirectoryInfo(progdata + @"\global"); _instance.LogDir = isadmin ? new DirectoryInfo(progdata + @"\logs") : new DirectoryInfo(Path.GetTempPath()); _instance.ProfileDir = new DirectoryInfo(progdata + @"\profile"); _instance.ProfilesRootDir = new DirectoryInfo(_instance.PortDir + @"\profiles"); /* set defaults for optional settings */ _instance.AcceptKeywords = new string[] { }; _instance.CollisionDetect = false; _instance.PortDirOverlays = new DirectoryInfo[] { }; _instance.RsyncMirrors = new Uri[] { }; /* load the profile cascade tree */ if (_instance.ProfileDir.Exists) { List<DirectoryInfo> profilelst = new List<DirectoryInfo>(); Configuration.WalkProfileTree(_instance.ProfileDir, profilelst, true); _instance.ProfileTree = profilelst.ToArray(); } else _instance.ProfileTree = new DirectoryInfo[] { }; /* load profile config */ foreach (DirectoryInfo di in _instance.ProfileTree) { FileInfo profcfg = new FileInfo(di.FullName + @"\config.ini"); if (profcfg.Exists) _instance.LoadSingle(profcfg); } /* load machine config */ FileInfo localcfg = new FileInfo(_instance.ConfDir.FullName + @"\config.ini"); if (localcfg.Exists) _instance.LoadSingle(localcfg); if (_instance.RootDir == null || !_instance.RootDir.Exists) { string winroot = Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.Windows)); _instance.RootDir = new DirectoryInfo(winroot); } return _instance; }
/// <summary> /// Initialises the merge worker. /// </summary> /// <param name="pkgmgr">package manager instance</param> public MergeWorker(IPackageManager pkgmgr) { _pkgmgr = pkgmgr; _cfg = Configuration.LoadSeries(); _protected = this.GetSystemProtectedFiles(); }