An open API service indexing awesome lists of open source software.

https://github.com/covscript/cspkg

Covariant Script Package Manager
https://github.com/covscript/cspkg

covscript package-manager

Last synced: 3 months ago
JSON representation

Covariant Script Package Manager

Awesome Lists containing this project

README

          

# Covariant Script Package Manager

Covariant Script Package Manager is an online package manager written in Covariant Script itself.

## Dependency
+ [Covariant Script Interpreter](https://github.com/covscript/covscript): v3.4.1(STD210504) or newer version
+ [CovScript Process](https://github.com/covscript/covscript-process)
+ [CovScript Regex](https://github.com/covscript/covscript-regex)
+ [CovScript Codec](https://github.com/covscript/covscript-codec)
+ [CovScript cURL](https://github.com/covscript/covscript-curl)

## Usage
```
Usage: cspkg ... [options] ...

Commands:
init Initialize cspkg environment and configuration
install | -i ... Install packages from remote source
remove | -r ... Remove packages
config | -c Manage local configuration
upgrade | -u Upgrade local packages
build | -b [Path] Build & test local packages
list | -l List current packages
help | -h Show help information
version | -v Show version information

Options:
General
--yes Cancel the prompt

cspkg install
--fix Fix broken dependencies
--import Scanning local CovScript packages
--show-avail Show available CovScript packages in remote source

cspkg upgrade
--retread Retread all local packages and their dependencies

cspkg config
--set Set a configuration key
--app Append to a configuration key
--unset Restore a configuration key to default

cspkg build
--install [Package]... Install a local package
--compile [Argument]... Compile extension using CXX compiler
--release Generate package index files for release
--flat Don't create cspkg-repo directory structure

```

## Configure CSPKG

Local path: `~/.cspkg/config.json`

```json
{
"arch": "x86_64",
"home": "PATH-TO-COVSCRIPT-HOME",
"source": "URL-OF-REPO;URL-OF-REPO",
"proxy": "URL-OF-HTTP-PROXY",
"timeout_ms": "3000"
}
```

For fresh installment, you can run `cspkg init` to generate config file manually.

## Architecture of a typical CSPKG repository

### File Storage

Typically a CSPKG repository is a HTTP(s) site in following structure:

- http://mirrors.covariant.cn/cspkg_v2/
- index.json
- index
- universal
- winucrt
- x86_64
- index.json
- xxx.json
- linux
- x86_64
- index.json
- xxx.json
- macos
- arm64
- index.json
- xxx.json
- universal
- xxx.csp
- winucrt/x86_64
- xxx.cse
- linux/x86_64
- xxx.cse
- macos/arm64
- xxx.cse

You can also use local storage by setting source to URL like `file:///path-to-your-local-repo/`.

## Build your package

### Step 1: Write your Package Description File
#### Package Description File Template:
```json
{
"Name": "test",
"Info": "Test Package",
"Author": "Anonymous",
"Version": "1.0.0",
"Target": "URL to your package",
"Dependencies": []
}

```
+ `Name` is the unique identifier of the package and cannot be repeated.
+ `Info` is the description of your package, should be short in one sentence.
+ `Author` is the name of the package author.
+ `Version` is the version of your package, which will be sorted in lexicographical order.
+ `Target` is the URL of your file(`.cse` or `.csp`), you can use GitHub as your server.
+ `Dependencies` is an array of package names you depend on.

#### Example:
```json
{
"Name": "csdbc_mysql",
"Info": "CSDBC MySQL Driver",
"Author": "CovScript Organization",
"Version": "1.0.0",
"Target": "http://mirrors.covariant.cn/cspkg_v2/universal/csdbc_mysql.csp",
"Dependencies": [
"database",
"codec",
"csdbc",
"regex"
]
}
```
### Step 2: Upload your Package Description File
You can:
+ Upload with your project file to GitHub or other VCS (Recommended!!!)
+ Upload to dedicated server(mostly for releasing purpose)

### Step 3: Building your package
If your package is written in Covariant Script, there's no need for extra building. But if you are writting an Covariant Script Extension, please follow [CSBuild Instruction](https://github.com/covscript/csbuild#build-your-package-with-csbuild).

CSPKG provides lots commands for building and compiling. If you are writting an extension and have `Source` field configured in `csbuild` folders, you can use `cspkg build --install` for auto installation and `cspkg build --compile` for single file compilation.

After that, you can use `cspkg build --release ` for auto releasing, which can generate a legal file structural for your CSPKG source.

### Step 4: Submit your Package to CSPKG Source
1. Fork [CSPKG Source GitHub Repository](https://github.com/covscript/cspkg-sources)
2. Fill the URL of your Package Description File to CSPKG Index File
+ Universal Package(No platform dependency): cspkg/universal.json
+ Platform Specified Package: cspkg/OS_Architectural.json
3. Create new pull request