@@ -380,19 +380,22 @@ createThunkWithLatest target s = do
380 , _thunkPtr_rev = rev
380 , _thunkPtr_rev = rev
383−updateThunkToLatest :: MonadObelisk m => FilePath -> m ()
383+updateThunkToLatest :: MonadObelisk m => FilePath -> Maybe String -> m ()
384−updateThunkToLatest target = withSpinner' ("Updating thunk " <> T.pack target <> " to latest") (pure $ const $ "Thunk " <> T.pack target <> " updated to latest") $ do
384+updateThunkToLatest target mBranch = withSpinner' ("Updating thunk " <> T.pack target <> " to latest") (pure $ const $ "Thunk " <> T.pack target <> " updated to latest") $
385− (overwrite, ptr) <- readThunk target >>= \case
387+ (overwrite, ptr) <- readThunk target >>= \case
386− Left err -> failWith $ T.pack $ "thunk update: " <> show err
388+ Left err -> failWith $ T.pack $ "thunk update: " <> show err
387− Right c -> case c of
389+ Right c -> case c of
388− ThunkData_Packed t -> return (target, t)
390+ ThunkData_Packed t -> return (target, t)
389− ThunkData_Checkout _ -> failWith "cannot update an unpacked thunk"
391+ ThunkData_Checkout _ -> failWith "cannot update an unpacked thunk"
390− let src = _thunkPtr_source ptr
392+ let src = _thunkPtr_source ptr
391− rev <- getLatestRev src
393+ rev <- getLatestRev src
392− overwriteThunk overwrite $ ThunkPtr
394+ overwriteThunk overwrite $ ThunkPtr
393− { _thunkPtr_source = src
395+ { _thunkPtr_source = src
394− , _thunkPtr_rev = rev
396+ , _thunkPtr_rev = rev
398+ Just branch -> setThunk branch target
397-- | All recognized github standalone loaders, ordered from newest to oldest.
400-- | All recognized github standalone loaders, ordered from newest to oldest.
398-- This tool will only ever produce the newest one when it writes a thunk.
401-- This tool will only ever produce the newest one when it writes a thunk.
@@ -623,6 +626,7 @@ packThunk' noTrail thunkDir = checkThunkDirectory thunkDir >> readThunk thunkDir
623 liftIO $ createThunk thunkDir thunkPtr
626 liftIO $ createThunk thunkDir thunkPtr
624 pure thunkPtr
627 pure thunkPtr
629+-- set thunk to a desired branch
626setThunk :: MonadObelisk m => String -> FilePath -> m ()
630setThunk :: MonadObelisk m => String -> FilePath -> m ()
627setThunk branch thunkDir = checkThunkDirectory thunkDir >> readThunk thunkDir >>= \case
631setThunk branch thunkDir = checkThunkDirectory thunkDir >> readThunk thunkDir >>= \case
628 Left err -> failWith $ T.pack $ "thunk set : " <> show err
632 Left err -> failWith $ T.pack $ "thunk set : " <> show err
@@ -657,6 +661,7 @@ setThunk branch thunkDir = checkThunkDirectory thunkDir >> readThunk thunkDir >>
659 overwriteThunk thunkDir newThunkPtr
663 overwriteThunk thunkDir newThunkPtr
664+ updateThunkToLatest thunkDir Nothing
660 ExitFailure errNum -> failWith $ T.pack $ if errNum == 2
665 ExitFailure errNum -> failWith $ T.pack $ if errNum == 2
661 then "Error: branch not found"
666 then "Error: branch not found"
662 else ("Error Code: " <> show errNum <> "issue checking out the desired branch")
667 else ("Error Code: " <> show errNum <> "issue checking out the desired branch")