Skip to content

refactor: Rewrite pyRevit configurations #2482

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 50 commits into
base: develop
Choose a base branch
from
Draft
Changes from 1 commit
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
decf1d1
add new configuration project
dosymep Dec 18, 2024
492e6e3
add ini project
dosymep Dec 18, 2024
98c40b3
fix build
dosymep Dec 18, 2024
d9c2251
remove unnecessary usings
dosymep Dec 18, 2024
63393d7
update create config
dosymep Dec 18, 2024
2afea49
rewrite config class to new configs
dosymep Dec 18, 2024
68efd97
change return default value for lists
dosymep Dec 18, 2024
e7c28d7
add override name to create config
dosymep Dec 18, 2024
f4d0b36
added configuration path and save
dosymep Dec 18, 2024
b079c2f
update service interface
dosymep Dec 18, 2024
1b52854
Добавил сервис конфигурации
dosymep Dec 18, 2024
8618fad
fix spelling
dosymep Dec 20, 2024
8e4eddf
add sections classes
dosymep Dec 20, 2024
4bfae44
Merge branch 'develop' into features/configuration
jmcouffin Dec 20, 2024
a22a053
update
dosymep Dec 23, 2024
caea3f3
add configuration name
dosymep Dec 23, 2024
da4575d
add support requred and init features for net48
dosymep Dec 23, 2024
1661d2e
add parse config by reflection
dosymep Dec 23, 2024
08919b5
Merge remote-tracking branch 'origin/features/configuration' into fea…
dosymep Dec 23, 2024
29bc6ef
add attribute settings
dosymep Dec 23, 2024
6baf57d
add save config sections
dosymep Dec 27, 2024
cf74632
update public interface
dosymep Dec 27, 2024
6122fd9
update console config command
dosymep Dec 27, 2024
1b92380
update read and write propeties
dosymep Dec 27, 2024
7faee38
update pyRevit environment config
dosymep Dec 27, 2024
6e10ac0
Merge branch 'develop' into features/configuration
dosymep Dec 27, 2024
3825ecb
fix typo
dosymep Dec 28, 2024
3b09e3e
fix override config name
dosymep Dec 28, 2024
6f81e4a
update getting config file service
dosymep Dec 28, 2024
9e1f6bd
add readonly properti to service (python)
dosymep Dec 28, 2024
0b4fd1c
add user extensions
dosymep Dec 28, 2024
24927a5
update python code
dosymep Dec 28, 2024
0954681
update tests
dosymep Dec 28, 2024
23b218f
add realization
dosymep Dec 28, 2024
c1fef09
add reference
dosymep Dec 28, 2024
5c7dec2
add revit version to config
dosymep Dec 28, 2024
df9de22
fix override config name
dosymep Dec 28, 2024
6375993
fix override config prioritization
dosymep Dec 28, 2024
838f163
update references
dosymep Dec 28, 2024
eae821a
remove references
dosymep Dec 28, 2024
20a7b61
add remove section method
dosymep Jan 10, 2025
1b138bb
add get section names and option names
dosymep Jan 28, 2025
a390d1a
add configs properties
dosymep Jan 28, 2025
2420814
add dynamic section parser
dosymep Jan 28, 2025
ac9b38e
update config class name
dosymep Jan 28, 2025
e078a4b
add save config
dosymep Jan 28, 2025
141e3b3
Merge branch 'develop' into features/configuration
dosymep Jan 28, 2025
b49999b
add remove option when seve section
dosymep Jan 28, 2025
fa49ba2
add skip save value if has in other config
dosymep Jan 28, 2025
0a2c4b1
update configs
dosymep Jan 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
added configuration path and save
  • Loading branch information
dosymep committed Dec 18, 2024
commit f4d0b36cfbbf344325a37bcceb5a604cc3c52394
Original file line number Diff line number Diff line change
@@ -47,7 +47,13 @@ public static IConfiguration Create(string configurationPath, bool readOnly = de
/// <inheritdoc />
protected override void SaveConfigurationImpl()
{
_parser.WriteFile(_configurationPath, _iniFile, DefaultFileEncoding);
SaveConfigurationImpl(_configurationPath);
}

/// <inheritdoc />
protected override void SaveConfigurationImpl(string configurationPath)
{
_parser.WriteFile(configurationPath, _iniFile, DefaultFileEncoding);
}

/// <inheritdoc />
Original file line number Diff line number Diff line change
@@ -43,11 +43,18 @@ public static IConfiguration Create(string configurationPath, bool readOnly = de
return new JsonConfiguration(configurationPath, readOnly);
}

/// <inheritdoc />
protected override void SaveConfigurationImpl()
{
SaveConfigurationImpl(_configurationPath);
}

/// <inheritdoc />
protected override void SaveConfigurationImpl(string configurationPath)
{
string jsonString = JsonConvert.SerializeObject(_jsonObject,
new JsonSerializerSettings() {Formatting = Formatting.Indented});
File.WriteAllText(_configurationPath, jsonString, DefaultFileEncoding);
File.WriteAllText(configurationPath, jsonString, DefaultFileEncoding);
}

protected override bool HasSectionImpl(string sectionName)
Original file line number Diff line number Diff line change
@@ -54,11 +54,18 @@ public static IConfiguration Create(string configurationPath, bool readOnly = de
return new YamlConfiguration(configurationPath, readOnly);
}

/// <inheritdoc />
protected override void SaveConfigurationImpl()
{
SaveConfigurationImpl(_configurationPath);
}

/// <inheritdoc />
protected override void SaveConfigurationImpl(string configurationPath)
{
ISerializer serializer = CreateSerializer();
string yamlString = serializer.Serialize(_yamlStream);
File.WriteAllText(_configurationPath, yamlString, DefaultFileEncoding);
File.WriteAllText(configurationPath, yamlString, DefaultFileEncoding);
}

protected override bool HasSectionImpl(string sectionName)
Original file line number Diff line number Diff line change
@@ -2,6 +2,8 @@ namespace pyRevitLabs.Configurations.Abstractions;

public interface IConfiguration
{
string ConfigurationPath { get; }

bool HasSection(string sectionName);
bool HasSectionKey(string sectionName, string keyName);

@@ -10,4 +12,7 @@ public interface IConfiguration

bool RemoveValue(string sectionName, string keyName);
void SetValue<T>(string sectionName, string keyName, T? value);

void SaveConfiguration();
void SaveConfiguration(string configurationPath);
}
11 changes: 11 additions & 0 deletions dev/pyRevitLabs/pyRevitLabs.Configurations/ConfigurationBase.cs
Original file line number Diff line number Diff line change
@@ -8,6 +8,7 @@ public abstract class ConfigurationBase(string configurationPath, bool readOnly)
protected readonly string _configurationPath = configurationPath;

public bool ReadOnly { get; } = readOnly;
public string ConfigurationPath => _configurationPath;

public void SaveConfiguration()
{
@@ -18,6 +19,14 @@ public void SaveConfiguration()

SaveConfigurationImpl();
}

public void SaveConfiguration(string configurationPath)
{
if (configurationPath == null)
throw new ArgumentNullException(nameof(configurationPath));

SaveConfigurationImpl(configurationPath);
}

/// <inheritdoc />
public bool HasSection(string sectionName)
@@ -111,6 +120,8 @@ public void SetValue<T>(string sectionName, string keyName, T? value)
}

protected abstract void SaveConfigurationImpl();
protected abstract void SaveConfigurationImpl(string configurationPath);

protected abstract bool HasSectionImpl(string sectionName);
protected abstract bool HasSectionKeyImpl(string sectionName, string keyName);

Original file line number Diff line number Diff line change
@@ -6,13 +6,17 @@ namespace pyRevitLabs.Configurations;
public sealed class ConfigurationService(List<IConfiguration> configurations) : IConfiguration
{
public List<IConfiguration> Configurations { get; } = configurations;
public IEnumerable<IConfiguration> ReverseConfigurations => ((IEnumerable<IConfiguration>)Configurations).Reverse();

public IEnumerable<IConfiguration> ReverseConfigurations =>
((IEnumerable<IConfiguration>) Configurations).Reverse();

public static IConfiguration Create(List<IConfiguration> configurations)
{
return new ConfigurationService(configurations);
}

public string ConfigurationPath => Configurations[0].ConfigurationPath;

public bool HasSection(string sectionName)
{
foreach (IConfiguration configuration in Configurations)
@@ -92,4 +96,20 @@ public void SetValue<T>(string sectionName, string keyName, T? value)

Configurations[0].SetValue(sectionName, keyName, value);
}

public void SaveConfiguration()
{
foreach (IConfiguration configuration in Configurations)
{
configuration.SaveConfiguration();
}
}

public void SaveConfiguration(string configurationPath)
{
foreach (IConfiguration configuration in Configurations)
{
configuration.SaveConfiguration(configurationPath);
}
}
}
Original file line number Diff line number Diff line change
@@ -16,6 +16,8 @@ public void Dispose() { }

private class TestRunConfiguration : IConfiguration
{
public string ConfigurationPath { get; }

public bool HasSection(string sectionName)
{
throw new NotImplementedException();
@@ -45,6 +47,16 @@ public void SetValue<T>(string sectionName, string keyName, T? value)
{
throw new NotImplementedException();
}

public void SaveConfiguration()
{
throw new NotImplementedException();
}

public void SaveConfiguration(string configurationPath)
{
throw new NotImplementedException();
}
}
}
}