149 lines
3.5 KiB
Markdown
149 lines
3.5 KiB
Markdown
# PMF - Package Management Framework
|
|
|
|
## Build Status
|
|
|
|
[](https://travis-ci.com/xX-TheDoctor-Xx/PMF) [](https://travis-ci.com/xX-TheDoctor-Xx/PMF)
|
|
|
|
## Code Coverage
|
|
|
|
[](https://coveralls.io/github/xX-TheDoctor-Xx/PMF?branch=master) [](https://www.codacy.com/manual/guilhermesuicida123654/PMF?utm_source=github.com&utm_medium=referral&utm_content=xX-TheDoctor-Xx/PMF&utm_campaign=Badge_Grade)
|
|
|
|
PMF is a barebones C# library that provides basic support for package management
|
|
|
|
# Features
|
|
|
|
- Install
|
|
- Update
|
|
- Uninstall
|
|
|
|
# Planned features
|
|
|
|
- Abstract Package, Asset and Dependency class
|
|
- Multithreading
|
|
|
|
|
|
|
|
|
|
# API
|
|
|
|
## Initialization
|
|
|
|
These functions need to be called at the beggining of the program and at the end, respectively, they handle the manifest.json file that is saved with information regarding packages installed
|
|
|
|
```csharp
|
|
PackageManager.Start();
|
|
|
|
// Do stuff
|
|
|
|
PackageManager.Stop();
|
|
```
|
|
|
|
### Install
|
|
|
|
Installs selected version of a package
|
|
|
|
```csharp
|
|
public static PackageState Install(string id, Version version, out Package package)
|
|
```
|
|
|
|
Installs latest version of a package
|
|
|
|
```csharp
|
|
public static PackageState InstallLatest(string id, out Package package)
|
|
```
|
|
|
|
Installs by SDK version provided by software
|
|
|
|
```csharp
|
|
public static PackageState InstallBySdkVersion(string id, out Package package)
|
|
```
|
|
|
|
### Uninstall
|
|
|
|
Uninstalls a package
|
|
|
|
```csharp
|
|
public static bool Uninstall(string id)
|
|
```
|
|
|
|
### Update
|
|
|
|
Updates a package to the most recent version, ignoring SDK version
|
|
|
|
```csharp
|
|
public static PackageState UpdateLatest(string id, out Package package)
|
|
```
|
|
|
|
Updates a package to a specified version
|
|
|
|
```csharp
|
|
public static PackageState UpdatePackage(string id, Version version, out Package package)
|
|
```
|
|
|
|
Updates a package to the most recent version provided an SDK version
|
|
|
|
```csharp
|
|
public static PackageState UpdateBySdkVersion(string id, out Package package, bool dontAsk = false)
|
|
```
|
|
|
|
### Configuration
|
|
|
|
Defines the manifest file name
|
|
|
|
```csharp
|
|
public static string Config.ManifestFileName = "manifest.json";
|
|
```
|
|
|
|
Defines the folder where packages are to be installed
|
|
|
|
```csharp
|
|
string Config.PackageInstallationFolder
|
|
```
|
|
|
|
The http server where you will be sending information about the packages
|
|
|
|
```csharp
|
|
string Config.RepositoryEndpoint
|
|
```
|
|
|
|
Current SDK version
|
|
|
|
```csharp
|
|
Version Config.CurrentSdkVersion = null;
|
|
```
|
|
|
|
Temporary folder where zip files will be downloaded to, gets deleted at the end of execution
|
|
|
|
```csharp
|
|
string Config.TemporaryFolder = ".pmf-temp";
|
|
```
|
|
|
|
## JSON
|
|
|
|
This is the basic information a package would have
|
|
|
|
```json
|
|
{
|
|
"ID": "something_cool",
|
|
"Type": 1,
|
|
"Name": "Im Something cool",
|
|
"Description": "This is a package that makes you cool and awesome",
|
|
"Assets": [{
|
|
"Version": "0.0.1",
|
|
"SdkVersion": "0.0.5",
|
|
"Checksum": "somethingCoolWithLettersAndNumbers",
|
|
"FileName": "name.zip",
|
|
"Url": "somewhereElseDoesntNeedToBeYourServer.zip",
|
|
"Dependencies": [{
|
|
"ID": "Inner Spirit",
|
|
"Checksum": "somethingHere",
|
|
"FileName": "zipped.zip",
|
|
"Url": "somewhereElseDoesntNeedToBeYourServer.zip"
|
|
}]
|
|
}]
|
|
}
|
|
```
|
|
|
|
### Building for source
|
|
|
|
To build from source, clone or fork the repository and open with Visual Studio. |