get rid of cmd date

This commit is contained in:
Jan Tojnar 2018-04-04 16:37:03 +02:00
parent f9365ff916
commit 432a184db5
No known key found for this signature in database
GPG Key ID: 7FAB2A15F7A607A4
3 changed files with 17 additions and 10 deletions

View File

@ -15,6 +15,7 @@ dependencies:
- shelly >= 1.6 && < 1.8 - shelly >= 1.6 && < 1.8
- text - text
- filepath - filepath
- time >= 1.8 && < 1.10
- optparse-applicative - optparse-applicative
- regex-applicative - regex-applicative

View File

@ -29,9 +29,9 @@ fixSrcUrl :: Text -> Version -> Version -> FilePath -> Text -> Text -> Sh Text
fixSrcUrl packageName oldVersion newVersion derivationFile attrPath oldSrcUrl = do fixSrcUrl packageName oldVersion newVersion derivationFile attrPath oldSrcUrl = do
nixpkgsPath <- setupNixpkgs nixpkgsPath <- setupNixpkgs
oldDerivationName <- cmd "nix" "eval" "-f" nixpkgsPath "--raw" ("pkgs." <> attrPath <> ".name") oldDerivationName <- T.strip <$> cmd "nix" "eval" "-f" nixpkgsPath "--raw" ("pkgs." <> attrPath <> ".name")
let newDerivationName = T.replace oldVersion newVersion oldDerivationName let newDerivationName = T.replace oldVersion newVersion oldDerivationName
name <- cmd "nix" "eval" "--raw" ("(let pkgs = import ./. {}; in (builtins.parseDrvName pkgs." <> attrPath <> ".name).name)") name <- T.strip <$> cmd "nix" "eval" "--raw" ("(let pkgs = import ./. {}; in (builtins.parseDrvName pkgs." <> attrPath <> ".name).name)")
whenM (succeded $ cmd "grep" "-q" ("name = \"" <> newDerivationName <> "\"") derivationFile) $ do whenM (succeded $ cmd "grep" "-q" ("name = \"" <> newDerivationName <> "\"") derivationFile) $ do
-- Separate name and version -- Separate name and version

View File

@ -14,6 +14,8 @@ import Data.Maybe (fromMaybe)
import Data.Semigroup ((<>)) import Data.Semigroup ((<>))
import qualified Data.Text as T import qualified Data.Text as T
import Data.Text (Text) import Data.Text (Text)
import Data.Time.Clock (UTCTime, addUTCTime, diffUTCTime, getCurrentTime)
import Data.Time.Format (defaultTimeLocale, formatTime, iso8601DateFormat)
import Shelly import Shelly
import Utils (ExitCode(..), Options(..), Version, canFail, checkAttrPathVersion, orElse, parseUpdates, setupNixpkgs, tRead) import Utils (ExitCode(..), Options(..), Version, canFail, checkAttrPathVersion, orElse, parseUpdates, setupNixpkgs, tRead)
@ -85,7 +87,8 @@ push branchName options =
cmd "git" "push" "--set-upstream" "origin" branchName "--force" cmd "git" "push" "--set-upstream" "origin" branchName "--force"
log' logFile msg = do log' logFile msg = do
runDate <- T.strip <$> cmd "date" "-Iseconds" -- TODO: switch to Data.Time.Format.ISO8601 once time-1.9.0 is available
runDate <- T.pack . formatTime defaultTimeLocale (iso8601DateFormat (Just "%H:%M:%S")) <$> liftIO getCurrentTime
appendfile logFile (runDate <> " " <> msg <> "\n") appendfile logFile (runDate <> " " <> msg <> "\n")
updateAll :: Options -> Sh () updateAll :: Options -> Sh ()
@ -102,9 +105,10 @@ updateAll options = do
appendfile logFile "\n\n" appendfile logFile "\n\n"
log "New run of ups.sh" log "New run of ups.sh"
updateLoop options log (parseUpdates updates) 0 currentTime <- liftIO getCurrentTime
updateLoop options log (parseUpdates updates) currentTime
updateLoop :: Options -> (Text -> Sh ()) -> [(Text, Version, Version)] -> Int -> Sh () updateLoop :: Options -> (Text -> Sh ()) -> [(Text, Version, Version)] -> UTCTime -> Sh ()
updateLoop _ log [] _ = log "ups.sh finished" updateLoop _ log [] _ = log "ups.sh finished"
updateLoop options log ((package, oldVersion, newVersion):moreUpdates) okToPrAt = do updateLoop options log ((package, oldVersion, newVersion):moreUpdates) okToPrAt = do
log package log package
@ -119,14 +123,15 @@ updateLoop options log ((package, oldVersion, newVersion):moreUpdates) okToPrAt
okToPrAt <- okToPrAt <-
if updated then do if updated then do
log "SUCCESS" log "SUCCESS"
tRead <$> cmd "date" "+%s" "-d" "+15 minutes" -- current time + 15 minutes
addUTCTime (fromInteger $ 15 * 60) <$> liftIO getCurrentTime
else do else do
log "FAIL" log "FAIL"
return okToPrAt return okToPrAt
updateLoop options log moreUpdates okToPrAt updateLoop options log moreUpdates okToPrAt
updatePackage :: Options -> (Text -> Sh ()) -> Text -> Version -> Version -> Int -> Sh Bool updatePackage :: Options -> (Text -> Sh ()) -> Text -> Version -> Version -> UTCTime -> Sh Bool
updatePackage options log packageName oldVersion newVersion okToPrAt = do updatePackage options log packageName oldVersion newVersion okToPrAt = do
nixpkgsPath <- setupNixpkgs nixpkgsPath <- setupNixpkgs
@ -274,11 +279,12 @@ updatePackage options log packageName oldVersion newVersion okToPrAt = do
let prMessage = commitMessage <> brokenWarning <> maintainersCc let prMessage = commitMessage <> brokenWarning <> maintainersCc
unless (dryRun options) $ do unless (dryRun options) $ do
current <- tRead <$> cmd "date" "+%s" current <- liftIO getCurrentTime
when (current < okToPrAt) $ do when (current < okToPrAt) $ do
let sleepSeconds = okToPrAt - current let sleepSeconds = diffUTCTime okToPrAt current
echo $ "Sleeping " <> T.pack (show sleepSeconds) <> " seconds." echo $ "Sleeping " <> T.pack (show sleepSeconds) <> " seconds."
sleep sleepSeconds -- TODO: use nominalDiffTimeToSeconds once time-1.9.1 is available
sleep (fromEnum sleepSeconds)
cmd "hub" "pull-request" "-m" prMessage cmd "hub" "pull-request" "-m" prMessage