@@ -78,6 +78,14 @@ void Config::load_current_config()
7878 addDefaultProject ();
7979}
8080
81+ void Config::load_current_config_settings ()
82+ {
83+ if (!fs::exists (dir / CPPAN_FILENAME))
84+ return addDefaultProject ();
85+ auto root = load_yaml_config (dir / CPPAN_FILENAME);
86+ load_settings (root, false );
87+ }
88+
8189void Config::load (const path &p)
8290{
8391 auto root = load_yaml_config (p);
@@ -90,22 +98,40 @@ void Config::load(const String &s)
9098 load (root);
9199}
92100
93- void Config::load (const yaml &root)
101+ void Config::load_settings (const yaml &root, bool load_project )
94102{
95- if (root.IsNull () || !root.IsMap ())
96- {
97- addDefaultProject ();
98- LOG_DEBUG (logger, " Spec file should be a map" );
103+ if (!check_config_root (root))
99104 return ;
100- }
101105
102106 auto ls = root[" local_settings" ];
103107 if (ls.IsDefined ())
104108 {
105109 if (!ls.IsMap ())
106110 throw std::runtime_error (" 'local_settings' should be a map" );
107- Settings::get_local_settings ().load (root[" local_settings" ], SettingsType::Local);
111+ auto &ls = Settings::get_local_settings ();
112+ ls.load_project = load_project;
113+ ls.load (root[" local_settings" ], SettingsType::Local);
114+ ls.load_project = true ;
108115 }
116+ }
117+
118+ bool Config::check_config_root (const yaml &root)
119+ {
120+ if (root.IsNull () || !root.IsMap ())
121+ {
122+ addDefaultProject ();
123+ LOG_DEBUG (logger, " Spec file should be a map" );
124+ return false ;
125+ }
126+ return true ;
127+ }
128+
129+ void Config::load (const yaml &root)
130+ {
131+ if (!check_config_root (root))
132+ return ;
133+
134+ load_settings (root);
109135
110136 ProjectPath root_project;
111137 EXTRACT (root_project, String);
0 commit comments