This commit is contained in:
voidlizard 2025-01-25 07:37:54 +03:00
parent 7807156cfa
commit bf3e8a49b0
3 changed files with 27 additions and 12 deletions

View File

@ -60,11 +60,9 @@ hbs2-git repo:fork EvP3kskPVuKuKVMUc3LnfdW7GcFYjz6f5fFU1EGzrdgk
entry $ bindMatch (prefix <> "fork") $ nil_ $ \case entry $ bindMatch (prefix <> "fork") $ nil_ $ \case
[ SignPubKeyLike what ] -> lift do [ SignPubKeyLike what ] -> lift do
r <- callProc "git" ["--init", "."] [] debug $ "call fucking initRepo" <+> pretty [newRepoOpt]
none initRepo [newRepoOpt]
-- initRepo [newRepoOpt]
_ -> throwIO $ BadFormException @C nil _ -> throwIO $ BadFormException @C nil

View File

@ -5,6 +5,8 @@ module HBS2.Git3.Repo.Init (initRepo,newRepoOpt) where
import HBS2.Git3.Prelude import HBS2.Git3.Prelude
import HBS2.Git3.State import HBS2.Git3.State
import HBS2.System.Dir
import HBS2.CLI.Run.MetaData import HBS2.CLI.Run.MetaData
import HBS2.Net.Auth.Credentials import HBS2.Net.Auth.Credentials
@ -31,7 +33,7 @@ data CInit =
| CreateRepoDefBlock GitRepoKey | CreateRepoDefBlock GitRepoKey
newRepoOpt :: Syntax C newRepoOpt :: Syntax C
newRepoOpt = mkList [mkSym "--new"] newRepoOpt = mkSym "--new"
initRepo :: forall m . HBS2GitPerks m => [Syntax C] -> Git3 m () initRepo :: forall m . HBS2GitPerks m => [Syntax C] -> Git3 m ()
initRepo syn = do initRepo syn = do
@ -40,13 +42,19 @@ initRepo syn = do
let new = or [ True | ListVal [SymbolVal "--new"] <- opts ] let new = or [ True | ListVal [SymbolVal "--new"] <- opts ]
callProc "git" ["init"] []
root <- getConfigRootFile root <- getConfigRootFile
touch root
sto <- getStorage sto <- getStorage
lwwAPI <- getClientAPI @LWWRefAPI @UNIX lwwAPI <- getClientAPI @LWWRefAPI @UNIX
refLogAPI <- getClientAPI @RefLogAPI @UNIX refLogAPI <- getClientAPI @RefLogAPI @UNIX
peerAPI <- getClientAPI @PeerAPI @UNIX peerAPI <- getClientAPI @PeerAPI @UNIX
debug $ "initRepo" <+> pretty opts <+> pretty syn
flip fix CheckRepoKeyExist $ \next -> \case flip fix CheckRepoKeyExist $ \next -> \case
CheckRepoKeyExist -> do CheckRepoKeyExist -> do
debug "initRepo:CheckRepoKey" debug "initRepo:CheckRepoKey"
@ -54,7 +62,8 @@ initRepo syn = do
next $ maybe CreateRepoKey CheckRepoKeyStart mbk next $ maybe CreateRepoKey CheckRepoKeyStart mbk
CreateRepoKey -> do CreateRepoKey -> do
debug "initRepo:CreateRepoKey"
debug $ "initRepo:CreateRepoKey" <+> pretty root
answ <- callProc "hbs2-cli" [] [mkSym "hbs2:lwwref:create"] answ <- callProc "hbs2-cli" [] [mkSym "hbs2:lwwref:create"]
@ -64,8 +73,13 @@ initRepo syn = do
liftIO $ appendFile root (show $ pretty $ mkForm "repo:ref" [mkSym @C (show $ pretty (AsBase58 pk))]) liftIO $ appendFile root (show $ pretty $ mkForm "repo:ref" [mkSym @C (show $ pretty (AsBase58 pk))])
setGitRepoKey pk
next $ CheckRepoKeyStart pk
CheckRepoKeyStart pk -> do CheckRepoKeyStart pk -> do
debug $ "initRepo:CheckRepoKeyStart" <+> pretty (AsBase58 pk)
debug $ "initRepo:CheckRepoKeyStart" <+> pretty new <+> pretty opts <+> pretty (AsBase58 pk)
callRpcWaitMay @RpcLWWRefFetch (TimeoutSec 1) lwwAPI (LWWRefKey pk) callRpcWaitMay @RpcLWWRefFetch (TimeoutSec 1) lwwAPI (LWWRefKey pk)
>>= orThrowUser "rpc timeout" >>= orThrowUser "rpc timeout"
@ -119,6 +133,9 @@ initRepo syn = do
let sk = view peerSignSk creds let sk = view peerSignSk creds
(rpk,rsk) <- derivedKey @'HBS2Basic @'Sign seed sk (rpk,rsk) <- derivedKey @'HBS2Basic @'Sign seed sk
callRpcWaitMay @RpcPollAdd (TimeoutSec 1) peerAPI (rpk, "reflog", 17)
>>= orThrowUser "rpc timeout"
let manifest = [ let manifest = [
mkForm @C "hbs2-git" [mkInt 3] mkForm @C "hbs2-git" [mkInt 3]
, mkForm "seed" [mkInt seed] , mkForm "seed" [mkInt seed]
@ -147,6 +164,3 @@ initRepo syn = do
callRpcWaitMay @RpcLWWRefUpdate (TimeoutSec 1) lwwAPI box callRpcWaitMay @RpcLWWRefUpdate (TimeoutSec 1) lwwAPI box
>>= orThrowUser "rpc timeout" >>= orThrowUser "rpc timeout"
callRpcWaitMay @RpcPollAdd (TimeoutSec 1) peerAPI (rpk, "reflog", 17)
>>= orThrowUser "rpc timeout"

View File

@ -16,6 +16,8 @@ import Data.Typeable
import Prettyprinter import Prettyprinter
import System.Process.Typed import System.Process.Typed
import System.IO
data CallProcException = data CallProcException =
CallProcException ExitCode CallProcException ExitCode
deriving (Show,Typeable) deriving (Show,Typeable)
@ -34,11 +36,12 @@ callProc name params syn = do
& LBS8.unlines & LBS8.unlines
& byteStringInput & byteStringInput
-- let what = proc name params & setStderr closed & setStdin input
let what = proc name params & setStderr closed & setStdin input let what = proc name params & setStderr closed & setStdin input
(code, i, _) <- readProcess what (code, i, o) <- readProcess what
unless (code == ExitSuccess) do unless (code == ExitSuccess) do
liftIO $ hPrint stderr ( pretty $ LBS8.unpack o )
liftIO $ throwIO (CallProcException code) liftIO $ throwIO (CallProcException code)
let s = TE.decodeUtf8With TE.lenientDecode (LBS.toStrict i) let s = TE.decodeUtf8With TE.lenientDecode (LBS.toStrict i)