diff --git a/app/Main.hs b/app/Main.hs index 5b888b4..3ea1539 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -78,14 +78,17 @@ updatePackage Package{..} version = do } Package.Updater _ downloadTemplate = latest + repository' <- SlackBuilderT $ asks repository uri' <- liftIO $ Package.renderDownloadWithVersion downloadTemplate version - let tarball = "slackbuilds/development/universal-ctags/ctags-#{version}.tar.gz" + let relativeTarball = Text.replace "#{version}" version + "development/universal-ctags/ctags-#{version}.tar.gz" + tarball = repository' Text.unpack relativeTarball + liftIO $ putStrLn + $ "Downloading " <> Text.unpack (URI.render uri') <> " to " <> tarball <> "." checksum <- fromMaybe undefined <$> download uri' tarball - download' <- liftIO - $ mkURI + download' <- liftIO $ mkURI $ Text.replace "#{version}" version "https://download.dlackware.com/hosted-sources/universal-ctags/ctags-#{version}.tar.gz" - repository' <- SlackBuilderT $ asks repository let infoFilePath = repository' Text.unpack packagePath (Text.unpack name <.> "info") @@ -93,8 +96,9 @@ updatePackage Package{..} version = do $ Package.infoTemplate package' [Package.Download download' checksum False] updateSlackBuildVersion packagePath version - remotePath' <- SlackBuilderT $ asks remotePath - uploadCommand (Text.pack tarball) $ remotePath' <> "/universal-ctags" + liftIO $ putStrLn + $ "Upload the source tarball " <> Text.unpack relativeTarball + uploadCommand relativeTarball "/universal-ctags" commit packagePath version diff --git a/app/SlackBuilder/Download.hs b/app/SlackBuilder/Download.hs index 5d4cb8d..d5bd7e8 100644 --- a/app/SlackBuilder/Download.hs +++ b/app/SlackBuilder/Download.hs @@ -77,8 +77,14 @@ commit :: Text -> Text -> SlackBuilderT () commit packagePath version = do branch' <- SlackBuilderT $ Text.unpack <$> asks branch repository' <- SlackBuilderT $ asks repository + signature' <- SlackBuilderT $ asks $ signature . maintainer let message = Text.unpack $ packagePath <> ": Updated for version " <> version + mainCommitArguments = ["-C", repository', "commit", "-m", message] + commitArguments = + if signature' + then mainCommitArguments <> ["-S"] + else mainCommitArguments (checkoutExitCode, _, _) <- liftIO $ withFile "/dev/null" WriteMode @@ -89,7 +95,7 @@ commit packagePath version = do $ callProcess "git" ["-C", repository', "checkout", "-b", branch', "master"] liftIO $ callProcess "git" ["-C", repository', "add", Text.unpack packagePath] - >> callProcess "git" ["-C", repository', "commit", "-S", "-m", message] + >> callProcess "git" commitArguments where testCheckout repository' branch' nullHandle = let createCheckoutProcess = (proc "git" ["-C", repository', "checkout", branch']) diff --git a/config/config.toml.example b/config/config.toml.example index dce29ef..97decdd 100644 --- a/config/config.toml.example +++ b/config/config.toml.example @@ -7,3 +7,4 @@ remote_path = "example.com:/srv/httpd/some/path" [maintainer] name = "Maintainer Name" email = "maintainer@example.com" +signature = false diff --git a/lib/SlackBuilder/Config.hs b/lib/SlackBuilder/Config.hs index c2a7f0b..1cb493b 100644 --- a/lib/SlackBuilder/Config.hs +++ b/lib/SlackBuilder/Config.hs @@ -20,6 +20,7 @@ data Settings = Settings data MaintainerSettings = MaintainerSettings { name :: !Text , email :: !Text + , signature :: !Bool } deriving (Eq, Show) settingsCodec :: Toml.TomlCodec Settings @@ -35,3 +36,4 @@ maintainerSettingsCodec :: Toml.TomlCodec MaintainerSettings maintainerSettingsCodec = MaintainerSettings <$> Toml.text "name" .= name <*> Toml.text "email" .= email + <*> Toml.bool "signature" .= signature