https://github.com/seggan/apm-repo
Repository for the APM tool in the Automation Slimefun addon
https://github.com/seggan/apm-repo
Last synced: 3 months ago
JSON representation
Repository for the APM tool in the Automation Slimefun addon
- Host: GitHub
- URL: https://github.com/seggan/apm-repo
- Owner: Seggan
- Created: 2023-12-28T21:47:23.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-28T22:16:42.000Z (over 2 years ago)
- Last Synced: 2025-03-05T22:48:06.105Z (over 1 year ago)
- Size: 6.84 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# apm-repo
Repository for the APM tool in the Automation Slimefun addon.
## Project structure
Example project structure:
```
hello/
├── 1.1.0/
│ ├── hello.metis
│ ├── libhello.metis
│ └── vinfo.json
├── 1.0.0/
│ ├── hello.metis
│ └── vinfo.json
└── versions.json
```
All projects must be in a folder with the same name as the project. Within that folder, there must be a `versions.json` file
containing a JSON list of all the available versions of the project. For the example project above, it would look like this:
```json
["1.1.0", "1.0.0"]
```
The higher the version is, the closer it should be to the start of the list.
Each version should be in its corresponding folder. Each folder is required to have a `vinfo.json` file in it. The contents of
that file is a single JSON object. Here is an example for `hello 1.1.0`:
```json
{
"bin": ["hello.metis"],
"lib": ["libhello.metis"],
"dependencies": {
"sf-dos": "1.2"
}
}
```
`bin` is a list of files that will be downloaded into the `/bin/` folder and will be available on PATH. `lib` is a list of files
which the files in `bin` require access to and are downloaded to `/lib//` (e.x. `/lib/hello/`). `include`, while not
shown in this example, would be a list of files that get downlaoded into `/include/`, and will be available for `import`.
`dependencies` is an object of pairs of the name of the dependency and a version selector. APM will determine the highest version
that meets the selector. For example, in the example, an `sf-dos` version of `1.2.9` will satisfy the dependency, but a version of
`1.3.4` will not.