Skip to content

Commit 94644ae

Browse files
authored
Merge pull request #119 from input-output-hk/nm/remove-force-version
Remove version-forcing and use `0.cabal` whenever it exists
2 parents 5283d01 + 5731680 commit 94644ae

12 files changed

Lines changed: 90 additions & 47 deletions

File tree

app/Foliage/CmdBuild.hs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,15 +242,13 @@ makeMetadataFile outputDir packageVersions = traced "writing metadata" $ do
242242
PreparedPackageVersion
243243
{ pkgId = PackageIdentifier{pkgName, pkgVersion}
244244
, pkgTimestamp
245-
, pkgVersionForce
246245
, pkgVersionSource
247246
} =
248247
Aeson.object
249248
( [ "pkg-name" Aeson..= pkgName
250249
, "pkg-version" Aeson..= pkgVersion
251250
, "url" Aeson..= packageVersionSourceToUri pkgVersionSource
252251
]
253-
++ ["forced-version" Aeson..= True | pkgVersionForce]
254252
++ (case pkgTimestamp of Nothing -> []; Just t -> ["timestamp" Aeson..= t])
255253
)
256254

app/Foliage/CmdImportIndex.hs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ importIndex f (Tar.Next e es) m =
6666
, packageVersionTimestamp = Just time
6767
, packageVersionRevisions = []
6868
, packageVersionDeprecations = []
69-
, packageVersionForce = False
7069
}
7170
-- Existing package, new revision
7271
go (Just sm) = do

app/Foliage/CmdRewriteVersion.hs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
module Foliage.CmdRewriteVersion (cmdRewriteVersion) where
2+
3+
import Data.Maybe (fromMaybe)
4+
import Distribution.Compat.Lens (Lens', (&), (.~), (^.))
5+
import Distribution.PackageDescription.PrettyPrint (writeGenericPackageDescription)
6+
import Distribution.Parsec (simpleParsec)
7+
import Distribution.Pretty (prettyShow)
8+
import Distribution.Simple.PackageDescription (readGenericPackageDescription)
9+
import Distribution.Types.Lens (GenericPackageDescription, package, packageDescription, pkgVersion)
10+
import Distribution.Types.Version (Version)
11+
import Distribution.Utils.Path (makeSymbolicPath)
12+
import Distribution.Verbosity (normal)
13+
14+
cmdRewriteVersion
15+
:: String
16+
-- ^ new version
17+
-> FilePath
18+
-- ^ path to @.cabal@ file
19+
-> IO ()
20+
cmdRewriteVersion versionStr cabalPath = do
21+
let
22+
version = fromMaybe (error $ "invalid package version: " <> versionStr) $ simpleParsec versionStr
23+
gpdVersion :: Lens' GenericPackageDescription Version
24+
gpdVersion = packageDescription . package . pkgVersion
25+
gpd <- readGenericPackageDescription normal Nothing (makeSymbolicPath cabalPath)
26+
putStrLn . unwords $
27+
[ "Rewriting the version from"
28+
, prettyShow (gpd ^. gpdVersion)
29+
, "to"
30+
, prettyShow version
31+
, "in"
32+
, cabalPath
33+
]
34+
writeGenericPackageDescription cabalPath $
35+
gpd & gpdVersion .~ version

app/Foliage/Meta.hs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ module Foliage.Meta (
1010
packageVersionSource,
1111
packageVersionRevisions,
1212
packageVersionDeprecations,
13-
packageVersionForce,
1413
PackageVersionSpec (PackageVersionSpec),
1514
readPackageVersionSpec,
1615
writePackageVersionSpec,
@@ -132,8 +131,6 @@ data PackageVersionSpec = PackageVersionSpec
132131
-- ^ revisions
133132
, packageVersionDeprecations :: [DeprecationSpec]
134133
-- ^ deprecations
135-
, packageVersionForce :: Bool
136-
-- ^ force version
137134
}
138135
deriving (Show, Eq, Generic)
139136
deriving anyclass (Binary, Hashable, NFData)
@@ -149,8 +146,6 @@ sourceMetaCodec =
149146
.= packageVersionRevisions
150147
<*> Toml.list deprecationMetaCodec "deprecations"
151148
.= packageVersionDeprecations
152-
<*> withDefault False (Toml.bool "force-version")
153-
.= packageVersionForce
154149

155150
readPackageVersionSpec :: FilePath -> IO PackageVersionSpec
156151
readPackageVersionSpec = Toml.decodeFile sourceMetaCodec

app/Foliage/Options.hs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ data Command
2626
= CreateKeys FilePath
2727
| Build BuildOptions
2828
| ImportIndex ImportIndexOptions
29+
| RewriteVersion String FilePath
2930

3031
parseCommand :: IO Command
3132
parseCommand =
@@ -40,10 +41,12 @@ parseCommand =
4041

4142
optionsParser :: Parser Command
4243
optionsParser =
43-
hsubparser $
44-
command "create-keys" (info createKeysCommand (progDesc "Create TUF keys"))
45-
<> command "build" (info buildCommand (progDesc "Build repository"))
46-
<> command "import-index" (info importIndexCommand (progDesc "Import from Hackage index"))
44+
hsubparser . mconcat $
45+
[ command "create-keys" (info createKeysCommand (progDesc "Create TUF keys"))
46+
, command "build" (info buildCommand (progDesc "Build repository"))
47+
, command "import-index" (info importIndexCommand (progDesc "Import from Hackage index"))
48+
, command "rewrite-version" (info rewriteVersionCommand (progDesc "Rewrite the version in a Cabal file"))
49+
]
4750

4851
data SignOptions
4952
= SignOptsSignWithKeys FilePath
@@ -192,6 +195,12 @@ importIndexCommand =
192195
)
193196
)
194197

198+
rewriteVersionCommand :: Parser Command
199+
rewriteVersionCommand =
200+
RewriteVersion
201+
<$> strArgument (metavar "VERSION" <> help "New version")
202+
<*> strArgument (metavar "FILE" <> help "Cabal file")
203+
195204
toUppercase :: [Char] -> String
196205
toUppercase s =
197206
maybe "" (uncurry (:) . first Char.toUpper) (uncons s)

app/Foliage/PreparePackageVersion.hs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ module Foliage.PreparePackageVersion (
77
pkgId,
88
pkgTimestamp,
99
pkgVersionSource,
10-
pkgVersionForce,
1110
pkgVersionIsDeprecated,
1211
pkgVersionDeprecationChanges,
1312
pkgDesc,
@@ -45,7 +44,6 @@ data PreparedPackageVersion = PreparedPackageVersion
4544
{ pkgId :: PackageId
4645
, pkgTimestamp :: Maybe UTCTime
4746
, pkgVersionSource :: PackageVersionSource
48-
, pkgVersionForce :: Bool
4947
, pkgVersionIsDeprecated :: Bool
5048
, pkgVersionDeprecationChanges :: [(UTCTime, Bool)]
5149
, pkgDesc :: GenericPackageDescription
@@ -208,7 +206,6 @@ preparePackageVersion inputDir metaFile = do
208206
{ pkgId
209207
, pkgTimestamp = packageVersionTimestamp pkgSpec
210208
, pkgVersionSource = packageVersionSource pkgSpec
211-
, pkgVersionForce = packageVersionForce pkgSpec
212209
, pkgVersionDeprecationChanges
213210
, pkgVersionIsDeprecated
214211
, pkgDesc

app/Foliage/PrepareSource.hs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
module Foliage.PrepareSource where
77

8-
import Control.Monad (unless, when)
8+
import Control.Monad (when)
99
import Data.ByteString qualified as BS
1010
import Data.Foldable (for_)
1111
import Development.Shake
@@ -44,7 +44,7 @@ addPrepareSourceRule inputDir cacheDir = addBuiltinRule noLint noIdentity run
4444
run :: PrepareSourceRule -> Maybe BS.ByteString -> RunMode -> Action (RunResult FilePath)
4545
run (PrepareSourceRule pkgId pkgMeta) _old mode = do
4646
let PackageIdentifier{pkgName, pkgVersion} = pkgId
47-
let PackageVersionSpec{packageVersionSource, packageVersionForce} = pkgMeta
47+
let PackageVersionSpec{packageVersionSource} = pkgMeta
4848
let srcDir = cacheDir </> unPackageName pkgName </> prettyShow pkgVersion
4949

5050
case mode of
@@ -81,12 +81,10 @@ addPrepareSourceRule inputDir cacheDir = addBuiltinRule noLint noIdentity run
8181
let patch = patchesDir </> patchfile
8282
cmd_ Shell (Cwd srcDir) (FileStdin patch) "patch -p1"
8383

84-
when packageVersionForce $ do
85-
let revisionZero = inputDir </> unPackageName pkgName </> prettyShow pkgVersion </> "revisions" </> "0" <.> "cabal"
86-
hasRevisionZero <- doesFileExist revisionZero
87-
unless hasRevisionZero $
88-
error $
89-
"force-version requires a modified Cabal file in " ++ revisionZero
84+
let revisionZero = inputDir </> unPackageName pkgName </> prettyShow pkgVersion </> "revisions" </> "0" <.> "cabal"
85+
hasRevisionZero <- doesFileExist revisionZero
86+
87+
when hasRevisionZero $ do
9088
let cabalFilePath = srcDir </> unPackageName pkgName <.> "cabal"
9189
putInfo $ "Copying revision 0 of cabal file to " ++ cabalFilePath
9290
copyFileChanged revisionZero cabalFilePath

app/Foliage/UpdateCabalFile.hs

Lines changed: 0 additions & 19 deletions
This file was deleted.

app/Main.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ module Main where
55
import Foliage.CmdBuild
66
import Foliage.CmdCreateKeys
77
import Foliage.CmdImportIndex
8+
import Foliage.CmdRewriteVersion
89
import Foliage.Options
910
import Main.Utf8 (withUtf8)
1011

@@ -15,3 +16,4 @@ main = withUtf8 $ do
1516
CreateKeys path -> cmdCreateKeys path
1617
Build buildOpts -> cmdBuild buildOpts
1718
ImportIndex importIndexOpts -> cmdImportIndex importIndexOpts
19+
RewriteVersion version file -> cmdRewriteVersion version file

foliage.cabal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ executable foliage
2626
Foliage.CmdBuild
2727
Foliage.CmdCreateKeys
2828
Foliage.CmdImportIndex
29+
Foliage.CmdRewriteVersion
2930
Foliage.FetchURL
3031
Foliage.HackageSecurity
3132
Foliage.Meta
@@ -37,7 +38,6 @@ executable foliage
3738
Foliage.PrepareSdist
3839
Foliage.Shake
3940
Foliage.Time
40-
Foliage.UpdateCabalFile
4141
Foliage.Utils.Aeson
4242
Foliage.Utils.GitHub
4343
Network.URI.Orphans

0 commit comments

Comments
 (0)