The dogma
command line interface contains various tools for working with
Dogma applications.
go install github.com/dogmatiq/dogmacli/cmd/dogma@latest
๐ง Command line tools for Dogma applications.
License: MIT License
The dogma
command line interface contains various tools for working with
Dogma applications.
go install github.com/dogmatiq/dogmacli/cmd/dogma@latest
We also need to ensure that projections implemented using projectionkit
are analysed properly.
This would use github.com/dogmatiq/configkit/visualization/dot
to generate dot files, and if there are actual graphviz bindings for Go we could generate the resulting PNG/SVG images too.
This check might not be feasible as it is perfectly reasonable to have a process that lives for the entire lifetime of the application, but perhaps we can mark those processes in some way.
Most processes should be fairly short lived.
We also need to ensure that projections implemented using projectionkit
are analysed properly.
We also need to ensure that projections implemented using projectionkit
are analysed properly.
Some of the checks align with SHOULD
clauses from the specification, but we should be able to run in a mode that only complains if MUST
clauses are violated.
This is a bit of a catch-all task that ensures aggregate handlers are pure functions - they should get everything they need from the commands they receive and their current state.
@danilvpetrov I seem to recall in Hive that we may have broken this rule - one of the aggregates is responsible for choosing a domain name randomly, or something like that? Or was it actually deterministic?
The standard vet tool has something that does this automatically, but I'm not sure what heuristic it uses to begin treating a function as "printf-like". It possibly doesn't work for Dogma because the methods are on interfaces.
case
is for a message that is not declared as being consumedWe also need to ensure that projections implemented using projectionkit
are analysed properly.
We also need to ensure that projections implemented using projectionkit
are analysed properly.
If a process creates a timeout, but upon handling that timeout only schedules another timeout, (and so on) there is an infinite loop that never produces any meaningful work.
For each of:
ExecuteCommand()
RecordEvent()
ScheduleTimeout()
Check that the parameter they're passed is declared as being produced in the config of THIS handler, and it's the correct role.
projectionkit
are analysed properlyNone of them can declare the same message type more than once.
This one might be near impossible, but it should at least catch some common cases like using time.Now()
.
I'm not 100% confident this is something we want to enforce all the time, but it might be better to produce a diagnostic about it so that its brought to people's attention, then relax it if we find valid use cases for using the system time.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.