mirror of https://github.com/voidlizard/hbs2
72 lines
2.0 KiB
Haskell
72 lines
2.0 KiB
Haskell
module HBS2.Git3.Repo.Fork (forkEntries) where
|
|
|
|
import HBS2.Git3.Prelude
|
|
import HBS2.Git3.State
|
|
import HBS2.Git3.Repo.Init
|
|
import HBS2.Git3.Git
|
|
import HBS2.Data.Detect
|
|
|
|
import HBS2.Data.Log.Structured
|
|
|
|
import HBS2.CLI.Run.Internal.Merkle (createTreeWithMetadata)
|
|
-- import HBS2.CLI.Run.RefLog (mkRefLogUpdateFrom)
|
|
|
|
import HBS2.System.Dir
|
|
|
|
import HBS2.Git3.Config.Local
|
|
|
|
import Data.Config.Suckless.Script
|
|
import Data.Config.Suckless.Almost.RPC
|
|
|
|
import Codec.Compression.Zstd.Streaming qualified as ZstdS
|
|
import Codec.Compression.Zstd.Streaming (Result(..))
|
|
import Data.ByteString.Builder as Builder
|
|
import Data.ByteString.Lazy.Char8 qualified as LBS8
|
|
import Data.ByteString.Lazy qualified as LBS
|
|
import Data.ByteString qualified as BS
|
|
import Data.ByteString (ByteString)
|
|
import Data.Fixed
|
|
import Data.HashPSQ qualified as HPSQ
|
|
import Data.HashPSQ (HashPSQ)
|
|
import Data.HashSet (HashSet)
|
|
import Data.HashSet qualified as HS
|
|
import Data.HashMap.Strict qualified as HM
|
|
import Data.List qualified as L
|
|
import Data.List (sortBy)
|
|
import Data.List.Split (chunksOf)
|
|
import Data.Ord (comparing)
|
|
import Lens.Micro.Platform
|
|
import Streaming.Prelude qualified as S
|
|
import System.IO (hPrint)
|
|
import System.IO qualified as IO
|
|
import System.IO.Temp as Temp
|
|
import UnliftIO.Concurrent
|
|
|
|
import Text.InterpolatedString.Perl6 (qc)
|
|
|
|
forkEntries :: forall m . (HBS2GitPerks m) => Id -> MakeDictM C (Git3 m) ()
|
|
forkEntries prefix = do
|
|
|
|
brief "forks hbs2-git repository"
|
|
$ desc ("All new repo creation boilerplate:" <> line
|
|
<> "creates a new sign key,"
|
|
<+> "creates a new lww reference,"
|
|
<+> "adds this key to hbs2-keyman," <> line
|
|
<> "creates default repo manifest")
|
|
$ args [ arg "key" "repo-ref" ]
|
|
$ examples [qc|
|
|
hbs2-git repo:fork EvP3kskPVuKuKVMUc3LnfdW7GcFYjz6f5fFU1EGzrdgk
|
|
|] $
|
|
entry $ bindMatch (prefix <> "fork") $ nil_ $ \case
|
|
[ SignPubKeyLike what ] -> lift do
|
|
|
|
r <- callProc "git" ["--init", "."] []
|
|
|
|
none
|
|
|
|
-- initRepo [newRepoOpt]
|
|
|
|
_ -> throwIO $ BadFormException @C nil
|
|
|
|
|