コード例 #1
0
ファイル: LocalRepository.cs プロジェクト: rcarz/fusion
 /// <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();
 }
コード例 #2
0
ファイル: Configuration.cs プロジェクト: rcarz/fusion
        /// <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;
        }
コード例 #3
0
ファイル: MergeWorker.cs プロジェクト: rcarz/fusion
 /// <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();
 }