@@ -34,7 +34,7 @@ import Language.PipeScript.Parser
3434import Path
3535import System.Environment (getEnv , getEnvironment )
3636import Data.List ( groupBy , sortBy )
37- import Path.IO (getCurrentDir )
37+ import Path.IO (getCurrentDir , AnyPath ( makeRelative ) )
3838import Data.Maybe (fromMaybe )
3939
4040data Value
@@ -59,7 +59,7 @@ instance Show Value where
5959 show (ValList x) = show x
6060 show ValUnit = show ()
6161
62- value2Str :: Value -> String
62+ value2Str :: Value -> String
6363value2Str (ValInt x) = show x
6464value2Str (ValStr x) = x
6565value2Str (ValSymbol x) = x
@@ -79,10 +79,10 @@ data Task = Task
7979 operationName :: String ,
8080 arguments :: [Value ],
8181 context :: Context
82- }
82+ }
8383
8484instance Eq Task where
85- a == b =
85+ a == b =
8686 inputFiles a == inputFiles b &&
8787 outputFiles a == outputFiles b &&
8888 dirty a == dirty b &&
@@ -188,6 +188,16 @@ getVariable (Variable (Identifier "cd")) = do
188188 rel <- scriptDir . curScript <$> get
189189 cd <- getCurrentDir
190190 return $ ValStr $ toFilePath $ cd </> rel
191+ getVariable (Variable (Identifier " input" )) = do
192+ t <- curTask <$> get
193+ cd <- currentWorkAbsDir
194+ files <- liftIO $ mapM (makeRelative cd) $ maybe [] inputFiles t
195+ return $ ValList $ ValStr . toFilePath <$> files
196+ getVariable (Variable (Identifier " output" )) = do
197+ t <- curTask <$> get
198+ cd <- currentWorkAbsDir
199+ files <- liftIO $ mapM (makeRelative cd) $ maybe [] outputFiles t
200+ return $ ValList $ ValStr . toFilePath <$> files
191201getVariable v = do
192202 vars <- variables <$> get
193203 case vars !? v of
@@ -196,6 +206,7 @@ getVariable v = do
196206 where
197207 (Variable (Identifier vn)) = v
198208
209+
199210getVariables :: Interpreter [(Variable , Value )]
200211getVariables = toList . variables <$> get
201212
0 commit comments