Skip to content

Commit

Permalink
Merge pull request #24 from cabalism/fix/intros-23
Browse files Browse the repository at this point in the history
Reuse intros and drop empty dependency sections
philderbeast authored Dec 4, 2023
2 parents 16c44ad + 2af5a96 commit 25a1b64
Showing 6 changed files with 130 additions and 65 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -11,6 +11,9 @@
for Cabal.
* The grammar of the comment describing source package dependencies and forks is
better, no longer saying 1 packages.
* With `dhall2cabal` or `dhall2stack` generated projects, source dependencies
and their commentary are only included if there are dependencies in a
category; internal or external, dependency or fork.

### 1.0.0
* First release
93 changes: 59 additions & 34 deletions text-templates/dhall2cabal.dhall
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
let TYPES = ../types.dhall

let length = https://prelude.dhall-lang.org/List/length
let L = https://prelude.dhall-lang.org/List/package.dhall

let show = https://prelude.dhall-lang.org/Natural/show
let N = https://prelude.dhall-lang.org/Natural/package.dhall

let concatMapSep = https://prelude.dhall-lang.org/Text/concatMapSep

let counts = ./internal/comments/counts.dhall

let intros = ./internal/comments/intros.dhall

in \(stackage-location : TYPES.Stackage) ->
\(stackage-resolver : Text) ->
\(pkg-set : TYPES.PkgSet) ->
@@ -33,9 +35,9 @@ in \(stackage-location : TYPES.Stackage) ->
deps-external # deps-internal # forks-external # forks-internal

let count =
\(xs : List TYPES.SourceRepoPkg) -> length TYPES.SourceRepoPkg xs
\(xs : List TYPES.SourceRepoPkg) -> L.length TYPES.SourceRepoPkg xs

let countPkgs = \(xs : List Text) -> show (length Text xs)
let countPkgs = \(xs : List Text) -> N.show (L.length Text xs)

let pkgs =
merge
@@ -59,40 +61,63 @@ in \(stackage-location : TYPES.Stackage) ->

let cabal = ./cabal/package.dhall

let deps-count-comment =
concatMapSep
"\n"
Text
(\(s : Text) -> "-- ${s}")
( counts
{ deps-external = count deps-external
, deps-internal = count deps-internal
, forks-external = count forks-external
, forks-internal = count forks-internal
}
)
let comment = concatMapSep "\n" Text (\(s : Text) -> "-- ${s}")

let dep-counts =
{ deps-external = count deps-external
, deps-internal = count deps-internal
, forks-external = count forks-external
, forks-internal = count forks-internal
}

let deps-count-comment = comment (counts dep-counts)

in ''
${./import-stackage.dhall stackage-location stackage-resolver}

in ''
${./import-stackage.dhall stackage-location stackage-resolver}
${pkgs-comment}
${cabal.packages pkgs}''
++ ( if L.null TYPES.SourceRepoPkg source-deps
then ""
else ''

${pkgs-comment}
${cabal.packages pkgs}
${deps-count-comment}''
++ ( if N.isZero dep-counts.deps-external
then ""
else ''

${deps-count-comment}
-- Source Packages, external (3rd party).
${cabal.repo-items deps-external}

-- Source Packages, internal to this organisation (private and public).
${cabal.repo-items deps-internal}
${comment intros.deps-external}
${cabal.repo-items deps-external}''
)
++ ( if N.isZero dep-counts.deps-internal
then ""
else ''

-- Source Packages, external (3rd party) forks of other repositories.
-- Can we help upstream?
${cabal.repo-items forks-external}

-- Source Packages, internal forks of other repositories.
-- Can we upstream and unfork?
${cabal.repo-items forks-internal}
${comment intros.deps-internal}
${cabal.repo-items deps-internal}''
)
++ ( if N.isZero dep-counts.forks-external
then ""
else ''


${comment intros.forks-external}
${cabal.repo-items forks-external}''
)
++ ( if N.isZero dep-counts.forks-internal
then ""
else ''


${comment intros.forks-internal}
${cabal.repo-items forks-internal}''
)
)
++ ''


-- Constraints are equivalent to stack package-version extra dependencies.
${cabal.constraints pkg-config.constraints}
''
-- Version equality constraints.
${cabal.constraints pkg-config.constraints}
''
81 changes: 50 additions & 31 deletions text-templates/dhall2stack.dhall
Original file line number Diff line number Diff line change
@@ -2,12 +2,14 @@ let TYPES = ../types.dhall

let L = https://prelude.dhall-lang.org/List/package.dhall

let show = https://prelude.dhall-lang.org/Natural/show
let N = https://prelude.dhall-lang.org/Natural/package.dhall

let concatMapSep = https://prelude.dhall-lang.org/Text/concatMapSep

let counts = ./internal/comments/counts.dhall

let intros = ./internal/comments/intros.dhall

in \(stackage-resolver : Text) ->
\(pkg-set : TYPES.PkgSet) ->
\ ( pkg-config
@@ -34,7 +36,7 @@ in \(stackage-resolver : Text) ->
let count =
\(xs : List TYPES.SourceRepoPkg) -> L.length TYPES.SourceRepoPkg xs

let countPkgs = \(xs : List Text) -> show (L.length Text xs)
let countPkgs = \(xs : List Text) -> N.show (L.length Text xs)

let pkgs =
merge
@@ -57,18 +59,17 @@ in \(stackage-resolver : Text) ->

let stack = ./stack/package.dhall

let deps-count-comment =
concatMapSep
"\n"
Text
(\(s : Text) -> "# ${s}")
( counts
{ deps-external = count deps-external
, deps-internal = count deps-internal
, forks-external = count forks-external
, forks-internal = count forks-internal
}
)
let comment = concatMapSep "\n" Text (\(s : Text) -> "# ${s}")
let nested-comment = concatMapSep "\n" Text (\(s : Text) -> " # ${s}")

let dep-counts =
{ deps-external = count deps-external
, deps-internal = count deps-internal
, forks-external = count forks-external
, forks-internal = count forks-internal
}

let deps-count-comment = comment (counts dep-counts)

in ''
resolver: ${stackage-resolver}
@@ -80,21 +81,39 @@ in \(stackage-resolver : Text) ->
++ ( if L.null TYPES.SourceRepoPkg source-deps
&& L.null TYPES.PkgVer pkg-config.constraints
then "extra-deps: []"
else ''
extra-deps:

# Source Packages, external (3rd party).
${stack.repo-items deps-external}
# Source Packages, internal to this organisation (private and public).
${stack.repo-items deps-internal}
# Source Packages, external (3rd party) forks of other repositories.
# Can we help upstream?
${stack.repo-items forks-external}
# Source Packages, internal forks of other repositories.
# Can we upstream and unfork?
${stack.repo-items forks-internal}
# Package versions for published packages either not on Stackage or
# not matching the version on Stackage for the resolver we use.
# These package-version extra dependencies are equivalent to cabal constraints.
${stack.constraints pkg-config.constraints}''
else "extra-deps:\n"
++ ( if N.isZero dep-counts.deps-external
then ""
else ''

${nested-comment intros.deps-external}
${stack.repo-items deps-external}''
)
++ ( if N.isZero dep-counts.deps-internal
then ""
else ''

${nested-comment intros.deps-internal}
${stack.repo-items deps-internal}''
)
++ ( if N.isZero dep-counts.forks-external
then ""
else ''

${nested-comment intros.forks-external}
${stack.repo-items forks-external}''
)
++ ( if N.isZero dep-counts.forks-internal
then ""
else ''

${nested-comment intros.forks-internal}
${stack.repo-items forks-internal}''
)
++ ''

# Package versions for published packages either not on Stackage or
# not matching the version on Stackage for the resolver we use.
# These package-version extra dependencies are equivalent to cabal constraints.
${stack.constraints pkg-config.constraints}''
)
12 changes: 12 additions & 0 deletions text-templates/internal/comments/intros.dhall
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{ deps-external = [ "Source Packages, external (3rd party)." ]
, deps-internal =
[ "Source Packages, internal to this organisation (private and public)." ]
, forks-external =
[ "Source Packages, external (3rd party) forks of other repositories."
, "Can we help upstream?"
]
, forks-internal =
[ "Source Packages, internal forks of other repositories."
, "Can we upstream and unfork?"
]
}
1 change: 1 addition & 0 deletions types.dhall
Original file line number Diff line number Diff line change
@@ -5,4 +5,5 @@
, CabalRelativity = ./types/CabalRelativity.dhall
, Stackage = ./types/Stackage.dhall
, DepCounts = ./types/DepCounts.dhall
, DepIntros = ./types/DepIntros.dhall
}
5 changes: 5 additions & 0 deletions types/DepIntros.dhall
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{ deps-external : List Text
, deps-internal : List Text
, forks-external : List Text
, forks-internal : List Text
}

0 comments on commit 25a1b64

Please sign in to comment.