|
| 1 | +module Main.Config.Package exposing (..) |
| 2 | + |
| 3 | +import Json.Decode as Decode exposing (Decoder) |
| 4 | +import Main.Helpers.String exposing (..) |
| 5 | + |
| 6 | + |
| 7 | +type alias Package = |
| 8 | + { package_name : PackageName |
| 9 | + , package_description : String |
| 10 | + , package_version : String |
| 11 | + , package_homePage : String |
| 12 | + , package_mainProgram : String |
| 13 | + , package_license : PackageLicense |
| 14 | + , package_source : PackageSource |
| 15 | + } |
| 16 | + |
| 17 | + |
| 18 | +decodePackage : Decoder Package |
| 19 | +decodePackage = |
| 20 | + Decode.map7 Package |
| 21 | + (Decode.field "name" Decode.string) |
| 22 | + (Decode.field "description" Decode.string) |
| 23 | + (Decode.field "version" Decode.string) |
| 24 | + (Decode.field "homePage" Decode.string) |
| 25 | + (Decode.field "mainProgram" Decode.string) |
| 26 | + (Decode.field "license" decodeLicense) |
| 27 | + (Decode.field "source" decodeSource) |
| 28 | + |
| 29 | + |
| 30 | +type alias PackageName = |
| 31 | + String |
| 32 | + |
| 33 | + |
| 34 | +type alias PackageSource = |
| 35 | + { source_git : Maybe String |
| 36 | + , source_url : Maybe String |
| 37 | + , source_path : Maybe String |
| 38 | + , source_hash : String |
| 39 | + , source_patches : List String |
| 40 | + } |
| 41 | + |
| 42 | + |
| 43 | +decodeSource : Decoder PackageSource |
| 44 | +decodeSource = |
| 45 | + Decode.map5 PackageSource |
| 46 | + (Decode.field "git" (Decode.maybe Decode.string)) |
| 47 | + (Decode.field "url" (Decode.maybe Decode.string)) |
| 48 | + (Decode.field "path" (Decode.maybe Decode.string)) |
| 49 | + (Decode.field "hash" Decode.string) |
| 50 | + (Decode.field "patches" (Decode.list Decode.string)) |
| 51 | + |
| 52 | + |
| 53 | +type alias PackageLicense = |
| 54 | + { license_deprecated : Bool |
| 55 | + , license_free : Bool |
| 56 | + , license_fullName : String |
| 57 | + , license_redistributable : Bool |
| 58 | + , license_shortName : String |
| 59 | + , license_spdxId : String |
| 60 | + , license_url : String |
| 61 | + } |
| 62 | + |
| 63 | + |
| 64 | +decodeLicense : Decoder PackageLicense |
| 65 | +decodeLicense = |
| 66 | + Decode.map7 PackageLicense |
| 67 | + (Decode.field "deprecated" Decode.bool) |
| 68 | + (Decode.field "free" Decode.bool) |
| 69 | + (Decode.field "fullName" Decode.string) |
| 70 | + (Decode.field "redistributable" Decode.bool) |
| 71 | + (Decode.field "shortName" Decode.string) |
| 72 | + (Decode.field "spdxId" Decode.string) |
| 73 | + (Decode.field "url" Decode.string) |
0 commit comments