diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Main.hs | 25 | ||||
| -rw-r--r-- | src/SlackBuilder/LatestVersionCheck.hs | 7 |
2 files changed, 18 insertions, 14 deletions
diff --git a/src/Main.hs b/src/Main.hs index e59cae7..a177b00 100644 --- a/src/Main.hs +++ b/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 diff --git a/src/SlackBuilder/LatestVersionCheck.hs b/src/SlackBuilder/LatestVersionCheck.hs index a66d2c7..233ea3c 100644 --- a/src/SlackBuilder/LatestVersionCheck.hs +++ b/src/SlackBuilder/LatestVersionCheck.hs @@ -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 |
