Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
This repository was archived by the owner on Jul 11, 2025. It is now read-only.
/ multini Public archive

Command line utility for manipulating ini files with duplicate key names.

License

Notifications You must be signed in to change notification settings

GenZmeY/multini

Open more actions menu

Repository files navigation

Multini

GitHub go.mod Go version GitHub Tag GitHub

change language / сменить язык:
English, Русский

Description

Command line utility for manipulating ini files with duplicate key names.

A compiled version of multini is available on the release page.

Some programs use ini file format with duplicate key names.
For example, these are games based on the unreal engine.
It might look like this (part of the Killing Floor 2 config):

[OnlineSubsystemSteamworks.KFWorkshopSteamworks]
ServerSubscribedWorkshopItems=2267561023
ServerSubscribedWorkshopItems=2085786712
ServerSubscribedWorkshopItems=2222630586
ServerSubscribedWorkshopItems=2146677560

Most implementations only support having one property with a given name in a section. If there are several of them, only the first (or last) key will be processed, which is not enough in this case. multini solves this problem.

note:

  • multini is case sensitive
  • quotes around the value are not processed (they are part of the value for multini)
  • multi-line values are not supported

Build & Install (Manual)

  1. Install golang, git, make;
  2. Clone this repo: git clone https://github.com/GenZmeY/multini
  3. Go to the source directory: cd multini
  4. Build: make
  5. Install: make install

Usage

Usage: multini [OPTION]... ACTION ini_file [section] [key] [value]
Actions:
  -g, --get          Get values for a given combination of parameters.
  -s, --set          Set values for a given combination of parameters.
  -a, --add          Add values for a given combination of parameters.
  -d, --del          Delete the given combination of parameters.
  -c, --chk          Display parsing errors for the specified file.

Options:
  -e, --existing     For --set and --del, fail if item is missing.
  -r, --reverse      For --add, adds an item to the top of the section
  -i, --inplace      Lock and write files in place.
                     This is not atomic but has less restrictions
                     than the default replacement method.
  -o, --output FILE  Write output to FILE instead. '-' means stdout
  -u, --unix         Use LF as end of line
  -w, --windows      Use CRLF as end of line
  -q, --quiet        Suppress all normal output
  -h, --help         Write this help to stdout
      --version      Write version to stdout

Examples

output a global value not in a section:
multini --get ini_file '' key

output section:
multini --get ini_file section

output list of existing sections:
multini --get ini_file

output value:
multini --get ini_file section key

  • if there are several keys, a list of all values of this keys will be displayed

create/update a single key:
multini --set ini_file section key value

  • if there is no key, it will be added
  • if the key exists, the value will be updated
  • if the key exists and has several values, the key with the specified value will be set, the rest of the values will be deleted

add a key with specified value:
multini --add ini_file section key value

  • if there is no key, it will be added
  • if the key exists and does not have the specified value, the new value will be added
  • if the specified value repeats the existing one, no changes will be made

delete all keys with specified name:
multini --del ini_file section key

delete a key with specified name and value:
multini --del ini_file section key value

delete a section:
multini --del ini_file section

short options can be combined:
multini -gq ini_file section key value

  • check the existence of a key with a given value using the return code

Mirrors

Copyright & License

Copyright (c) 2020 GenZmeY - Released under the MIT license.

About

Command line utility for manipulating ini files with duplicate key names.

Topics

Resources

License

Stars

Watchers

Forks

Morty Proxy This is a proxified and sanitized view of the page, visit original site.