Releases: ossuminc/riddl
Releases · ossuminc/riddl
0.14.1 Story Improvements, Statistics Page, Test Fixes
What's Changed
- Documentation Upgrade by @reid-spencer in #182
- Hugo by @reid-spencer in #183
- Documentation by @reid-spencer in #184
- Upgraded to Hugo 0.35.2 by @reid-spencer in #185
- Finish documenting concepts. by @reid-spencer in #186
- Add a "maturity" score to VitalDefinitions, use it in the Stats command by @reid-spencer in #187
- Convert Functions to VitalDefinition style by @reid-spencer in #188
- Add per-vital-definition stats by @reid-spencer in #189
- Generate a statistics page for hugo input by @reid-spencer in #190
- Implement C4 design for user stories by @reid-spencer in #192
- Stats in docs by @reid-spencer in #191
Full Changelog: 0.14.0...0.14.1
0.14.0 Bug Fixes
What's Changed
- Get sbt-riddl up to standard by @reid-spencer in #175
- Support Better Common Options Parsing by @reid-spencer in #176
- Fix source reference links by @reid-spencer in #177
- Fix links in the Concepts index. by @reid-spencer in #178
- Improvements to sbt-riddl that make it work. by @reid-spencer in #180
- Update org.eclipse.jgit to 6.3.0.202209071007-r by @scala-steward in #179
- Experiment with sbt command line by @reid-spencer in #181
Full Changelog: 0.13.0...0.14.0
0.13.3 - Fix Common Options Parsing Bug
What's Changed
- Support Better Common Options Parsing by @reid-spencer in #176
Full Changelog: 0.13.1...0.13.3
0.13.1 - sbt-riddl plugin viability
What's Changed
- Get sbt-riddl up to standard by @reid-spencer in #175
Full Changelog: 0.13.0...0.13.1
0.13.0 - Bug Fixes
This is a bug-fix release. 0.12.0 was a very comprehensive change and yielded a few less-than-desirable outcomes. Those are addressed in this release
What's Changed
- Post-release fixes: by @reid-spencer in #172
- Reduce testing output by @reid-spencer in #173
- Bug fixes by @reid-spencer in #174
Full Changelog: 0.12.0...0.13.0
0.12.0 - Command Improvements
RIDDL has gotten quite the overhaul over the long weekend. This was mostly working on commands, with some long-overdue refactoring:
- All commands are now pluggable. Creating a new command is as simple as depending on the
riddl-commands
library, subclassing
CommandPlugin, and filling in 3 methods (options, config from file, run) - The
info
command output is a little better now. - The new
about
command shows just the “blurb” from the top of thehelp
command output and a link to the documentation (https://riddl.tech/) - The new
dump
command pretty prints the AST from a successfulparse
/validate
of an input .riddl file - Things are a bit faster due to using some functional programming to defer message I/O until the end of the run.
- The options have been rearranged: the common options (
--verbose
,--suppress-warnings
, etc.) must now come first, before the command name; then the command name; then that command's specific options. - The
--input-file
( or-i
) option has been dropped. All commands now take the file name as the first positional argument like “from” did previously. So it is nowparse path/to/file
instead ofparse -i path/to/file
- The
--verbose
(or-v
) options now prints many things, including the content of loaded config files. - The
--quiet
option now eliminates most of the output including all error and warning messages
Command Output From 0.12.0
reid@Reids-Mac % riddlc version
0.12.0
reid@Reids-Mac % riddlc info
[info] About riddlc:
[info] name: riddlc
[info] version: 0.12.0
[info] documentation: https://riddl.tech
[info] copyright: © 2019-2022 Ossum Inc.
[info] built at: 2022-09-05 20:12:05.850-0400
[info] licenses: Apache License, Version 2.0
[info] organization: Reactific Software LLC
[info] scala version: 2.13.8
[info] sbt version: 1.7.1
reid@Reids-Mac % riddlc about
RIDDL Compiler © 2019-2022 Ossum Inc. All rights reserved."
Version: 0.12.0
This program parses, validates and translates RIDDL sources to other kinds
of documents. RIDDL is a language for system specification based on Domain
Drive Design, Reactive Architecture, and distributed system principles.
Extensive Documentation here: https://riddl.tech
reid@Reids-Mac % riddlc help
RIDDL Compiler © 2019-2022 Ossum Inc. All rights reserved."
Version: 0.12.0
This program parses, validates and translates RIDDL sources to other kinds
of documents. RIDDL is a language for system specification based on Domain
Drive Design, Reactive Architecture, and distributed system principles.
Usage: riddlc [options]
-t | --show-times
Show compilation phase execution times
-d | --dry-run
go through the motions but don't write any changes
-v | --verbose
Provide verbose output detailing riddlc's actions
-D | --debug
Enable debug output. Only useful for riddlc developers
-q | --quiet
Do not print out any output, just do the requested command
-w | --suppress-warnings
Suppress all warning messages so only errors are shown
-m | --suppress-missing-warnings
Show warnings about things that are missing
-s | --suppress-style-warnings
Show warnings about questionable input style.
-P <value> | --plugins-dir <value>
Load riddlc command extension plugins from this directory.
Usage: [about|dump|from|help|hugo|info|parse|repeat|validate|version] <args>...
Command: about
Print out information about RIDDL
Command: dump input-file
input-file
Command: from config-file [target-command]
Loads a configuration file and executes the command in it
config-file
A HOCON configuration file with riddlc options in it.
target-command
The name of the command to select from the configuration file
Command: help
Print out how to use this program
Command: hugo [options] input-file
Parse and validate the input-file and then translate it into the input
needed for hugo to translate it to a functioning web site.
input-file
required riddl input file to read
-o <value> | --output-dir <value>
required output directory for the generated output
-p <value> | --project-name <value>
optional project name to associate with the generated output
-e <value> | --erase-output <value>
Erase entire output directory before putting out files
-b <value> | --base-url <value>
Optional base URL for root of generated http URLs
-t <value> | --themes <value>
Add theme name/url pairs to use alternative Hugo themes
-s <value> | --source-url <value>
URL to the input file's Git Repository
-h <value> | --edit-path <value>
Path to add to source-url to allow editing
-m <value> | --site-logo-path <value>
Path, in 'static' directory to placement and use
of the site logo.
-n <value> | --site-logo-url <value>
URL from which to copy the site logo.
Command: info
Print out build information about this program
Command: parse input-file
input-file
Command: repeat [options] config-file target-command [refresh-rate] [max-cycles]
This command supports the edit-build-check cycle. It doesn't end
until <max-cycles> has completed or EOF is reached on standard
input. During that time, the selected subcommands are repeated.
config-file
The path to the configuration file that should be repeated
target-command
The name of the command to select from the configuration file
refresh-rate
Specifies the rate at which the <git-clone-dir> is checked
for updates so the process to regenerate the hugo site is
started
max-cycles
Limit the number of check cycles that will be repeated.
-n | --interactive
This option causes the repeat command to read from the standard
input and when it reaches EOF (Ctrl-D is entered) then it cancels
the loop to exit.
Command: validate input-file
input-file
Command: version
Print the version of riddlc and exits
reid@Reids-Mac %
List Of Pull Requests
- Implement Plugins For Commands by @reid-spencer in #150
- Implement RIDDLC Commands As Plugins by @reid-spencer in #151
- Use Plugins For All Commands by @reid-spencer in #166
- Update scalatest to 3.2.13 by @scala-steward in #164
- Avoid intermittent test failures by @reid-spencer in #167
- Update sbt-scalafmt to 2.4.6 by @scala-steward in #162
- Update sbt-header to 5.7.0 by @scala-steward in #156
- Update scopt to 4.1.0 by @scala-steward in #154
- Update sbt-dynver to 4.1.1 by @scala-steward in #152
- Update scalacheck to 1.16.0 by @scala-steward in #161
- Update sbt-updates to 0.5.3 by @scala-steward in #155
- Update scala-library to 2.12.16 by @scala-steward in #159
- Update org.eclipse.jgit to 6.2.0.202206071550-r by @scala-steward in #157
- Scala Steward Configuration by @reid-spencer in #168
- Various Improvements by @reid-spencer in #169
- Update sbt-updates to 0.6.3 by @scala-steward in #170
- Riddlc improvements by @reid-spencer in #171
New Contributors
- @scala-steward made their first contribution in #164
Full Changelog
0.11.0
Language Changes
- None
New Features
- Implement Plugins For Commands by @reid-spencer in #150
- Implement RIDDLC Commands As Plugins by @reid-spencer in #151
- Use Plugins For All Commands by @reid-spencer in #166
- Update scalatest to 3.2.13 by @scala-steward in #164
- Avoid intermittent test failures by @reid-spencer in #167
- Update sbt-scalafmt to 2.4.6 by @scala-steward in #162
- Update sbt-header to 5.7.0 by @scala-steward in #156
- Update scopt to 4.1.0 by @scala-steward in #154
- Update sbt-dynver to 4.1.1 by @scala-steward in #152
- Update scalacheck to 1.16.0 by @scala-steward in #161
- Update sbt-updates to 0.5.3 by @scala-steward in #155
- Update scala-library to 2.12.16 by @scala-steward in #159
- Update org.eclipse.jgit to 6.2.0.202206071550-r by @scala-steward in #157
- Scala Steward Configuration by @reid-spencer in #168
New Contributors
- @scala-steward made their first contribution in #164
Full Changelog
Simplified Refactored AST, Better Doc Generation
Language Changes
- Fix precedence of operators so arbitrary ones come last
- Recognize known operators "pow" and "now"
- Support arbitrary operators like today()
- Type validation is now implemented for expressions and actions
- Alternations are no longer containers of type
- Invariants can now be undermined (???)
- Alternations now only take AliasedTypeExpression, which means you can't make alternations of arbitrary things, just referenced named types
AST Refactor
- Extract the AST abstract types to ast/Abstract.scala
- Extract value-expression types to ast/Expressions.scala
- Extract type-expression types to ast/TypeExpressions.scala
- Change Definition to be a Contents[Definition]
- Change Validation to use a simpler one-function-per-AST-type kind of validation strategy
- Make sure all tests still work, regardless
- Allow AuthorInfo in Context, Entity, Story, Plant
Functional Improvements
- Add a lookupParentage method to Symboltable
- Add a resolvePathFromSymTab method to Validation
- Use new resolvepathFromSymTab method in checkPathRef
- Make getPathIdType handle full path identifiers
- Implement Author Based TODO list
- Added a new "debug" common option to debug diagrams and other things
Hugo Translator Improvements
- Improve layout and handling of types
- Improve documentation of types with source links corrected
- Add configuration for specifying a logo source URL
- Make the layout of container/leaf pages consistent
- Add a full index to the root node in docs
- Show source links in the glossary
- Clean up the document link syntax
- Emit terms in their definitions too
- Implement ERD diagrams for States
- Better organization of types in Context, Domain, Entity, Function
- Emit Briefly, Definition Path, Source Link as a table
- Add C4 Diagrams to Contexts
Documentation Improvements
- Upgrade to hugo-geekdoc 0.34.2 theme
- Add a concepts section
- Add a context/handler page and other doc changes.
- Better documentation for types and handlers
- Improve the main index look/feel
- Many clarifications added
Bug Fixes
- Path resolution works much better
- Make sure hierarchy is right for OnClauses
- Avoid checking for assignment compatibility in certain cases where it isn't possible
- Add a test case to ensure we get the right messages when entities are overloaded and referenced.
- Fix author-based Hugo doc translation, generate index automatically
- Fix geekdocFilePath settings in each file to make edit URL work
- Add some AST utilities (WithAuthors, WithOptions)
- Resolve full paths in Folding.State too
- Return empty stack when a definition is not found when resolving a relative path
- fix actions that didn't format well
- Fix test failures
- Relative paths in config files
- Fix test cases for modern output
- Projections and context handlers are now validated and processed
- The "hasAuthors" method only returns true if the authors is nonEmpty
- Fix authorsOfInclude to work correctly
- Make Enumerations to format correctly
- Allow "debug" in common section config
- AliasedTypeExpression needs to format too
Improved Testing
- Move DokN test case to testkit, out of examples
- Fix path identifiers in test case riddl source
- Clean up test case output
- Make a test case pass if its environment is not found (e.g. in github workflow)
- Tone down warnings in ReactiveBBQ and other test cases
Miscellaneous
- Update the releasing guide
- Add an IJ test case run file for testing arbitrary riddl sources
Pull Requests
- Add Expression Type Validation by @reid-spencer in #136
- Make a test case pass if its environment is not found by @reid-spencer in #137
- Refactor AST by @reid-spencer in #145
- Implement Author Based TODO list by @reid-spencer in #147
- Make Documentation Improvements by @reid-spencer in #144
- Hugo translator improvements by @reid-spencer in #149
Full Changelog
0.8.0
Language Changes:
- Add a "new" operator for creating new things, currently just new UUIDs:
new Id(entity <path.id>)
- Change the syntax for path identifiers to include the ^ symbol as an operator to "go up one container" in the definition hierarchy
- A story's
implementedBy
is now a DomainRef, not just a PathIdentifier - Messages no longer have a "sender" field automatically added to them
- Entity Handlers can optionally have a "for state " expression to indicate how to handle messages in a specific state
- Contexts now support projection definitions as a simple aggregate
- Consequently, added support for projection references too
- Context handlers now optionally have a "for projection " expression to indicate how to process a project's messages
- Added an "append" action to support appending a value on to a collection of values
- Fix precedence of operators so arbitrary ones come last
- Recognize known operators "pow" and "now"
- Support arbitrary operators like today()
- Type validation is now implemented for expressions and actions
- Alternations are no longer containers of type
- Invariants can now be undermined (???)
- Don't allow empty Plant definitions (must use ???)
AST changes:
- Moved the
isContainer
method from RiddlValue to RiddlNode - Alternation is now a container of TypeExpression so it can be descended
- "Implicit" is now a concept of any Definition equating to having an empty name. Currently only used by Examples
- Added Projection class to AST for use in later work but needed for validation type expression in current work
New Features:
- Add a subclass to Folidng State, PathResolutionState, to implement path resolution as described above.
- Implemented field and TypeRef traversal for path resolution
- Descriptions are not a missing item if the definition it is attached to is completely empty, say with ???
( Added a new experimental Kalix translator
Improvements
- Added a new test case for running staged riddlc on arbitrary conf file
- Add a lookupParentage method to Symboltable
- Add a resolvePathFromSymTab method to Validation
- Use new resolvepathFromSymTab method in checkPathRef
- Make getPathIdType handle full path identifiers
Refactoring:
- Generalize ValidationMessage into its own module, Messages, for use by any Folding pass
- Add a subclass to Folding State, MessagesState for handling message generation
Bug Fixes
- Fixed path resolution yet again to handle nested paths and includes
- Fixed a bug with errors being reported for each popped include scope
- Fixed a bug in inlet/outlet entity references
- Path resolution works much better
- Make sure hierarchy is right for OnClauses
- Avoid checking for assignment compatibility in certain cases where
it isn't possible
Miscellaneous:
- Fix a variety of test cases impacted by all of the foregoing
- Improved error messages in validation
- Removed duplicate path resolution che
- Improved build workflows. Uses latest hugo now
- Added a releasing guide to document the process
- Update the releasing guide
- Add an IJ test case run file for testing arbitrary riddl source
- Update the releasing guide
- Add an IJ test case run file for testing arbitrary riddl source
Pull Requests Incorporated
- Add syntax for creating entity Ids: by @reid-spencer in #127
- Implement Better Path Resolution In Validation by @reid-spencer in #129
- Use shell syntax in workflow, update identifier documentation by @reid-spencer in #130
- Fix space at end of line. by @reid-spencer in #131
- Fix path resolution & workflow by @reid-spencer in #132
- Use the latest hugo version by @reid-spencer in #133
- Kalix Translator by @reid-spencer in #128
- Doc fixes by @reid-spencer in #134
- Support improving.app language design by @reid-spencer in #135
Full Changelog: 0.7.1...0.8.0
0.7.1
Language Changes
Allow multiple authors:
- Domains can now have multiple named author definitions, and they don't have to come first in the domain.
New Features
Remove external dependencies (hugo & tar) from hugo subcommand:
- Implemented a new Tar utility with commons-compress to unpack tar.gz files
- Used utils/Tar.untar to unpack the hugo-geekdoc.tar.gz file.
- Always construct hugo sites manually without forking a
hugo new site
command - Remove the -H option as hugo path is no longer needed
Improve Hugo Site Generation:
- Added options to specify the site, title, and description
- Removed the siteLogo option since it can just be put in the static directory instead of loaded from a URL
- Made riddlc read the previously unsupported "withXXX" options
- Always create the hugo output dir if it doesn't exist
- Handle the siteLogoPath option properly
Bugs Fixed
- Fix a bug with resource loading from system class loader
Refactoring & Cleanup
- Move copyURLToDir to a utils function
- Simplify the function that generates the config.toml from a template
Documentation Changes
Update README:
- Add missing path element in Getting Started section of README
- Add instructions for using sbt-riddl plugin
Related Pull Requests
- Remove Hugo Dependencies by @reid-spencer in #125
- Hugo improvements by @reid-spencer in #126
- Full Changelog: 0.7.0...0.7.1