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

https://github.com/wequick/devpm

Development package manager
https://github.com/wequick/devpm

Last synced: 9 months ago
JSON representation

Development package manager

Awesome Lists containing this project

README

          

# devpm
Development package manager

## Usage

* devpm install - Install packages by devpackage.json in current directory which support config:
- vscodeDependencies for vscode extensions
- vscodeUserSettings for edit vscode user settings file
- pythonDependencies for python modules
- bashDependencies for custom bash script
- gitHooks for add git hooks like `pre-commit`, `commit-msg`
* devpm pr - Create a Pull Request
* devpm cr - Create a Code Review, same to `devpm pr`
* devpm run [NAME] - Run [NAME] script in devpackage.json
* devpm lint - Run lint script in devpackage.json. Equal to `devpm run lint`
* devpm test - Run test script in devpackage.json. Equal to `devpm run test`
* devpm start - Run start script in devpackage.json. Equal to `devpm run start`
* devpm stop - Run stop script in devpackage.json. Equal to `devpm run stop`
* devpm restart - Run restart script in devpackage.json. Equal to `devpm run restart`
* devpm version - Bump a package version and auto-gen CHANGELOG. (not yet finished)

`devpm --help` for more details.

## devpackage.json

### vscodeDependencies
Packages installed by visutal studio code.
Key for vscode extension id, value for `version` (1).
Version definition:
* "" (empty) - install when not exists
* "latest" - uninstall and install latest
* "1.0.0" (specified) - install when version mismatched

### pythonDependencies
Packages installed by pip.
Key for pip name, value for `version`, ses (1).

### bashDependencies
Packages installed by custom bash script.
Key for excutable name after installed, value is an object describes script in platforms.
The platform is from python `sys.platform`, include 'darwin', 'win32' and 'linux'.

### vscodeUserSettings
Write to visual studio code user settings .
Key and value format same to the user settings.
In addition, the value support `devpm expression`:
* `$bash.which:[bin]` - returns the bin path in system by `which [bin]`
* `$pip.which:[bin]` - returns the bin path in pip by `pip show [bin]`

### gitHooks
Write to git hooks for root project and it's git submodules. Support commit-msg, pre-commit.
#### commit-msg
`type` (string) now is always `regexp`, for custom regexp match.
`pattern` (string) for the regexp pattern.
`tips` (array) used to show tips when the `commit-msg` mismatched, each item for one line.

#### pre-commit
`type` (string) now is always `pre-commit`, use the`pre-commit` plugin .
`repos` (array) content is same to '.pre-commit-config.yaml' but in json format.

### Example

```json
{
"$schema": "https://raw.githubusercontent.com/wequick/devpm/main/devpackage.schema.json",
"vscodeDependencies": {
"ms-vscode.cpptools-extension-pack": "",
"wequick.filegen": "",
"wequick.coverage-gutters": "",
"mine.cpplint": "",
"ms-python.pylint": ""
},
"vscodeUserSettings": {
"cpplint.cpplintPath": "$pip.which:cpplint",
"cmake.cmakePath": "$bash.which:cmake"
},
"pythonDependencies": {
"gcovr": "4.2",
"cpplint": "1.6.1",
"pre-commit": "3.3.3"
},
"bashDependencies": {
"OpenCppCoverage": {
"win32": "https://github.com/OpenCppCoverage/OpenCppCoverage/releases/download/release-0.9.9.0/OpenCppCoverageSetup-x64-0.9.9.0.exe"
},
"cppcheck": {
"win32": "https://github.com/danmar/cppcheck/releases/download/2.11/cppcheck-2.11-x64-Setup.msi",
"linux": "apt-get install cppcheck",
"darwin": "brew install cppcheck"
}
},
"gitHooks": {
"commit-msg": {
"type": "regexp",
"pattern": [
"^(feat|fix|refactor|chore|test|style|docs)",
"^(Merge)"
],
"tips": [
"Invalid commit message style, please format as following:",
" fix: some msg",
" ^^^^ Type: feat|fix|refactor|chore|test|style|docs",
" ^^^^^^^^ Summary in present tense",
"Type:",
" feat : new feature for the user, not a new feature for build script",
" fix : bug fix for the user, not a fix to a build script",
" docs : changes to the documentation",
" style : formatting, missing semi colons, etc; no production code change",
" refactor : refactoring production code, eg. renaming a variable",
" test : adding missing tests, refactoring tests; no production code change",
" chore : updating grunt tasks etc; no production code change",
"",
"See for more details.",
""
]
},
"pre-commit": {
"type": "pre-commit",
"repos": [
{
"repo": "https://github.com/pocc/pre-commit-hooks",
"rev": "v1.3.5",
"hooks": [
{ "id": "cpplint" },
{
"id": "cppcheck",
"args": [
"--suppress=missingInclude",
"--suppress=missingIncludeSystem",
"--std=c++14",
"--force"
]
}
]
}
]
}
},
"scripts": {
"prestart": "echo prestart",
"start": "echo prestart",
"poststart": "echo poststart",
"version": "devpm --version"
}
}
```

## Develop

```bash
$ python src/devpm/__main__.py install
```