mirror of https://github.com/voidlizard/hbs2
Update command `export`
This commit is contained in:
parent
51597c58cb
commit
67892fca02
|
@ -27,9 +27,9 @@ main = join . customExecParser (prefs showHelpOnError) $
|
|||
)
|
||||
|
||||
pExport = do
|
||||
ref <- strArgument (metavar "HASH-REF")
|
||||
kr <- optional $ strOption (short 'k' <> long "keyring" <> metavar "KEYRING-FILE")
|
||||
pure $ runApp WithLog (runExport kr ref)
|
||||
keyfile <- strArgument (metavar "KEIRING-FILE")
|
||||
pure $ runApp WithLog do
|
||||
runExport' keyfile
|
||||
|
||||
pListRefs = do
|
||||
pure $ runApp NoLog runListRefs
|
||||
|
|
|
@ -80,6 +80,7 @@ common shared-properties
|
|||
, prettyprinter-ansi-terminal
|
||||
, resourcet
|
||||
, safe
|
||||
, saltine
|
||||
, serialise
|
||||
, split
|
||||
, sqlite-simple
|
||||
|
|
|
@ -14,6 +14,7 @@ import HBS2.OrDie
|
|||
import HBS2.Hash
|
||||
import HBS2.System.Logger.Simple
|
||||
import HBS2.Merkle
|
||||
import HBS2.Net.Proto.Types
|
||||
import HBS2.Git.Types
|
||||
import HBS2.Net.Proto.Definition()
|
||||
import HBS2.Net.Auth.Credentials hiding (getCredentials)
|
||||
|
@ -29,6 +30,7 @@ import Control.Monad.Trans.Maybe
|
|||
import Data.Foldable
|
||||
import Data.Either
|
||||
import Control.Monad.Reader
|
||||
import Crypto.Saltine.Core.Sign qualified as Sign
|
||||
import Data.ByteString.Lazy.Char8 (ByteString)
|
||||
import Data.ByteString.Char8 qualified as B8
|
||||
import Data.ByteString.Lazy.Char8 qualified as LBS
|
||||
|
@ -447,13 +449,28 @@ loadCredentials fp = do
|
|||
die "keyring not set"
|
||||
|
||||
for_ krOpt $ \fn -> do
|
||||
krData <- liftIO $ B8.readFile fn
|
||||
cred <- pure (parseCredentials @Schema (AsCredFile krData)) `orDie` "bad keyring file"
|
||||
let puk = view peerSignPk cred
|
||||
(puk, cred) <- loadKeyring fn
|
||||
trace $ "got creds for" <+> pretty (AsBase58 puk)
|
||||
setCredentials (RefLogKey puk) cred
|
||||
pure ()
|
||||
|
||||
loadCredentials' ::
|
||||
( MonadIO m
|
||||
, HasRefCredentials m
|
||||
)
|
||||
=> FilePath -> m Sign.PublicKey
|
||||
loadCredentials' fn = do
|
||||
(puk, cred) <- loadKeyring fn
|
||||
trace $ "got creds for" <+> pretty (AsBase58 puk)
|
||||
setCredentials (RefLogKey puk) cred
|
||||
pure puk
|
||||
|
||||
loadKeyring :: (MonadIO m) => FilePath -> m (Sign.PublicKey, PeerCredentials Schema)
|
||||
loadKeyring fn = do
|
||||
krData <- liftIO $ B8.readFile fn
|
||||
cred <- pure (parseCredentials @Schema (AsCredFile krData)) `orDie` "bad keyring file"
|
||||
let puk = view peerSignPk cred
|
||||
pure (puk, cred)
|
||||
|
||||
green = annotate (color Green)
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ module HBS2Git.Export
|
|||
( exportRefDeleted
|
||||
, exportRefOnly
|
||||
, runExport
|
||||
, runExport'
|
||||
, ExportRepoOps
|
||||
) where
|
||||
|
||||
|
@ -15,6 +16,7 @@ import HBS2.System.Logger.Simple
|
|||
import HBS2.Net.Proto.Definition()
|
||||
import HBS2.Clock
|
||||
import HBS2.Base58
|
||||
import HBS2.Net.Proto.RefLog
|
||||
|
||||
import HBS2.Git.Local
|
||||
import HBS2.Git.Local.CLI
|
||||
|
@ -349,6 +351,8 @@ exportRefOnly _ remote rfrom ref val = do
|
|||
-- что бы оставить совместимость
|
||||
pure $ lastMay logz
|
||||
|
||||
---
|
||||
|
||||
runExport :: forall m . ( MonadIO m
|
||||
, MonadUnliftIO m
|
||||
, MonadCatch m
|
||||
|
@ -357,8 +361,37 @@ runExport :: forall m . ( MonadIO m
|
|||
)
|
||||
|
||||
=> Maybe FilePath -> RepoRef -> App m ()
|
||||
runExport fp repo = do
|
||||
runExport mfp repo = do
|
||||
loadCredentials (maybeToList mfp)
|
||||
let krf = fromMaybe "keyring-file" mfp & takeFileName
|
||||
runExport'' krf repo
|
||||
|
||||
---
|
||||
|
||||
runExport' :: forall m . ( MonadIO m
|
||||
, MonadUnliftIO m
|
||||
, MonadCatch m
|
||||
, HasProgress (App m)
|
||||
, MonadMask (App m)
|
||||
)
|
||||
|
||||
=> FilePath -> App m ()
|
||||
|
||||
runExport' fp = do
|
||||
repo <- loadCredentials' fp
|
||||
runExport'' (takeFileName fp) (RefLogKey repo)
|
||||
|
||||
---
|
||||
|
||||
runExport'' :: forall m . ( MonadIO m
|
||||
, MonadUnliftIO m
|
||||
, MonadCatch m
|
||||
, HasProgress (App m)
|
||||
, MonadMask (App m)
|
||||
)
|
||||
|
||||
=> FilePath -> RepoRef -> App m ()
|
||||
runExport'' krf repo = do
|
||||
|
||||
liftIO $ putDoc $
|
||||
line
|
||||
|
@ -371,8 +404,6 @@ runExport fp repo = do
|
|||
|
||||
trace $ "git directory is" <+> pretty git
|
||||
|
||||
loadCredentials (maybeToList fp)
|
||||
|
||||
-- FIXME: wtf-runExport
|
||||
branchesGr <- cfgValue @ConfBranch <&> Set.map normalizeRef
|
||||
|
||||
|
@ -404,7 +435,6 @@ runExport fp repo = do
|
|||
|
||||
cwd <- liftIO getCurrentDirectory
|
||||
cfgPath <- configPath cwd
|
||||
let krf = fromMaybe "keyring-file" fp & takeFileName
|
||||
|
||||
liftIO $ putStrLn ""
|
||||
liftIO $ putDoc $
|
||||
|
|
Loading…
Reference in New Issue