mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 13:28:30 +00:00
New docs
This commit is contained in:
@@ -1,2 +1,42 @@
|
||||
# dcr build
|
||||
|
||||
Builds the project in `debug` or `release` profile.
|
||||
|
||||
## Usage
|
||||
|
||||
```sh
|
||||
dcr build
|
||||
dcr build --debug
|
||||
dcr build --release
|
||||
```
|
||||
|
||||
## What `build` does
|
||||
|
||||
1. Checks that `dcr.toml` exists and is valid.
|
||||
2. Reads build settings from `[build]`.
|
||||
3. Resolves path dependencies from `[dependencies]`.
|
||||
4. Creates required output directories.
|
||||
5. Recursively compiles sources from `src/`.
|
||||
6. Links final artifact (binary or static library).
|
||||
|
||||
## Config values used
|
||||
|
||||
- `package.name`
|
||||
- `build.compiler`
|
||||
- `build.language`
|
||||
- `build.standard`
|
||||
- `build.kind`
|
||||
- `build.target`
|
||||
- `build.cflags`
|
||||
- `build.ldflags`
|
||||
|
||||
## Source selection
|
||||
|
||||
- `language = "c"` -> `*.c`
|
||||
- `language = "c++" | "cpp" | "cxx"` -> `*.cpp`, `*.cxx`, `*.cc`
|
||||
|
||||
## Notes
|
||||
|
||||
- The profile is selected from the first argument only.
|
||||
- Unknown profile flags return an error.
|
||||
- Incremental rebuild is based on source/object mtime comparison.
|
||||
|
||||
@@ -1,2 +1,23 @@
|
||||
# dcr clean
|
||||
|
||||
Removes build artifacts in `target/`.
|
||||
|
||||
## Usage
|
||||
|
||||
```sh
|
||||
dcr clean
|
||||
dcr clean --debug
|
||||
dcr clean --release
|
||||
```
|
||||
|
||||
## Behavior
|
||||
|
||||
- Without arguments: removes entire `target/`.
|
||||
- With profile: removes only `target/<profile>/`.
|
||||
|
||||
## Validation
|
||||
|
||||
- `dcr.toml` must exist.
|
||||
- More than one argument is treated as error.
|
||||
- Unknown profile is treated as error.
|
||||
- If `target` or selected profile directory does not exist, command prints a warning.
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
# dcr init/new
|
||||
|
||||
43
docs/commands/dcr-init-or-new.md
Normal file
43
docs/commands/dcr-init-or-new.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# dcr init/new
|
||||
|
||||
## `dcr new <name>`
|
||||
|
||||
Creates a new project directory and initializes it.
|
||||
|
||||
```sh
|
||||
dcr new hello
|
||||
```
|
||||
|
||||
Behavior:
|
||||
|
||||
1. Validates arguments (`<name>` is required, only one name is allowed).
|
||||
2. Creates `<name>/`.
|
||||
3. Creates `<name>/dcr.toml`.
|
||||
4. Sets `package.name = "<name>"`.
|
||||
5. Creates `<name>/src/main.c` with a Hello World template.
|
||||
|
||||
Errors:
|
||||
|
||||
- Missing project name.
|
||||
- Extra arguments.
|
||||
- Target directory already exists.
|
||||
|
||||
## `dcr init`
|
||||
|
||||
Initializes DCR in the current directory.
|
||||
|
||||
```sh
|
||||
dcr init
|
||||
```
|
||||
|
||||
Behavior:
|
||||
|
||||
1. Requires current directory to be empty.
|
||||
2. Creates `dcr.toml`.
|
||||
3. Sets `package.name` from the current directory name.
|
||||
4. Creates `src/main.c`.
|
||||
|
||||
Errors:
|
||||
|
||||
- Any arguments are treated as invalid.
|
||||
- Non-empty directory is rejected.
|
||||
@@ -1,2 +1,27 @@
|
||||
# dcr run
|
||||
|
||||
Builds the project and runs the resulting binary.
|
||||
|
||||
## Usage
|
||||
|
||||
```sh
|
||||
dcr run
|
||||
dcr run --debug
|
||||
dcr run --release
|
||||
```
|
||||
|
||||
## Behavior
|
||||
|
||||
1. Validates `dcr.toml`.
|
||||
2. Reads `package.name`, `build.kind`, and optional `build.target`.
|
||||
3. Runs the same build flow as `dcr build`.
|
||||
4. Executes the built artifact path for the selected profile.
|
||||
|
||||
## Restrictions
|
||||
|
||||
- If `build.kind = "staticlib"`, `run` exits with error.
|
||||
- The profile is selected from the first argument.
|
||||
|
||||
## On build failure
|
||||
|
||||
`dcr run` attempts to launch an existing binary from the same profile if present; otherwise it reports that code errors must be fixed.
|
||||
|
||||
@@ -1,2 +1,44 @@
|
||||
# Global options
|
||||
|
||||
## `dcr --help`
|
||||
|
||||
```sh
|
||||
dcr --help
|
||||
```
|
||||
|
||||
Prints top-level CLI usage, commands, flags, and examples.
|
||||
|
||||
## `dcr --version`
|
||||
|
||||
```sh
|
||||
dcr --version
|
||||
```
|
||||
|
||||
Prints:
|
||||
|
||||
```text
|
||||
dcr <version> (<target>)
|
||||
```
|
||||
|
||||
## `dcr --update`
|
||||
|
||||
```sh
|
||||
dcr --update
|
||||
```
|
||||
|
||||
Update flow:
|
||||
|
||||
1. Requests latest release from GitHub API.
|
||||
2. Finds asset matching current `DCR_TARGET`.
|
||||
3. Downloads replacement binary.
|
||||
4. Replaces current executable via `self-replace`.
|
||||
|
||||
Limitations and behavior:
|
||||
|
||||
- No extra arguments are accepted.
|
||||
- Requires network access to GitHub API/assets.
|
||||
- On Linux, if binary is owned by pacman, DCR prints package-manager update instructions instead of self-updating.
|
||||
|
||||
## Running without command
|
||||
|
||||
Running plain `dcr` (without arguments) shows help output.
|
||||
|
||||
Reference in New Issue
Block a user