Skip to content

Commit 57cf28e

Browse files
committed
refactor ConfigBuilder
1 parent 74f4cb1 commit 57cf28e

File tree

4 files changed

+31
-28
lines changed

4 files changed

+31
-28
lines changed

build/version.props

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<PropertyGroup>
33
<VersionMajor>2</VersionMajor>
44
<VersionMinor>2</VersionMinor>
5-
<VersionPatch>53</VersionPatch>
5+
<VersionPatch>55</VersionPatch>
66
<VersionPrefix>$(VersionMajor).$(VersionMinor).$(VersionPatch)</VersionPrefix>
77
</PropertyGroup>
88
</Project>

src/SmartCode/Configuration/ConfigBuilders/ConfigBuilder.cs

+21-3
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,34 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.IO;
34
using System.Text;
45
using System.Threading.Tasks;
56

67
namespace SmartCode.Configuration.ConfigBuilders
78
{
89
public abstract class ConfigBuilder : IConfigBuilder
910
{
10-
protected Project Project { get; set; }
11-
public abstract Project Build();
11+
public string ConfigPath { get; }
12+
public Project Project { get; set; }
1213

13-
protected void InitDefault()
14+
protected ConfigBuilder(string configPath)
15+
{
16+
ConfigPath = configPath;
17+
}
18+
public Project Build()
19+
{
20+
using (StreamReader configStream = new StreamReader(ConfigPath))
21+
{
22+
var jsonConfigStr = configStream.ReadToEnd();
23+
Project = Deserialize(jsonConfigStr);
24+
}
25+
InitDefault();
26+
return Project;
27+
}
28+
29+
protected abstract Project Deserialize(string content);
30+
31+
private void InitDefault()
1432
{
1533
if (Project.Output != null)
1634
{

src/SmartCode/Configuration/ConfigBuilders/JsonBuilder.cs

+6-13
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,18 @@
44
using System.Text;
55
using System.Threading.Tasks;
66
using Newtonsoft.Json;
7+
78
namespace SmartCode.Configuration.ConfigBuilders
89
{
910
public class JsonBuilder : ConfigBuilder
1011
{
11-
private readonly string _configPath;
12-
13-
public JsonBuilder(string configPath)
12+
public JsonBuilder(string configPath) : base(configPath)
1413
{
15-
_configPath = configPath;
1614
}
17-
public override Project Build()
15+
16+
protected override Project Deserialize(string content)
1817
{
19-
using (StreamReader configStream = new StreamReader(_configPath))
20-
{
21-
var jsonConfigStr = configStream.ReadToEnd();
22-
Project = JsonConvert.DeserializeObject<Project>(jsonConfigStr);
23-
}
24-
InitDefault();
25-
return Project;
18+
return JsonConvert.DeserializeObject<Project>(content);
2619
}
2720
}
28-
}
21+
}

src/SmartCode/Configuration/ConfigBuilders/YamlBuilder.cs

+3-11
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,15 @@ namespace SmartCode.Configuration.ConfigBuilders
1010
{
1111
public class YamlBuilder : ConfigBuilder
1212
{
13-
private readonly string _configPath;
1413
private readonly IDeserializer _deserializer;
15-
public YamlBuilder(string configPath)
14+
public YamlBuilder(string configPath):base(configPath)
1615
{
17-
_configPath = configPath;
1816
_deserializer = new DeserializerBuilder().Build();
1917
}
2018

21-
public override Project Build()
19+
protected override Project Deserialize(string content)
2220
{
23-
using (StreamReader configStream = new StreamReader(_configPath))
24-
{
25-
var yamlConfigStr = configStream.ReadToEnd();
26-
Project = _deserializer.Deserialize<Project>(yamlConfigStr);
27-
}
28-
InitDefault();
29-
return Project;
21+
return _deserializer.Deserialize<Project>(content);
3022
}
3123
}
3224
}

0 commit comments

Comments
 (0)