Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@ericoporto
Created February 5, 2020 10:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ericoporto/7a98652f086efa7e6ae5705674c5483c to your computer and use it in GitHub Desktop.
Save ericoporto/7a98652f086efa7e6ae5705674c5483c to your computer and use it in GitHub Desktop.
AgsGet may create the following files in your game directory.
```
├── ags_packages_cache/
│ ├── package_index
│ ├── pkg1/
│ │ └── pkg1.scm
│ └── pkg2/
│ └── pkg2.scm
│ ...
├── agsget-lock.json
├── agsget-lock.json.removal
└── agsget-manifest.json
```
Let's see the steps involved in installing a package:
1. At first, when loading AgsGet, if no package_index is found, it will create the ags_packages_cache directory, and place it inside the package_index file, which is obtained directly from here: https://ericoporto.github.io/agsModuleList/index/package_index.json .
2. Whenever you install a package, AgsGet reads the agsget-manifest.json to figure out which packages are already installed and recreates it including the new package.
3. If there's any agsget-lock.json.removal, it's deleted, and if there's any agsget-lock.json, it's renamed to agsget-lock.json.removal.
4. Then, it reads this generated agsget-manifest.json and the package_index to figure out if the packages have any dependencies, and order them correctly, using topological sorting, writing the resulting list in agsget-lock.json.
5. It then removes and deletes any script and headers in the project with the same name as a package in the agsget-lock.json.
6. It then will download from https://ericoporto.github.io/agsModuleList any package not on cache that it's listed in the agsget-lock.json.
7. Finally, all packages listed in agsget-lock.json gets imported in the Game.agf project and shows in the editor.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment