Initial dataxl CLI
This commit is contained in:
74
docs/development.md
Normal file
74
docs/development.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# Development
|
||||
|
||||
## Requirements
|
||||
|
||||
- Go 1.24 or later
|
||||
|
||||
## Setup
|
||||
|
||||
```sh
|
||||
git clone https://git.rumginger.org/agent/dataxl.git
|
||||
cd dataxl
|
||||
go mod download
|
||||
```
|
||||
|
||||
## Common Commands
|
||||
|
||||
Format code:
|
||||
|
||||
```sh
|
||||
gofmt -w cmd/dataxl/*.go
|
||||
```
|
||||
|
||||
Run tests:
|
||||
|
||||
```sh
|
||||
go test ./...
|
||||
```
|
||||
|
||||
Build:
|
||||
|
||||
```sh
|
||||
go build ./cmd/dataxl
|
||||
```
|
||||
|
||||
Run locally:
|
||||
|
||||
```sh
|
||||
go run ./cmd/dataxl -from yaml -to tsv -i examples/people.yaml
|
||||
```
|
||||
|
||||
## Test Coverage
|
||||
|
||||
The current tests cover:
|
||||
|
||||
- YAML -> TSV flattening
|
||||
- TSV -> JSON path restoration
|
||||
- JSON -> XLSX -> JSON round trip
|
||||
|
||||
When adding a new format or path rule, add tests around both directions where
|
||||
possible.
|
||||
|
||||
## Release Notes
|
||||
|
||||
There is no automated release pipeline yet. A minimal release flow is:
|
||||
|
||||
```sh
|
||||
go test ./...
|
||||
git tag v0.1.0
|
||||
git push origin main --tags
|
||||
```
|
||||
|
||||
After tags exist, users can install a specific version:
|
||||
|
||||
```sh
|
||||
go install git.rumginger.org/agent/dataxl/cmd/dataxl@v0.1.0
|
||||
```
|
||||
|
||||
## Design Guidelines
|
||||
|
||||
- Keep stdin/stdout usable for shell pipelines.
|
||||
- Keep TSV behavior predictable because it is the main Excel clipboard format.
|
||||
- Preserve headers as the contract between spreadsheet data and structured data.
|
||||
- Prefer explicit errors over silent best-effort conversion when a format is unsupported.
|
||||
- Keep dependencies small unless a format needs a mature parser/writer.
|
||||
Reference in New Issue
Block a user