Infgety CLI is a simple, cross‑platform command‑line utility to:
- Encrypt Dart source files
- Package Infgety‑ready databases
- Scaffold new Infgety‑compatible projects
It’s designed for developers who publish phone‑directory databases for use in the Infgety mobile app.
- Bash 4 or higher
- Dart SDK (if you intend to encrypt or scaffold Dart files)
- zip (for packaging archives)
- On Windows, use WSL 2 or Git Bash
Clone the repository and make the script executable:
git clone https://github.com/PSHTeam/infgety_cli.git
cd infgety_cli
chmod +x infgety-cli.shOptionally, add it to your $PATH:
sudo ln -s "$(pwd)/infgety-cli.sh" /usr/local/bin/infgety-
Create a new database project
infgety create --template database --output ./my_database --id com.example.database
This generates a directory structure under
./my_database:my_database/ ├── bin/ │ ├── db.json │ ├── install.dart │ └── fetch_contacts.dart ├── lib/ │ ├── on_install.dart │ └── on_fetch_contacts.dart ├── l10n/ │ └── en.arb ├── README.md └── pubspec.yaml -
Package for production
infgety archive --database ./my_database --output ./dist
The above command creates:
dist/com.example.database.zip -
Test your package
- Open the Infgety app on your device.
- Choose “Add New Database” and select the zip file you just created.
- Verify that phone numbers can be searched correctly (data lives in
./my_database/bin/db.json).
Scaffold a new project.
infgety create --template database --output <dir> --id <identifier> [--verbose]
Generates a Dart console package pre‑wired for Infgety, including:
bin/install.dart&bin/fetch_contacts.dartbin/db.jsonsample datalib/hooks (on_install.dart,on_fetch_contacts.dart)l10n/en.arbpubspec.yamlpopulated with your identifier
| Option | Description |
|---|---|
--template <name> |
Scaffold template (database | app) |
--output <dir> |
Output directory |
--id <reverse‑domain> |
Unique project identifier |
Package your database into a .zip file.
infgety archive --database <dir> [--id <identifier>] [--output <dir>] [--encrypt] [--sign] [--verbose]
Mandatory layout
my_database/
├── bin/
│ ├── db.json
│ ├── install.dart
│ └── fetch_contacts.dart
├── lib/
│ ├── on_install.dart
│ └── on_fetch_contacts.dart
├── l10n/ # ≧ 1 *.arb
│ └── en.arb
├── README.md # optional
└── pubspec.yaml
If any piece is missing, archiving aborts with an error.
| Option | Description |
|---|---|
--database |
Root directory of the database to package. |
--id |
Bundle identifier (defaults to infgety.identifier or name in pubspec.yaml). |
--output |
Destination folder for the generated ZIP (. by default). |
--encrypt |
Encrypt all Dart sources and wrap keys in RSA. |
--sign |
Generate SHA‑256 signatures (requires --encrypt). |
--verbose |
Show archive composition and final size. |
AES‑256‑CBC encryption
infgety encrypt [--file <path> | --dir <path>] --key <32‑char UTF‑8 | 64‑char HEX> --iv <32‑char HEX> [--key-format utf8|hex] [--recursive|--no-recursive] [--verbose]
| Option | Description |
|---|---|
--file |
Encrypt a single .dart file (creates <name>.dart.enc). |
--dir |
Encrypt every .dart file in a directory (respects recursion). |
--key |
256‑bit AES key (UTF‑8 → 32 chars or HEX → 64 chars). |
--iv |
128‑bit IV (HEX → 32 chars). |
--key-format |
hex (default) or utf8 to declare --key format. |
--recursive |
Recurse into sub‑directories (default ✔). |
--no-recursive |
Limit search to the top directory. |
--verbose |
Print detailed operations and file sizes. |
| Symptom | Fix |
|---|---|
openssl: command not found |
Install OpenSSL and ensure it’s on $PATH. |
Error: Hex key must be exactly 64 hexadecimal characters |
Verify key length and characters (0‑9, a‑f). |
jq: command not found |
Install jq. |
zip: command not found |
Install zip utility. |
| Archive command complains about missing files | Confirm required directories/file names (see layout). |
This project is MIT‑licensed. See the LICENSE file for details.