Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/domchen/depsync
Automatically synchronize the dependencies of a project by the DEPS configuration file
https://github.com/domchen/depsync
dependency synchronization
Last synced: 3 months ago
JSON representation
Automatically synchronize the dependencies of a project by the DEPS configuration file
- Host: GitHub
- URL: https://github.com/domchen/depsync
- Owner: domchen
- License: mit
- Created: 2017-03-24T03:48:00.000Z (almost 8 years ago)
- Default Branch: main
- Last Pushed: 2023-12-19T02:19:18.000Z (about 1 year ago)
- Last Synced: 2024-10-10T17:01:35.913Z (3 months ago)
- Topics: dependency, synchronization
- Language: JavaScript
- Size: 118 KB
- Stars: 10
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Introduction
A command line tool for automatically synchronizing the dependencies of a project by the DEPS configuration file.
# Advantages
The depsync tool provides a convenient way to download git repositories and files from the Internet, offering several key advantages over similar capabilities like git-submodules and git-lfs:
- Repositories are always checked out with a depth of 1 without any extra command arguments, ensuring that the main project maintains a relatively compact size at all times.
- Automatically download git-submodules and git-lfs files for your main project and third-party repositories without the need to run commands on each one individually.
- During downloading process, git-lfs files that already exist in the local cache can be skipped. This approach works even for the shallow cloned repositories.
- Enable the execution of custom actions after synchronization. For instance, you can include commands in the DEPS file to facilitate cleaning tasks and other operations.
- Repositories and files can be configured separately for each platform to avoid downloading unnecessary dependencies and only acquire platform-specific ones.With all the advantages described above, all it takes is one straightforward command `depsync`. Execute it in the root of your main project, and you're good to go!
# Installation
`npm install depsync -g`
## Usage
Run the following command in the directory with a DEPS file:
```
depsync [platform]
```
For example, if you want to synchronize the mac platform, run:```
depsync mac
```If you don't pass any platform parameter, it will automatically choose the host platform as the target platform. So the result of running `depsync` in macOS is the same to running `depsync mac`.
The available platform names are defined in the DEPS file, you can also define any other platform names as you want, such as `ios`, `android`... but only the `mac`, `win` and `linux` can be automatically chosen.
Here is an example of DEPS file:
```json
{
"version": "1.3.2",
"vars": {
"GIT_DOMAIN": "github.com",
"SKIA_ROOT": "https://github.com/domchen/depsync/releases/download/1.0.1",
"V8_ROOT": "https://github.com/domchen/depsync/releases/download/1.0.2"
},
"repos": {
"common": [
{
"url": "https://${GIT_DOMAIN}/webmproject/libwebp.git",
"commit": "1fe3162541ab2f5ce69aca2e2b593fab60520d34",
"dir": "third_party/libwebp"
},
{
"url": "https://${GIT_DOMAIN}/libjpeg-turbo/libjpeg-turbo.git",
"commit": "129f0cb76346ceede8f4d8d87dea8acb0809056c",
"dir": "third_party/libjpeg-turbo"
},
{
"url": "https://${GIT_DOMAIN}/Tencent/tgfx.git",
"commit": "5948d72a0a5320a1ea055f23bc8312b07ab6d72c",
"dir": "third_party/tgfx"
}
]
},
"files": {
"common": [
{
"url": "${SKIA_ROOT}/include.zip",
"dir": "third_party/skia",
"unzip": true
},
{
"url": "${V8_ROOT}/include.zip",
"dir": "third_party/v8",
"unzip": "true"
}
],
"mac": [
{
"url": "${SKIA_ROOT}/darwin-x64.zip",
"dir": "third_party/skia",
"unzip": true
},
{
"url": "${V8_ROOT}/darwin-x64.zip",
"multipart": [
".001",
".002",
".003"
],
"dir": "third_party/v8",
"unzip": true
}
],
"win": [
{
"url": "${SKIA_ROOT}/win-ia32.zip",
"dir": "third_party/skia",
"unzip": true
},
{
"url": "${V8_ROOT}/win-ia32.zip",
"dir": "third_party/v8",
"unzip": true
}
]
},
"actions": {
"common": [
{
"command": "depsync --clean",
"dir": "third_party"
}
]
}
}
```