Skip to content

Latest commit

 

History

History
112 lines (82 loc) · 1.98 KB

File metadata and controls

112 lines (82 loc) · 1.98 KB

Contributing to dbxcli

Thanks for your interest in improving dbxcli.

Before you start

For non-trivial contributions, complete the Dropbox Contributor License Agreement:

https://opensource.dropbox.com/cla/

If you're planning a larger feature or behavior change, consider opening an issue first.

Development

Requirements:

  • Go 1.25+
  • Git

Build:

go build .

Run:

go run . --help

Repository layout

  • cmd/ Cobra commands
  • docs/ Generated documentation
  • docs/json-schema/v1/ Generated JSON schemas
  • packaging/ Release packaging
  • tools/ Documentation and schema generators

Design principles

dbxcli is designed for humans, scripts, CI pipelines, and AI agents.

When contributing, prefer changes that preserve:

  • backward compatibility where practical
  • stable automation interfaces
  • predictable JSON output and JSON help
  • composable command-line behavior
  • cross-platform support

Making changes

Keep pull requests focused.

When adding or modifying commands:

  • update help text
  • add or update tests
  • preserve JSON compatibility when possible
  • regenerate documentation
  • regenerate JSON schemas if applicable

See:

  • docs/automation.md
  • docs/json-schema/v1/README.md

Validation

Run before submitting:

go test ./...
go vet ./...
go build ./...

For concurrency-sensitive changes:

go test -race ./...

Recommended:

golangci-lint run
govulncheck ./...

Generated files

If command structure, help, or JSON metadata changes:

go run ./tools/gen-docs
go run ./tools/gen-json-schemas

Ensure the generated files are committed.

Pull requests

Please include:

  • what changed
  • why
  • validation performed
  • related issue (if any)

Small, focused pull requests are easier to review.

Reporting bugs

Include:

  • dbxcli version
  • operating system
  • command executed
  • expected behavior
  • actual behavior
  • reproduction steps

Remove access tokens and other sensitive information before posting logs.