From aa113848a5884f95d543c2acecb55321db23b3ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sun, 19 Jan 2025 14:06:29 +0100 Subject: Option to run tasks for new commits on branch --- src/Command.hs | 3 ++ src/Command/Run.hs | 156 ++++++++++++++++++++++++++++++++++++++++++++--------- src/Repo.hs | 14 +++-- 3 files changed, 144 insertions(+), 29 deletions(-) diff --git a/src/Command.hs b/src/Command.hs index c602ba8..c765cfd 100644 --- a/src/Command.hs +++ b/src/Command.hs @@ -69,6 +69,9 @@ instance CommandArgumentsType (Maybe Text) where argsFromStrings [str] = return $ Just (T.pack str) argsFromStrings _ = throwError "expected at most one argument" +instance CommandArgumentsType [ Text ] where + argsFromStrings strs = return $ map T.pack strs + newtype CommandExec a = CommandExec (ReaderT CommandInput IO a) deriving (Functor, Applicative, Monad, MonadIO) diff --git a/src/Command/Run.hs b/src/Command/Run.hs index 14341cd..52b70f3 100644 --- a/src/Command/Run.hs +++ b/src/Command/Run.hs @@ -9,11 +9,13 @@ import Control.Monad import Control.Monad.Reader import Data.List -import Data.Maybe import Data.Text (Text) import Data.Text qualified as T +import Data.Text.IO qualified as T +import System.Console.GetOpt import System.Exit +import System.IO import System.Process import Command @@ -23,13 +25,18 @@ import Repo import Terminal -data RunCommand = RunCommand Text +data RunCommand = RunCommand RunOptions [ Text ] + +data RunOptions = RunOptions + { roRanges :: [ Text ] + , roNewCommitsOn :: [ Text ] + } instance Command RunCommand where commandName _ = "run" commandDescription _ = "Execude jobs per minici.yaml for given commits" - type CommandArguments RunCommand = Maybe Text + type CommandArguments RunCommand = [ Text ] commandUsage _ = T.pack $ unlines $ [ "Usage: minici run" @@ -38,36 +45,121 @@ instance Command RunCommand where , " run jobs for commits on not yet in its upstream ref" , " or: minici run .." , " run jobs for commits in given range" + , " or: minici run