A able *.ini
CLI
Small *.ini
command line tool, as I could not find one that did what I wanted.
Table Of Content
- Idea and Use Case 🤔
- Installation 💻
- Usage ⌨️
- Bugs and Features 🐞💡
- Buy me a coffee ☕
- License 📃
1. Idea and Use Case
ℹ️ ini-able can be used like any other *.ini
command line interface out there, it just handles special cases for Unreal Engine 4 *.ini
files.
ini-able is just like any other *.ini
command line interface (CLI), it just has the ability to modify Unreal Engine 4 *.ini
files which are a bit of a special case in that realm.
The problem with Unreal Engine 4 *.ini
files are the following entries:
[/Script/Engine.Engine]
+ActiveGameNameRedirects=(OldGameName="TP_PuzzleBP",NewGameName="/Script/Test")
Standard parsers cannot handle the +
in front of the actual key. ini-able midigates that by parsing Unreal Engine 4 alternations before hand and converting it to a form a standard *.ini
parser can use. After a successful operation ini-able converts the alternations back to Unreal Engine 4 usable form.
Our main use case here at fivefingergames GmbH is the automated build process of our Unreal Engine 4 projects, with ini-able we can switch the needed values within the projects *.ini
files to perform our desired build.
2. Installation
The CLI can easily be installed over npm (Node Package Manager). Which can be installed by installing nodejs.
Installing machine wide:
$ npm install -g ini-able
OR
$ yarn global ini-able
Installing to local project:
$ npm install ini-able
OR
$ yarn add ini-able
That's it, now you're up and running!
3. Usage
The CLI currently only exposes one command, the set
command.
For a quick glance on how to use it use the commands help page.
$ ini-able set --help
Usage: ini-able set [options] <value>
Sets a property value.
Options:
-f, --file [file] *.ini file to set the property to.
-o, --out [file] *.ini file to write to.
-s, --section [section] Section where to change the property.
-k, --key [key] Key where to change the property.
-e, --eval Indecates that the value given is a expression that needs to be evaluated.
-h, --help output usage information
⚠️ After set
exection the *.ini
contents could potentially be sorted differently.
Examples
All examples will be based on the Test.ini
, which is a *.ini
file from an Unreal Engine 4 project.
Basic Example
In this example we will change a key on the file level section.
Given the following *.ini
contents:
bAllowControllers=True
bUseRemoteAsVirtualJoystick=True
We execute the following command:
$ ini-able set False -f ./Test.ini -k bAllowControllers
Which results in:
bAllowControllers=False
bUseRemoteAsVirtualJoystick=True
Section Example
In this example we will change a key on a specific section.
Given the following *.ini
contents:
[URL]
GameName=Test
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
MinimumiOSVersion=IOS_10
bAllowControllers=True
bUseRemoteAsVirtualJoystick=True
bAllowRemoteRotation=True
BundleIdentifier=com.fivefingergames.Test
RemoteServerName=Charon
RSyncUsername=fivefingergames
SigningCertificate=iPhone Distribution: fivefingergames GmbH
MobileProvision=Test.mobileprovision
bShipForBitcode=False
We execute the following command:
$ ini-able set False -f ./Test.ini -s "/Script/IOSRuntimeSettings.IOSRuntimeSettings" -k bAllowControllers
Which results in:
[URL]
GameName=Test
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
MinimumiOSVersion=IOS_10
bAllowControllers=False
bUseRemoteAsVirtualJoystick=True
bAllowRemoteRotation=True
BundleIdentifier=com.fivefingergames.Test
RemoteServerName=Charon
RSyncUsername=fivefingergames
SigningCertificate=iPhone Distribution: fivefingergames GmbH
MobileProvision=Test.mobileprovision
bShipForBitcode=False
4. Bugs and Features
Please open a issue when you encounter any bugs 🐞 or if you have an idea for a additional feature 💡.
5. Buy me a coffee
If you like you can buy me a coffee:
6. License
MIT License
Copyright (c) 2019 mrbandler
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.