{-# LANGUAGE DeriveDataTypeable #-} module Propellor.Property.PropellorRepo where import Propellor.Base import Propellor.Git.Config import Propellor.Types.Info -- | Sets the url to use as the origin of propellor's git repository. -- -- By default, the url is taken from the deploy or origin remote of -- the repository that propellor --spin is run in. Setting this property -- overrides that default behavior with a different url. -- -- When hosts are being updated without using -- --spin, eg when using -- the `Propellor.Property.Cron.runPropellor` cron job, this property can -- be set to redirect them to a new git repository url. hasOriginUrl :: String -> Property (HasInfo + UnixLike) hasOriginUrl u = setInfoProperty p (toInfo (InfoVal (OriginUrl u))) where p :: Property UnixLike p = property ("propellor repo url " ++ u) $ do curru <- liftIO getRepoUrl if curru == Just u then return NoChange else makeChange $ setRepoUrl u newtype OriginUrl = OriginUrl String deriving (Show, Typeable)