diff --git a/example/config_example.dart b/example/config_example.dart index 18505b8..bed8886 100644 --- a/example/config_example.dart +++ b/example/config_example.dart @@ -5,8 +5,8 @@ void main() { final config = Config.open(); print('All entries of system/global config:'); - // config.variables hold key/value from config file - for (final entry in config.variables.entries) { + final entries = config.getEntries(); + for (final entry in entries.entries) { print('${entry.key}: ${entry.value}'); } // .close should be called on object to free memory when done. @@ -18,7 +18,8 @@ void main() { final repoConfig = Config.open(path: '.git/config'); print('All entries of repo config:'); - for (final entry in repoConfig.variables.entries) { + final entries = repoConfig.getEntries(); + for (final entry in entries.entries) { print('${entry.key}: ${entry.value}'); } @@ -32,7 +33,8 @@ void main() { try { final globalConfig = Config.global(); - final userName = globalConfig.variables['user.name']; + // get value of config variable + final userName = globalConfig.getValue('user.name'); print('\nUser Name from global config: $userName'); globalConfig.close(); diff --git a/lib/src/bindings/config.dart b/lib/src/bindings/config.dart index b59862f..d8e8eb3 100644 --- a/lib/src/bindings/config.dart +++ b/lib/src/bindings/config.dart @@ -182,12 +182,12 @@ void setString(Pointer cfg, String name, String value) { } /// Iterate over all the config variables. -Map getVariables(Pointer cfg) { +Map getEntries(Pointer cfg) { final iterator = calloc>(); final entry = calloc>(); libgit2.git_config_iterator_new(iterator, cfg); var error = 0; - final entries = {}; + final entries = {}; while (error != -31) { error = libgit2.git_config_next(entry, iterator.value); diff --git a/lib/src/config.dart b/lib/src/config.dart index 3c0cbfc..81004d4 100644 --- a/lib/src/config.dart +++ b/lib/src/config.dart @@ -39,8 +39,6 @@ class Config { } } - variables = config.getVariables(configPointer.value); - libgit2.git_libgit2_shutdown(); } @@ -55,7 +53,6 @@ class Config { try { final systemPath = config.findSystem(); configPointer = config.open(systemPath); - variables = config.getVariables(configPointer.value); } catch (e) { configPointer = nullptr; rethrow; @@ -75,7 +72,6 @@ class Config { try { final globalPath = config.findGlobal(); configPointer = config.open(globalPath); - variables = config.getVariables(configPointer.value); } catch (e) { configPointer = nullptr; rethrow; @@ -95,7 +91,6 @@ class Config { try { final xdgPath = config.findXdg(); configPointer = config.open(xdgPath); - variables = config.getVariables(configPointer.value); } catch (e) { configPointer = nullptr; rethrow; @@ -110,8 +105,10 @@ class Config { /// Pointer to memory address for allocated config object. late Pointer> configPointer; - /// Map of key/value entries from config file. - Map variables = {}; + /// Returns map of all the config variables and their values + Map getEntries() { + return config.getEntries(configPointer.value); + } /// Returns the value of config [variable] String getValue(String variable) { @@ -132,7 +129,6 @@ class Config { } else { config.setString(configPointer.value, variable, value); } - variables = config.getVariables(configPointer.value); } catch (e) { rethrow; } @@ -145,7 +141,6 @@ class Config { void deleteVariable(String key) { try { config.deleteVariable(configPointer.value, key); - variables = config.getVariables(configPointer.value); } catch (e) { rethrow; } diff --git a/test/config_test.dart b/test/config_test.dart index a3924a0..afed6ec 100644 --- a/test/config_test.dart +++ b/test/config_test.dart @@ -43,6 +43,11 @@ void main() { expect(config, isA()); }); + test('getEntries() returns map with variables and values', () { + final entries = config.getEntries(); + expect(entries['remote.origin.url'], equals('someurl')); + }); + group('getValue()', () { test('returns value of variable', () { expect(config.getValue('core.bare'), equals('false')); @@ -59,23 +64,24 @@ void main() { group('setValue()', () { test('sets boolean value for provided variable', () { config.setValue('core.bare', true); - expect(config.variables['core.bare'], equals('true')); + expect(config.getValue('core.bare'), equals('true')); }); test('sets integer value for provided variable', () { config.setValue('core.repositoryformatversion', 1); - expect(config.variables['core.repositoryformatversion'], equals('1')); + expect(config.getValue('core.repositoryformatversion'), equals('1')); }); test('sets string value for provided variable', () { config.setValue('remote.origin.url', 'updated'); - expect(config.variables['remote.origin.url'], equals('updated')); + expect(config.getValue('remote.origin.url'), equals('updated')); }); }); test('deletes variable', () { config.deleteVariable('core.bare'); - expect(config.variables['core.bare'], isNull); + final entries = config.getEntries(); + expect(entries['core.bare'], isNull); }); test('throws on deleting non existing variable', () {