git: remove unused gitAnnounce.

This commit is contained in:
fiatjaf
2025-11-23 21:33:32 -03:00
parent 75c1a88333
commit 9f8679591e

115
git.go
View File

@@ -665,121 +665,6 @@ var gitFetch = &cli.Command{
},
}
var gitAnnounce = &cli.Command{
Name: "announce",
Usage: "announce repository to Nostr",
Flags: defaultKeyFlags,
Action: func(ctx context.Context, c *cli.Command) error {
// check if current directory is a git repository
cmd := exec.Command("git", "rev-parse", "--git-dir")
if err := cmd.Run(); err != nil {
return fmt.Errorf("current directory is not a git repository")
}
// read nip34.json configuration
localConfig, err := readNip34ConfigFile("")
if err != nil {
return err
}
// parse owner
owner, err := parsePubKey(localConfig.Owner)
if err != nil {
return fmt.Errorf("invalid owner public key: %w", err)
}
// setup signer
kr, _, err := gatherKeyerFromArguments(ctx, c)
if err != nil {
return fmt.Errorf("failed to gather keyer: %w", err)
}
currentPk, _ := kr.GetPublicKey(ctx)
// current signer must match owner otherwise we can't announce
if currentPk != owner {
return fmt.Errorf("current user is not the owner of this repository, can't announce")
}
// convert local config to nip34.Repository
localRepo := nip34.Repository{
ID: localConfig.Identifier,
Name: localConfig.Name,
Description: localConfig.Description,
Web: localConfig.Web,
EarliestUniqueCommitID: localConfig.EarliestUniqueCommit,
Maintainers: []nostr.PubKey{},
}
for _, server := range localConfig.GraspServers {
graspRelayURL := nostr.NormalizeURL(server)
url := fmt.Sprintf("http%s/%s/%s.git",
graspRelayURL[2:], nip19.EncodeNpub(owner), localConfig.Identifier)
localRepo.Clone = append(localRepo.Clone, url)
localRepo.Relays = append(localRepo.Relays, graspRelayURL)
}
for _, maintainer := range localConfig.Maintainers {
if pk, err := parsePubKey(maintainer); err == nil {
localRepo.Maintainers = append(localRepo.Maintainers, pk)
} else {
log(color.YellowString("invalid maintainer pubkey '%s': %v\n", maintainer, err))
}
}
// these are the relays where we'll publish the announcement to
relays := append(sys.FetchOutboxRelays(ctx, owner, 3), localConfig.GraspServers...)
for i := range relays {
relays[i] = nostr.NormalizeURL(relays[i])
}
// fetch repository announcement (30617) events
oks := make([]bool, len(relays))
var repo nip34.Repository
results := sys.Pool.FetchMany(ctx, relays, nostr.Filter{
Kinds: []nostr.Kind{30617},
Tags: nostr.TagMap{
"d": []string{localConfig.Identifier},
},
Limit: 1,
}, nostr.SubscriptionOptions{
Label: "nak-git-announce",
CheckDuplicate: func(id nostr.ID, relay string) bool { return false }, // get the same event from multiple relays
})
for ie := range results {
repo = nip34.ParseRepository(ie.Event)
// check if this is ok or the announcement in this relay needs to be updated
if repo.Equals(localRepo) {
relayIdx := slices.Index(relays, ie.Relay.URL)
oks[relayIdx] = true
}
}
// publish repository announcement if needed
if slices.Contains(oks, false) {
announcementEvent := localRepo.ToEvent()
if err := kr.SignEvent(ctx, &announcementEvent); err != nil {
return fmt.Errorf("failed to sign announcement event: %w", err)
}
targets := make([]string, 0, len(oks))
for i, ok := range oks {
if !ok {
targets = append(targets, relays[i])
}
}
log("- publishing repository announcement to " + color.CyanString("%v", targets) + "\n")
for res := range sys.Pool.PublishMany(ctx, targets, announcementEvent) {
if res.Error != nil {
log("! error publishing announcement to relay %s: %v\n", color.YellowString(res.RelayURL), res.Error)
} else {
log("> published announcement to relay %s\n", color.GreenString(res.RelayURL))
}
}
}
return nil
},
}
var gitSync = &cli.Command{
Name: "sync",
Usage: "sync repository with relays",