glue-d ~dev
autoscanning + DI (with dejector fork) + ...
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
This package provides sub packages which can be used individually:
glue-d:indexer - autoscanning implementation
glue-d:codescan - Facilities used to generate scan of the available codebase once its indexed
glue-d:utils - Common utilities from glue-d, extracted for the sake of other packages extraction
glue-d:logging - With 'optional' being a sole dependency provides unified logging for compile- and runtime
glue-d:annotations - Annotations = DLang UDAs - the good parts; each annotation needs to be a value, there are extendable facilities to control usage (repetitions, targets, etc) of annotations and to query for them.
glue-d
What is it?
Bunch of different D-lang tools glued together with some sprinkles on top.
The point is to implement autoscanning, implement some annotation system (both done) then glue together a bunch of other projects: forked dejector for DI, mirror for reflection. Together with that this will become full application context, with runtime features, like autowiring, inheritance inspection and instantiation, as well as compile-time component scan, stereotyping, auto-implementation of interfaces, etc.
Next integrations will probably include vibe-d and maybe some data drivers.
Heavily inspired by Spring.
Status
On Unix-like systems we build with latest compiler versions (see details, we don't specify version explicitly in the configuration).
Unfortunately, AppVeyor doesn't support per-job badges (at least yet).
We build our project with DMD (stable) on x86
and x64
and LDC (stable) on x64
.
GDC is explicitly not supported.
master
Really old, basically useless. Tagged just so that we have presence on dub.
dev
Detailed status:
ToDo
bold are WIP and highest prio
- conceptual
- figure out packaging - there are different qualifiers for source sets, they
will probably be non-empty for libraries
- figure out how to compose application from annotations pointing to scannables
- figure out naming - what is library, what is "bundle"/"starter", etc; we need some abstraction of library you depend on, add an annotation and autoconfiguration (scanning, defaults, etc)
- new features
- @PostConstruct methods
- annotations enhancements:
- validation (missing method/field/etc, only known Targets are types; validations here are "has (no) parameter of type/name", "name matches" with syntax sugar for "name starts/ends with")
- @InheritAnnotations(target=aggregate/method/field) - if present, look into superclasses and copy annotations from super
- enhanced resolveCall and friends
- @Param(i/name, annotations...) - repeatable, used to define param-level annotations
- @Seed on non-config method? (that would probably require either merging dejector to this repo, duplicating resolveCall here or moving seed, the whole annotations module and probably some annotation definitions there)
- environment (string/string key-value pairs)
- data is already gathered, but whats left is...
- injection with @Config with support for simple types
- value registry (environment required)
- config inspection
- autobinding structs/enums/simple types with @Value
- indexing scanned classes (aliases/qualifiers in dejector will be useful, but
not required; implementing in parallel will probably make API more consistent)
- by stereotypes (with runtime-available stereotype instances)
- vibe-d integration
- controller stereotype & autobinding
- repositories?
- converters
- you have component C1 in context
- you have Converter!(C1, C2) in context
- you have no C2 in context
- Glue-D should figure out in runtime that it can provide C2 by applying converter to C1 instance
- tbd: how to treat such instances when it comes to autobinding and interface resolution? (these are 2 cases, actually)
- Registered by Filip Malczak
- ~dev released 4 years ago
- filipmalczak/glue-d
- Apache 2.0
- Copyright © 2019, Filip Malczak
- Authors:
- Sub packages:
- glue-d:indexer, glue-d:codescan, glue-d:utils, glue-d:logging, glue-d:annotations
- Dependencies:
- glue-d:annotations, glue-d:logging, glue-d:codescan, glue-dejector, unit-threaded, glue-d:utils, optional
- Versions:
-
0.0.2 2020-Apr-13 0.0.1 2020-Apr-02 ~master 2020-Apr-06 ~dev 2020-May-11 ~#21-value-injection 2020-Jun-29 - Download Stats:
-
-
0 downloads today
-
0 downloads this week
-
0 downloads this month
-
8 downloads total
-
- Score:
- 0.0
- Short URL:
- glue-d.dub.pm