Use consistent directory for cloning repositories
... with submodules.
This commit is contained in:
25
src/Main.hs
25
src/Main.hs
@ -234,9 +234,9 @@ autoUpdatable =
|
||||
let dubArguments = PackageOwner{ owner = "dlang", name = "dub" }
|
||||
dscannerArguments = PackageOwner{ owner = "dlang-community", name = "D-Scanner" }
|
||||
dcdArguments = PackageOwner{ owner = "dlang-community", name = "DCD" }
|
||||
latestDub = latestGitHub dubArguments pure
|
||||
latestDscanner = latestGitHub dscannerArguments pure
|
||||
latestDcd = latestGitHub dcdArguments pure
|
||||
latestDub = latestGitHub dubArguments stableTagTransform
|
||||
latestDscanner = latestGitHub dscannerArguments stableTagTransform
|
||||
latestDcd = latestGitHub dcdArguments stableTagTransform
|
||||
dubTemplate = Package.DownloadTemplate
|
||||
$ Package.StaticPlaceholder "https://codeload.github.com/dlang/dub/tar.gz/v"
|
||||
:| [Package.VersionPlaceholder]
|
||||
@ -315,17 +315,16 @@ updateDownload Package{..} Package.Updater{..} = do
|
||||
|
||||
cloneFromGit :: URI -> Text -> Text -> Text -> SlackBuilderT Package.Download
|
||||
cloneFromGit repo tagPrefix packagePath version = do
|
||||
repository' <- SlackBuilderT $ asks repository
|
||||
let downloadFileName = URI.unRText
|
||||
$ NonEmpty.last $ snd $ fromJust $ URI.uriPath repo
|
||||
relativeTarball = Text.unpack packagePath
|
||||
</> (dropExtension (Text.unpack downloadFileName) <> "-" <> Text.unpack version)
|
||||
tarball = repository' </> relativeTarball
|
||||
name' = Text.pack (takeBaseName $ Text.unpack packagePath)
|
||||
checksum <- clone (URI.render repo) (Text.pack tarball) tagPrefix
|
||||
uploadCommand (Text.pack relativeTarball) ("/" <> name')
|
||||
(flip . flip Package.Download) (fromJust checksum) False
|
||||
<$> liftIO (mkURI $ "https://download.dlackware.com/hosted-sources/" <> name' <> "/" <> downloadFileName)
|
||||
(uri', checksum) <- fromJust <$> cloneAndUpload (URI.render repo) relativeTarball tagPrefix
|
||||
pure $ Package.Download
|
||||
{ md5sum = checksum
|
||||
, is64 = False
|
||||
, download = uri'
|
||||
}
|
||||
|
||||
downloadWithTemplate :: Package.DownloadTemplate -> Bool -> Text -> Text -> SlackBuilderT Package.Download
|
||||
downloadWithTemplate downloadTemplate is64' packagePath version = do
|
||||
@ -345,7 +344,7 @@ reuploadWithTemplate downloadTemplate commands packagePath version = do
|
||||
let downloadFileName = URI.unRText
|
||||
$ NonEmpty.last $ snd $ fromJust $ URI.uriPath uri'
|
||||
relativeTarball = packagePath <> "/" <> downloadFileName
|
||||
download' <- handleReupload relativeTarball downloadFileName
|
||||
download' <- handleReupload (Text.unpack relativeTarball) downloadFileName
|
||||
|
||||
pure $ Package.Download download' checksum False
|
||||
where
|
||||
@ -355,14 +354,14 @@ reuploadWithTemplate downloadTemplate commands packagePath version = do
|
||||
case commands of
|
||||
[] -> uploadTarball relativeTarball downloadFileName
|
||||
_ ->
|
||||
let tarballPath = repository' </> Text.unpack relativeTarball
|
||||
let tarballPath = repository' </> relativeTarball
|
||||
packedDirectory = takeBaseName $ dropExtension tarballPath
|
||||
in liftIO (callProcess "tar" ["xvf", tarballPath])
|
||||
>> liftIO (traverse (defaultCreateProcess packedDirectory) commands)
|
||||
>> liftIO (callProcess "tar" ["Jcvf", tarballPath, packedDirectory])
|
||||
>> uploadTarball relativeTarball downloadFileName
|
||||
uploadTarball relativeTarball downloadFileName
|
||||
= liftIO (putStrLn $ "Upload the source tarball " <> Text.unpack relativeTarball)
|
||||
= liftIO (putStrLn $ "Upload the source tarball " <> relativeTarball)
|
||||
>> uploadCommand relativeTarball ("/" <> name')
|
||||
>> liftIO (mkURI $ "https://download.dlackware.com/hosted-sources/" <> name' <> "/" <> downloadFileName)
|
||||
defaultCreateProcess cwd' cmdSpec
|
||||
|
@ -46,6 +46,7 @@ import qualified Data.Aeson.KeyMap as KeyMap
|
||||
import GHC.Records (HasField(..))
|
||||
import Control.Monad.Trans.Reader (asks)
|
||||
import Control.Monad.IO.Class (MonadIO(..))
|
||||
import Control.Monad ((>=>))
|
||||
|
||||
data PackageOwner = PackageOwner
|
||||
{ owner :: Text
|
||||
@ -55,7 +56,11 @@ data PackageOwner = PackageOwner
|
||||
-- | Removes the leading "v" from the version string and returns the result if
|
||||
-- it looks like a version.
|
||||
stableTagTransform :: Text -> Maybe Text
|
||||
stableTagTransform = Text.stripPrefix "v"
|
||||
stableTagTransform = Text.stripPrefix "v" >=> checkForStable
|
||||
where
|
||||
checkForStable tag
|
||||
| '-' `Text.elem` tag = Nothing
|
||||
| otherwise = Just tag
|
||||
|
||||
-- * Packagist
|
||||
|
||||
|
Reference in New Issue
Block a user