use GNU-style options

Signed-off-by: Double Sine <xiao_ai_yu@live.cn>
This commit is contained in:
Double Sine 2022-02-15 16:43:23 +08:00
parent 5fb7520199
commit 7633988dce
No known key found for this signature in database
GPG Key ID: 44460E4F43EA8633
3 changed files with 43 additions and 45 deletions

View File

@ -108,23 +108,23 @@
```
Usage:
navicat-keygen <-bin|-text> [-adv] <RSA-2048 Private Key File>
<-bin|-text> Specify "-bin" to generate "license_file" used by Navicat 11.
Specify "-text" to generate base64-encoded activation code.
This parameter must be specified.
[-adv] Enable advance mode.
This parameter is optional.
<RSA-2048 Private Key File> A path to an RSA-2048 private key file.
This parameter must be specified.
navicat-keygen <--bin|-text> [--adv] <RSA-2048 private key file>
<--bin|--text> Specify "--bin" to generate "license_file" used by Navicat 11.
Specify "--text" to generate base64-encoded activation code.
This parameter is mandatory.
[--adv] Enable advance mode.
This parameter is optional.
<RSA-2048 private key file> A path to an RSA-2048 private key file.
This parameter is mandatory.
```
__Example:__
```bash
$ ./navicat-keygen -text ./RegPrivateKey.pem
$ ./navicat-keygen --text ./RegPrivateKey.pem
```
You will be asked to select Navicat language and give major version number. After that an randomly generated __snKey__ will be given.

View File

@ -108,23 +108,23 @@
```
Usage:
navicat-keygen <-bin|-text> [-adv] <RSA-2048 Private Key File>
<-bin|-text> Specify "-bin" to generate "license_file" used by Navicat 11.
Specify "-text" to generate base64-encoded activation code.
This parameter must be specified.
[-adv] Enable advance mode.
This parameter is optional.
<RSA-2048 Private Key File> A path to an RSA-2048 private key file.
This parameter must be specified.
navicat-keygen <--bin|-text> [--adv] <RSA-2048 private key file>
<--bin|--text> Specify "--bin" to generate "license_file" used by Navicat 11.
Specify "--text" to generate base64-encoded activation code.
This parameter is mandatory.
[--adv] Enable advance mode.
This parameter is optional.
<RSA-2048 private key file> A path to an RSA-2048 private key file.
This parameter is mandatory.
```
__例如__
```bash
$ ./navicat-keygen -text ./RegPrivateKey.pem
$ ./navicat-keygen --text ./RegPrivateKey.pem
```
你会被要求选择Navicat产品类别、Navicat语言版本和填写主版本号。之后一个随机生成的 __序列号__ 将会给出。

View File

@ -9,7 +9,7 @@
#include "navicat_serial_generator.hpp"
#include "rsa_cipher.hpp"
#define NKG_CURRENT_SOURCE_FILE() u8".\\navicat-keygen\\wmain.cpp"
#define NKG_CURRENT_SOURCE_FILE() ".\\navicat-keygen\\wmain.cpp"
#define NKG_CURRENT_SOURCE_LINE() __LINE__
namespace nkg {
@ -32,20 +32,20 @@ void welcome() {
void help() {
puts("Usage:");
puts(" navicat-keygen.exe <-bin|-text> [-adv] <RSA-2048 Private Key File>");
puts(" navicat-keygen <--bin|-text> [--adv] <RSA-2048 private key file>");
puts("");
puts(" <-bin|-text> Specify \"-bin\" to generate \"license_file\" used by Navicat 11.");
puts(" Specify \"-text\" to generate base64-encoded activation code.");
puts(" This parameter must be specified.");
puts(" <--bin|--text> Specify \"--bin\" to generate \"license_file\" used by Navicat 11.");
puts(" Specify \"--text\" to generate base64-encoded activation code.");
puts(" This parameter is mandatory.");
puts("");
puts(" [-adv] Enable advance mode.");
puts(" [--adv] Enable advance mode.");
puts(" This parameter is optional.");
puts("");
puts(" <RSA-2048 Private Key File> A path to an RSA-2048 private key file.");
puts(" This parameter must be specified.");
puts(" <RSA-2048 private key file> A path to an RSA-2048 private key file.");
puts(" This parameter is mandatory.");
puts("");
puts("Example:");
puts(" navicat-keygen.exe -text .\\RegPrivateKey.pem");
puts(" navicat-keygen --text ./RegPrivateKey.pem");
}
int main(int argc, char* argv[]) {
@ -55,24 +55,22 @@ int main(int argc, char* argv[]) {
nkg::fnCollectInformation lpfnCollectInformation;
nkg::fnGenerateLicense lpfnGenerateLicense;
if (strcmp(argv[1], "-bin") == 0) {
if (strcmp(argv[1], "--bin") == 0) {
lpfnGenerateLicense = nkg::GenerateLicenseBinary;
} else if (strcmp(argv[1], "-text") == 0) {
} else if (strcmp(argv[1], "--text") == 0) {
lpfnGenerateLicense = nkg::GenerateLicenseText;
} else {
help();
return -1;
}
if (argc == 4) {
if (strcmp(argv[2], "-adv") == 0) {
lpfnCollectInformation = nkg::CollectInformationAdvanced;
} else {
help();
return -1;
}
} else {
if (argc == 3) {
lpfnCollectInformation = nkg::CollectInformationNormal;
} else if (argc == 4 && strcmp(argv[2], "--adv") == 0) {
lpfnCollectInformation = nkg::CollectInformationAdvanced;
} else {
help();
return -1;
}
try {
@ -80,8 +78,8 @@ int main(int argc, char* argv[]) {
cipher.import_private_key_file(argv[argc - 1]);
if (cipher.bits() != 2048) {
throw nkg::exception(NKG_CURRENT_SOURCE_FILE(), NKG_CURRENT_SOURCE_LINE(), u8"RSA key length mismatches.")
.push_hint(u8"You must provide an RSA key whose modulus length is 2048 bits.");
throw nkg::exception(NKG_CURRENT_SOURCE_FILE(), NKG_CURRENT_SOURCE_LINE(), "RSA key length != 2048 bits.")
.push_hint("You must provide an RSA key whose modulus length is 2048 bits.");
}
auto sn_generator = lpfnCollectInformation();