diff --git a/.gitignore b/.gitignore index 34adc7e0..541b70cb 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,6 @@ crash.log # Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan # example: *tfplan* *.tfplan + +# GitHub audit log exports +export-*.json diff --git a/github/libp2p/repository_collaborator.json b/github/libp2p/repository_collaborator.json index 7b682be3..a8d72e67 100644 --- a/github/libp2p/repository_collaborator.json +++ b/github/libp2p/repository_collaborator.json @@ -1,1766 +1,578 @@ { - ".github": { - "marten-seemann": { + "dht-hardening": { + "vyzo": { + "permission": "admin" + } + }, + "dht-tracer1": { + "jbenet": { "permission": "admin" }, "web3-bot": { "permission": "push" } }, - "awesome-libp2p": { - "aarshkshah1992": { - "permission": "pull" - }, - "vasco-santos": { + "dht-utils": { + "web3-bot": { "permission": "push" - }, + } + }, + "docs": { + "walkerlj0": { + "permission": "maintain" + } + }, + "go-addr-util": { "web3-bot": { "permission": "push" } }, - "community": { + "go-buffer-pool": { "web3-bot": { "permission": "push" } }, - "cpp-libp2p": { - "raulk": { + "go-composable-routing": { + "petar": { "permission": "admin" }, "web3-bot": { "permission": "push" } }, - "cs-libp2p-crypto": { + "go-conn-security-multistream": { "web3-bot": { "permission": "push" } }, - "cs-libp2p-io": { + "go-doh-resolver": { + "vyzo": { + "permission": "admin" + }, "web3-bot": { "permission": "push" } }, - "cs-libp2p-peer": { + "go-eventbus": { "web3-bot": { "permission": "push" } }, - "cs-libp2p-protocol": { + "go-libp2p": { "web3-bot": { "permission": "push" } }, - "cs-libp2p-record": { + "go-libp2p-asn-util": { "web3-bot": { "permission": "push" } }, - "cs-libp2p-utils": { + "go-libp2p-autonat": { "web3-bot": { "permission": "push" } }, - "demo-multi-lang": { - "aarshkshah1992": { - "permission": "pull" - }, + "go-libp2p-backoff": { "web3-bot": { "permission": "push" } }, - "developer-meetings": { - "42piratas": { - "permission": "admin" - }, - "aarshkshah1992": { - "permission": "admin" - }, - "b5": { - "permission": "admin" - }, - "cpacia": { - "permission": "admin" - }, - "ericxtang": { - "permission": "admin" - }, - "flyingzumwalt": { - "permission": "admin" - }, - "jacobheun": { - "permission": "admin" - }, - "meiqimichelle": { - "permission": "admin" - }, - "mikiquantum": { - "permission": "admin" - }, + "go-libp2p-blankhost": { "web3-bot": { "permission": "push" } }, - "devgrants": { - "raulk": { + "go-libp2p-certbot": { + "marten-seemann": { "permission": "admin" }, "web3-bot": { "permission": "push" } }, - "dht-hardening": { - "Stebalien": { - "permission": "admin" - }, - "aarshkshah1992": { - "permission": "push" - }, - "adlrocha": { + "go-libp2p-circuit": { + "web3-bot": { "permission": "push" - }, - "aschmahmann": { - "permission": "admin" - }, - "daviddias": { - "permission": "admin" - }, - "hacdias": { - "permission": "maintain" - }, - "schomatis": { - "permission": "pull" - }, + } + }, + "go-libp2p-circuit-progs": { "vyzo": { "permission": "admin" - }, + } + }, + "go-libp2p-connmgr": { "web3-bot": { "permission": "push" - }, - "yusefnapora": { - "permission": "admin" } }, - "dht-tracer": { - "Stebalien": { - "permission": "admin" - }, - "aarshkshah1992": { - "permission": "pull" - }, - "adam-hanna": { - "permission": "push" - }, - "aschmahmann": { - "permission": "admin" - }, - "jbenet": { - "permission": "admin" - }, - "jimpick": { - "permission": "push" - }, - "mplaza": { - "permission": "admin" - }, - "raulk": { - "permission": "admin" - }, + "go-libp2p-consensus": { "web3-bot": { "permission": "push" } }, - "dht-tracer-archived": { + "go-libp2p-core": { + "mvdan": { + "permission": "push" + }, "web3-bot": { "permission": "push" } }, - "dht-tracer1": { - "jbenet": { + "go-libp2p-daemon": { + "vyzo": { "permission": "admin" }, "web3-bot": { "permission": "push" } }, - "dht-utils": { - "dignifiedquire": { - "permission": "push" - }, + "go-libp2p-discovery": { "web3-bot": { "permission": "push" } }, - "dht-vis-v0": { - "dignifiedquire": { + "go-libp2p-gorpc": { + "hsanjuan": { "permission": "admin" }, "web3-bot": { "permission": "push" } }, - "docs": { - "aarshkshah1992": { - "permission": "push" - }, - "andyschwab": { + "go-libp2p-gostream": { + "Stebalien": { "permission": "admin" }, - "walkerlj0": { - "permission": "maintain" + "hsanjuan": { + "permission": "admin" }, "web3-bot": { "permission": "push" } }, - "docs-old": { + "go-libp2p-http": { + "hsanjuan": { + "permission": "admin" + }, "web3-bot": { "permission": "push" } }, - "fclibp2p-zhi": { + "go-libp2p-introspector": { "web3-bot": { "permission": "push" } }, - "go-addr-util": { - "aarshkshah1992": { - "permission": "push" - }, + "go-libp2p-kad-dht": { "web3-bot": { "permission": "push" } }, - "go-buffer-pool": { - "aarshkshah1992": { - "permission": "push" - }, + "go-libp2p-kbucket": { "web3-bot": { "permission": "push" } }, - "go-composable-routing": { - "petar": { - "permission": "admin" - }, + "go-libp2p-loggables": { "web3-bot": { "permission": "push" } }, - "go-conn-security": { - "Stebalien": { - "permission": "admin" - }, - "aarshkshah1992": { - "permission": "push" - } - }, - "go-conn-security-multistream": { - "Stebalien": { - "permission": "admin" - }, - "aarshkshah1992": { - "permission": "push" - }, + "go-libp2p-nat": { "web3-bot": { "permission": "push" } }, - "go-doh-resolver": { - "vyzo": { - "permission": "admin" - }, + "go-libp2p-netutil": { "web3-bot": { "permission": "push" } }, - "go-eventbus": { - "aarshkshah1992": { - "permission": "push" - }, - "magik6k": { - "permission": "admin" - }, + "go-libp2p-noise": { "web3-bot": { "permission": "push" } }, - "go-flow-metrics": { - "aarshkshah1992": { - "permission": "push" - }, + "go-libp2p-peerstore": { "web3-bot": { "permission": "push" } }, - "go-libp2p": { - "aarshkshah1992": { - "permission": "push" - }, + "go-libp2p-pnet": { "web3-bot": { "permission": "push" } }, - "go-libp2p-asn": { - "aarshkshah1992": { - "permission": "admin" + "go-libp2p-pubsub": { + "vyzo": { + "permission": "maintain" } }, - "go-libp2p-asn-util": { + "go-libp2p-pubsub-router": { "web3-bot": { "permission": "push" } }, - "go-libp2p-autonat": { - "aarshkshah1992": { + "go-libp2p-pubsub-tracer": { + "vyzo": { "permission": "admin" }, "web3-bot": { "permission": "push" } }, - "go-libp2p-backoff": { - "petar": { + "go-libp2p-quic-transport": { + "marten-seemann": { "permission": "admin" }, "web3-bot": { "permission": "push" } }, - "go-libp2p-blankhost": { - "aarshkshah1992": { - "permission": "push" + "go-libp2p-raft": { + "hsanjuan": { + "permission": "admin" }, "web3-bot": { "permission": "push" } }, - "go-libp2p-certbot": { - "marten-seemann": { - "permission": "admin" - }, + "go-libp2p-record": { "web3-bot": { "permission": "push" } }, - "go-libp2p-circuit": { - "aarshkshah1992": { + "go-libp2p-relay-daemon": { + "marten-seemann": { + "permission": "admin" + }, + "vyzo": { "permission": "push" }, "web3-bot": { "permission": "push" } }, - "go-libp2p-circuit-progs": { + "go-libp2p-resource-manager": { "vyzo": { "permission": "admin" + }, + "web3-bot": { + "permission": "push" } }, - "go-libp2p-conn": { - "aarshkshah1992": { + "go-libp2p-routing-helpers": { + "web3-bot": { "permission": "push" } }, - "go-libp2p-connmgr": { - "aarshkshah1992": { - "permission": "push" - }, + "go-libp2p-swarm": { "web3-bot": { "permission": "push" } }, - "go-libp2p-consensus": { - "aarshkshah1992": { - "permission": "push" - }, + "go-libp2p-testing": { "web3-bot": { "permission": "push" } }, - "go-libp2p-coral-dht": { - "bigs": { + "go-libp2p-tls": { + "marten-seemann": { "permission": "admin" }, - "carospiegly": { - "permission": "push" - }, "web3-bot": { "permission": "push" } }, - "go-libp2p-core": { - "dignifiedquire": { - "permission": "push" - }, - "mvdan": { - "permission": "push" + "go-libp2p-transport-upgrader": { + "Stebalien": { + "permission": "admin" }, "web3-bot": { "permission": "push" } }, - "go-libp2p-crypto": { - "aarshkshah1992": { + "go-libp2p-webrtc-direct": { + "web3-bot": { "permission": "push" } }, - "go-libp2p-daemon": { - "aarshkshah1992": { - "permission": "push" - }, - "bigs": { - "permission": "admin" - }, - "mvid": { - "permission": "push" - }, - "vyzo": { + "go-libp2p-xor": { + "petar": { "permission": "admin" }, "web3-bot": { "permission": "push" } }, - "go-libp2p-discovery": { + "go-libp2p-yamux": { "web3-bot": { "permission": "push" } }, - "go-libp2p-dummy-conn": { - "aarshkshah1992": { + "go-mplex": { + "web3-bot": { "permission": "push" } }, - "go-libp2p-examples": { - "aarshkshah1992": { + "go-netroute": { + "web3-bot": { "permission": "push" - }, + } + }, + "go-reuseport": { "web3-bot": { "permission": "push" } }, - "go-libp2p-gorpc": { - "aarshkshah1992": { - "permission": "push" - }, - "hsanjuan": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-gostream": { - "Stebalien": { - "permission": "admin" - }, - "aarshkshah1992": { - "permission": "push" - }, - "hsanjuan": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-holepunch-test": { - "aarshkshah1992": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-host": { - "aarshkshah1992": { - "permission": "push" - } - }, - "go-libp2p-http": { - "Stebalien": { - "permission": "admin" - }, - "aarshkshah1992": { - "permission": "push" - }, - "hsanjuan": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-identify": { - "aarshkshah1992": { - "permission": "push" - } - }, - "go-libp2p-interface-conn": { - "aarshkshah1992": { - "permission": "push" - } - }, - "go-libp2p-interface-connmgr": { - "aarshkshah1992": { - "permission": "push" - } - }, - "go-libp2p-interface-pnet": { - "aarshkshah1992": { - "permission": "push" - } - }, - "go-libp2p-introspector": { - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-kad-dht": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-kbucket": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-loggables": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - }, - "whyrusleeping": { - "permission": "admin" - } - }, - "go-libp2p-metrics": { - "aarshkshah1992": { - "permission": "push" - } - }, - "go-libp2p-nat": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-net": { - "aarshkshah1992": { - "permission": "push" - } - }, - "go-libp2p-netutil": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-noise": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - }, - "yusefnapora": { - "permission": "admin" - } - }, - "go-libp2p-peer": { - "aarshkshah1992": { - "permission": "push" - }, - "whyrusleeping": { - "permission": "admin" - } - }, - "go-libp2p-peerstore": { - "aarshkshah1992": { - "permission": "push" - }, - "bigs": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-ping": { - "aarshkshah1992": { - "permission": "push" - } - }, - "go-libp2p-pnet": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-protocol": { - "aarshkshah1992": { - "permission": "push" - } - }, - "go-libp2p-pubsub": { - "vyzo": { - "permission": "maintain" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-pubsub-DEPRECATED": { - "aarshkshah1992": { - "permission": "push" - } - }, - "go-libp2p-pubsub-router": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-pubsub-tracer": { - "aarshkshah1992": { - "permission": "admin" - }, - "vyzo": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-quic-transport": { - "aarshkshah1992": { - "permission": "push" - }, - "marten-seemann": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-raft": { - "aarshkshah1992": { - "permission": "push" - }, - "hsanjuan": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-record": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-relay-daemon": { - "Stebalien": { - "permission": "admin" - }, - "marten-seemann": { - "permission": "admin" - }, - "vyzo": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-rendezvous": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-resource-manager": { - "vyzo": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-routing": { - "aarshkshah1992": { - "permission": "push" - } - }, - "go-libp2p-routing-helpers": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-secio": { - "aarshkshah1992": { - "permission": "push" - } - }, - "go-libp2p-slog": { - "petar": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-swarm": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-testing": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-tls": { - "aarshkshah1992": { - "permission": "push" - }, - "marten-seemann": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-transport": { - "aarshkshah1992": { - "permission": "push" - } - }, - "go-libp2p-transport-upgrader": { - "Stebalien": { - "permission": "admin" - }, - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-webrtc-direct": { - "aarshkshah1992": { - "permission": "push" - }, - "albrow": { - "permission": "admin" - }, - "backkem": { - "permission": "admin" - }, - "mearaj": { - "permission": "push" - }, - "raulk": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-websocket-star-rendezvous": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-xor": { - "petar": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-libp2p-yamux": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-maddr-filter": { - "aarshkshah1992": { - "permission": "push" - } - }, - "go-mplex": { - "web3-bot": { - "permission": "push" - } - }, - "go-netroute": { - "web3-bot": { - "permission": "push" - }, - "willscott": { - "permission": "admin" - } - }, - "go-reuseport": { - "Kubuxu": { - "permission": "admin" - }, - "aarshkshah1992": { - "permission": "push" - }, - "jbenet": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - }, - "whyrusleeping": { - "permission": "admin" - } - }, - "go-reuseport-transport": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-routing-language": { - "adlrocha": { - "permission": "push" - }, - "masih": { - "permission": "push" - }, - "petar": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-smart-record": { - "adlrocha": { - "permission": "maintain" - }, - "petar": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-sockaddr": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-socket-activation": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-stream-muxer": { - "aarshkshah1992": { - "permission": "push" - }, - "jbenet": { - "permission": "admin" - }, - "whyrusleeping": { - "permission": "admin" - } - }, - "go-tcp-transport": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-testutil": { - "aarshkshah1992": { - "permission": "push" - } - }, - "go-udp-transport": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-utp-transport": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-ws-transport": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-xtp": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "go-yamux": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "gossipsub-hardening": { - "daviddias": { - "permission": "admin" - }, - "dirkmc": { - "permission": "admin" - }, - "djrtwo": { - "permission": "triage" - }, - "dominictarr": { - "permission": "triage" - }, - "dylanlott": { - "permission": "triage" - }, - "hacdias": { - "permission": "maintain" - }, - "keks": { - "permission": "triage" - }, - "nginnever": { - "permission": "triage" - }, - "nonsense": { - "permission": "admin" - }, - "protolambda": { - "permission": "triage" - }, - "vyzo": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - }, - "whyrusleeping": { - "permission": "admin" - }, - "willscott": { - "permission": "push" - }, - "yiannisbot": { - "permission": "admin" - }, - "yusefnapora": { - "permission": "admin" - } - }, - "haskell-p2pcat": { - "web3-bot": { - "permission": "push" - } - }, - "hydra-booster-infra": { - "gmasgras": { - "permission": "push" - }, - "guseggert": { - "permission": "admin" - }, - "mcamou": { - "permission": "push" - }, - "thattommyhall": { - "permission": "push" - } - }, - "interface-connection": { - "daviddias": { - "permission": "admin" - } - }, - "interface-libp2p": { - "daviddias": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "interface-peer-routing": { - "daviddias": { - "permission": "admin" - } - }, - "interface-record-store": { - "daviddias": { - "permission": "admin" - } - }, - "interface-stream-muxer": { - "daviddias": { - "permission": "admin" - } - }, - "interface-transport": { - "daviddias": { - "permission": "admin" - } - }, - "interop": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "js-iprs-record": { - "daviddias": { - "permission": "admin" - }, - "dignifiedquire": { - "permission": "push" - }, - "nunofmn": { - "permission": "push" - } - }, - "js-libp2p": { - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-bootstrap": { - "nunofmn": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-circuit": { - "dryajov": { - "permission": "push" - }, - "nunofmn": { - "permission": "push" - } - }, - "js-libp2p-components": { - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-connection": { - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-crypto": { - "dignifiedquire": { - "permission": "admin" - }, - "nunofmn": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-daemon": { - "jacobheun": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-daemon-client": { - "vasco-santos": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-daemon-protocol": { - "achingbrain": { - "permission": "admin" - } - }, - "js-libp2p-delegated-content-routing": { - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-delegated-peer-routing": { - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-distributed-record-store": { - "daviddias": { - "permission": "admin" - }, - "dignifiedquire": { - "permission": "push" - }, - "nunofmn": { - "permission": "push" - } - }, - "js-libp2p-examples": { - "jacobheun": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-floodsub": { - "nunofmn": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-identify": { - "daviddias": { - "permission": "admin" - }, - "nunofmn": { - "permission": "push" - } - }, - "js-libp2p-interfaces": { - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-kad-dht": { - "nunofmn": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-kad-record-store": { - "daviddias": { - "permission": "admin" - }, - "dignifiedquire": { - "permission": "push" - }, - "nunofmn": { - "permission": "push" - } - }, - "js-libp2p-kad-routing": { - "daviddias": { - "permission": "admin" - }, - "dignifiedquire": { - "permission": "push" - }, - "nunofmn": { - "permission": "push" - } - }, - "js-libp2p-logger": { - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-mdns": { - "daviddias": { - "permission": "admin" - }, - "dignifiedquire": { - "permission": "push" - }, - "nunofmn": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-mplex": { - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-multistream-select": { - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-nat-mngr": { - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-peer-collections": { - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-peer-id": { - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-peer-record": { - "web3-bot": { - "permission": "push" - } - }, - "js-libp2p-peer-store": { - "web3-bot": { + "go-reuseport-transport": { + "web3-bot": { "permission": "push" } }, - "js-libp2p-ping": { - "daviddias": { - "permission": "admin" + "go-routing-language": { + "adlrocha": { + "permission": "push" }, - "dignifiedquire": { + "masih": { "permission": "push" }, - "nunofmn": { + "petar": { + "permission": "admin" + }, + "web3-bot": { "permission": "push" } }, - "js-libp2p-pnet": { - "jacobheun": { + "go-smart-record": { + "petar": { "permission": "admin" - } - }, - "js-libp2p-pubsub": { + }, "web3-bot": { "permission": "push" } }, - "js-libp2p-pubsub-peer-discovery": { + "go-sockaddr": { "web3-bot": { "permission": "push" } }, - "js-libp2p-record": { + "go-socket-activation": { "web3-bot": { "permission": "push" } }, - "js-libp2p-relay-server": { - "vasco-santos": { - "permission": "push" - }, + "go-tcp-transport": { "web3-bot": { "permission": "push" } }, - "js-libp2p-rendezvous": { + "go-ws-transport": { "web3-bot": { "permission": "push" } }, - "js-libp2p-secio": { - "dignifiedquire": { - "permission": "admin" - }, - "nunofmn": { + "go-yamux": { + "web3-bot": { "permission": "push" } }, - "js-libp2p-spdy": { - "daviddias": { + "gossipsub-hardening": { + "vyzo": { "permission": "admin" - }, - "dignifiedquire": { - "permission": "push" - }, - "fbaiodias": { - "permission": "push" - }, - "nunofmn": { - "permission": "push" } }, - "js-libp2p-stardust": { - "mkg20001": { - "permission": "push" + "hydra-booster-infra": { + "guseggert": { + "permission": "admin" } }, - "js-libp2p-tcp": { + "js-libp2p-bootstrap": { "web3-bot": { "permission": "push" } }, - "js-libp2p-topology": { + "js-libp2p-components": { "web3-bot": { "permission": "push" } }, - "js-libp2p-tracked-map": { + "js-libp2p-connection": { "web3-bot": { "permission": "push" } }, - "js-libp2p-udp": { - "daviddias": { - "permission": "admin" - }, - "nunofmn": { - "permission": "push" - }, + "js-libp2p-crypto": { "web3-bot": { "permission": "push" } }, - "js-libp2p-udt": { - "daviddias": { - "permission": "admin" - }, - "nunofmn": { - "permission": "push" - }, + "js-libp2p-daemon": { "web3-bot": { "permission": "push" } }, - "js-libp2p-utils": { + "js-libp2p-daemon-client": { "vasco-santos": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" + "permission": "admin" } }, - "js-libp2p-utp": { - "daviddias": { + "js-libp2p-daemon-protocol": { + "achingbrain": { "permission": "admin" - }, - "dignifiedquire": { - "permission": "push" - }, - "nunofmn": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" } }, - "js-libp2p-webrtc-direct": { - "vasco-santos": { - "permission": "admin" - }, + "js-libp2p-delegated-content-routing": { "web3-bot": { "permission": "push" } }, - "js-libp2p-webrtc-peer": { - "achingbrain": { - "permission": "admin" - }, + "js-libp2p-delegated-peer-routing": { "web3-bot": { "permission": "push" } }, - "js-libp2p-webrtc-star": { - "vasco-santos": { - "permission": "admin" - }, + "js-libp2p-floodsub": { "web3-bot": { "permission": "push" } }, - "js-libp2p-websocket-star-multi": { - "mkg20001": { + "js-libp2p-interfaces": { + "web3-bot": { "permission": "push" } }, - "js-libp2p-websocket-star-rendezvous": { - "mkg20001": { - "permission": "admin" - } - }, - "js-libp2p-websockets": { - "daviddias": { - "permission": "admin" - }, - "dignifiedquire": { - "permission": "push" - }, - "fbaiodias": { - "permission": "push" - }, - "nunofmn": { - "permission": "push" - }, + "js-libp2p-kad-dht": { "web3-bot": { "permission": "push" } }, - "js-p2pcat": { + "js-libp2p-logger": { "web3-bot": { "permission": "push" } }, - "js-peer-book": { - "daviddias": { - "permission": "admin" - }, - "nunofmn": { + "js-libp2p-mdns": { + "web3-bot": { "permission": "push" } }, - "js-peer-id": { - "daviddias": { - "permission": "admin" - }, - "dignifiedquire": { - "permission": "push" - }, - "nginnever": { - "permission": "push" - }, - "nunofmn": { - "permission": "push" - }, + "js-libp2p-mplex": { "web3-bot": { "permission": "push" } }, - "js-peer-info": { - "daviddias": { - "permission": "admin" - }, - "dignifiedquire": { - "permission": "push" - }, - "nunofmn": { + "js-libp2p-multistream-select": { + "web3-bot": { "permission": "push" } }, - "jvm-libp2p": { + "js-libp2p-peer-collections": { "web3-bot": { "permission": "push" } }, - "libp2p": { - "Mr0grog": { - "permission": "pull" - }, - "carospiegly": { - "permission": "pull" - }, - "raulk": { - "permission": "admin" - }, + "js-libp2p-peer-id": { "web3-bot": { "permission": "push" } }, - "mplex": { - "aarshkshah1992": { + "js-libp2p-peer-record": { + "web3-bot": { "permission": "push" } }, - "notes": { - "aarshkshah1992": { - "permission": "push" - }, - "jsoares": { - "permission": "push" - }, + "js-libp2p-peer-store": { "web3-bot": { "permission": "push" - }, - "yiannisbot": { - "permission": "push" - } - }, - "npm-go-libp2p": { - "achingbrain": { - "permission": "admin" } }, - "npm-go-libp2p-dep": { - "aarshkshah1992": { - "permission": "push" - }, - "vasco-santos": { - "permission": "admin" - }, + "js-libp2p-pubsub-peer-discovery": { "web3-bot": { "permission": "push" } }, - "observation-deck": { - "AlanSl": { - "permission": "admin" - }, - "mcollina": { - "permission": "admin" - }, - "raulk": { - "permission": "admin" - }, + "js-libp2p-record": { "web3-bot": { "permission": "push" } }, - "observer-toolkit": { - "AlanSl": { - "permission": "admin" - }, - "aarshkshah1992": { - "permission": "push" - }, - "mcollina": { - "permission": "admin" - }, - "raulk": { - "permission": "admin" - }, + "js-libp2p-tcp": { "web3-bot": { "permission": "push" } }, - "projects": { - "aarshkshah1992": { - "permission": "push" - }, + "js-libp2p-topology": { "web3-bot": { "permission": "push" } }, - "pubsub-notes": { + "js-libp2p-tracked-map": { "web3-bot": { "permission": "push" } }, - "pull-mplex": { + "js-libp2p-utils": { "web3-bot": { "permission": "push" } }, - "py-libp2p": { - "alexh": { - "permission": "push" - }, - "carver": { - "permission": "admin" - }, - "ralexstokes": { + "js-libp2p-webrtc-direct": { + "vasco-santos": { "permission": "admin" }, - "robzajac": { - "permission": "push" - }, - "stuckinaboot": { - "permission": "push" - }, "web3-bot": { "permission": "push" - }, - "zixuanzh": { - "permission": "push" } }, - "py-libp2p-slog": { - "petar": { + "js-libp2p-webrtc-peer": { + "achingbrain": { "permission": "admin" }, "web3-bot": { "permission": "push" } }, - "py-libp2p-xor": { - "petar": { + "js-libp2p-webrtc-star": { + "vasco-santos": { "permission": "admin" }, "web3-bot": { "permission": "push" } }, - "repl": { - "aarshkshah1992": { - "permission": "push" - }, + "js-libp2p-websockets": { "web3-bot": { "permission": "push" } }, - "research-dht": { - "bigs": { + "npm-go-libp2p": { + "achingbrain": { "permission": "admin" } }, - "research-pubsub": { - "web3-bot": { - "permission": "push" - } - }, - "rust-libp2p": { - "raulk": { + "py-libp2p": { + "carver": { "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "rust-yamux": { - "ddorgan": { - "permission": "push" - }, - "tomaka": { - "permission": "push" - } - }, - "specs": { - "schomatis": { - "permission": "triage" - }, - "web3-bot": { - "permission": "push" - } - }, - "team-mgmt": { - "aarshkshah1992": { - "permission": "push" - }, - "web3-bot": { - "permission": "push" } }, - "test-plans": { - "hacdias": { - "permission": "maintain" - }, - "nonsense": { - "permission": "maintain" - }, + "repl": { "web3-bot": { "permission": "push" } }, - "testlab": { - "aarshkshah1992": { - "permission": "push" - }, - "jimpick": { - "permission": "push" - } - }, "website": { - "alanshaw": { - "permission": "push" - }, - "andyschwab": { - "permission": "admin" - }, "momack2": { "permission": "admin" - }, - "olizilla": { - "permission": "admin" - }, - "web3-bot": { - "permission": "push" } }, "workspace-go-libp2p": { - "Kubuxu": { - "permission": "push" - }, - "aarshkshah1992": { - "permission": "push" - }, - "backkem": { - "permission": "push" - }, "mcamou": { "permission": "push" }, "raulk": { "permission": "admin" - }, - "web3-bot": { - "permission": "push" - } - }, - "xtp": { - "web3-bot": { - "permission": "push" } } } diff --git a/github/libp2p/team.json b/github/libp2p/team.json index 5b7ee190..196e3075 100644 --- a/github/libp2p/team.json +++ b/github/libp2p/team.json @@ -4,19 +4,10 @@ "parent_team_id": null, "privacy": "closed" }, - "Devgrant editors": { - "id": "3356302", - "parent_team_id": null, - "privacy": "closed" - }, - "Observation UI": { - "id": "3891830", - "parent_team_id": null, + "Alumni": { "privacy": "closed" }, - "Repos - C#": { - "id": "2223530", - "parent_team_id": null, + "Bifrost": { "privacy": "closed" }, "Repos - Go": { @@ -24,11 +15,6 @@ "parent_team_id": null, "privacy": "closed" }, - "Repos - Haskell": { - "id": "2570766", - "parent_team_id": null, - "privacy": "closed" - }, "Repos - Java": { "id": "2976895", "parent_team_id": null, @@ -39,11 +25,6 @@ "parent_team_id": null, "privacy": "closed" }, - "Repos - Python": { - "id": "2976894", - "parent_team_id": null, - "privacy": "closed" - }, "Repos - Rust": { "id": "2457482", "parent_team_id": null, diff --git a/github/libp2p/team_membership.json b/github/libp2p/team_membership.json index 4ebab370..64e45b5d 100644 --- a/github/libp2p/team_membership.json +++ b/github/libp2p/team_membership.json @@ -9,12 +9,6 @@ "aschmahmann": { "role": "maintainer" }, - "autonome": { - "role": "member" - }, - "daviddias": { - "role": "maintainer" - }, "jbenet": { "role": "maintainer" }, @@ -24,42 +18,195 @@ "raulk": { "role": "maintainer" }, - "whyrusleeping": { - "role": "maintainer" - }, "yusefnapora": { "role": "member" } }, - "Devgrant editors": { - "Kubuxu": { - "role": "member" + "Alumni": { + "AlanSl": { + "permission": "member" }, - "Stebalien": { - "role": "maintainer" + "ChihChengLiang": { + "permission": "member" }, - "jacobheun": { - "role": "maintainer" + "JGAntunes": { + "permission": "member" }, - "raulk": { - "role": "maintainer" + "NIC619": { + "permission": "member" }, - "vasco-santos": { - "role": "member" + "RichardLitt": { + "permission": "member" }, - "vyzo": { - "role": "member" + "Warchant": { + "permission": "member" }, - "yusefnapora": { - "role": "member" + "ZenGround0": { + "permission": "member" + }, + "aamnv": { + "permission": "member" + }, + "alexh": { + "permission": "member" + }, + "anorth": { + "permission": "member" + }, + "autonome": { + "permission": "member" + }, + "bigs": { + "permission": "member" + }, + "cemozerr": { + "permission": "member" + }, + "dryajov": { + "permission": "member" + }, + "dvdplm": { + "permission": "member" + }, + "fbaiodias": { + "permission": "member" + }, + "flyingzumwalt": { + "permission": "member" + }, + "frrist": { + "permission": "member" + }, + "fsdiogo": { + "permission": "member" + }, + "gavinmcdermott": { + "permission": "member" + }, + "geoah": { + "permission": "member" + }, + "haadcode": { + "permission": "member" + }, + "hacdias": { + "permission": "member" + }, + "iceseer": { + "permission": "member" + }, + "jbenetsafer": { + "permission": "member" + }, + "jrhea": { + "permission": "member" + }, + "jsoares": { + "permission": "member" + }, + "keks": { + "permission": "member" + }, + "kevina": { + "permission": "member" + }, + "kishansagathiya": { + "permission": "member" + }, + "litzenberger": { + "permission": "member" + }, + "locotorp": { + "permission": "member" + }, + "mbaxter": { + "permission": "member" + }, + "mcollina": { + "permission": "member" + }, + "mhchia": { + "permission": "member" + }, + "mikeal": { + "permission": "member" + }, + "miyazono": { + "permission": "member" + }, + "mkalinin": { + "permission": "member" + }, + "mkg20001": { + "permission": "member" + }, + "mvid": { + "permission": "member" + }, + "nicola": { + "permission": "member" + }, + "nunofmn": { + "permission": "member" + }, + "olizilla": { + "permission": "member" + }, + "ortyomka": { + "permission": "member" + }, + "pipermerriam": { + "permission": "member" + }, + "ralexstokes": { + "permission": "member" + }, + "richardschneider": { + "permission": "member" + }, + "robzajac": { + "permission": "member" + }, + "romanb": { + "permission": "member" + }, + "shahankhatch": { + "permission": "member" + }, + "snazha-blkio": { + "permission": "member" + }, + "stongo": { + "permission": "member" + }, + "stuckinaboot": { + "permission": "member" + }, + "travisperson": { + "permission": "member" + }, + "victorb": { + "permission": "member" + }, + "yiannisbot": { + "permission": "member" + }, + "zixuanzh": { + "permission": "member" + }, + "zuiris": { + "permission": "member" } }, - "Observation UI": { - "AlanSl": { - "role": "member" + "Bifrost": { + "gmasgras": { + "permission": "member" }, - "raulk": { - "role": "maintainer" + "mcamou": { + "permission": "member" + }, + "thattommyhall": { + "permission": "member" } }, "Repos - Go": { @@ -72,36 +219,18 @@ "Stebalien": { "role": "maintainer" }, - "ZenGround0": { - "role": "member" - }, - "aarshkshah1992": { - "role": "member" - }, - "adlrocha": { - "role": "member" - }, "alanshaw": { "role": "member" }, - "anorth": { - "role": "member" - }, "aschmahmann": { "role": "maintainer" }, "dirkmc": { "role": "member" }, - "frrist": { - "role": "member" - }, "gammazero": { "role": "member" }, - "hacdias": { - "role": "member" - }, "hannahhoward": { "role": "member" }, @@ -117,9 +246,6 @@ "lidel": { "role": "member" }, - "magik6k": { - "role": "member" - }, "marten-seemann": { "role": "maintainer" }, @@ -138,9 +264,6 @@ "vyzo": { "role": "member" }, - "whyrusleeping": { - "role": "maintainer" - }, "willscott": { "role": "member" }, @@ -148,11 +271,6 @@ "role": "member" } }, - "Repos - Haskell": { - "daviddias": { - "role": "maintainer" - } - }, "Repos - Java": { "Nashatyrev": { "role": "member" @@ -160,89 +278,35 @@ "ajsutton": { "role": "member" }, - "cemozerr": { - "role": "member" - }, - "jrhea": { - "role": "member" - }, - "mbaxter": { - "role": "member" - }, - "mkalinin": { - "role": "member" - }, - "raulk": { - "role": "maintainer" - }, "rolfyone": { "role": "member" - }, - "shahankhatch": { - "role": "member" - }, - "snazha-blkio": { - "role": "member" } }, "Repos - JavaScript": { - "Gozala": { - "role": "member" - }, "SgtPooki": { "role": "member" }, "achingbrain": { "role": "member" }, - "adlrocha": { - "role": "member" - }, - "alanshaw": { - "role": "member" - }, - "daviddias": { - "role": "maintainer" - }, - "dirkmc": { - "role": "member" - }, - "hacdias": { - "role": "member" - }, "hugomrdias": { "role": "member" }, "jacobheun": { "role": "maintainer" }, - "kumavis": { - "role": "member" - }, "lidel": { "role": "member" }, - "mikeal": { - "role": "member" - }, - "mkg20001": { - "role": "member" - }, "momack2": { "role": "maintainer" }, "mpetrunic": { "role": "member" }, - "olizilla": { - "role": "member" - }, "vasco-santos": { "role": "member" }, - "vmx": { - "role": "member" - }, "wemeetagain": { "role": "member" }, @@ -250,60 +314,16 @@ "role": "member" } }, - "Repos - Python": { - "ChihChengLiang": { - "role": "member" - }, - "NIC619": { - "role": "member" - }, - "alexh": { - "role": "member" - }, - "mhchia": { - "role": "member" - }, - "pipermerriam": { - "role": "member" - }, - "ralexstokes": { - "role": "member" - }, - "raulk": { - "role": "maintainer" - }, - "robzajac": { - "role": "member" - }, - "stuckinaboot": { - "role": "member" - }, - "zixuanzh": { - "role": "member" - } - }, "Repos - Rust": { "AgeManning": { "role": "member" }, - "Stebalien": { - "role": "maintainer" - }, - "daviddias": { - "role": "maintainer" - }, - "dvdplm": { - "role": "member" - }, "elenaf9": { "role": "member" }, "mxinden": { "role": "maintainer" }, - "romanb": { - "role": "member" - }, "thomaseizinger": { "role": "member" }, @@ -320,9 +340,6 @@ "Specs contributors": { "mxinden": { "role": "member" - }, - "raulk": { - "role": "maintainer" } }, "ci": { @@ -333,125 +350,23 @@ "contributors": { "BigLep": { "role": "member" - }, - "JGAntunes": { - "role": "member" - }, - "Kubuxu": { - "role": "member" - }, - "MarcoPolo": { - "role": "member" - }, - "RichardLitt": { - "role": "member" - }, - "adlrocha": { - "role": "member" - }, - "daviddias": { - "role": "maintainer" - }, - "dignifiedquire": { - "role": "member" - }, - "dryajov": { - "role": "member" - }, - "fbaiodias": { - "role": "member" - }, - "flyingzumwalt": { - "role": "member" - }, - "fsdiogo": { - "role": "member" - }, - "gavinmcdermott": { - "role": "member" - }, - "haadcode": { - "role": "member" - }, - "hsanjuan": { - "role": "member" - }, - "jsoares": { - "role": "member" - }, - "kumavis": { - "role": "member" - }, - "litzenberger": { - "role": "member" - }, - "mcollina": { - "role": "member" - }, - "mikeal": { - "role": "member" - }, - "miyazono": { - "role": "member" - }, - "mkg20001": { - "role": "member" - }, - "nicola": { - "role": "member" - }, - "petar": { - "role": "member" - }, - "protolambda": { - "role": "member" - }, - "richardschneider": { - "role": "member" - }, - "victorb": { - "role": "member" - }, - "willscott": { - "role": "member" - }, - "yiannisbot": { - "role": "member" } }, "cpp-libp2p": { "Harrm": { "role": "member" }, - "Warchant": { - "role": "member" - }, - "art-gor": { - "role": "member" - }, - "iceseer": { - "role": "member" - }, "igor-egorov": { "role": "member" }, "kamilsa": { "role": "maintainer" }, - "ortyomka": { - "role": "member" - }, - "raulk": { - "role": "maintainer" - }, "turuslan": { "role": "member" }, "xDimon": { "role": "member" - }, - "zuiris": { - "role": "member" } }, "docs": { @@ -472,9 +387,6 @@ "BigLep": { "role": "maintainer" }, - "adlrocha": { - "role": "member" - }, "iand": { "role": "member" }, @@ -503,10 +415,10 @@ "Stebalien": { "role": "maintainer" }, - "achingbrain": { + "ajnavarro": { "role": "member" }, - "ajnavarro": { + "achingbrain": { "role": "member" }, "arajasek": { diff --git a/github/libp2p/team_repository.json b/github/libp2p/team_repository.json index bdf87b24..27cd9371 100644 --- a/github/libp2p/team_repository.json +++ b/github/libp2p/team_repository.json @@ -301,36 +301,8 @@ "permission": "admin" } }, - "Devgrant editors": { - "devgrants": { - "permission": "push" - } - }, - "Observation UI": { - "observation-deck": { - "permission": "admin" - }, - "observer-toolkit": { - "permission": "push" - } - }, - "Repos - C#": { - "cs-libp2p-crypto": { - "permission": "push" - }, - "cs-libp2p-io": { - "permission": "push" - }, - "cs-libp2p-peer": { - "permission": "push" - }, - "cs-libp2p-protocol": { - "permission": "push" - }, - "cs-libp2p-record": { - "permission": "push" - }, - "cs-libp2p-utils": { + "Bifrost": { + "hydra-booster-infra": { "permission": "push" } }, @@ -636,11 +608,6 @@ "permission": "push" } }, - "Repos - Haskell": { - "haskell-p2pcat": { - "permission": "push" - } - }, "Repos - Java": { "jvm-libp2p": { "permission": "push" @@ -891,17 +858,6 @@ "permission": "push" } }, - "Repos - Python": { - "libp2p": { - "permission": "push" - }, - "notes": { - "permission": "push" - }, - "py-libp2p": { - "permission": "push" - } - }, "Repos - Rust": { "demo-multi-lang": { "permission": "push" diff --git a/scripts/remove-inactive-members.js b/scripts/remove-inactive-members.js new file mode 100755 index 00000000..9f56de7e --- /dev/null +++ b/scripts/remove-inactive-members.js @@ -0,0 +1,87 @@ +#!/usr/bin/env bash +":" //# comment; exec /usr/bin/env node --input-type=module - "$@" < "$0" + +import { writeFileSync, readFileSync } from 'fs'; + +const __dirname = process.cwd(); +const args = process.argv.slice(2); + +const unimportantCategories = ['org_credential_authorization']; + +const auditLogFilePath = args[0]; +// You can export the audit log from the organization settings page +// See https://docs.github.com/en/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization#exporting-the-audit-log +const auditLog = JSON.parse(readFileSync(auditLogFilePath)).filter(event => { + const category = event.action.split('.')[0]; + return ! unimportantCategories.includes(category); +}); + +const cutoffDate = new Date(); +cutoffDate.setMonth(cutoffDate.getMonth() - 12); + +const membershipFilePath = `${__dirname}/github/libp2p/membership.json`; +const membership = JSON.parse(readFileSync(membershipFilePath)); +const repositoryCollaboratorFilePath = `${__dirname}/github/libp2p/repository_collaborator.json`; +const repositoryCollaborator = JSON.parse(readFileSync(repositoryCollaboratorFilePath)); +const teamFilePath = `${__dirname}/github/libp2p/team.json`; +const team = JSON.parse(readFileSync(teamFilePath)); +const teamMembershipFilePath = `${__dirname}/github/libp2p/team_membership.json`; +const teamMembership = JSON.parse(readFileSync(teamMembershipFilePath)); +const teamRepositoryFilePath = `${__dirname}/github/libp2p/team_repository.json`; +const teamRepository = JSON.parse(readFileSync(teamRepositoryFilePath)); + +for (const [name, _config] of Object.entries(membership)) { + const recentActivity = auditLog.find(activity => { + const createdAt = new Date(activity.created_at); + return activity.actor == name && createdAt >= cutoffDate; + }) + if (recentActivity === undefined) { + console.log(`Didn't find any recent activity for ${name}. Removing ${name} from the organization.`) + delete membership[name] + } +} + +for (const [repositoryName, repositoryCollaborators] of Object.entries(repositoryCollaborator)) { + for (const [userName, _config] of Object.entries(repositoryCollaborators)) { + const recentActivity = auditLog.find(activity => { + const createdAt = new Date(activity.created_at); + return activity.actor == userName && activity.repo == `libp2p/${repositoryName}` && createdAt >= cutoffDate; + }) + if (recentActivity === undefined) { + console.log(`Didn't find any recent activity for ${userName} in ${repositoryName}. Removing ${userName} from ${repositoryName}.`) + delete repositoryCollaborator[repositoryName][userName]; + } + } + if (Object.keys(repositoryCollaborator[repositoryName]).length === 0) { + console.log(`There are no users left in ${repositoryName}. Removing ${repositoryName}.`) + delete repositoryCollaborator[repositoryName]; + } +} + +for (const [teamName, teamMembers] of Object.entries(teamMembership)) { + const repositories = Object.keys(teamRepository[teamName] ?? {}).map(name => { + return `libp2p/${name}` + }); + for (const [userName, _config] of Object.entries(teamMembers)) { + const recentActivity = auditLog.find(activity => { + const createdAt = new Date(activity.created_at); + return activity.actor == userName && repositories.includes(activity.repo) && createdAt >= cutoffDate; + }) + if (recentActivity === undefined) { + console.log(`Didn't find any recent activity for ${userName} in any of the repositories belonging to ${teamName}. Removing ${userName} from ${teamName}.`) + delete teamMembership[teamName][userName]; + } + } + if (Object.keys(teamMembership[teamName]).length === 0) { + console.log(`There are no members left in ${teamName}. Removing ${teamName}.`) + delete team[teamName]; + delete teamMembership[teamName]; + delete teamRepository[teamName]; + } +} + +writeFileSync(membershipFilePath, `${JSON.stringify(membership, null, 2)}\n`); +writeFileSync(repositoryCollaboratorFilePath, `${JSON.stringify(repositoryCollaborator, null, 2)}\n`); +writeFileSync(teamFilePath, `${JSON.stringify(team, null, 2)}\n`); +writeFileSync(teamMembershipFilePath, `${JSON.stringify(teamMembership, null, 2)}\n`); +writeFileSync(teamRepositoryFilePath, `${JSON.stringify(teamRepository, null, 2)}\n`);