8000 Create Bundle Distribution and bundle cli command by dmitrykozinets · Pull Request #462 · finos/morphir-scala · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Create Bundle Distribution and bundle cli command #462

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 55 commits into from
Nov 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
6241ee1
minor changes
dmitrykozinets Oct 29, 2023
f78c9c7
more changes
dmitrykozinets Oct 29, 2023
2daa0f6
Distributions
dmitrykozinets Oct 29, 2023
6f0d36f
MorphirCliMain
dmitrykozinets Oct 29, 2023
b3b2540
Distributions.json
dmitrykozinets Oct 29, 2023
b967ba1
MorphirIRFile
dmitrykozinets Oct 29, 2023
65517a1
GatherReferences
dmitrykozinets Oct 29, 2023
cbc9b3e
Store
dmitrykozinets Oct 29, 2023
d1079ea
Store
dmitrykozinets Oct 29, 2023
2a9ced3
Distribution
dmitrykozinets Oct 29, 2023
58ae5f8
Distribution
dmitrykozinets Oct 29, 2023
ce3789b
Distribution
dmitrykozinets Oct 29, 2023
8747bd3
DistributionGen
dmitrykozinets Oct 29, 2023
e6ee2fc
DistributionGen
dmitrykozinets Oct 29, 2023
9652240
DistributionGen
dmitrykozinets Oct 29, 2023
90a75f7
MorphirJsonDecodingSupport
dmitrykozinets Oct 29, 2023
9a7dd3f
MorphirJsonDecodingSupport
dmitrykozinets Oct 29, 2023
caf2b6e
MorphirJsonDecodingSupportV1
dmitrykozinets Oct 29, 2023
11b3c4e
MorphirJsonDecodingSupportV1
dmitrykozinets Oct 29, 2023
0e9b234
MorphirJsonDecodingSupportV2
dmitrykozinets Oct 29, 2023
5cecdfa
MorphirJsonEncodingSupportV2
dmitrykozinets Oct 29, 2023
338fd51
Encoder
dmitrykozinets Oct 29, 2023
ef217be
Encoder more
dmitrykozinets Oct 29, 2023
d029889
EncoderV1
dmitrykozinets Oct 29, 2023
719dd08
EncoderV1 more
dmitrykozinets Oct 29, 2023
3aefcab
EncoderV2
dmitrykozinets Oct 29, 2023
a53b830
EncoderV2 more
dmitrykozinets Oct 29, 2023
32d842c
DecoderSpec
dmitrykozinets Oct 29, 2023
85489f7
DecodingSpec more
dmitrykozinets Oct 29, 2023
192c54f
DecodingSpec more
dmitrykozinets Oct 29, 2023
24cc10f
Update MorphirJsonDecodingSpec.scala
dmitrykozinets Oct 29, 2023
11aaf2b
Update MorphirJsonDecodingSpecV1.scala
dmitrykozinets Oct 29, 2023
8d3b473
Update MorphirJsonDecodingSpecV2.scala
dmitrykozinets Oct 29, 2023
7fb85f1
Update MorphirJsonEncodingSpec.scala
dmitrykozinets Oct 29, 2023
21deac1
Update MorphirJsonEncodingSpecV1.scala
dmitrykozinets Oct 29, 2023
1ca0e5e
Update MorphirJsonEncodingSpecV2.scala
dmitrykozinets Oct 29, 2023
c0374bc
MorphirBundle
dmitrykozinets Oct 29, 2023
47a54c8
Update MorphirBundle.scala
dmitrykozinets Oct 29, 2023
ce888e4
fix tests
dmitrykozinets Oct 31, 2023
de719f1
Distribution
dmitrykozinets Oct 31, 2023
34109ce
refactor bundle
dmitrykozinets Oct 31, 2023
10f30f0
MorphirBundlePlatformSpecific
dmitrykozinets Oct 31, 2023
8feda25
MorphirBundle
dmitrykozinets Oct 31, 2023
03339c2
MorphirBundle
dmitrykozinets Oct 31, 2023
2dad8c9
MorphirBundle
dmitrykozinets Oct 31, 2023
df408b8
Update MorphirBundlePlatformSpecific.scala
dmitrykozinets Oct 31, 2023
9baaa34
fix Store
dmitrykozinets Oct 31, 2023
17d57be
MorphirBundlePlatformSpecific
dmitrykozinets Oct 31, 2023
934bdbe
MorphirBundlePlatformSpecific
dmitrykozinets Oct 31, 2023
9592084
MorphirBundlePlatformSpecific
dmitrykozinets Oct 31, 2023
1ae0890
Store
dmitrykozinets Oct 31, 2023
4d4fed0
MorphirBundlePlatformSpecific
dmitrykozinets Oct 31, 2023
acc4f65
MorphirBundlePlatformSpecific
dmitrykozinets Oct 31, 2023
0f3868d
MorphirBundlePlatformSpecific
dmitrykozinets Oct 31, 2023
86bc35d
fix to MorphirCliMain
dmitrykozinets Nov 3, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -614,8 +614,29 @@ trait MorphirJsonDecodingSupport {
)
}

implicit def libDecoder: JsonDecoder[Lib] = {
case class LibTemp(dependencies: List[(PackageName, UPackageSpecification)], packageDef: PackageDefinition.Typed)
lazy val dec: JsonDecoder[LibTemp] = DeriveJsonDecoder.gen
dec.map(l => Lib(l.dependencies.map(d => d._1 -> d._2).toMap, l.packageDef))
}

implicit def distributionBundleJsonDecoder: JsonDecoder[Bundle] =
JsonDecoder
.tuple2[String, List[(PackageName, Lib)]]
.mapOrFail {
case ("Bundle", libraries) =>
Right(Bundle(libraries.toMap))
case (other, libraries) =>
Left(
s"Expected Bundle, got $other with libraries: $libraries"
)
}

implicit def distributionDecoder: JsonDecoder[Distribution] =
distributionLibraryJsonDecoder.widen[Distribution]
zio.json.TagBasedParser[Distribution] {
case "Library" => distributionLibraryJsonDecoder.widen[Distribution]
case "Bundle" => distributionBundleJsonDecoder.widen[Distribution]
}

implicit val morphirIRVersionDecoder: JsonDecoder[MorphirIRVersion] = JsonDecoder.int.map {
case 1 => MorphirIRVersion.V1_0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -618,8 +618,29 @@ trait MorphirJsonDecodingSupportV1 {
)
}

implicit def libDecoder: JsonDecoder[Lib] = {
case class LibTemp(dependencies: List[(PackageName, UPackageSpecification)], packageDef: PackageDefinition.Typed)
lazy val dec: JsonDecoder[LibTemp] = DeriveJsonDecoder.gen
dec.map(l => Lib(l.dependencies.map(d => d._1 -> d._2).toMap, l.packageDef))
}

implicit def distributionBundleJsonDecoder: JsonDecoder[Bundle] =
JsonDecoder
.tuple2[String, List[(PackageName, Lib)]]
.mapOrFail {
case ("bundle", libraries) =>
Right(Bundle(libraries.toMap))
case (other, libraries) =>
Left(
s"Expected bundle, got $other with libraries: $libraries"
)
}

implicit def distributionDecoder: JsonDecoder[Distribution] =
distributionLibraryJsonDecoder.widen[Distribution]
zio.json.TagBasedParser[Distribution] {
case "library" => distributionLibraryJsonDecoder.widen[Distribution]
case "bundle" => distributionBundleJsonDecoder.widen[Distribution]
}

implicit val morphirIRVersionDecoder: JsonDecoder[MorphirIRVersion] = JsonDecoder.int.map {
case 1 => MorphirIRVersion.V1_0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -614,8 +614,29 @@ trait MorphirJsonDecodingSupportV2 {
)
}

implicit def libDecoder: JsonDecoder[Lib] = {
case class LibTemp(dependencies: List[(PackageName, UPackageSpecification)], packageDef: PackageDefinition.Typed)
lazy val dec: JsonDecoder[LibTemp] = DeriveJsonDecoder.gen
dec.map(l => Lib(l.dependencies.map(d => d._1 -> d._2).toMap, l.packageDef))
}

implicit def distributionBundleJsonDecoder: JsonDecoder[Bundle] =
JsonDecoder
.tuple2[String, List[(PackageName, Lib)]]
.mapOrFail {
case ("Bundle", libraries) =>
Right(Bundle(libraries.toMap))
case (other, libraries) =>
Left(
s"Expected Bundle, got $other with libraries: $libraries"
)
}

implicit def distributionDecoder: JsonDecoder[Distribution] =
distributionLibraryJsonDecoder.widen[Distribution]
zio.json.TagBasedParser[Distribution] {
case "Library" => distributionLibraryJsonDecoder.widen[Distribution]
case "Bundle" => distributionBundleJsonDecoder.widen[Distribution]
}

implicit val morphirIRVersionDecoder: JsonDecoder[MorphirIRVersion] = JsonDecoder.int.map {
case 1 => MorphirIRVersion.V1_0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -526,10 +526,30 @@ trait MorphirJsonEncodingSupport extends JsonEncodingHelpers {
("Library", packageName, dependencies.toList, packageDef)
}

implicit def libEncoder: JsonEncoder[Lib] =
Json.encoder.contramap[Lib] { lib =>
Json.Obj(
"dependencies" -> toJsonAstOrThrow(
lib.dependencies.toList.map { case (dependencies, packageDef) =>
Json.Arr(toJsonAstOrThrow(dependencies), toJsonAstOrThrow(packageDef))
}
),
"packageDef" -> toJsonAstOrThrow(lib.packageDef)
)
}

implicit def distributionBundleJsonEncoder: JsonEncoder[Bundle] =
JsonEncoder
.tuple2[String, List[(PackageName, Lib)]]
.contramap { case Bundle(libraries) =>
("Bundle", libraries.toList)
}

implicit def distributionEncoder: JsonEncoder[Distribution] =
new JsonEncoder[Distribution] {
def unsafeEncode(a: Distribution, indent: Option[Int], out: Write): Unit = a match {
case library: Library => distributionLibraryJsonEncoder.unsafeEncode(library, indent, out)
case bundle: Bundle => distributionBundleJsonEncoder.unsafeEncode(bundle, indent, out)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -520,10 +520,30 @@ trait MorphirJsonEncodingSupportV1 extends JsonEncodingHelpers {
("library", packageName, dependencies.toList, packageDef)
}

implicit def libEncoder: JsonEncoder[Lib] =
Json.encoder.contramap[Lib] { lib =>
Json.Obj(
"dependencies" -> toJsonAstOrThrow(
lib.dependencies.toList.map { case (dependencies, packageDef) =>
Json.Arr(toJsonAstOrThrow(dependencies), toJsonAstOrThrow(packageDef))
}
),
"packageDef" -> toJsonAstOrThrow(lib.packageDef)
)
}

implicit def distributionBundleJsonEncoder: JsonEncoder[Bundle] =
JsonEncoder
.tuple2[String, List[(PackageName, Lib)]]
.contramap { case Bundle(libraries) =>
("bundle", libraries.toList)
}

implicit def distributionEncoder: JsonEncoder[Distribution] =
new JsonEncoder[Distribution] {
def unsafeEncode(a: Distribution, indent: Option[Int], out: Write): Unit = a match {
case library: Library => distributionLibraryJsonEncoder.unsafeEncode(library, indent, out)
case bundle: Bundle => distributionBundleJsonEncoder.unsafeEncode(bundle, indent, out)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -526,10 +526,30 @@ trait MorphirJsonEncodingSupportV2 extends JsonEncodingHelpers {
("Library", packageName, dependencies.toList, packageDef)
}

implicit def libEncoder: JsonEncoder[Lib] =
Json.encoder.contramap[Lib] { lib =>
Json.Obj(
"dependencies" -> toJsonAstOrThrow(
lib.dependencies.toList.map { case (dependencies, packageDef) =>
Json.Arr(toJsonAstOrThrow(dependencies), toJsonAstOrThrow(packageDef))
}
),
"packageDef" -> toJsonAstOrThrow(lib.packageDef)
)
}

implicit def distributionBundleJsonEncoder: JsonEncoder[Bundle] =
JsonEncoder
.tuple2[String, List[(PackageName, Lib)]]
.contramap { case Bundle(libraries) =>
("Bundle", libraries.toList)
}

implicit def distributionEncoder: JsonEncoder[Distribution] =
new JsonEncoder[Distribution] {
def unsafeEncode(a: Distribution, indent: Option[Int], out: Write): Unit = a match {
case library: Library => distributionLibraryJsonEncoder.unsafeEncode(library, indent, out)
case bundle: Bundle => distributionBundleJsonEncoder.unsafeEncode(bundle, indent, out)
}
}

Expand Down
Loading
0