11using Newtonsoft . Json ;
22using Newtonsoft . Json . Serialization ;
3+ using System . ComponentModel ;
34
45namespace Moryx . Cli . Config . Models
56{
67 public class Configuration
78 {
9+ private const string DefaultProfileName = "default" ;
10+
11+ public required string DefaultProfile { get ; set ; } = DefaultProfileName ;
12+
813 public required Dictionary < string , Profile > Profiles { get ; set ; }
914
10- public static Configuration Load ( string directory ) {
15+ public static Configuration Load ( string directory )
16+ {
1117 try
1218 {
1319 using var file = File . OpenText ( GetFilename ( directory ) ) ;
1420 var serializer = new JsonSerializer ( ) ;
15- return serializer . Deserialize ( file , typeof ( Configuration ) ) as Configuration ?? DefaultConfiguration ( ) ;
16- } catch ( Exception )
21+ var config = serializer . Deserialize ( file , typeof ( Configuration ) ) as Configuration ?? DefaultConfiguration ( ) ;
22+ config . DefaultProfile ??= DefaultProfileName ;
23+
24+ return config ;
25+ }
26+ catch ( Exception )
1727 {
1828 return DefaultConfiguration ( ) ;
1929 }
@@ -23,6 +33,7 @@ public static Configuration DefaultConfiguration()
2333 {
2434 return new Configuration
2535 {
36+ DefaultProfile = "default" ,
2637 Profiles = new Dictionary < string , Profile > { { "default" ,
2738 new Profile
2839 {
@@ -33,7 +44,7 @@ public static Configuration DefaultConfiguration()
3344 } ;
3445 }
3546
36- public void Save ( string directory )
47+ public void Save ( string directory )
3748 {
3849 using var file = File . CreateText ( GetFilename ( directory ) ) ;
3950 var serializer = new JsonSerializer
0 commit comments