ASPDM Database (WIP)
June 8, 2016 ยท View on GitHub
Package metadata format
The package metadata (manifest) format is a JSON document. The package repository (aka database) format is a JSON array of package metadata documents.
All attributes are mandatory, unless otherwise stated.
| Attribute | Description |
|---|---|
| id | A short name used for identification purposes (Should be a valid AutoHotkey identifier) |
| version | Package version (must follow AHK-flavored Semantic Versioning) |
| type | Package type (lib, tool, other) |
| ahkbranch | AutoHotkey branch the package is developed for (v1.1, v2-alpha, ahk_h, ...) |
| ahkversion | Version number of AutoHotkey the package was developed with (Internal, Automatic) |
| ahkflavour | Comma-separated list of supported AutoHotkey flavours (a32, u32, u64) |
| required | Comma-separated list of dependencies' package identifiers (leave empty if none) |
| name | The human-friendly name of the package |
| description | Description of the package (Optional, Recommended) |
| author | The author(s) of the package |
| license | (Optional) Name of the license under which the package is released |
| tags | Comma-separated tags (Optional, Recommended) |
| forumurl | (Optional, Recommended) ahkscript.org forum topic URL |
| screenshot | (Optional) URL of the screenshot image to be displayed |
Licenses : packages submitted to ahkscript.org without the license attribute filled in are assumed to be released under the ASPDM Default Package License (ADPL).
Package Repository-only attributes
| Attribute | Description |
|---|---|
| isstdlib | (Internal, Moderated) True if the package has been selected to be part of the official StdLib distribution |
Recommended tags (Examples)
| Categories | ||
|---|---|---|
| Arrays | Graphics | Network |
| Call | Gui | Objects |
| COM | INI | Parser |
| Console | Hardware | Process |
| Control | Hash | Regular Expressions |
| Dynamic | Hotstrings | Sound |
| Database | JSON | Strings |
| DateTime | Keyboard | System |
| Editor | Math | Text |
| Encryption | Media | Variables |
| File | Memory | Window |
| FileSystem | Menu | YAML |
| Format | MS Windows | Other |
Package Structure
'Library' packages
Library packages should have a standard package structure consisting of the following folders:
Lib\(Mandatory) : StdLib filesDoc\: Documentation- Root folder : Examples, etc.
Note: When installing a package into a StdLib folder, the files in the package's Lib\ folder would be copied to it.
'Tool/Other' packages
Tool/Other packages should have a standard package structure consisting of the following:
Install.ahk(Mandatory) : Executed on package installationRemove.ahk(Mandatory) : Executed on package removalExecute.ahk(Mandatory) : Execute the toolDoc\: Documentation- Root folder : Examples, etc.
Package File Format
The packages will have the .ahkp file extension.
The compression format is LZNT (a.k.a LZ compression).
The Magic Number is AHKPKG00.
The uncompressed JSON metadata is stored at offset 0xC, with its string length stored as a UInt at offset 0x8 (Right after the magic number).