Skip to content

Commit 79104a6

Browse files
committed
rework ini/cmd help
1 parent 542ded5 commit 79104a6

21 files changed

Lines changed: 187 additions & 208 deletions

File tree

.gitignore

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
/build*
2-
/Win32
3-
/x64
1+
*.TMP
2+
*~
3+
.DS_Store
4+
.vscode
5+
/.cache
46
/.vs
7+
/Win32
8+
/build*
59
/out
10+
/x64
611
CMakeLists.txt.user
712
CMakeSettings.json
8-
*~
9-
*.TMP
10-
.DS_Store

BUILDING.md

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
11

2-
# Git submodules
3-
4-
Make sure that git submodules are loaded too.
5-
```bash
6-
git pull
7-
git submodule sync
8-
git submodule update --init
9-
```
10-
112
# Building
123

134
## Windows
145

15-
These instructions assume using bash that comes with "git for windows", but is not mandatory to the build itself.
6+
Python must be installed and available in the path.
7+
8+
The following instructions uses bash that comes with "git for windows" (mingw based).
169

1710
Prepare build directory.
1811
```bash
@@ -56,5 +49,5 @@ cmake --build . -- -j8 # 8 is number of processor cores
5649

5750
# Converting Assets
5851

59-
Run `cage-asset-database`. You may find it in build/result/relwithdebinfo.
52+
Run `cage-asset-database`. You will find it in build/result/relwithdebinfo.
6053

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Cage is game engine/framework designed for programmers with focus on ease of use
1616

1717
## Portable
1818

19-
- Cage runs on Windows and Linux.
19+
- Cage runs on Windows and Linux, with experimental support for Macos.
2020
- It is mostly self-contained.
2121
- Most dependencies are accessed as git submodules and compiled in.
2222
- There are just few packages required on linux, none on windows.
@@ -61,7 +61,7 @@ Cage is game engine/framework designed for programmers with focus on ease of use
6161
- Automatic shadowmaps
6262
- Sound
6363
- Gui
64-
- Virtual reality
64+
- ~Virtual reality~ (vr has been disabled when transitioning from opengl to webgpu)
6565

6666
## Simple library
6767

sources/asset-analyze/main.cpp

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -143,26 +143,18 @@ namespace
143143

144144
int main(int argc, const char *args[])
145145
{
146-
initializeConsoleLogger();
147146
try
148147
{
148+
initializeConsoleLogger();
149+
149150
Holder<Ini> cmd = newIni();
150151
cmd->parseCmd(argc, args);
151-
const auto &paths = cmd->cmdArray(0, "--");
152152
recursive = cmd->cmdBool('r', "recursive", false);
153153
generateObjects = cmd->cmdBool('o', "objects", false);
154154
generatePacks = cmd->cmdBool('p', "packs", false);
155-
if (cmd->cmdBool('?', "help", false))
156-
{
157-
cmd->logHelp();
158-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + "examples:");
159-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + args[0] + " path1 path2 path3");
160-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + args[0] + " --recursive -- path");
161-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + args[0] + " --objects -- path");
162-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + args[0] + " --packs -- path");
163-
return 0;
164-
}
165-
cmd->checkUnusedWithHelp();
155+
const auto paths = cmd->cmdArray(0, "--");
156+
cmd->checkCmd();
157+
166158
if (paths.empty())
167159
CAGE_THROW_ERROR(Exception, "no input");
168160
for (const String &path : paths)

sources/asset-database/main.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,16 @@ bool logFilter(const cage::detail::LoggerInfo &info)
3030

3131
int main(int argc, const char *args[])
3232
{
33-
initializeConsoleLogger()->filter.bind<logFilter>();
3433
try
3534
{
35+
initializeConsoleLogger()->filter.bind<logFilter>();
36+
3637
{
3738
Holder<Ini> ini = newIni();
3839
ini->parseCmd(argc, args);
3940
configFromScratch = ini->cmdBool('s', "scratch", configFromScratch);
4041
configListening = ini->cmdBool('l', "listen", configListening);
41-
ini->checkUnusedWithHelp();
42+
ini->checkCmd();
4243
}
4344

4445
if (configFromScratch)

sources/asset-processor/object.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ void processObject()
8989
o.pixelsSize = ini->getFloat("size", "pixels");
9090
}
9191

92-
ini->checkUnused();
92+
ini->checkUnusedOnly();
9393

9494
AssetHeader h = processor->initializeAssetHeader();
9595
h.dependenciesCount = numeric_cast<uint16>(deps.size());

sources/files/main.cpp

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -76,29 +76,27 @@ void performArchive(PointerRange<const String> paths)
7676

7777
int main(int argc, const char *args[])
7878
{
79-
initializeConsoleLogger();
8079
try
8180
{
81+
initializeConsoleLogger();
82+
8283
Holder<Ini> cmd = newIni();
8384
cmd->parseCmd(argc, args);
84-
const auto paths = cmd->cmdArray(0, "--");
85+
cmd->addHelp(Stringizer() + "examples:");
86+
cmd->addHelp(Stringizer() + args[0] + " -l -- .");
87+
cmd->addHelp(Stringizer() + args[0] + " -c -- assets.carch/source_file.txt extracted/target_file.txt");
88+
cmd->addHelp(Stringizer() + args[0] + " -e -- source.carch target_folder");
89+
cmd->addHelp(Stringizer() + args[0] + " -a -- source_folder target.carch");
90+
cmd->addHelp("");
8591
const bool list = cmd->cmdBool('l', "list", false);
8692
const bool move = cmd->cmdBool('m', "move", false);
8793
const bool copy = cmd->cmdBool('c', "copy", false);
8894
const bool remove = cmd->cmdBool('r', "remove", false);
8995
const bool extract = cmd->cmdBool('e', "extract", false);
9096
const bool archive = cmd->cmdBool('a', "archive", false);
91-
if (cmd->cmdBool('?', "help", false))
92-
{
93-
cmd->logHelp();
94-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + "examples:");
95-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + args[0] + " -l -- .");
96-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + args[0] + " -c -- assets.carch/source_file.txt extracted/target_file.txt");
97-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + args[0] + " -e -- source.carch target_folder");
98-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + args[0] + " -a -- source_folder target.carch");
99-
return 0;
100-
}
101-
cmd->checkUnusedWithHelp();
97+
const auto paths = cmd->cmdArray(0, "--");
98+
cmd->checkCmd();
99+
102100
if ((list + move + copy + remove + extract + archive) != 1)
103101
CAGE_THROW_ERROR(Exception, "exactly one operation is required");
104102
if (paths.empty())

sources/image-channels/main.cpp

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -124,57 +124,48 @@ void doJoin(const String names[MaxChannels], const String &output, const bool mo
124124

125125
int main(int argc, const char *args[])
126126
{
127-
initializeConsoleLogger();
128127
try
129128
{
129+
initializeConsoleLogger();
130+
130131
Holder<Ini> cmd = newIni();
131132
cmd->parseCmd(argc, args);
133+
cmd->addHelp(Stringizer() + "examples:");
134+
cmd->addHelp(Stringizer() + args[0] + " -j -1 r.png -2 g.png -o rg.png");
135+
cmd->addHelp(Stringizer() + args[0] + " -s -i rg.png -1 r.png -2 g.png");
136+
cmd->addHelp(Stringizer() + "predefined 'black' and 'white' images can be used for joining");
137+
cmd->addHelp("");
132138
const bool split = cmd->cmdBool('s', "split", false);
133139
const bool join = cmd->cmdBool('j', "join", false);
134-
const bool help = cmd->cmdBool('?', "help", false);
135140

136141
String names[MaxChannels] = {};
142+
for (uint32 i = 0; i < MaxChannels; i++)
143+
names[i] = cmd->cmdString(0, Stringizer() + (i + 1), names[i]);
137144

138145
if (split && !join)
139146
{
140-
for (uint32 i = 0; i < MaxChannels; i++)
141-
names[i] = cmd->cmdString(0, Stringizer() + (i + 1), names[i]);
142-
String input = cmd->cmdString('i', "input");
143-
144-
if (!help)
145-
{
146-
cmd->checkUnusedWithHelp();
147-
doSplit(names, input);
148-
return 0;
149-
}
147+
const String input = cmd->cmdString('i', "input", "");
148+
cmd->checkCmd();
149+
if (input.empty())
150+
CAGE_THROW_ERROR(Exception, "input must be specified");
151+
doSplit(names, input);
152+
return 0;
150153
}
151154

152155
if (join && !split)
153156
{
154-
for (uint32 i = 0; i < MaxChannels; i++)
155-
names[i] = cmd->cmdString(0, Stringizer() + (i + 1), names[i]);
156-
const String output = cmd->cmdString('o', "output");
157+
const String output = cmd->cmdString('o', "output", "");
157158
const bool mono = cmd->cmdBool('m', "mono", false);
158-
159-
if (!help)
160-
{
161-
cmd->checkUnusedWithHelp();
162-
doJoin(names, output, mono);
163-
return 0;
164-
}
165-
}
166-
167-
if (help)
168-
{
169-
cmd->logHelp();
170-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + "examples:");
171-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + args[0] + " -j -1 r.png -2 g.png -o rg.png");
172-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + args[0] + " -s -i rg.png -1 r.png -2 g.png");
173-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + "predefined 'black' and 'white' images can be used for joining");
159+
cmd->checkCmd();
160+
if (output.empty())
161+
CAGE_THROW_ERROR(Exception, "output must be specified");
162+
doJoin(names, output, mono);
174163
return 0;
175164
}
176165

177-
CAGE_THROW_ERROR(Exception, "exactly one of --split (-s) or --join (-j) has to be specified");
166+
if (cmd->requestsHelp())
167+
cmd->printHelp();
168+
CAGE_THROW_ERROR(Exception, "exactly one of --split (-s) or --join (-j) must be specified");
178169
}
179170
catch (...)
180171
{

sources/image-convert/main.cpp

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,24 +29,21 @@ void convert(String src, const String &format, bool preserveOriginal)
2929

3030
int main(int argc, const char *args[])
3131
{
32-
initializeConsoleLogger();
3332
try
3433
{
34+
initializeConsoleLogger();
35+
3536
Holder<Ini> cmd = newIni();
3637
cmd->parseCmd(argc, args);
37-
const auto paths = cmd->cmdArray(0, "--");
38+
cmd->addHelp(Stringizer() + "example:");
39+
cmd->addHelp(Stringizer() + args[0] + " --preserve --format .jpg -- a.png b.tiff");
40+
cmd->addHelp(Stringizer() + "--preserve: keep original files too");
41+
cmd->addHelp("");
3842
const bool preserveOriginal = cmd->cmdBool('p', "preserve", false);
3943
const String format = cmd->cmdString('f', "format", ".png");
40-
if (cmd->cmdBool('?', "help", false))
41-
{
42-
cmd->logHelp();
43-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + "example:");
44-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + args[0] + " --preserve --format .jpg -- a.png b.tiff");
45-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + " to convert a.png to a.jpg and b.tiff to b.jpg");
46-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + "--preserve: keep original files too");
47-
return 0;
48-
}
49-
cmd->checkUnusedWithHelp();
44+
const auto paths = cmd->cmdArray(0, "--");
45+
cmd->checkCmd();
46+
5047
if (paths.empty())
5148
CAGE_THROW_ERROR(Exception, "no inputs");
5249
for (const String &path : paths)

sources/image-info/main.cpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,15 @@ void info(const String &src)
2626

2727
int main(int argc, const char *args[])
2828
{
29-
initializeConsoleLogger();
3029
try
3130
{
31+
initializeConsoleLogger();
32+
3233
Holder<Ini> cmd = newIni();
3334
cmd->parseCmd(argc, args);
3435
const auto paths = cmd->cmdArray(0, "--");
35-
if (cmd->cmdBool('?', "help", false))
36-
{
37-
cmd->logHelp();
38-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + "examples:");
39-
CAGE_LOG(SeverityEnum::Info, "help", Stringizer() + args[0] + " image.png");
40-
return 0;
41-
}
42-
cmd->checkUnusedWithHelp();
36+
cmd->checkCmd();
37+
4338
if (paths.empty())
4439
CAGE_THROW_ERROR(Exception, "no inputs");
4540
for (const String &path : paths)

0 commit comments

Comments
 (0)