# Component Dependencies Syntax Bikeshed
## Satisfying one-or-more distinct imports
```toml
[component."myapp".dependencies."foo:bar"]
registry = "brian.io",
package = "bar:foo",
version = ">=0.1.0",
export = "foo-bar"
```
## General Syntax
```
[component.infra-dashboard.dependencies]
"aws:client" = "1.0.0" # /s3-client ...
"aws:client/s3-client" = { version = "0.1.0" }
```
# Model
```rust
// Enforces string to be either `namespace:package` or `namespace:package/interface`
struct DependencyName(String);
struct Component {
// ...
dependencies: HashMap<DepdendencyName, Dependency>,
}
enum Dependency {
Version(semver::Version),
Package {
version: semver::VersionReq,
registry: Option<String>,
package: Option<String>,
export: Option<String>
},
Local {
path: PathBuf,
export: Option<String>,
},
// future:
Component {
component: ComponentIdOrInline, // or whatever lann named that
}
}
```
## Open Qs
1. How to opt-in to capability inheritance, e.g. component or application level flag?