Module: Git::Configuring
- Included in:
- Git, Repository
- Defined in:
- lib/git/configuring.rb
Overview
Mixin that adds structured git config read and write operations
Include or extend this module to gain the full suite of config_* methods.
The including/extending class must implement two private methods:
- #execution_context — returns a
Git::ExecutionContextused to run commands - #assert_valid_scope! — raises
ArgumentErrorif a requested scope is not valid in this context (e.g.,:localis not valid without a repository)
Read methods that return ConfigEntryInfo objects merge
show_scope: true, show_origin: true, null: true into the options so that
every returned entry carries its full provenance. Two exceptions apply:
#config_get_urlmatch merges only show_scope: true, null: true because
git does not support --show-origin with --get-urlmatch (those entries
always have origin: nil); #config_get_colorbool returns a plain String
and does not use these output-format options at all.
Read Operations collapse
-
#config_get(name, value_regex = nil, **options) ⇒ Git::ConfigEntryInfo?
Retrieve a single config entry by key name.
-
#config_get_all(name, value_regex = nil, **options) ⇒ Array<Git::ConfigEntryInfo>
Retrieve all values for a multi-valued config key.
-
#config_get_colorbool(name, stdout_is_tty = nil, **options) ⇒ String
Query whether color output is enabled for a given config slot.
-
#config_get_regexp(name_regex, value_regex = nil, **options) ⇒ Array<Git::ConfigEntryInfo>
Retrieve all config entries whose key matches a regular expression.
-
#config_get_urlmatch(name, url, **options) ⇒ Array<Git::ConfigEntryInfo>
Retrieve config entries whose URL pattern matches a given URL.
-
#config_list(**options) ⇒ Array<Git::ConfigEntryInfo>
List all visible config entries.
Write Operations collapse
-
#config_add(name, value, **options) ⇒ nil
Append a value to a multi-valued config key.
-
#config_remove_section(name, **options) ⇒ nil
Remove an entire config section.
-
#config_rename_section(old_name, new_name, **options) ⇒ nil
Rename a config section.
-
#config_replace_all(name, value, value_regex = nil, **options) ⇒ nil
Replace all values matching a key (and optional value regex).
-
#config_set(name, value, **options) ⇒ nil
Set a config entry to a new value.
-
#config_unset(name, value_regex = nil, **options) ⇒ nil
Remove a config entry.
-
#config_unset_all(name, value_regex = nil, **options) ⇒ nil
Remove all config entries for a key.
Instance Method Details
#config_add(name, value, **options) ⇒ nil
323 324 325 326 327 328 329 |
# File 'lib/git/configuring.rb', line 323 def config_add(name, value, **) Private.assert_valid_opts!(CONFIG_ADD_ALLOWED_OPTS, **) assert_valid_scope!(**) cmd = Git::Commands::ConfigOptionSyntax::Add.new(execution_context) cmd.call(name, value, **) nil end |
#config_get(name, value_regex = nil, **options) ⇒ Git::ConfigEntryInfo?
Retrieve a single config entry by key name
Wraps git config --get --show-scope --show-origin --null.
91 92 93 94 95 96 97 98 |
# File 'lib/git/configuring.rb', line 91 def config_get(name, value_regex = nil, **) Private.assert_valid_opts!(CONFIG_GET_ALLOWED_OPTS, **) assert_valid_scope!(**) = .merge(show_scope: true, show_origin: true, null: true) cmd = Git::Commands::ConfigOptionSyntax::Get.new(execution_context) output = cmd.call(name, value_regex, **).stdout Git::Parsers::ConfigEntry.parse_get(name, output) end |
#config_get_all(name, value_regex = nil, **options) ⇒ Array<Git::ConfigEntryInfo>
Retrieve all values for a multi-valued config key
Wraps git config --get-all --show-scope --show-origin --null.
124 125 126 127 128 129 130 131 |
# File 'lib/git/configuring.rb', line 124 def config_get_all(name, value_regex = nil, **) Private.assert_valid_opts!(CONFIG_GET_ALL_ALLOWED_OPTS, **) assert_valid_scope!(**) = .merge(show_scope: true, show_origin: true, null: true) cmd = Git::Commands::ConfigOptionSyntax::GetAll.new(execution_context) output = cmd.call(name, value_regex, **).stdout Git::Parsers::ConfigEntry.parse_get_all(name, output) end |
#config_get_colorbool(name, stdout_is_tty = nil, **options) ⇒ String
174 175 176 177 178 179 |
# File 'lib/git/configuring.rb', line 174 def config_get_colorbool(name, stdout_is_tty = nil, **) Private.assert_valid_opts!(CONFIG_GET_COLORBOOL_ALLOWED_OPTS, **) assert_valid_scope!(**) cmd = Git::Commands::ConfigOptionSyntax::GetColorBool.new(execution_context) cmd.call(name, stdout_is_tty, **).stdout.chomp end |
#config_get_regexp(name_regex, value_regex = nil, **options) ⇒ Array<Git::ConfigEntryInfo>
Retrieve all config entries whose key matches a regular expression
Wraps git config --get-regexp --show-scope --show-origin --null.
205 206 207 208 209 210 211 212 |
# File 'lib/git/configuring.rb', line 205 def config_get_regexp(name_regex, value_regex = nil, **) Private.assert_valid_opts!(CONFIG_GET_REGEXP_ALLOWED_OPTS, **) assert_valid_scope!(**) = .merge(show_scope: true, show_origin: true, null: true) cmd = Git::Commands::ConfigOptionSyntax::GetRegexp.new(execution_context) output = cmd.call(name_regex, value_regex, **).stdout Git::Parsers::ConfigEntry.parse_list(output) end |
#config_get_urlmatch(name, url, **options) ⇒ Array<Git::ConfigEntryInfo>
Retrieve config entries whose URL pattern matches a given URL
Wraps git config --get-urlmatch --show-scope --null.
Note: --show-origin is not supported by git for --get-urlmatch, so
the Git::ConfigEntryInfo entries returned by this method always have
origin: nil.
242 243 244 245 246 247 248 249 |
# File 'lib/git/configuring.rb', line 242 def config_get_urlmatch(name, url, **) Private.assert_valid_opts!(CONFIG_GET_URLMATCH_ALLOWED_OPTS, **) assert_valid_scope!(**) = .merge(show_scope: true, null: true) cmd = Git::Commands::ConfigOptionSyntax::GetUrlmatch.new(execution_context) output = cmd.call(name, url, **).stdout Git::Parsers::ConfigEntry.parse_urlmatch(output) end |
#config_list(**options) ⇒ Array<Git::ConfigEntryInfo>
List all visible config entries
Wraps git config --list --show-scope --show-origin --null.
271 272 273 274 275 276 277 278 |
# File 'lib/git/configuring.rb', line 271 def config_list(**) Private.assert_valid_opts!(CONFIG_LIST_ALLOWED_OPTS, **) assert_valid_scope!(**) = .merge(show_scope: true, show_origin: true, null: true) cmd = Git::Commands::ConfigOptionSyntax::List.new(execution_context) output = cmd.call(**).stdout Git::Parsers::ConfigEntry.parse_list(output) end |
#config_remove_section(name, **options) ⇒ nil
366 367 368 369 370 371 372 |
# File 'lib/git/configuring.rb', line 366 def config_remove_section(name, **) Private.assert_valid_opts!(CONFIG_REMOVE_SECTION_ALLOWED_OPTS, **) assert_valid_scope!(**) cmd = Git::Commands::ConfigOptionSyntax::RemoveSection.new(execution_context) cmd.call(name, **) nil end |
#config_rename_section(old_name, new_name, **options) ⇒ nil
411 412 413 414 415 416 417 |
# File 'lib/git/configuring.rb', line 411 def config_rename_section(old_name, new_name, **) Private.assert_valid_opts!(CONFIG_RENAME_SECTION_ALLOWED_OPTS, **) assert_valid_scope!(**) cmd = Git::Commands::ConfigOptionSyntax::RenameSection.new(execution_context) cmd.call(old_name, new_name, **) nil end |
#config_replace_all(name, value, value_regex = nil, **options) ⇒ nil
460 461 462 463 464 465 466 |
# File 'lib/git/configuring.rb', line 460 def config_replace_all(name, value, value_regex = nil, **) Private.assert_valid_opts!(CONFIG_REPLACE_ALL_ALLOWED_OPTS, **) assert_valid_scope!(**) cmd = Git::Commands::ConfigOptionSyntax::ReplaceAll.new(execution_context) cmd.call(name, value, value_regex, **) nil end |
#config_set(name, value, **options) ⇒ nil
507 508 509 510 511 512 513 |
# File 'lib/git/configuring.rb', line 507 def config_set(name, value, **) Private.assert_valid_opts!(CONFIG_SET_ALLOWED_OPTS, **) assert_valid_scope!(**) cmd = Git::Commands::ConfigOptionSyntax::Set.new(execution_context) cmd.call(name, value, **) nil end |
#config_unset(name, value_regex = nil, **options) ⇒ nil
552 553 554 555 556 557 558 |
# File 'lib/git/configuring.rb', line 552 def config_unset(name, value_regex = nil, **) Private.assert_valid_opts!(CONFIG_UNSET_ALLOWED_OPTS, **) assert_valid_scope!(**) cmd = Git::Commands::ConfigOptionSyntax::Unset.new(execution_context) cmd.call(name, value_regex, **) nil end |
#config_unset_all(name, value_regex = nil, **options) ⇒ nil
597 598 599 600 601 602 603 |
# File 'lib/git/configuring.rb', line 597 def config_unset_all(name, value_regex = nil, **) Private.assert_valid_opts!(CONFIG_UNSET_ALL_ALLOWED_OPTS, **) assert_valid_scope!(**) cmd = Git::Commands::ConfigOptionSyntax::UnsetAll.new(execution_context) cmd.call(name, value_regex, **) nil end |