mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 15:20:51 +00:00
feat: Enhance dependency management and project setup
- Added support for registry-based dependencies in the dependencies section. - Updated the package section to include a project type field. - Introduced a new CLI command `dcr setup` to load and display registry configurations. - Implemented a new module for handling registry operations, including loading and resolving packages from registries. - Enhanced the build process to handle library packaging, including copying headers and libraries to the appropriate target directories. - Updated the CLI to support building library packages and added tests for library package builds. - Improved error handling and output messages during dependency resolution and package fetching.
This commit is contained in:
@@ -1,23 +1,36 @@
|
||||
# Dependencies section
|
||||
|
||||
DCR currently supports path dependencies.
|
||||
DCR supports registry-based dependencies and path dependencies.
|
||||
|
||||
## Example
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
# Registry dependency
|
||||
mylib = "0.1.0"
|
||||
# Git dependency
|
||||
json = { git = "https://github.com/nlohmann/json", tag = "v3.11.2" }
|
||||
# Path dependency
|
||||
frecli = { path = "./lib/frecli", include = ["."], lib = ["."], libs = ["frecli"] }
|
||||
```
|
||||
|
||||
## Supported fields per dependency
|
||||
## Supported dependency types
|
||||
|
||||
### Registry dependencies
|
||||
Defined by name and version string. DCR automatically resolves the package from the configured registry index.
|
||||
|
||||
### Git dependencies
|
||||
Defined by repository URL and optionally branch, tag, or revision.
|
||||
- `git` (string, required): repository URL.
|
||||
- `branch`, `tag`, `rev` (string, optional): Git reference.
|
||||
|
||||
### Path dependencies
|
||||
- `path` (string, required): absolute path or path relative to project root.
|
||||
- `include` (string array, optional): include directories inside dependency.
|
||||
- `lib` (string array, optional): library directories inside dependency.
|
||||
- `libs` (string array, optional): library names for linker.
|
||||
- `system` (bool, optional): currently `system = true` is rejected.
|
||||
|
||||
## Defaults
|
||||
## Defaults for path dependencies
|
||||
|
||||
- If `include` is omitted, DCR tries `<dep>/include`.
|
||||
- If `lib` is omitted, DCR tries `<dep>/lib`, then `<dep>/lib64`.
|
||||
@@ -25,6 +38,7 @@ frecli = { path = "./lib/frecli", include = ["."], lib = ["."], libs = ["frecli"
|
||||
|
||||
## Validation
|
||||
|
||||
- Dependency value must be a TOML table.
|
||||
- `path` is mandatory.
|
||||
- Dependency value must be a string (registry) or a TOML table (path).
|
||||
- Registry dependencies use the version string to match versions in the registry.
|
||||
- `path` is mandatory for path dependencies.
|
||||
- `include`/`lib`/`libs` must be arrays of strings if provided.
|
||||
|
||||
@@ -6,15 +6,18 @@
|
||||
[package]
|
||||
name = "my-app"
|
||||
version = "0.1.0"
|
||||
type = "app"
|
||||
```
|
||||
|
||||
## Fields
|
||||
|
||||
- `name` (string, required): used as output artifact base name.
|
||||
- `version` (string, required): used in `dcr.lock` project entry.
|
||||
- `type` (string, optional): project type (`app`, `lib`, `none`).
|
||||
|
||||
## Notes
|
||||
|
||||
- Empty `name` or `version` makes config invalid.
|
||||
- `dcr new` sets `name` from the passed project name.
|
||||
- `dcr init` sets `name` from current directory name.
|
||||
- If `type = "lib"`, DCR generates `include/` and `lib/` directories in the target path, copying public headers and built libraries.
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
```text
|
||||
dcr new <name>
|
||||
dcr init
|
||||
dcr setup
|
||||
dcr add <name> <source>(optional)
|
||||
dcr build [--debug|--release]
|
||||
dcr run [--debug|--release]
|
||||
dcr clean [--debug|--release] [--all]
|
||||
|
||||
Reference in New Issue
Block a user