CLI to unpack and pack Fibaro QuickApp (.fqa) files for editing in a normal project layout, with HC3-compatible repack.
Project description
FQA Tool
Current version: v1.0.2
CLI to unpack and pack Fibaro QuickApp (.fqa) files for editing in a normal project layout, with HC3-compatible repack.
- Unpack: turns an
.fqainto a folder with human-readable JSON, Lua files, VS Code workspace,.gitignore, and optional pack scripts (.fqa-tool-path,fqa-pack.py, wrappers). - Pack: writes an
.fqausing the original format (indent/newline) so the HC3 parser accepts it.
Requires Python 3.7+ (no extra dependencies).
You can run the script with Python or use a Windows executable (see Building Windows executable).
Usage
Run from the folder that contains fqa.py (or put fqa.exe on your PATH). In Windows CMD, paste and run one line at a time (CMD often drops newlines when pasting).
To see the installed fqa version:
python fqa.py --version
fqa --version
Unpack
Unpack an .fqa. By default the project folder is created in the current directory; use -o / --output to specify another directory. If the project folder already exists, you are prompted to overwrite unless you use -y / --yes or --update.
-o/--outputDIR — Unpack into this directory (default: current directory).-y/--yes— Overwrite existing folder without prompting.--update— Update existing folder in place (no delete). Use this to refresh from a new .fqa without removing the folder (avoids "folder in use" on Windows).-silent— No progress output.
Unpack prints progress (files added/updated) unless -silent is used.
python fqa.py unpack MyQuickApp.fqa
fqa unpack MyQuickApp.fqa
python fqa.py unpack MyQuickApp.fqa -o out
python fqa.py unpack MyQuickApp.fqa -o test --update
python fqa.py unpack MyQuickApp.fqa -y -silent
Pack
Pack a project into an .fqa. Output is written to the current directory as {name}.fqa unless -o / --output is given.
-o/--outputPATH — Output path: file (e.g.dist/App.fqa) or directory (writes{name}.fqathere).-y/--yes— Overwrite existing .fqa without prompting.-silent— No progress output.
python fqa.py pack MyQuickApp
fqa pack MyQuickApp
python fqa.py pack . -o dist -y
Pack from an unpacked project (fqa-pack)
After unpacking, the project contains a small script and wrappers so you can pack without calling the fqa tool by path. They use a local config file (not committed):
.fqa-tool-path— One line: command to run fqa (e.g.python "C:\path\to\fqa.py"). Created byunpack; add to.gitignore(done automatically).fqa-pack.py— Cross-platform script: reads.fqa-tool-pathand runsfqa pack .with your args.fqa-pack.bat(Windows),fqa-pack(Mac/Linux) — Wrappers that runfqa-pack.py.
From the project root (the unpacked folder):
python fqa-pack.py
python fqa-pack.py -y -o dist
fqa-pack.bat # Windows
./fqa-pack # Mac/Linux
If .fqa-tool-path is missing (e.g. you cloned the repo and didn’t run unpack), create it with one line: the command you use to run fqa (e.g. python "D:\path\to\fqa.py").
Building Windows executable
One-file executable, no Python required on the target machine:
pip install -r requirements-build.txt
build.bat
Output: dist\fqa.exe. Use it like fqa unpack file.fqa and fqa pack project_dir.
For a release (build exe + checksums): python release.py. This produces dist\fqa.exe and dist\SHA256SUMS.txt. To verify: in dist\ run certutil -hashfile fqa.exe SHA256 (Windows) or sha256sum -c SHA256SUMS.txt (Linux/WSL) and compare.
Unpacked layout:
main.lua— main scriptfiles/*.lua— other Lua files.fqa_original.json— project JSON (human-readable).fqa_meta.json— schema and file mapping (used by pack).vscode/— settings + recommended extensions (Lua, Lua debug, Git Graph)<name>.code-workspace— open this in VS Code.fqa-tool-path— local path to fqa (created by unpack; in.gitignore)fqa-pack.py,fqa-pack.bat,fqa-pack— pack script and wrappers (forward e.g.-y,-silent,-o)
HC3 compatibility
Unpack stores the original .fqa format (newline and indent). Pack reuses it when writing the .fqa, so the result stays compatible with the HC3 parser.
Tested with HC3 firmware 5.200.13.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fqa-1.0.2.tar.gz.
File metadata
- Download URL: fqa-1.0.2.tar.gz
- Upload date:
- Size: 8.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f5999a68532456d9ed3c09ffa09345aa2bd633d3d19c9558299588643dd7d54
|
|
| MD5 |
80923fe6732b1158521e2b30ca83f706
|
|
| BLAKE2b-256 |
9cf93825ce97c90588669b890dd8892355a8f8f10dcf2ef861734ee1f2501629
|
File details
Details for the file fqa-1.0.2-py3-none-any.whl.
File metadata
- Download URL: fqa-1.0.2-py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a43622d3a39c04eda1c13e91e34d0d097b4af696ce95cd7adfbc3b7c09e44dc9
|
|
| MD5 |
ebc25ec7e290af836e8e7f232661b623
|
|
| BLAKE2b-256 |
2fb79a1c3aa83d7862ba81d3c79189240b93a00b560a4df94cd6af8a0eb3671a
|