@@ -380,19 +380,22 @@ createThunkWithLatest target s = do
380380 , _thunkPtr_rev = rev
381381 }
382382
383−updateThunkToLatest :: MonadObelisk m => FilePath -> m ()
384−updateThunkToLatest target = withSpinner' ("Updating thunk " <> T.pack target <> " to latest") (pure $ const $ "Thunk " <> T.pack target <> " updated to latest") $ do
385− (overwrite, ptr) <- readThunk target >>= \case
386− Left err -> failWith $ T.pack $ "thunk update: " <> show err
387− Right c -> case c of
388− ThunkData_Packed t -> return (target, t)
389− ThunkData_Checkout _ -> failWith "cannot update an unpacked thunk"
390− let src = _thunkPtr_source ptr
391− rev <- getLatestRev src
392− overwriteThunk overwrite $ ThunkPtr
393− { _thunkPtr_source = src
394− , _thunkPtr_rev = rev
395− }
383+updateThunkToLatest :: MonadObelisk m => FilePath -> Maybe String -> m ()
384+updateThunkToLatest target mBranch = withSpinner' ("Updating thunk " <> T.pack target <> " to latest") (pure $ const $ "Thunk " <> T.pack target <> " updated to latest") $
385+ case mBranch of
386+ Nothing -> do
387+ (overwrite, ptr) <- readThunk target >>= \case
388+ Left err -> failWith $ T.pack $ "thunk update: " <> show err
389+ Right c -> case c of
390+ ThunkData_Packed t -> return (target, t)
391+ ThunkData_Checkout _ -> failWith "cannot update an unpacked thunk"
392+ let src = _thunkPtr_source ptr
393+ rev <- getLatestRev src
394+ overwriteThunk overwrite $ ThunkPtr
395+ { _thunkPtr_source = src
396+ , _thunkPtr_rev = rev
397+ }
398+ Just branch -> setThunk branch target
396399
397400-- | All recognized github standalone loaders, ordered from newest to oldest.
398401-- 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
623626 liftIO $ createThunk thunkDir thunkPtr
624627 pure thunkPtr
625628
629+-- set thunk to a desired branch
626630setThunk :: MonadObelisk m => String -> FilePath -> m ()
627631setThunk branch thunkDir = checkThunkDirectory thunkDir >> readThunk thunkDir >>= \case
628632 Left err -> failWith $ T.pack $ "thunk set : " <> show err
@@ -657,6 +661,7 @@ setThunk branch thunkDir = checkThunkDirectory thunkDir >> readThunk thunkDir >>
657661 }
658662 }
659663 overwriteThunk thunkDir newThunkPtr
664+ updateThunkToLatest thunkDir Nothing
660665 ExitFailure errNum -> failWith $ T.pack $ if errNum == 2
661666 then "Error: branch not found"
662667 else ("Error Code: " <> show errNum <> "issue checking out the desired branch")