Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/janstenpickle/extruder
Populate Case Classes From Any Data Source
https://github.com/janstenpickle/extruder
cats configuration decoding encoding extruder scala serialization shapeless typelevel
Last synced: 3 months ago
JSON representation
Populate Case Classes From Any Data Source
- Host: GitHub
- URL: https://github.com/janstenpickle/extruder
- Owner: janstenpickle
- License: mit
- Created: 2017-01-04T23:01:12.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2021-03-14T17:54:31.000Z (almost 4 years ago)
- Last Synced: 2024-10-04T11:28:28.120Z (4 months ago)
- Topics: cats, configuration, decoding, encoding, extruder, scala, serialization, shapeless, typelevel
- Language: Scala
- Homepage: https://janstenpickle.github.io/extruder/
- Size: 14 MB
- Stars: 83
- Watchers: 4
- Forks: 8
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Extruder
[![Typelevel Incubator](https://img.shields.io/badge/typelevel-incubator-green.svg)](http://typelevel.org/projects) [![CircleCI](https://circleci.com/gh/janstenpickle/extruder/tree/master.svg?style=shield)](https://circleci.com/gh/janstenpickle/extruder/tree/master) [![codecov](https://codecov.io/gh/janstenpickle/extruder/branch/master/graph/badge.svg)](https://codecov.io/gh/janstenpickle/extruder)
This library uses [shapeless](https://github.com/milessabin/shapeless) and [cats](https://github.com/typelevel/cats) to provide a neat syntax to instantiate Scala case classes from a data source.
[See the extruder microsite for detailed documentation.](https://janstenpickle.github.io/extruder/)
# Modules
|Module|Description|Download|
|---|---|---|
| **Extruder**|Main module, includes core functionality and basic resolvers.|[ ![Download](https://api.bintray.com/packages/janstenpickle/extruder/extruder/images/download.svg) ](https://bintray.com/janstenpickle/extruder/extruder/_latestVersion)|
| **Cats Effect**|Provides Cats Effect [typeclass implementations](concepts.html#effects).|[ ![Download](https://api.bintray.com/packages/janstenpickle/extruder/extruder/images/download.svg) ](https://bintray.com/janstenpickle/extruder/extruder-cats-effect/_latestVersion)|
| **Typesafe Config**|Support for resolution from [Typesafe Config](https://github.com/typesafehub/config).|[ ![Download](https://api.bintray.com/packages/janstenpickle/extruder/extruder/images/download.svg) ](https://bintray.com/janstenpickle/extruder/extruder-typesafe/_latestVersion)|
| **Circe**|Bridge to [Circe](https://circe.github.io/circe/) encoding/decoding.|[ ![Download](https://api.bintray.com/packages/janstenpickle/extruder/extruder/images/download.svg) ](https://bintray.com/janstenpickle/extruder/extruder-circe/_latestVersion)|
| **Circe YAML**|Bridge to [Circe](https://circe.github.io/circe/) YAML encoding/decoding.|[ ![Download](https://api.bintray.com/packages/janstenpickle/extruder/extruder/images/download.svg) ](https://bintray.com/janstenpickle/extruder/extruder-circe/_latestVersion)|
| **Refined**|Support for [Refined](https://github.com/fthomas/refined) types.|[ ![Download](https://api.bintray.com/packages/janstenpickle/extruder/extruder/images/download.svg) ](https://bintray.com/janstenpickle/extruder/extruder-refined/_latestVersion)|
| **AWS**|Support for [AWS](https://aws.amazon.com/sdk-for-java/) types.|[ ![Download](https://api.bintray.com/packages/janstenpickle/extruder/extruder/images/download.svg) ](https://bintray.com/janstenpickle/extruder/extruder-aws/_latestVersion)|
| **Prometheus**|Support for encoding data as [Prometheus](https://prometheus.io) metrics.|[ ![Download](https://api.bintray.com/packages/janstenpickle/extruder/extruder/images/download.svg) ](https://bintray.com/janstenpickle/extruder/extruder-metrics-prometheus/_latestVersion)|
| **Dropwizard**|Support for encoding data as [Dropwizard](https://metrics.dropwizard.io) metrics.|[ ![Download](https://api.bintray.com/packages/janstenpickle/extruder/extruder/images/download.svg) ](https://bintray.com/janstenpickle/extruder/extruder-metrics-dropwizard/_latestVersion)|
| **Spectator**|Support for encoding data as [Spectator](https://github.com/Netflix/spectator) metrics.|[ ![Download](https://api.bintray.com/packages/janstenpickle/extruder/extruder/images/download.svg) ](https://bintray.com/janstenpickle/extruder/extruder-metrics-spectator/_latestVersion)|## Install with SBT
Add the following to your `build.sbt`:
```scala
libraryDependencies += "io.extruder" %% "extruder" % "0.11.0"// only if you require support for cats-effect instances
libraryDependencies += "io.extruder" %% "extruder-cats-effect" % "0.11.0"// only if you require support for Typesafe config
libraryDependencies += "io.extruder" %% "extruder-typesafe" % "0.11.0"// only if you require support for Circe types
libraryDependencies += "io.extruder" %% "extruder-circe" % "0.11.0"// only if you require support for Circe YAML
libraryDependencies += "io.extruder" %% "extruder-circe-yaml" % "0.11.0"// only if you require support for refined types
libraryDependencies += "io.extruder" %% "extruder-refined" % "0.11.0"// only if you require support for AWS config
libraryDependencies += "io.extruder" %% "extruder-aws" % "0.11.0"// only if you require support for prometheus encoders
libraryDependencies += "io.extruder" %% "extruder-metrics-prometheus" % "0.11.0"// only if you require support for dropwizard encoders
libraryDependencies += "io.extruder" %% "extruder-metrics-dropwizard" % "0.11.0"// only if you require support for spectator encoders
libraryDependencies += "io.extruder" %% "extruder-metrics-spectator" % "0.11.0"
```# Participation
This project supports the [Scala Code of Conduct](https://typelevel.org/code-of-conduct.html) and aims that its channels
(mailing list, Gitter, github, etc.) to be welcoming environments for everyone.