diff --git a/cron/config/config.go b/cron/config/config.go new file mode 100644 index 00000000000..fbc360e0e7a --- /dev/null +++ b/cron/config/config.go @@ -0,0 +1,24 @@ +// Copyright 2021 Security Scorecard Authors +// +// Licensed under the Apache License, Vershandlern 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permisshandlerns and +// limitathandlerns under the License. + +package config + +// TODO(Azeem Shaikh): Use config.yaml to store these values and allow users to override these values using ENV vars. +const ( + ResultDataBucketURL string = "gs://ossf-scorecard-data" + RequestTopicURL = "gcppubsub://projects/openssf/topics/scorecard-batch-requests" + InputReposFile = "projects.csv" + ShardNumFilename = ".shard_num" + ShardSize int = 250 +) diff --git a/cron/config/projects.csv b/cron/config/projects.csv new file mode 100644 index 00000000000..6ce0a0160ce --- /dev/null +++ b/cron/config/projects.csv @@ -0,0 +1,2883 @@ +repo,metadata +github.com/18F/identity-idp, +github.com/1N3/Sn1per, +github.com/24pullrequests/24pullrequests, +github.com/AElfProject/AElf, +github.com/ARMmbed/mbed-os, +github.com/ARMmbed/mbedtls, +github.com/Activiti/Activiti, +github.com/AdguardTeam/AdguardFilters, +github.com/AlchemyCMS/alchemy_cms, +github.com/AliasIO/wappalyzer, +github.com/Amanieu/parking_lot, +github.com/AntennaPod/AntennaPod, +github.com/Anuken/Mindustry, +github.com/ApolloAuto/apollo, +github.com/Ardour/ardour, +github.com/ArduPilot/ardupilot, +github.com/AssetSync/asset_sync, +github.com/AsyncHttpClient/async-http-client, +github.com/AudioKit/AudioKit, +github.com/AugurProject/augur, +github.com/AutoFixture/AutoFixture, +github.com/AutoMapper/AutoMapper, +github.com/Automattic/jetpack, +github.com/Automattic/mongoose, +github.com/Automattic/wp-calypso, +github.com/AvaloniaUI/Avalonia, +github.com/Azure/aks-engine, +github.com/Azure/azure-cli, +github.com/Azure/azure-functions-host, +github.com/Azure/azure-iot-sdk-c, +github.com/Azure/azure-iot-sdk-csharp, +github.com/Azure/azure-powershell, +github.com/Azure/azure-rest-api-specs, +github.com/Azure/azure-sdk-for-go, +github.com/Azure/azure-sdk-for-java, +github.com/Azure/azure-sdk-for-js, +github.com/Azure/azure-sdk-for-net, +github.com/Azure/azure-sdk-for-python, +github.com/Azure/azure-sdk-for-ruby, +github.com/Azure/iotedge, +github.com/Azure/sonic-buildimage, +github.com/AzureAD/microsoft-authentication-library-for-dotnet, +github.com/BOINC/boinc, +github.com/BabylonJS/Babylon.js, +github.com/Bash-it/bash-it, +github.com/Behat/Behat, +github.com/BetterErrors/better_errors, +github.com/Bitcoin-ABC/bitcoin-abc, +github.com/BlackArch/blackarch, +github.com/BurntSushi/quickcheck, +github.com/BurntSushi/ripgrep, +github.com/BurntSushi/rust-csv, +github.com/CFPAOrg/Minecraft-Mod-Language-Package, +github.com/CGAL/cgal, +github.com/CISOfy/lynis, +github.com/Cacti/cacti, +github.com/CanCanCommunity/cancancan, +github.com/Canop/broot, +github.com/Catel/Catel, +github.com/CenterForOpenScience/osf.io, +github.com/ChilliCream/hotchocolate, +github.com/Chocobozzz/PeerTube, +github.com/ChurchCRM/CRM, +github.com/CleverCloud/lapin, +github.com/CleverRaven/Cataclysm-DDA, +github.com/ClickHouse/ClickHouse, +github.com/ClusterLabs/pacemaker, +github.com/ClusterLabs/resource-agents, +github.com/CocoaPods/CocoaPods, +github.com/CocoaPods/Xcodeproj, +github.com/Codeception/Codeception, +github.com/CoinAlpha/hummingbot, +github.com/ComplianceAsCode/content, +github.com/CosmosOS/Cosmos, +github.com/Covid-19Radar/Covid19Radar, +github.com/CrunchyData/crunchy-containers, +github.com/CrunchyData/postgres-operator, +github.com/Cyan4973/xxHash, +github.com/DPDK/dpdk, +github.com/DSpace/DSpace, +github.com/Dart-Code/Dart-Code, +github.com/DataDog/datadog-agent, +github.com/DataDog/dd-opentracing-cpp, +github.com/DataDog/integrations-core, +github.com/DefinitelyTyped/DefinitelyTyped, +github.com/DestinyItemManager/DIM, +github.com/Dolibarr/dolibarr, +github.com/DynamoDS/Dynamo, +github.com/DynamoRIO/dynamorio, +github.com/EC-CUBE/ec-cube, +github.com/EDDiscovery/EDDiscovery, +github.com/EOSIO/eos, +github.com/EasyCorp/EasyAdminBundle, +github.com/EasyNetQ/EasyNetQ, +github.com/ElementsProject/lightning, +github.com/Elgg/Elgg, +github.com/EventStore/EventStore, +github.com/FFmpeg/FFmpeg, +github.com/FRRouting/frr, +github.com/FakeItEasy/FakeItEasy, +github.com/FasterXML/jackson-core, +github.com/FasterXML/jackson-databind, +github.com/Flexget/Flexget, +github.com/FluentValidation/FluentValidation, +github.com/Fody/Fody, +github.com/FreeCAD/FreeCAD, +github.com/FreeRADIUS/freeradius-server, +github.com/FreeRDP/FreeRDP, +github.com/FreshRSS/FreshRSS, +github.com/FriendsOfPHP/PHP-CS-Fixer, +github.com/FriendsOfSymfony/FOSRestBundle, +github.com/Frogging-Family/wine-tkg-git, +github.com/Froxlor/Froxlor, +github.com/Fyrd/caniuse, +github.com/GNOME/gimp, +github.com/GNOME/glib, +github.com/GNOME/gnome-shell, +github.com/GNOME/gtk, +github.com/GNOME/librsvg, +github.com/GameServerManagers/LinuxGSM, +github.com/Geal/nom, +github.com/GenericMappingTools/gmt, +github.com/Genymobile/scrcpy, +github.com/GitTools/GitVersion, +github.com/Gnucash/gnucash, +github.com/GoogleContainerTools/skaffold, +github.com/Graylog2/graylog2-server, +github.com/Hack23/cia, +github.com/Hack23/securityfixerbot, +github.com/Hack23/sonar-cloudformation-plugin, +github.com/Hacker0x01/react-datepicker, +github.com/HandBrake/HandBrake, +github.com/HerculesWS/Hercules, +github.com/Homebrew/brew, +github.com/Homebrew/homebrew-cask, +github.com/Homebrew/homebrew-cask-fonts, +github.com/Homebrew/homebrew-cask-versions, +github.com/Homebrew/homebrew-core, +github.com/Homebrew/install, +github.com/Homebrew/linuxbrew-core, +github.com/HospitalRun/hospitalrun-frontend, +github.com/Humanizr/Humanizer, +github.com/HypothesisWorks/hypothesis, +github.com/ILIAS-eLearning/ILIAS, +github.com/IQSS/dataverse, +github.com/Icinga/icinga2, +github.com/IdentityServer/IdentityServer4, +github.com/IgniteUI/igniteui-angular, +github.com/ImageMagick/ImageMagick, +github.com/InsightSoftwareConsortium/ITK, +github.com/IntelRealSense/realsense-ros, +github.com/JabRef/jabref, +github.com/Jackett/Jackett, +github.com/JamesNK/Newtonsoft.Json, +github.com/JasperFx/marten, +github.com/JeffreySu/WeiXinMPSDK, +github.com/Jermolene/TiddlyWiki5, +github.com/JetBrains/intellij-scala, +github.com/JetBrains/resharper-unity, +github.com/JohnSully/KeyDB, +github.com/JoshClose/CsvHelper, +github.com/JustArchiNET/ArchiSteamFarm, +github.com/KSP-CKAN/CKAN, +github.com/Katello/katello, +github.com/KhronosGroup/glslang, +github.com/Kitware/CMake, +github.com/KnpLabs/php-github-api, +github.com/Koenkk/zigbee-herdsman-converters, +github.com/Koenkk/zigbee2mqtt, +github.com/KratosMultiphysics/Kratos, +github.com/Kunena/Kunena-Forum, +github.com/Kunzisoft/KeePassDX, +github.com/LCTT/TranslateProject, +github.com/LMMS/lmms, +github.com/Laravel-Backpack/CRUD, +github.com/Laravel-Lang/lang, +github.com/LemmyNet/lemmy, +github.com/LessWrong2/Lesswrong2, +github.com/Lienol/openwrt, +github.com/LimeSurvey/LimeSurvey, +github.com/LonamiWebs/Telethon, +github.com/LuaJIT/LuaJIT,"project=envoy,dependency=true" +github.com/LukeSmithxyz/mutt-wizard, +github.com/LukeSmithxyz/voidrice, +github.com/MISP/MISP, +github.com/MahApps/MahApps.Metro, +github.com/ManageIQ/manageiq, +github.com/MapServer/MapServer, +github.com/MariaDB/server, +github.com/MarimerLLC/csla, +github.com/MarkUsProject/Markus, +github.com/MarlinFirmware/Marlin, +github.com/Marwes/combine, +github.com/MassTransit/MassTransit, +github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit, +github.com/MaterializeInc/materialize, +github.com/MetaMask/metamask-extension, +github.com/MetacoSA/NBitcoin, +github.com/MichaIng/DietPi, +github.com/MiniProfiler/rack-mini-profiler, +github.com/MongoEngine/mongoengine, +github.com/MonoGame/MonoGame, +github.com/MscrmTools/XrmToolBox, +github.com/Mudlet/Mudlet, +github.com/MusicPlayerDaemon/MPD, +github.com/MvvmCross/MvvmCross, +github.com/MythTV/mythtv, +github.com/NLog/NLog, +github.com/NREL/EnergyPlus, +github.com/NREL/OpenStudio, +github.com/NativeScript/NativeScript, +github.com/NethermindEth/nethermind, +github.com/NixOS/nix, +github.com/NodeBB/NodeBB, +github.com/NuGet/NuGet.Client, +github.com/NuGet/NuGetGallery, +github.com/OData/WebApi, +github.com/OISF/suricata, +github.com/OP-TEE/optee_os, +github.com/OSGeo/PROJ, +github.com/OSGeo/gdal, +github.com/OWASP/owasp-mstg, +github.com/OWASP/wstg, +github.com/OmniSharp/omnisharp-roslyn, +github.com/Oneflow-Inc/oneflow, +github.com/OpenAPITools/openapi-generator, +github.com/OpenHFT/Chronicle-Queue, +github.com/OpenHFT/OpenHFT, +github.com/OpenImageIO/oiio, +github.com/OpenLiberty/open-liberty, +github.com/OpenLightingProject/ola, +github.com/OpenMW/openmw, +github.com/OpenMined/PySyft, +github.com/OpenNMS/opennms, +github.com/OpenNebula/one, +github.com/OpenRA/OpenRA, +github.com/OpenRCT2/OpenRCT2, +github.com/OpenRefine/OpenRefine, +github.com/OpenSC/OpenSC, +github.com/OpenSID/OpenSID, +github.com/OpenSIPS/opensips, +github.com/OpenVPN/easy-rsa, +github.com/OpenZWave/open-zwave, +github.com/OrchardCMS/OrchardCore, +github.com/PDAL/PDAL, +github.com/PHPMailer/PHPMailer, +github.com/PHPOffice/PhpSpreadsheet, +github.com/PX4/PX4-Autopilot, +github.com/PaddlePaddle/Paddle, +github.com/PaperMC/Paper, +github.com/PapirusDevelopmentTeam/papirus-icon-theme, +github.com/Particular/NServiceBus, +github.com/PistonDevelopers/piston, +github.com/PointCloudLibrary/pcl, +github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql, +github.com/PowerDNS/pdns, +github.com/PowerShell/PowerShell, +github.com/PrefectHQ/prefect, +github.com/PrestaShop/PrestaShop, +github.com/PrismJS/prism, +github.com/PrismLibrary/Prism, +github.com/PyCQA/isort, +github.com/PyCQA/pylint, +github.com/PyGithub/PyGithub, +github.com/PyO3/pyo3, +github.com/PyTorchLightning/pytorch-lightning, +github.com/Pylons/pyramid, +github.com/Qiskit/qiskit-terra, +github.com/QuantConnect/Lean, +github.com/RIOT-OS/RIOT, +github.com/RPCS3/rpcs3, +github.com/RT-Thread/rt-thread, +github.com/RTEMS/rtems, +github.com/Radarr/Radarr, +github.com/RailsEventStore/rails_event_store, +github.com/RasaHQ/rasa, +github.com/ReactTraining/react-router, +github.com/ReactiveX/RxJava, +github.com/ReactiveX/rxjs, +github.com/RetroPie/RetroPie-Setup, +github.com/RfidResearchGroup/proxmark3, +github.com/RicoSuter/NJsonSchema, +github.com/RicoSuter/NSwag, +github.com/Rigellute/spotify-tui, +github.com/RobotLocomotion/drake, +github.com/RocketChat/Rocket.Chat, +github.com/RubyMoney/money, +github.com/Rust-SDL2/rust-sdl2, +github.com/RustCrypto/traits, +github.com/RustPython/RustPython, +github.com/SAP/openui5, +github.com/SCons/scons, +github.com/SELinuxProject/selinux, +github.com/STEllAR-GROUP/hpx, +github.com/SWI-Prolog/swipl-devel, +github.com/SchedMD/slurm, +github.com/Security-Onion-Solutions/securityonion, +github.com/Seldaek/monolog, +github.com/SeleniumHQ/docker-selenium, +github.com/SemanticMediaWiki/SemanticMediaWiki, +github.com/SergioBenitez/Rocket, +github.com/ServiceStack/ServiceStack, +github.com/ShareX/ShareX, +github.com/Shopify/sarama, +github.com/SixLabors/ImageSharp, +github.com/SkyAPM/cpp2sky,"project=envoy,depedency=true" +github.com/Sonarr/Sonarr, +github.com/SpecFlowOSS/SpecFlow, +github.com/Spotifyd/spotifyd, +github.com/Squidex/squidex, +github.com/StackExchange/Dapper, +github.com/StackExchange/StackExchange.Redis, +github.com/StackStorm/st2, +github.com/SteeltoeOSS/Steeltoe, +github.com/Stellarium/stellarium, +github.com/Submitty/Submitty, +github.com/SubtitleEdit/subtitleedit, +github.com/Supervisor/supervisor, +github.com/Sylius/Sylius, +github.com/System-IO-Abstractions/System.IO.Abstractions, +github.com/TASVideos/BizHawk, +github.com/TYPO3/TYPO3.CMS, +github.com/TeXitoi/structopt, +github.com/TechEmpower/FrameworkBenchmarks, +github.com/Tencent/rapidjson,"project=envoy,dependency=true" +github.com/TheAlgorithms/Python, +github.com/TheBastionBot/Bastion, +github.com/Thinstation/thinstation, +github.com/Tribler/tribler, +github.com/TrinityCore/TrinityCore, +github.com/TryGhost/Ghost, +github.com/TryGhost/Ghost-Admin, +github.com/TykTechnologies/tyk, +github.com/UPBGE/upbge, +github.com/Ultimaker/Cura, +github.com/Ultimaker/CuraEngine, +github.com/Unidata/netcdf-c, +github.com/UnigramDev/Unigram, +github.com/Unity-Technologies/Graphics, +github.com/Unity-Technologies/ml-agents, +github.com/VSCodeVim/Vim, +github.com/VSCodium/vscodium, +github.com/Varying-Vagrant-Vagrants/VVV, +github.com/VictoriaMetrics/VictoriaMetrics, +github.com/VirtoCommerce/vc-platform, +github.com/WAVM/WAVM,"project=envoy,dependency=true" +github.com/WWBN/AVideo, +github.com/Warewolf-ESB/Warewolf, +github.com/WebAssembly/wasm-c-api, +github.com/WeblateOrg/weblate, +github.com/WikiEducationFoundation/WikiEduDashboard, +github.com/Winetricks/winetricks, +github.com/WireGuard/wireguard-linux, +github.com/WordPress/WordPress, +github.com/WordPress/gutenberg, +github.com/WordPress/wordpress-develop, +github.com/XAMPPRocky/tokei, +github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks, +github.com/Xilinx/linux-xlnx, +github.com/YAFNET/YAFNET, +github.com/YetiForceCompany/YetiForceCRM, +github.com/Yoast/wordpress-seo, +github.com/Z3Prover/z3, +github.com/ZeusAutomacao/DFe.NET, +github.com/ZoneMinder/zoneminder, +github.com/abonas/kubeclient, +github.com/abpframework/abp, +github.com/abseil/abseil-cpp,"project=envoy,dependency=true" +github.com/acassen/keepalived, +github.com/acmesh-official/acme.sh, +github.com/actions/runner, +github.com/activeadmin/activeadmin, +github.com/activemerchant/active_merchant, +github.com/activerecord-hackery/ransack, +github.com/activescaffold/active_scaffold, +github.com/actix/actix, +github.com/actix/actix-extras, +github.com/actix/actix-net, +github.com/actix/actix-web, +github.com/adafruit/Adafruit_CircuitPython_Bundle, +github.com/adempiere/adempiere, +github.com/afragen/github-updater, +github.com/aframevr/aframe, +github.com/ai/autoprefixer-rails, +github.com/aio-libs/aiohttp, +github.com/airbnb/javascript, +github.com/airbrake/airbrake, +github.com/akaunting/akaunting, +github.com/akeneo/pim-community-dev, +github.com/akka/akka, +github.com/akka/akka-http, +github.com/akkadotnet/akka.net, +github.com/alacritty/alacritty, +github.com/alanmcgovern/monotorrent, +github.com/alexcrichton/cc-rs, +github.com/alexcrichton/curl-rust, +github.com/alexcrichton/proc-macro2, +github.com/alexcrichton/toml-rs, +github.com/alexreisner/geocoder, +github.com/alibaba/dragonwell8, +github.com/alibaba/druid, +github.com/alibaba/fastjson, +github.com/alibaba/nacos, +github.com/allenai/allennlp, +github.com/allinurl/goaccess, +github.com/alphagov/whitehall, +github.com/alpinelinux/aports, +github.com/amethyst/amethyst, +github.com/ampache/ampache, +github.com/ampproject/amp-wp, +github.com/ampproject/amphtml, +github.com/anacrolix/torrent, +github.com/angular-ui/ui-router, +github.com/angular/angular, +github.com/angular/angular-cli, +github.com/angular/angular.js, +github.com/angular/clutz, +github.com/angular/components, +github.com/angular/material, +github.com/angular/material2, +github.com/angular/tsickle, +github.com/angular/universal, +github.com/angularsen/UnitsNet, +github.com/ankidroid/Anki-Android, +github.com/ansible-community/molecule, +github.com/ansible/ansible, +github.com/ansible/awx, +github.com/ant-design/ant-design, +github.com/ant-design/ant-design-pro, +github.com/ant-design/pro-components, +github.com/antlr/antlr4, +github.com/antonbabenko/pre-commit-terraform, +github.com/aosp-mirror/kernel_common, +github.com/aosp-mirror/platform_frameworks_base, +github.com/apache/activemq-artemis, +github.com/apache/airflow, +github.com/apache/ant, +github.com/apache/arrow, +github.com/apache/avro, +github.com/apache/beam, +github.com/apache/calcite, +github.com/apache/carbondata, +github.com/apache/cassandra, +github.com/apache/cloudstack, +github.com/apache/commons-lang, +github.com/apache/cordova-android, +github.com/apache/drill, +github.com/apache/druid, +github.com/apache/dubbo, +github.com/apache/flink, +github.com/apache/geode, +github.com/apache/groovy, +github.com/apache/hadoop, +github.com/apache/hbase, +github.com/apache/hive, +github.com/apache/httpd, +github.com/apache/incubator-echarts, +github.com/apache/incubator-mxnet, +github.com/apache/incubator-nuttx, +github.com/apache/isis, +github.com/apache/jena, +github.com/apache/kafka, +github.com/apache/karaf, +github.com/apache/kylin, +github.com/apache/libcloud, +github.com/apache/maven-surefire, +github.com/apache/mesos, +github.com/apache/netbeans, +github.com/apache/phoenix, +github.com/apache/pulsar, +github.com/apache/shardingsphere, +github.com/apache/skywalking, +github.com/apache/skywalking-data-collect-protocol,"project=envoy,dependency=true" +github.com/apache/spark, +github.com/apache/storm, +github.com/apache/struts, +github.com/apache/thrift, +github.com/apache/tomcat, +github.com/apache/trafficserver, +github.com/apache/tvm, +github.com/apache/zeppelin, +github.com/apache/zookeeper, +github.com/apereo/cas, +github.com/api-platform/core, +github.com/apollographql/apollo-client, +github.com/apollographql/apollo-server, +github.com/appium/appium, +github.com/apple/foundationdb, +github.com/apple/swift, +github.com/arangodb/arangodb, +github.com/archivesspace/archivesspace, +github.com/archlinuxarm/PKGBUILDs, +github.com/archlinuxcn/repo, +github.com/ardatan/graphql-tools, +github.com/arendst/Tasmota, +github.com/argoproj/argo, +github.com/argoproj/argo-cd, +github.com/armbian/build, +github.com/arrow-kt/arrow, +github.com/artsy/force, +github.com/arvidn/libtorrent, +github.com/asciidoctor/asciidoctor, +github.com/asciidoctor/asciidoctor-pdf, +github.com/asdf-vm/asdf, +github.com/asdf-vm/asdf-plugins, +github.com/aspnetboilerplate/aspnetboilerplate, +github.com/assertj/assertj-core, +github.com/assimp/assimp, +github.com/asterisk/asterisk, +github.com/astronomer/astronomer, +github.com/astropy/astropy, +github.com/async-graphql/async-graphql, +github.com/async-rs/async-std, +github.com/atom/atom, +github.com/austintoddj/canvas, +github.com/autofac/Autofac, +github.com/autozimu/LanguageClient-neovim, +github.com/avelino/awesome-go, +github.com/aws-amplify/amplify-js, +github.com/aws/amazon-freertos, +github.com/aws/aws-cdk, +github.com/aws/aws-cli, +github.com/aws/aws-sdk-go, +github.com/aws/aws-sdk-java, +github.com/aws/aws-sdk-net, +github.com/aws/aws-sdk-php, +github.com/aws/aws-sdk-ruby, +github.com/aws/jsii, +github.com/awslabs/amazon-eks-ami, +github.com/awslabs/s2n, +github.com/axboe/fio, +github.com/axios/axios, +github.com/azerothcore/azerothcore-wotlk, +github.com/babel/babel, +github.com/backdrop/backdrop, +github.com/backstage/backstage, +github.com/backup/backup, +github.com/badges/shields, +github.com/bagisto/bagisto, +github.com/balderdashy/sails, +github.com/ballerina-platform/ballerina-lang, +github.com/barryvdh/laravel-debugbar, +github.com/barryvdh/laravel-ide-helper, +github.com/basho/riak, +github.com/bats-core/bats-core, +github.com/bazelbuild/apple_support, +github.com/bazelbuild/bazel, +github.com/bazelbuild/bazel-gazelle,"project=envoy,dependency=true" +github.com/bazelbuild/bazel-toolchains,"project=envoy,dependency=true" +github.com/bazelbuild/rules_apple, +github.com/bazelbuild/rules_cc,"project=envoy,dependency=true" +github.com/bazelbuild/rules_closure, +github.com/bazelbuild/rules_docker, +github.com/bazelbuild/rules_foreign_cc,"project=envoy,dependency=true" +github.com/bazelbuild/rules_fuzzing,"project=envoy,dependency=true" +github.com/bazelbuild/rules_go, +github.com/bazelbuild/rules_postcss, +github.com/bazelbuild/rules_python,"project=envoy,dependency=true" +github.com/bazelbuild/rules_rust, +github.com/bazelbuild/rules_sass, +github.com/bazelbuild/rules_swift, +github.com/bbidulock/icewm, +github.com/bblimke/webmock, +github.com/bchavez/Bogus, +github.com/bcit-ci/CodeIgniter, +github.com/beagleboard/linux, +github.com/beego/beego, +github.com/beetbox/beets, +github.com/benmosher/eslint-plugin-import, +github.com/benoitc/gunicorn, +github.com/betaflight/betaflight, +github.com/bevyengine/bevy, +github.com/bigbluebutton/bigbluebutton, +github.com/bigbluebutton/greenlight, +github.com/bioconda/bioconda-recipes, +github.com/biojava/biojava, +github.com/biopython/biopython, +github.com/bitcoin/bips, +github.com/bitcoin/bitcoin, +github.com/bitnami/bitnami-docker-mariadb, +github.com/bitnami/bitnami-docker-mongodb, +github.com/bitnami/bitnami-docker-nginx, +github.com/bitnami/bitnami-docker-postgresql, +github.com/bitnami/bitnami-docker-redis, +github.com/bitnami/bitnami-docker-wordpress, +github.com/bkaradzic/bgfx, +github.com/bkimminich/juice-shop, +github.com/blackjack4494/yt-dlc, +github.com/blender/blender, +github.com/blockstack/stacks-blockchain, +github.com/bluejekyll/trust-dns, +github.com/bndtools/bnd, +github.com/boa-dev/boa, +github.com/bokeh/bokeh, +github.com/boogie-org/boogie, +github.com/boot2docker/boot2docker, +github.com/bootstrap-vue/bootstrap-vue, +github.com/borgbackup/borg, +github.com/boto/boto3, +github.com/boto/botocore, +github.com/brave/brave-browser, +github.com/brave/brave-core, +github.com/brianc/node-postgres, +github.com/briannesbitt/Carbon, +github.com/btcpayserver/btcpayserver, +github.com/buildbot/buildbot, +github.com/buildkite/agent, +github.com/bytecodealliance/wasm-tools, +github.com/bytecodealliance/wasmtime, +github.com/c-ares/c-ares, +github.com/caddyserver/caddy, +github.com/cake-build/cake, +github.com/cakephp/app, +github.com/cakephp/cakephp, +github.com/cakephp/debug_kit, +github.com/cakephp/phinx, +github.com/calamares/calamares, +github.com/camunda/camunda-bpm-platform, +github.com/canonical/cloud-init, +github.com/capistrano/capistrano, +github.com/capnproto/capnproto-rust, +github.com/carrierwaveuploader/carrierwave, +github.com/castleproject/Windsor, +github.com/castwide/solargraph, +github.com/catboost/catboost, +github.com/catchorg/Catch2, +github.com/cbeust/testng, +github.com/ccache/ccache, +github.com/ccxt/ccxt, +github.com/cdk/cdk, +github.com/cefsharp/CefSharp, +github.com/celery/celery, +github.com/celery/kombu, +github.com/celluloid/celluloid, +github.com/census-instrumentation/opencensus-cpp, +github.com/centreon/centreon, +github.com/ceph/ceph, +github.com/ceph/ceph-container, +github.com/ceph/ceph-csi, +github.com/cfengine/core, +github.com/cgrates/cgrates, +github.com/chainer/chainer, +github.com/chakra-ui/chakra-ui, +github.com/chamilo/chamilo-lms, +github.com/checkpoint-restore/criu, +github.com/checkstyle/checkstyle, +github.com/chef/bento, +github.com/chef/chef, +github.com/chef/chef-dk, +github.com/chef/ohai, +github.com/chef/omnibus, +github.com/chkr1011/MQTTnet, +github.com/chrislusf/seaweedfs, +github.com/chronotope/chrono, +github.com/chummer5a/chummer5a, +github.com/cilium/cilium, +github.com/circonus-labs/libcircllhist, +github.com/citation-style-language/styles, +github.com/citusdata/citus, +github.com/civicrm/civicrm-core, +github.com/ckan/ckan, +github.com/clap-rs/clap, +github.com/clementine-player/Clementine, +github.com/cli/cli, +github.com/cloud-hypervisor/cloud-hypervisor, +github.com/cloudevents/spec, +github.com/cloudflare/wrangler, +github.com/cloudfoundry/bosh, +github.com/cloudfoundry/cli, +github.com/cloudfoundry/uaa, +github.com/clux/kube-rs, +github.com/cmangos/mangos-wotlk, +github.com/cms-sw/cmssw, +github.com/cncf/devstats, +github.com/cobbler/cobbler, +github.com/cockpit-project/cockpit, +github.com/cockroachdb/cockroach, +github.com/cocos2d/cocos2d-x, +github.com/codecombat/codecombat, +github.com/codecov/codecov-bash, +github.com/codeigniter4/CodeIgniter4, +github.com/coelckers/gzdoom, +github.com/collectd/collectd, +github.com/comit-network/comit-rs, +github.com/commaai/openpilot, +github.com/composer/composer, +github.com/composer/installers, +github.com/conan-io/conan, +github.com/concrete5/concrete5, +github.com/conda-forge/staged-recipes, +github.com/conda/conda, +github.com/confluentinc/examples, +github.com/consul/consul, +github.com/containerd/containerd, +github.com/containers/buildah, +github.com/containers/image, +github.com/containers/podman, +github.com/containers/storage, +github.com/contiki-ng/contiki-ng, +github.com/coolsnowwolf/lede, +github.com/coreboot/coreboot, +github.com/coredns/coredns, +github.com/cortexproject/cortex, +github.com/cosmos/cosmos-sdk, +github.com/couchbase/couchbase-net-client, +github.com/coverlet-coverage/coverlet, +github.com/craftcms/cms, +github.com/crate/crate, +github.com/crawl/crawl, +github.com/cri-o/cri-o, +github.com/crossbeam-rs/crossbeam, +github.com/crossterm-rs/crossterm, +github.com/crosstool-ng/crosstool-ng, +github.com/ctz/rustls, +github.com/cucumber/aruba, +github.com/cucumber/cucumber, +github.com/cucumber/cucumber-jvm, +github.com/cucumber/cucumber-ruby, +github.com/cupy/cupy, +github.com/curl/curl, +github.com/cwida/duckdb, +github.com/cyberark/conjur, +github.com/cypress-io/cypress, +github.com/cyrusimap/cyrus-imapd, +github.com/cython/cython, +github.com/dabreegster/abstreet, +github.com/dadhi/DryIoc, +github.com/dagster-io/dagster, +github.com/dandavison/delta, +github.com/danger/danger, +github.com/danielpalme/ReportGenerator, +github.com/danielwelch/hassio-zigbee2mqtt, +github.com/danmar/cppcheck, +github.com/daos-stack/daos, +github.com/darktable-org/darktable, +github.com/dart-lang/dart-protoc-plugin, +github.com/dart-lang/mockito, +github.com/dart-lang/protobuf, +github.com/dart-lang/test, +github.com/dask/distributed, +github.com/davidhalter/jedi, +github.com/davidkpiano/xstate, +github.com/dbeaver/dbeaver, +github.com/deadc0de6/dotdrop, +github.com/dealii/dealii, +github.com/debezium/debezium, +github.com/decidim/decidim, +github.com/deepchem/deepchem, +github.com/defold/defold, +github.com/deivid-rodriguez/byebug, +github.com/deltachat/deltachat-core-rust, +github.com/demisto/content, +github.com/denisidoro/navi, +github.com/denoland/deno, +github.com/denysdovhan/spaceship-prompt, +github.com/deployphp/deployer, +github.com/desktop/desktop, +github.com/detekt/detekt, +github.com/dgraph-io/dgraph, +github.com/diaspora/diaspora, +github.com/diem/diem, +github.com/diesel-rs/diesel, +github.com/diffplug/spotless, +github.com/digital-asset/daml, +github.com/dimagi/commcare-hq, +github.com/dimforge/nalgebra, +github.com/direnv/direnv, +github.com/discordjs/discord.js, +github.com/django-extensions/django-extensions, +github.com/django/django, +github.com/djc/askama, +github.com/djcb/mu, +github.com/dlemstra/Magick.NET, +github.com/dmlc/xgboost, +github.com/dnnsoftware/Dnn.Platform, +github.com/docker-java/docker-java, +github.com/docker-library/golang, +github.com/docker-library/official-images, +github.com/docker-library/postgres, +github.com/docker-library/rabbitmq, +github.com/docker-library/wordpress, +github.com/docker/cli, +github.com/docker/compose, +github.com/docker/distribution, +github.com/docker/docker-ce, +github.com/docker/docker-py, +github.com/docker/machine, +github.com/docksal/docksal, +github.com/doctrine/DoctrineBundle, +github.com/doctrine/annotations, +github.com/doctrine/common, +github.com/doctrine/dbal, +github.com/doctrine/migrations, +github.com/doctrine/mongodb-odm, +github.com/doctrine/orm, +github.com/dokku/dokku, +github.com/domaindrivendev/Swashbuckle.AspNetCore, +github.com/domoticz/domoticz, +github.com/doorkeeper-gem/doorkeeper, +github.com/dotCMS/core, +github.com/dotansimha/graphql-code-generator, +github.com/dotnet-architecture/eShopOnContainers, +github.com/dotnet/BenchmarkDotNet, +github.com/dotnet/Nerdbank.GitVersioning, +github.com/dotnet/arcade, +github.com/dotnet/aspnetcore, +github.com/dotnet/core, +github.com/dotnet/docfx, +github.com/dotnet/efcore, +github.com/dotnet/extensions, +github.com/dotnet/installer, +github.com/dotnet/machinelearning, +github.com/dotnet/msbuild, +github.com/dotnet/orleans, +github.com/dotnet/project-system, +github.com/dotnet/reactive, +github.com/dotnet/roslyn, +github.com/dotnet/roslyn-analyzers, +github.com/dotnet/runtime, +github.com/dotnet/samples, +github.com/dotnet/sdk, +github.com/dotnet/templating, +github.com/dotnet/winforms, +github.com/dotnet/wpf, +github.com/doxygen/doxygen, +github.com/dpkp/kafka-python,"project=envoy,dependency=true" +github.com/dracutdevs/dracut, +github.com/dresden-elektronik/deconz-rest-plugin, +github.com/drone/drone, +github.com/drud/ddev, +github.com/drupal/drupal, +github.com/drush-ops/drush, +github.com/drwetter/testssl.sh, +github.com/dry-rb/dry-validation, +github.com/dtolnay/syn, +github.com/duplicati/duplicati, +github.com/dylanaraps/neofetch, +github.com/eXist-db/exist, +github.com/easybuilders/easybuild, +github.com/easylist/easylist, +github.com/eclipse/che, +github.com/eclipse/jetty.project, +github.com/eclipse/jgit, +github.com/eclipse/mosquitto, +github.com/eclipse/omr, +github.com/eclipse/openj9, +github.com/eclipse/paho.mqtt.c, +github.com/edenhill/librdkafka, +github.com/edgexfoundry/edgex-go, +github.com/edusoho/edusoho, +github.com/edx/configuration, +github.com/edx/devstack, +github.com/edx/edx-platform, +github.com/effector/effector, +github.com/elabftw/elabftw, +github.com/elastic/beats, +github.com/elastic/elasticsearch, +github.com/elastic/elasticsearch-net, +github.com/elastic/elasticsearch-php, +github.com/elastic/elasticsearch-ruby, +github.com/elastic/kibana, +github.com/elastic/logstash, +github.com/electron-userland/electron-builder, +github.com/electron/apps, +github.com/electron/electron, +github.com/emberjs/data, +github.com/emberjs/rfcs, +github.com/emeryberger/CSrankings, +github.com/emscripten-core/emscripten, +github.com/emscripten-core/emsdk,"project=envoy,dependency=true" +github.com/encode/django-rest-framework, +github.com/endlessm/linux, +github.com/env-logger-rs/env_logger, +github.com/envoyproxy/envoy, +github.com/envoyproxy/envoy-build-tools,"project=envoy,dependency=true" +github.com/envoyproxy/go-control-plane, +github.com/envoyproxy/sql-parser, +github.com/eqrion/cbindgen, +github.com/esp8266/Arduino, +github.com/esphome/esphome, +github.com/espnet/espnet, +github.com/espocrm/espocrm, +github.com/espressif/arduino-esp32, +github.com/espressif/esp-idf, +github.com/espruino/Espruino, +github.com/etcd-io/etcd, +github.com/ethereum-mining/ethminer, +github.com/ethereum/go-ethereum, +github.com/ethereum/solidity, +github.com/evanw/esbuild, +github.com/exceptionless/Exceptionless, +github.com/excon/excon, +github.com/exercism/problem-specifications, +github.com/exercism/rust, +github.com/explosion/spaCy, +github.com/expo/expo, +github.com/extremeshok/clamav-unofficial-sigs, +github.com/ezsystems/ezplatform, +github.com/fabric8io/kubernetes-client, +github.com/facebook/create-react-app, +github.com/facebook/react, +github.com/facebook/rocksdb, +github.com/fail2ban/fail2ban, +github.com/faker-ruby/faker, +github.com/fastlane/fastlane, +github.com/feathersjs/feathers, +github.com/ffi/ffi, +github.com/fiji/fiji, +github.com/filecoin-project/lotus, +github.com/filecoin-project/rust-fil-proofs, +github.com/firebase/firebase-js-sdk, +github.com/firebase/firebase-tools, +github.com/firecracker-microvm/firecracker, +github.com/firefly-iii/firefly-iii, +github.com/fish-shell/fish-shell, +github.com/fisharebest/webtrees, +github.com/fishtown-analytics/dbt, +github.com/flarum/core, +github.com/flatpak/flatpak, +github.com/flavorjones/loofah, +github.com/flori/json, +github.com/flowable/flowable-engine, +github.com/fltk/fltk, +github.com/fluent/fluent-bit, +github.com/fluent/fluentd, +github.com/fluentassertions/fluentassertions, +github.com/fluentmigrator/fluentmigrator, +github.com/flutter/engine, +github.com/flutter/flutter, +github.com/flutter/plugins, +github.com/fluxcd/flux, +github.com/flyerhzm/bullet, +github.com/flyway/flyway, +github.com/fmtlib/fmt, +github.com/fog/fog, +github.com/fog/fog-aws, +github.com/fontforge/fontforge, +github.com/fonttools/fonttools, +github.com/forem/forem, +github.com/forkcms/forkcms, +github.com/formatjs/formatjs, +github.com/formium/formik, +github.com/formtastic/formtastic, +github.com/frappe/erpnext, +github.com/frappe/frappe, +github.com/freeCodeCamp/freeCodeCamp, +github.com/freebsd/freebsd, +github.com/freebsd/pkg, +github.com/freedomofpress/securedrop, +github.com/freeipa/freeipa, +github.com/freifunk-gluon/gluon, +github.com/fsouza/go-dockerclient, +github.com/fullcalendar/fullcalendar, +github.com/fwupd/fwupd, +github.com/gabime/spdlog, +github.com/galaxyproject/galaxy, +github.com/gardener/gardener, +github.com/gatling/gatling, +github.com/gatsbyjs/gatsby, +github.com/gcc-mirror/gcc, +github.com/gentoo/gentoo, +github.com/geonetwork/core-geonetwork, +github.com/georust/geo, +github.com/geoserver/geoserver, +github.com/getgrav/grav, +github.com/getredash/redash, +github.com/getsentry/onpremise, +github.com/getsentry/relay, +github.com/getsentry/sentry, +github.com/getsentry/sentry-cli, +github.com/getsentry/sentry-dotnet, +github.com/getsentry/sentry-javascript, +github.com/getsentry/sentry-php, +github.com/getsentry/sentry-ruby, +github.com/getsentry/sentry-rust, +github.com/getzola/zola, +github.com/gevent/gevent, +github.com/gfx-rs/gfx, +github.com/gfx-rs/wgpu, +github.com/ggez/ggez, +github.com/giampaolo/psutil, +github.com/gin-gonic/gin, +github.com/git-lfs/git-lfs, +github.com/git/git, +github.com/gitextensions/gitextensions, +github.com/github/backup-utils, +github.com/github/explore, +github.com/github/hub, +github.com/github/linguist, +github.com/github/markup, +github.com/github/pages-gem, +github.com/github/super-linter, +github.com/gitlabhq/gitlabhq, +github.com/gitpython-developers/GitPython, +github.com/gjtorikian/html-proofer, +github.com/gleam-lang/gleam, +github.com/glfw/glfw, +github.com/glium/glium, +github.com/globaleaks/GlobaLeaks, +github.com/globalize/globalize, +github.com/glpi-project/glpi, +github.com/gluster/glusterfs, +github.com/gnuradio/gnuradio, +github.com/go-acme/lego, +github.com/go-gitea/gitea, +github.com/go-gorm/gorm, +github.com/go-redis/redis, +github.com/go-swagger/go-swagger, +github.com/gocd/gocd, +github.com/godotengine/godot, +github.com/gofiber/fiber, +github.com/gogs/gogs, +github.com/goharbor/harbor, +github.com/gohugoio/hugo, +github.com/gohugoio/hugoThemes, +github.com/golang/crypto, +github.com/golang/go, +github.com/golang/mock, +github.com/golang/protobuf, +github.com/golang/sys, +github.com/golang/tools, +github.com/golang/vscode-go, +github.com/golangci/golangci-lint, +github.com/gollum/gollum, +github.com/google/ExoPlayer, +github.com/google/acai, +github.com/google/benchmark, +github.com/google/boringssl, +github.com/google/brotli, +github.com/google/built_value.dart, +github.com/google/cadvisor, +github.com/google/cel-cpp, +github.com/google/clif, +github.com/google/closure-compiler, +github.com/google/closure-templates, +github.com/google/dart-scissors, +github.com/google/earlgrey, +github.com/google/flatbuffers, +github.com/google/go-cmp, +github.com/google/go-github, +github.com/google/google-api-java-client, +github.com/google/google-http-java-client, +github.com/google/google-toolbox-for-mac, +github.com/google/googletest, +github.com/google/grpc, +github.com/google/gson, +github.com/google/gtm-session-fetcher, +github.com/google/guava, +github.com/google/guice, +github.com/google/incremental-dom, +github.com/google/jax, +github.com/google/jsonnet, +github.com/google/jwt_verify_lib, +github.com/google/kmsan, +github.com/google/libprotobuf-mutator,"project=envoy,dependency=true" +github.com/google/material-components-ios, +github.com/google/or-tools, +github.com/google/oss-fuzz, +github.com/google/pageloader, +github.com/google/protobuf, +github.com/google/python_portpicker, +github.com/google/re2, +github.com/google/streamy-dart, +github.com/google/syzkaller, +github.com/google/tarpc, +github.com/google/tcmalloc, +github.com/google/web-stories-wp, +github.com/googleapis/google-api-go-client, +github.com/googleapis/google-api-nodejs-client, +github.com/googleapis/google-api-python-client, +github.com/googleapis/google-api-ruby-client, +github.com/googleapis/google-cloud-dotnet, +github.com/googleapis/google-cloud-go, +github.com/googleapis/google-cloud-ruby, +github.com/googlecloudplatform/gcloud-golang, +github.com/googlecloudplatform/google-auth-library-python, +github.com/googlecloudplatform/webapp2, +github.com/gophercloud/gophercloud, +github.com/goreleaser/goreleaser, +github.com/gpac/gpac, +github.com/gperftools/gperftools, +github.com/gphoto/libgphoto2, +github.com/gradle/gradle, +github.com/grafana/grafana, +github.com/grafana/loki, +github.com/grailbio/bazel-compilation-database,"project=envoy,dependency=true" +github.com/grandnode/grandnode, +github.com/graphprotocol/graph-node, +github.com/graphql-dotnet/graphql-dotnet, +github.com/graphql-rust/juniper, +github.com/graphql/graphiql, +github.com/graphql/graphql-spec, +github.com/gravitational/teleport, +github.com/greenplum-db/gpdb, +github.com/greshake/i3status-rust, +github.com/groonga/groonga, +github.com/grosser/parallel, +github.com/grosser/parallel_tests, +github.com/grpc-ecosystem/grpc-gateway, +github.com/grpc-ecosystem/grpc-httpjson-transcoding, +github.com/grpc/grpc, +github.com/grpc/grpc-go, +github.com/grpc/grpc-java, +github.com/gruntwork-io/terragrunt, +github.com/gruntwork-io/terratest, +github.com/gtk-rs/gir, +github.com/guard/listen, +github.com/guysoft/OctoPi, +github.com/guzzle/guzzle, +github.com/gwaldron/osgearth, +github.com/h2o/h2o, +github.com/h5bp/server-configs-apache, +github.com/habitat-sh/habitat, +github.com/haiku/haiku, +github.com/haikuports/haikuports, +github.com/halide/Halide, +github.com/haml/haml, +github.com/haproxy/haproxy, +github.com/harfbuzz/harfbuzz, +github.com/harmony-one/harmony, +github.com/hashicorp/consul, +github.com/hashicorp/nomad, +github.com/hashicorp/packer, +github.com/hashicorp/terraform, +github.com/hashicorp/terraform-provider-aws, +github.com/hashicorp/terraform-provider-google, +github.com/hashicorp/vagrant, +github.com/hashicorp/vault, +github.com/haugene/docker-transmission-openvpn, +github.com/hazelcast/hazelcast, +github.com/heartcombo/devise, +github.com/helm/charts, +github.com/helm/helm, +github.com/hermitcore/libhermit-rs, +github.com/heroku/cli, +github.com/heroku/heroku-buildpack-nodejs, +github.com/heroku/heroku-buildpack-php, +github.com/heroku/heroku-buildpack-python, +github.com/hestiacp/hestiacp, +github.com/hfp/libxsmm, +github.com/hibernate/hibernate-search, +github.com/highcharts/highcharts, +github.com/hitobito/hitobito, +github.com/home-assistant/addons, +github.com/home-assistant/core, +github.com/home-assistant/frontend, +github.com/hpcc-systems/HPCC-Platform, +github.com/hrkfdn/ncspot, +github.com/hrydgard/ppsspp, +github.com/http-rs/tide, +github.com/http4s/http4s, +github.com/hub4j/github-api, +github.com/huggingface/tokenizers, +github.com/huggingface/transformers, +github.com/humhub/humhub, +github.com/hyperf/hyperf, +github.com/hyperium/h2, +github.com/hyperium/http, +github.com/hyperium/hyper, +github.com/hyperledger/fabric, +github.com/hyperledger/indy-sdk, +github.com/i18next/i18next, +github.com/i3/i3, +github.com/iNavFlight/inav, +github.com/icsharpcode/ILSpy, +github.com/icsharpcode/SharpZipLib, +github.com/idaholab/moose, +github.com/ifmeorg/ifme, +github.com/igraph/igraph, +github.com/illuminate/database, +github.com/illuminate/support, +github.com/illumos/illumos-gate, +github.com/image-rs/image, +github.com/imazen/imageflow, +github.com/impress-org/givewp, +github.com/infection/infection, +github.com/infinispan/infinispan, +github.com/influxdata/influxdb, +github.com/influxdata/telegraf, +github.com/ingydotnet/git-subrepo, +github.com/input-output-hk/jormungandr, +github.com/inspec/inspec, +github.com/instructure/canvas-lms, +github.com/intel/compute-runtime, +github.com/intel/gvt-linux, +github.com/intel/media-driver, +github.com/intellij-rust/intellij-rust, +github.com/internetarchive/openlibrary, +github.com/invoiceninja/dockerfiles, +github.com/invoiceninja/invoiceninja, +github.com/ionic-team/ionic-framework, +github.com/ionic-team/ionic-native, +github.com/ionic-team/stencil, +github.com/iovisor/bcc, +github.com/ipfs/go-ipfs, +github.com/ipython/ipython, +github.com/isocpp/CppCoreGuidelines, +github.com/istio/api, +github.com/istio/istio, +github.com/istio/proxy, +github.com/itsgoingd/clockwork, +github.com/itzg/docker-minecraft-server, +github.com/jOOQ/jOOQ, +github.com/jackc/pgx, +github.com/jacobalberty/unifi-docker, +github.com/jaegertracing/jaeger, +github.com/jantimon/html-webpack-plugin, +github.com/jashkenas/underscore, +github.com/javaparser/javaparser, +github.com/jazzband/django-debug-toolbar, +github.com/jazzband/pip-tools, +github.com/jbeder/yaml-cpp, +github.com/jedisct1/libsodium, +github.com/jekyll/jekyll, +github.com/jellyfin/jellyfin, +github.com/jellyfin/jellyfin-androidtv, +github.com/jellyfin/jellyfin-web, +github.com/jemalloc/jemalloc, +github.com/jenkins-x/jx, +github.com/jenkinsci/docker, +github.com/jenkinsci/jenkins, +github.com/jenssegers/laravel-mongodb, +github.com/jeremyevans/sequel, +github.com/jeremylong/DependencyCheck, +github.com/jesseduffield/lazygit, +github.com/jest-community/eslint-plugin-jest, +github.com/jetstack/cert-manager, +github.com/jhipster/generator-jhipster, +github.com/jmettraux/rufus-scheduler, +github.com/jnunemaker/httparty, +github.com/joke2k/faker, +github.com/jonathandturner/rhai, +github.com/joncampbell123/dosbox-x, +github.com/joomla/joomla-cms, +github.com/jorgebucaran/fisher, +github.com/jpetazzo/container.training, +github.com/jquery/jquery, +github.com/jruby/activerecord-jdbc-adapter, +github.com/jruby/jruby, +github.com/jstedfast/MailKit, +github.com/jtv/libpqxx, +github.com/juju/juju, +github.com/jumpserver/jumpserver, +github.com/junegunn/fzf, +github.com/junit-team/junit4, +github.com/jupyterhub/jupyterhub, +github.com/jupyterhub/zero-to-jupyterhub-k8s, +github.com/jupyterlab/jupyterlab, +github.com/jwt/ruby-jwt, +github.com/k9mail/k-9, +github.com/kaldi-asr/kaldi, +github.com/kaltura/platform-install-packages, +github.com/kaltura/server, +github.com/kamailio/kamailio, +github.com/kaminari/kaminari, +github.com/karelzak/util-linux, +github.com/kata-containers/documentation, +github.com/kata-containers/kata-containers, +github.com/kata-containers/runtime, +github.com/kataras/iris, +github.com/keepassxreboot/keepassxc, +github.com/keras-team/keras, +github.com/kerl/kerl, +github.com/keybase/client, +github.com/keycloak/keycloak, +github.com/kiali/kiali, +github.com/kiegroup/drools, +github.com/kiegroup/droolsjbpm-build-bootstrap, +github.com/kivy/kivy, +github.com/kiwix/kiwix-android, +github.com/kkawakam/rustyline, +github.com/knative/eventing, +github.com/knative/serving, +github.com/knex/knex, +github.com/knowm/XChange, +github.com/kokkos/kokkos, +github.com/kotest/kotest, +github.com/kovidgoyal/calibre, +github.com/kovidgoyal/kitty, +github.com/krb5/krb5, +github.com/kubeedge/kubeedge, +github.com/kubeflow/pipelines, +github.com/kubermatic/kubermatic, +github.com/kubernetes-sigs/cluster-api, +github.com/kubernetes-sigs/controller-runtime, +github.com/kubernetes-sigs/external-dns, +github.com/kubernetes-sigs/kind, +github.com/kubernetes-sigs/kustomize, +github.com/kubernetes/apiserver, +github.com/kubernetes/autoscaler, +github.com/kubernetes/client-go, +github.com/kubernetes/cloud-provider-openstack, +github.com/kubernetes/dashboard, +github.com/kubernetes/enhancements, +github.com/kubernetes/examples, +github.com/kubernetes/ingress-gce, +github.com/kubernetes/ingress-nginx, +github.com/kubernetes/k8s.io, +github.com/kubernetes/kops, +github.com/kubernetes/kube-state-metrics, +github.com/kubernetes/kubeadm, +github.com/kubernetes/kubectl, +github.com/kubernetes/kubernetes, +github.com/kubernetes/minikube, +github.com/kubernetes/test-infra, +github.com/kubevirt/kubevirt, +github.com/kulshekhar/ts-jest, +github.com/labstack/echo, +github.com/lammps/lammps, +github.com/lampepfl/dotty, +github.com/laravel/dusk, +github.com/laravel/framework, +github.com/laravel/homestead, +github.com/laravel/horizon, +github.com/laravel/laravel, +github.com/laravel/lumen-framework, +github.com/laravel/passport, +github.com/laravel/socialite, +github.com/laravel/telescope, +github.com/laravel/valet, +github.com/launchbadge/sqlx, +github.com/laurent22/joplin, +github.com/lavabit/robox, +github.com/lballabio/QuantLib, +github.com/lede-project/source, +github.com/letsencrypt/boulder, +github.com/libMesh/libmesh, +github.com/libarchive/libarchive, +github.com/libbpf/libbpf, +github.com/liberapay/liberapay.com, +github.com/libevent/libevent, +github.com/libgdx/libgdx, +github.com/libgit2/libgit2, +github.com/libgit2/libgit2sharp, +github.com/libp2p/go-libp2p, +github.com/libp2p/rust-libp2p, +github.com/librenms/librenms, +github.com/libreswan/libreswan, +github.com/libretro/RetroArch, +github.com/libretro/libretro-super, +github.com/libunwind/libunwind, +github.com/libusb/libusb, +github.com/libuv/libuv, +github.com/libvips/libvips, +github.com/libvirt/libvirt, +github.com/lightningnetwork/lnd, +github.com/lightstep/lightstep-tracer-cpp, +github.com/line/armeria, +github.com/linkerd/linkerd2, +github.com/linkerd/linkerd2-proxy, +github.com/linq2db/linq2db, +github.com/linrunner/TLP, +github.com/linux-nvme/nvme-cli, +github.com/linux-rdma/rdma-core, +github.com/linux-surface/linux-surface, +github.com/linux-test-project/ltp, +github.com/llvm/llvm-project, +github.com/lodash/lodash, +github.com/longhorn/longhorn, +github.com/looly/hutool, +github.com/loomio/loomio, +github.com/lostisland/faraday, +github.com/louthy/language-ext, +github.com/lsegal/yard, +github.com/lu-zero/cargo-c, +github.com/lutris/lutris, +github.com/lvgl/lvgl, +github.com/lxc/lxc, +github.com/lxc/lxd, +github.com/lxqt/lxqt, +github.com/madler/zlib,"project=envoy,dependency=true" +github.com/magefree/mage, +github.com/magento/inventory, +github.com/magento/magento2, +github.com/mailcow/mailcow-dockerized, +github.com/mamedev/mame, +github.com/mapbox/mapbox-gl-js, +github.com/marcohu/rules_antlr, +github.com/markshust/docker-magento, +github.com/marmelab/react-admin, +github.com/marshmallow-code/marshmallow, +github.com/material-components/material-components-web, +github.com/materialsproject/pymatgen, +github.com/mathiasbynens/dotfiles, +github.com/matomo-org/matomo, +github.com/matplotlib/matplotlib, +github.com/matrix-org/matrix-react-sdk, +github.com/matryer/bitbar-plugins, +github.com/matteocorti/check_ssl_cert, +github.com/matter-labs/zksync, +github.com/mattermost/mattermost-docker, +github.com/mattermost/mattermost-server, +github.com/mautic/mautic, +github.com/mavlink/qgroundcontrol, +github.com/mawww/kakoune, +github.com/mbadolato/iTerm2-Color-Schemes, +github.com/mbdavid/LiteDB, +github.com/mbj/mutant, +github.com/mbleigh/acts-as-taggable-on, +github.com/mdx-js/mdx, +github.com/meetecho/janus-gateway, +github.com/meganz/sdk, +github.com/megastep/makeself, +github.com/meilisearch/MeiliSearch, +github.com/memcached/memcached, +github.com/mesa3d/mesa, +github.com/mesonbuild/meson, +github.com/metasfresh/metasfresh, +github.com/meteor/meteor, +github.com/mfem/mfem, +github.com/mhenrixon/sidekiq-unique-jobs, +github.com/micro/micro, +github.com/microcai/gentoo-zh, +github.com/micrometer-metrics/micrometer, +github.com/micropython/micropython, +github.com/microsoft/AirSim, +github.com/microsoft/ApplicationInsights-dotnet, +github.com/microsoft/BotBuilder-Samples, +github.com/microsoft/FASTER, +github.com/microsoft/LightGBM, +github.com/microsoft/MixedRealityToolkit-Unity, +github.com/microsoft/PTVS, +github.com/microsoft/PowerToys, +github.com/microsoft/TypeScript, +github.com/microsoft/azure-pipelines-agent, +github.com/microsoft/botbuilder-dotnet, +github.com/microsoft/fluentui, +github.com/microsoft/microsoft-ui-xaml, +github.com/microsoft/react-native-windows, +github.com/microsoft/rushstack, +github.com/microsoft/terminal, +github.com/microsoft/vcpkg, +github.com/microsoft/vscode, +github.com/microsoft/vscode-dev-containers, +github.com/microsoft/vstest, +github.com/middleman/middleman, +github.com/mikependon/RepoDB, +github.com/mikepenz/AboutLibraries, +github.com/mikepenz/MaterialDrawer, +github.com/mimblewimble/grin, +github.com/minetest/minetest, +github.com/minio/mc, +github.com/minio/minio, +github.com/mirror/tclap,"project=envoy,dependency=true" +github.com/mirumee/saleor, +github.com/mistydemeo/tigerbrew, +github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker, +github.com/mitmproxy/mitmproxy, +github.com/mitsuhiko/redis-rs, +github.com/mixxxdj/mixxx, +github.com/mne-tools/mne-python, +github.com/mobxjs/mobx, +github.com/moby/buildkit, +github.com/moby/moby, +github.com/mockery/mockery, +github.com/modxcms/revolution, +github.com/mongodb/mongo, +github.com/mongodb/mongo-ruby-driver, +github.com/mongodb/mongoid, +github.com/mongodb/node-mongodb-native, +github.com/mono/CppSharp, +github.com/mono/SkiaSharp, +github.com/mono/linker, +github.com/mono/mono, +github.com/mono/monodevelop, +github.com/moodle/moodle, +github.com/moonjit/moonjit, +github.com/moq/moq4, +github.com/mozilla-mobile/android-components, +github.com/mozilla-mobile/fenix, +github.com/mozilla/DeepSpeech, +github.com/mozilla/addons-frontend, +github.com/mozilla/addons-server, +github.com/mozilla/application-services, +github.com/mozilla/common-voice, +github.com/mozilla/fxa, +github.com/mozilla/sccache, +github.com/mperham/sidekiq, +github.com/mpv-player/mpv, +github.com/mrdoob/three.js, +github.com/mruby/mruby, +github.com/msgpack/msgpack-c, +github.com/msys2/MINGW-packages, +github.com/msys2/MSYS2-packages, +github.com/mui-org/material-ui, +github.com/multipath-tcp/mptcp, +github.com/mumble-voip/mumble, +github.com/musescore/MuseScore, +github.com/mwiede/jsch, +github.com/mysociety/alaveteli, +github.com/mysql-net/MySqlConnector, +github.com/mysql/mysql-server, +github.com/naev/naev, +github.com/nanoc/nanoc, +github.com/napari/napari, +github.com/ncopa/su-exec,"project=envoy,dependency=true" +github.com/nedbat/coveragepy, +github.com/neo-project/neo, +github.com/neo4j/neo4j, +github.com/neomutt/neomutt, +github.com/neon-bindings/neon, +github.com/nervosnetwork/ckb, +github.com/nestjs/nest, +github.com/net-ssh/net-ssh, +github.com/netbox-community/netbox, +github.com/netdata/netdata, +github.com/netlify/build-image, +github.com/netlify/cli, +github.com/netlify/netlify-cms, +github.com/netty/netty, +github.com/networkx/networkx, +github.com/neuecc/MessagePack-CSharp, +github.com/newrelic/newrelic-ruby-agent, +github.com/newsboat/newsboat, +github.com/nextcloud/android, +github.com/nextcloud/desktop, +github.com/nextcloud/docker, +github.com/nextcloud/mail, +github.com/nextcloud/news, +github.com/nextcloud/nextcloud-snap, +github.com/nextcloud/server, +github.com/nextcloud/vm, +github.com/nextflow-io/nextflow, +github.com/nficano/pytube, +github.com/nfs-ganesha/nfs-ganesha, +github.com/nghttp2/nghttp2, +github.com/nginxinc/docker-nginx, +github.com/ngrx/platform, +github.com/nikic/PHP-Parser, +github.com/nipy/nipype, +github.com/nix-rust/nix, +github.com/nlohmann/json, +github.com/nltk/nltk, +github.com/node-red/node-red, +github.com/nodeca/js-yaml, +github.com/nodejs/build, +github.com/nodejs/http-parser, +github.com/nodejs/node, +github.com/nodesource/distributions, +github.com/nojhan/liquidprompt, +github.com/nopSolutions/nopCommerce, +github.com/norman/friendly_id, +github.com/npgsql/efcore.pg, +github.com/npgsql/npgsql, +github.com/nrwl/nx, +github.com/nuclio/nuclio, +github.com/nuke-build/nuke, +github.com/numba/numba, +github.com/numpy/numpy, +github.com/nunit/nunit, +github.com/nushell/nushell, +github.com/nuwave/lighthouse, +github.com/nuxeo/nuxeo, +github.com/nuxt/nuxt.js, +github.com/nvaccess/nvda, +github.com/nvm-sh/nvm, +github.com/oauth2-proxy/oauth2-proxy, +github.com/obsproject/obs-studio, +github.com/ocaml/opam-repository, +github.com/ocornut/imgui, +github.com/octobercms/october, +github.com/octokit/octokit.net, +github.com/octokit/rest.js, +github.com/odoo/odoo, +github.com/ofiwg/libfabric, +github.com/ogham/exa, +github.com/oh-my-fish/oh-my-fish, +github.com/ohler55/oj, +github.com/ohmyzsh/ohmyzsh, +github.com/okonet/lint-staged, +github.com/omniauth/omniauth, +github.com/onsi/ginkgo, +github.com/opal/opal, +github.com/open-mmlab/mmdetection, +github.com/open-mpi/ompi, +github.com/open-policy-agent/opa, +github.com/open-telemetry/opentelemetry-collector, +github.com/open-wc/open-wc, +github.com/open62541/open62541, +github.com/openSUSE/open-build-service, +github.com/openbmc/openbmc, +github.com/openbsd/src, +github.com/opencart/opencart, +github.com/opencontainers/runc, +github.com/opencv/opencv, +github.com/openemr/openemr, +github.com/openenclave/openenclave, +github.com/openethereum/openethereum, +github.com/openfaas/faas, +github.com/openfoodfoundation/openfoodnetwork, +github.com/openframeworks/openFrameworks, +github.com/opengapps/opengapps, +github.com/openhab/openhabian, +github.com/openjdk/jdk, +github.com/openjdk/jfx, +github.com/openjdk/loom, +github.com/openjournals/joss, +github.com/openmrs/openmrs-core, +github.com/openscad/openscad, +github.com/openshift/installer, +github.com/openshift/jenkins, +github.com/openshift/odo, +github.com/openshift/origin, +github.com/openssl/openssl, +github.com/openstack/cinder, +github.com/openstack/devstack, +github.com/openstack/diskimage-builder, +github.com/openstack/glance, +github.com/openstack/heat, +github.com/openstack/keystone, +github.com/openstack/neutron, +github.com/openstack/nova, +github.com/openstack/tempest, +github.com/openstreetmap/openstreetmap-website, +github.com/openthread/openthread, +github.com/opentk/opentk, +github.com/opentracing/opentracing-cpp,"project=envoy,dependency=true" +github.com/opentripplanner/OpenTripPlanner, +github.com/opentx/opentx, +github.com/openucx/ucx, +github.com/openvinotoolkit/openvino, +github.com/openvswitch/ovs, +github.com/openwrt/openwrt, +github.com/openzfs/zfs, +github.com/operator-framework/community-operators, +github.com/operator-framework/operator-sdk, +github.com/opf/openproject, +github.com/opnsense/core, +github.com/opnsense/plugins, +github.com/oppia/oppia, +github.com/oracle/docker-images, +github.com/oracle/graal, +github.com/oracle/graaljs, +github.com/oracle/truffleruby, +github.com/orchidsoftware/platform, +github.com/oreboot/oreboot, +github.com/orientechnologies/orientdb, +github.com/ornicar/lila, +github.com/ory/hydra, +github.com/oshi/oshi, +github.com/osquery/osquery, +github.com/osresearch/heads, +github.com/osrf/gazebo, +github.com/ostreedev/ostree, +github.com/otwcode/otwarchive, +github.com/outline/outline, +github.com/owncloud/android, +github.com/owncloud/client, +github.com/owncloud/core, +github.com/pachyderm/pachyderm, +github.com/pact-foundation/pact_broker, +github.com/pallets/flask, +github.com/pallets/jinja, +github.com/panda-re/panda, +github.com/pandas-dev/pandas, +github.com/pantsbuild/pants, +github.com/paparazzi/paparazzi, +github.com/parcel-bundler/parcel, +github.com/paritytech/polkadot, +github.com/paritytech/substrate, +github.com/peachpiecompiler/peachpie, +github.com/pennersr/django-allauth, +github.com/pentaho/pentaho-platform, +github.com/percona/percona-server, +github.com/percona/percona-xtrabackup, +github.com/performancecopilot/pcp, +github.com/pfsense/pfsense, +github.com/pgjdbc/pgjdbc, +github.com/phalcon/cphalcon, +github.com/phan/phan, +github.com/php-build/php-build, +github.com/php/php-src, +github.com/php/web-php, +github.com/phpbb/phpbb, +github.com/phpmyadmin/phpmyadmin, +github.com/phpro/grumphp, +github.com/phpseclib/phpseclib, +github.com/phpstan/phpstan, +github.com/phusion/passenger, +github.com/pi-hole/docker-pi-hole, +github.com/pi-hole/pi-hole, +github.com/picoe/Eto, +github.com/pimcore/pimcore, +github.com/pingcap/tidb, +github.com/pion/webrtc, +github.com/pioneerspacesim/pioneer, +github.com/pivotal/LicenseFinder, +github.com/pivpn/pivpn, +github.com/pixijs/pixi.js, +github.com/pkp/ojs, +github.com/playcanvas/engine, +github.com/playframework/playframework, +github.com/plotly/plotly.js, +github.com/plotly/plotly.py, +github.com/pmd/pmd, +github.com/pmmp/PocketMine-MP, +github.com/pmodels/mpich, +github.com/pnp/PnP, +github.com/pnp/PnP-PowerShell, +github.com/pnpm/pnpm, +github.com/pods-framework/pods, +github.com/polkadot-js/apps, +github.com/ponylang/ponyc, +github.com/portabilis/i-educar, +github.com/postcss/postcss, +github.com/postmodern/chruby, +github.com/postmodern/ruby-install, +github.com/ppy/osu, +github.com/ppy/osu-framework, +github.com/ppy/osu-web, +github.com/pre-commit/pre-commit, +github.com/precog/quasar, +github.com/presidentbeef/brakeman, +github.com/prestodb/presto, +github.com/prestosql/presto, +github.com/prettier/prettier, +github.com/prisma/prisma, +github.com/prisma/prisma-engines, +github.com/probe-rs/probe-rs, +github.com/processing/p5.js, +github.com/projectblacklight/blacklight, +github.com/projectcalico/felix, +github.com/projectkudu/kudu, +github.com/prometheus-operator/prometheus-operator, +github.com/prometheus/alertmanager, +github.com/prometheus/client_golang, +github.com/prometheus/node_exporter, +github.com/prometheus/prometheus, +github.com/protocolbuffers/protobuf, +github.com/protocolbuffers/upb, +github.com/proxy-wasm/proxy-wasm-cpp-host, +github.com/proxy-wasm/proxy-wasm-cpp-sdk, +github.com/proxy-wasm/proxy-wasm-rust-sdk,"project=envoy,dependency=true" +github.com/prusa3d/PrusaSlicer, +github.com/pry/pry, +github.com/prysmaticlabs/prysm, +github.com/psf/black, +github.com/psf/requests, +github.com/psi4/psi4, +github.com/psychopy/psychopy, +github.com/psycopg/psycopg2, +github.com/pterodactyl/panel, +github.com/publiclab/plots2, +github.com/publicsuffix/list, +github.com/pulumi/pulumi, +github.com/puma/puma, +github.com/puppeteer/puppeteer, +github.com/puppetlabs/bolt, +github.com/puppetlabs/facter, +github.com/puppetlabs/puppet, +github.com/puppetlabs/puppetlabs-apache, +github.com/puppetlabs/puppetlabs-mysql, +github.com/puppetlabs/puppetlabs-postgresql, +github.com/puppetlabs/puppetlabs-stdlib, +github.com/pure-data/pure-data, +github.com/pwsafe/pwsafe, +github.com/pybind/pybind11, +github.com/pyca/cryptography, +github.com/pydanny/cookiecutter-django, +github.com/pydata/xarray, +github.com/pyenv/pyenv, +github.com/pygments/pygments, +github.com/pyinstaller/pyinstaller, +github.com/pymc-devs/pymc3, +github.com/pymedusa/Medusa, +github.com/pypa/pip, +github.com/pypa/pipenv, +github.com/pypa/setuptools, +github.com/pypa/virtualenv, +github.com/pypa/warehouse, +github.com/pytest-dev/pytest, +github.com/python-pillow/Pillow, +github.com/python-poetry/poetry, +github.com/python-telegram-bot/python-telegram-bot, +github.com/python/cpython, +github.com/python/mypy, +github.com/python/peps, +github.com/python/typeshed, +github.com/pythonnet/pythonnet, +github.com/pytorch/fairseq, +github.com/pytorch/pytorch, +github.com/pytorch/vision, +github.com/pytroll/satpy, +github.com/qbittorrent/qBittorrent, +github.com/qemu/qemu, +github.com/qgis/QGIS, +github.com/qmk/qmk_firmware, +github.com/qt-creator/qt-creator, +github.com/qt/qt5, +github.com/qt/qtbase, +github.com/quasarframework/quasar, +github.com/quicwg/base-drafts, +github.com/qutebrowser/qutebrowser, +github.com/r-darwish/topgrade, +github.com/rabbitmq/rabbitmq-dotnet-client, +github.com/rabbitmq/rabbitmq-server, +github.com/racer-rust/racer, +github.com/rack/rack, +github.com/radareorg/radare2, +github.com/rails/rails, +github.com/rails/spring, +github.com/rails/sprockets, +github.com/rails/webpacker, +github.com/rakudo/star, +github.com/ramitsurana/awesome-kubernetes, +github.com/ramsey/uuid, +github.com/rancher/rancher, +github.com/randombit/botan, +github.com/raphlinus/pulldown-cmark, +github.com/rapid7/metasploit-framework, +github.com/raspberrypi/firmware, +github.com/raspberrypi/linux, +github.com/ravendb/ravendb, +github.com/rayon-rs/rayon, +github.com/rbenv/rbenv, +github.com/rbenv/ruby-build, +github.com/rclone/rclone, +github.com/react-hook-form/react-hook-form, +github.com/react-native-community/cli, +github.com/react-navigation/react-navigation, +github.com/reactioncommerce/reaction, +github.com/reactiveui/ReactiveUI, +github.com/reactor/reactor-core, +github.com/reactos/reactos, +github.com/realm/realm-core, +github.com/realm/realm-java, +github.com/rear/rear, +github.com/rebus-org/Rebus, +github.com/rectorphp/rector, +github.com/redaxo/redaxo, +github.com/redis/redis, +github.com/redis/redis-rb, +github.com/redisson/redisson, +github.com/redox-os/orbtk, +github.com/reduxjs/redux, +github.com/remarkjs/remark, +github.com/renovatebot/renovate, +github.com/reportportal/reportportal, +github.com/request/request, +github.com/resteasy/Resteasy, +github.com/restic/restic, +github.com/restsharp/RestSharp, +github.com/ripple/rippled, +github.com/rism-ch/verovio, +github.com/rmosolgo/graphql-ruby, +github.com/robolectric/robolectric, +github.com/roboll/helmfile, +github.com/robotframework/robotframework, +github.com/robotology/yarp, +github.com/rockchip-linux/kernel, +github.com/rollbar/rollbar-gem, +github.com/rollup/rollup, +github.com/romkatv/powerlevel10k, +github.com/rook/rook, +github.com/root-project/root, +github.com/ros-planning/moveit, +github.com/ros/ros_comm, +github.com/ros/rosdistro, +github.com/rouge-ruby/rouge, +github.com/roundcube/roundcubemail, +github.com/rpm-software-management/rpm, +github.com/rq/rq, +github.com/rsim/oracle-enhanced, +github.com/rspec/rspec-core, +github.com/rspec/rspec-expectations, +github.com/rspec/rspec-mocks, +github.com/rspec/rspec-rails, +github.com/rstudio/rstudio, +github.com/rsyslog/rsyslog, +github.com/rubberduck-vba/Rubberduck, +github.com/rubocop-hq/rubocop, +github.com/rubocop-hq/rubocop-performance, +github.com/rubocop-hq/rubocop-rails, +github.com/rubocop-hq/rubocop-rspec, +github.com/ruby-china/homeland, +github.com/ruby-grape/grape, +github.com/ruby-grape/grape-swagger, +github.com/ruby-rdf/rdf, +github.com/ruby/rake, +github.com/ruby/ruby, +github.com/ruby/spec, +github.com/ruby/www.ruby-lang.org, +github.com/rubyforgood/diaper, +github.com/rubygems/rubygems, +github.com/rubygems/rubygems.org, +github.com/rubyzip/rubyzip, +github.com/ruffle-rs/ruffle, +github.com/ruflin/Elastica, +github.com/rundeck/rundeck, +github.com/runelite/runelite, +github.com/rusefi/rusefi, +github.com/rusoto/rusoto, +github.com/rust-analyzer/rust-analyzer, +github.com/rust-bio/rust-bio, +github.com/rust-bitcoin/rust-bitcoin, +github.com/rust-embedded/cortex-m, +github.com/rust-itertools/itertools, +github.com/rust-lang/backtrace-rs, +github.com/rust-lang/cargo, +github.com/rust-lang/chalk, +github.com/rust-lang/compiler-builtins, +github.com/rust-lang/crates.io, +github.com/rust-lang/futures-rs, +github.com/rust-lang/git2-rs, +github.com/rust-lang/hashbrown, +github.com/rust-lang/libc, +github.com/rust-lang/log, +github.com/rust-lang/miri, +github.com/rust-lang/regex, +github.com/rust-lang/rfcs, +github.com/rust-lang/rls, +github.com/rust-lang/rust, +github.com/rust-lang/rust-bindgen, +github.com/rust-lang/rust-clippy, +github.com/rust-lang/rustfmt, +github.com/rust-lang/rustlings, +github.com/rust-lang/rustup, +github.com/rust-num/num, +github.com/rust-num/num-bigint, +github.com/rust-num/num-traits, +github.com/rust-osdev/x86_64, +github.com/rust-random/rand, +github.com/rust-rocksdb/rust-rocksdb, +github.com/rust-windowing/glutin, +github.com/rust-windowing/winit, +github.com/rustwasm/wasm-bindgen, +github.com/rusty1s/pytorch_geometric, +github.com/rvm/rvm, +github.com/rzwitserloot/lombok, +github.com/sabnzbd/sabnzbd, +github.com/sagiegurari/cargo-make, +github.com/sakaiproject/sakai, +github.com/salesagility/SuiteCRM, +github.com/saltstack/salt, +github.com/saltstack/salt-bootstrap, +github.com/sameersbn/docker-gitlab, +github.com/samuelcolvin/pydantic, +github.com/sass/node-sass, +github.com/sbt/sbt, +github.com/scala-js/scala-js, +github.com/scala/scala, +github.com/scikit-image/scikit-image, +github.com/scikit-learn/scikit-learn, +github.com/scop/bash-completion, +github.com/scopatz/nanorc, +github.com/scrapy/scrapy, +github.com/scummvm/scummvm, +github.com/scylladb/scylla, +github.com/sdroege/gstreamer-rs, +github.com/seL4/seL4, +github.com/seanmonstar/reqwest, +github.com/seanmonstar/warp, +github.com/sebastianbergmann/php-code-coverage, +github.com/sebastianbergmann/phpunit, +github.com/semantic-release/semantic-release, +github.com/sendgrid/sendgrid-csharp, +github.com/sequelize/sequelize, +github.com/serde-rs/json, +github.com/serde-rs/serde, +github.com/serenity-rs/serenity, +github.com/serverless/serverless, +github.com/servo/core-foundation-rs, +github.com/servo/html5ever, +github.com/servo/rust-cssparser, +github.com/servo/rust-mozjs, +github.com/servo/rust-smallvec, +github.com/servo/rust-url, +github.com/servo/servo, +github.com/servo/webrender, +github.com/sfackler/rust-openssl, +github.com/sfackler/rust-postgres, +github.com/sferik/rails_admin, +github.com/shadow/shadow, +github.com/shadowsocks/shadowsocks-android, +github.com/shadowsocks/shadowsocks-rust, +github.com/shadowsocks/shadowsocks-windows, +github.com/shakacode/react_on_rails, +github.com/sharetribe/sharetribe, +github.com/sharkdp/bat, +github.com/sharkdp/fd, +github.com/shemminger/iproute2, +github.com/shimat/opencvsharp, +github.com/shirou/gopsutil, +github.com/shogun-toolbox/shogun, +github.com/shopware/platform, +github.com/shopware/shopware, +github.com/shouldly/shouldly, +github.com/signalapp/Signal-Android, +github.com/signalapp/Signal-Desktop, +github.com/signalwire/freeswitch, +github.com/sigp/lighthouse, +github.com/silverstripe/silverstripe-cms, +github.com/silverstripe/silverstripe-framework, +github.com/simple-icons/simple-icons, +github.com/simplecov-ruby/simplecov, +github.com/simpleinjector/SimpleInjector, +github.com/simplesamlphp/simplesamlphp, +github.com/simulationcraft/simc, +github.com/sinatra/sinatra, +github.com/sindresorhus/got, +github.com/sindresorhus/pure, +github.com/sindresorhus/refined-github, +github.com/sinonjs/sinon, +github.com/sipcapture/homer, +github.com/sirupsen/logrus, +github.com/skvark/opencv-python, +github.com/skycocker/chromebrew, +github.com/skylightio/skylight-ruby, +github.com/slack-go/slack, +github.com/slevomat/coding-standard, +github.com/slimphp/Slim, +github.com/smartcontractkit/chainlink, +github.com/snakemake/snakemake, +github.com/snapcore/snapd, +github.com/snipe/snipe-it, +github.com/snowpackjs/snowpack, +github.com/snyk/snyk, +github.com/solana-labs/solana, +github.com/solidusio/solidus, +github.com/sonata-project/SonataAdminBundle, +github.com/sonata-project/SonataDoctrineORMAdminBundle, +github.com/sonyxperiadev/kernel, +github.com/sorbet/sorbet, +github.com/sorin-ionescu/prezto, +github.com/sourcegraph/sourcegraph, +github.com/spacejam/sled, +github.com/sparklemotion/nokogiri, +github.com/spatie/laravel-backup, +github.com/spatie/laravel-medialibrary, +github.com/spatie/laravel-permission, +github.com/spdk/spdk, +github.com/spf13/viper, +github.com/spinnaker/clouddriver, +github.com/spinnaker/deck, +github.com/spinnaker/spinnaker, +github.com/splitbrain/dokuwiki, +github.com/spotbugs/spotbugs, +github.com/spotweb/spotweb, +github.com/spree/spree, +github.com/spring-cloud/spring-cloud-netflix, +github.com/spring-projects/spring-boot, +github.com/spring-projects/spring-framework, +github.com/spring-projects/spring-integration, +github.com/spring-projects/spring-kafka, +github.com/spring-projects/spring-security, +github.com/spujadas/elk-docker, +github.com/spulec/moto, +github.com/sqlalchemy/sqlalchemy, +github.com/sqlitebrowser/sqlitebrowser, +github.com/sqlmapproject/sqlmap, +github.com/square/okhttp, +github.com/squizlabs/PHP_CodeSniffer, +github.com/srvrco/getssl, +github.com/stamparm/maltrail, +github.com/stan-dev/math, +github.com/starship/starship, +github.com/statamic/cms, +github.com/statsmodels/statsmodels, +github.com/stefanzweifel/git-auto-commit-action, +github.com/stella-emu/stella, +github.com/stellar/go, +github.com/stepancheg/rust-protobuf, +github.com/stlink-org/stlink, +github.com/strace/strace, +github.com/strangerstudios/paid-memberships-pro, +github.com/stretchr/testify, +github.com/stripe/stripe-dotnet, +github.com/strongloop/loopback-next, +github.com/strongswan/strongswan, +github.com/stylelint/stylelint, +github.com/su2code/SU2, +github.com/sulu/sulu, +github.com/sunng87/handlebars-rust, +github.com/sunpy/sunpy, +github.com/supercollider/supercollider, +github.com/supertuxkart/stk-code, +github.com/survivejs/webpack-merge, +github.com/svenfuchs/rails-i18n, +github.com/swagger-api/swagger-ui, +github.com/swaywm/sway, +github.com/swaywm/wlroots, +github.com/swc-project/swc, +github.com/sweetalert2/sweetalert2, +github.com/swiftmailer/swiftmailer, +github.com/swig/swig, +github.com/swoole/swoole-src, +github.com/symfony/browser-kit, +github.com/symfony/console, +github.com/symfony/demo, +github.com/symfony/dependency-injection, +github.com/symfony/doctrine-bridge, +github.com/symfony/flex, +github.com/symfony/form, +github.com/symfony/framework-bundle, +github.com/symfony/http-foundation, +github.com/symfony/http-kernel, +github.com/symfony/maker-bundle, +github.com/symfony/phpunit-bridge, +github.com/symfony/polyfill, +github.com/symfony/security, +github.com/symfony/security-core, +github.com/symfony/serializer, +github.com/symfony/symfony, +github.com/symfony/twig-bundle, +github.com/symfony/validator, +github.com/symplify/symplify, +github.com/sympy/sympy, +github.com/syncthing/syncthing, +github.com/syndbg/goenv, +github.com/syslog-ng/syslog-ng, +github.com/system-ui/theme-ui, +github.com/systemd/systemd, +github.com/syuilo/misskey, +github.com/tannerlinsley/react-query, +github.com/tantivy-search/tantivy, +github.com/tasks/tasks, +github.com/tauri-apps/tauri, +github.com/tcltk/tcl, +github.com/teamcapybara/capybara, +github.com/tektoncd/catalog, +github.com/tektoncd/pipeline, +github.com/telegramdesktop/tdesktop, +github.com/tendermint/tendermint, +github.com/tensorflow/addons, +github.com/tensorflow/datasets, +github.com/tensorflow/models, +github.com/tensorflow/rust, +github.com/tensorflow/serving, +github.com/tensorflow/tensorboard, +github.com/tensorflow/tensorflow, +github.com/tensorflow/tfjs, +github.com/termux/termux-packages, +github.com/terraform-providers/terraform-provider-azurerm, +github.com/terser/terser, +github.com/test-kitchen/test-kitchen, +github.com/testing-library/react-testing-library, +github.com/textpattern/textpattern, +github.com/thanos-io/thanos, +github.com/the-control-group/voyager, +github.com/the-tcpdump-group/libpcap, +github.com/theforeman/foreman, +github.com/thingsboard/thingsboard, +github.com/thoughtbot/administrate, +github.com/thoughtbot/dotfiles, +github.com/thoughtbot/factory_bot, +github.com/thoughtbot/shoulda-matchers, +github.com/tiangolo/fastapi, +github.com/tianocore/edk2, +github.com/tidusjar/Ombi, +github.com/tikv/pd, +github.com/tikv/tikv, +github.com/timber/timber, +github.com/timberio/vector, +github.com/time-rs/time, +github.com/timgrossmann/InstaPy, +github.com/tinymce/tinymce, +github.com/tj/commander.js, +github.com/tj/git-extras, +github.com/tj/n, +github.com/tldr-pages/tldr, +github.com/tmux/tmux, +github.com/tock/tock, +github.com/todbot/blink1, +github.com/tokio-rs/bytes, +github.com/tokio-rs/mio, +github.com/tokio-rs/tokio, +github.com/tokio-rs/tracing, +github.com/tomav/docker-mailserver, +github.com/toniblyx/prowler, +github.com/tootsuite/mastodon, +github.com/topjohnwu/Magisk, +github.com/torvalds/linux, +github.com/tpm2-software/tpm2-tools, +github.com/tqdm/tqdm, +github.com/traefik/traefik, +github.com/translate/translate, +github.com/travis-ci/dpl, +github.com/travis-ci/travis-build, +github.com/tree-sitter/tree-sitter, +github.com/trezor/trezor-firmware, +github.com/trilinos/Trilinos, +github.com/troessner/reek, +github.com/tronprotocol/java-tron, +github.com/trustwallet/assets, +github.com/twbs/bootstrap, +github.com/twilio/twilio-ruby, +github.com/twisted/twisted, +github.com/twitter/finagle, +github.com/typelevel/cats, +github.com/typeorm/typeorm, +github.com/typescript-eslint/typescript-eslint, +github.com/typetools/checker-framework, +github.com/typicode/husky, +github.com/tzinfo/tzinfo, +github.com/u-boot/u-boot, +github.com/uBlockOrigin/uAssets, +github.com/udacity/create-your-own-adventure, +github.com/uken/fluent-plugin-elasticsearch, +github.com/umbraco/Umbraco-CMS, +github.com/umijs/umi, +github.com/unclebob/fitnesse, +github.com/unicode-org/cldr, +github.com/unicode-org/icu, +github.com/universal-ctags/ctags, +github.com/unixorn/awesome-zsh-plugins, +github.com/unoplatform/uno, +github.com/urbit/urbit, +github.com/urfave/cli, +github.com/urho3d/Urho3D, +github.com/urllib3/urllib3, +github.com/ushahidi/platform, +github.com/uuid-rs/uuid, +github.com/uutils/coreutils, +github.com/v1s1t0r1sh3r3/airgeddon, +github.com/v2fly/v2ray-core, +github.com/v2ray/v2ray-core, +github.com/v8/v8, +github.com/vaadin/flow, +github.com/vaadin/framework, +github.com/vagrant-libvirt/vagrant-libvirt, +github.com/valhalla/valhalla, +github.com/validator/validator, +github.com/valyala/fasthttp, +github.com/vanilla/vanilla, +github.com/varnishcache/varnish-cache, +github.com/vcr/vcr, +github.com/vega/vega, +github.com/vega/vega-lite, +github.com/veloren/veloren, +github.com/vercel/next.js, +github.com/vespa-engine/vespa, +github.com/vgteam/vg, +github.com/video-dev/hls.js, +github.com/videojs/video.js, +github.com/videolan/vlc, +github.com/vimeo/psalm, +github.com/vis2k/Mirror, +github.com/vitessio/vitess, +github.com/vlucas/phpdotenv, +github.com/vmware/differential-datalog, +github.com/vmware/govmomi, +github.com/vnpy/vnpy, +github.com/void-linux/void-packages, +github.com/vuejs/vue, +github.com/vuejs/vue-next, +github.com/vuetifyjs/vuetify, +github.com/wagtail/wagtail, +github.com/wasmerio/wasmer, +github.com/wazuh/wazuh, +github.com/wbond/package_control_channel, +github.com/weaveworks/eksctl, +github.com/webdevops/Dockerfile, +github.com/webdriverio/webdriverio, +github.com/webpack/webpack, +github.com/webpack/webpack.js.org, +github.com/websockets/ws, +github.com/weechat/weechat, +github.com/wesnoth/wesnoth, +github.com/wez/wezterm, +github.com/wikimedia/mediawiki, +github.com/windows-toolkit/WindowsCommunityToolkit, +github.com/wine-mirror/wine, +github.com/wireshark/wireshark, +github.com/wodby/docker4drupal, +github.com/wolfSSL/wolfssl, +github.com/woocommerce/woocommerce, +github.com/woocommerce/woocommerce-android, +github.com/wordpress-mobile/WordPress-Android, +github.com/wp-cli/wp-cli, +github.com/wp-graphql/wp-graphql, +github.com/wp-media/wp-rocket, +github.com/wso2/product-is, +github.com/wxWidgets/wxWidgets, +github.com/xamarin/Essentials, +github.com/xamarin/Xamarin.Forms, +github.com/xamarin/XamarinComponents, +github.com/xamarin/xamarin-android, +github.com/xamarin/xamarin-forms-samples, +github.com/xamarin/xamarin-macios, +github.com/xanmod/linux, +github.com/xanzy/go-gitlab, +github.com/xbmc/xbmc, +github.com/xd009642/tarpaulin, +github.com/xonsh/xonsh, +github.com/xunit/xunit, +github.com/yarnpkg/berry, +github.com/yewstack/yew, +github.com/yiisoft/yii, +github.com/yiisoft/yii2, +github.com/youzan/vant, +github.com/yugabyte/yugabyte-db, +github.com/yuzu-emu/yuzu, +github.com/z-song/laravel-admin, +github.com/zalando/skipper, +github.com/zammad/zammad, +github.com/zaproxy/zap-extensions, +github.com/zaproxy/zaproxy, +github.com/zcash/zcash, +github.com/zdennis/activerecord-import, +github.com/zeebe-io/zeebe, +github.com/zeek/zeek, +github.com/zendesk/samson, +github.com/zephyrproject-rtos/zephyr, +github.com/zeromq/libzmq, +github.com/zimfw/zimfw, +github.com/zio/zio, +github.com/zkSNACKs/WalletWasabi, +github.com/zlib-ng/zlib-ng, +github.com/zloirock/core-js, +github.com/zsh-users/zsh, +github.com/zsh-users/zsh-completions, +github.com/zsh-users/zsh-syntax-highlighting, +github.com/zulip/zulip, +github.com/ossf/scorecard, +github.com/lyft/envoy-mobile, +github.com/bazelbuild/bazel-skylib, +github.com/envoyproxy/protoc-gen-validate, +github.com/bazelbuild/buildtools, +github.com/cncf/xds, +github.com/openzipkin/zipkin-api, +github.com/googleapis/googleapis, +github.com/census-instrumentation/opencensus-proto, +github.com/prometheus/client_model, +github.com/bazelbuild/rules_proto, +github.com/open-telemetry/opentelemetry-proto, +github.com/envoyproxy/data-plane-api, +github.com/yaml/pyyaml, +github.com/twisted/incremental, +github.com/zopefoundation/zope.interface, +github.com/twisted/constantly, +github.com/alibaba/hessian2-codec, +github.com/Azure/go-autorest/autores, +github.com/Azure/go-autorest/autorest/adal, +github.com/Azure/go-autorest/autorest/to, +github.com/GoogleCloudPlatform/k8s-cloud-provider, +github.com/JeffAshton/win_pdh, +github.com/Microsoft/go-winio, +github.com/Microsoft/hcsshim, +github.com/PuerkitoBio/purell, +github.com/armon/circbuf, +github.com/auth0/go-jwt-middleware, +github.com/blang/semver, +github.com/boltdb/bol, +github.com/clusterhq/flocker-go, +github.com/container-storage-interface/spec, +github.com/containernetworking/cn, +github.com/coredns/corefile-migration, +github.com/coreos/go-oidc, +github.com/coreos/go-systemd, +github.com/coreos/pk, +github.com/cpuguy83/go-md2man/v2, +github.com/davecgh/go-spew, +github.com/docker/docker, +github.com/docker/go-connections, +github.com/docker/go-units, +github.com/elazarl/goproxy, +github.com/emicklei/go-restful, +github.com/evanphx/json-patch, +github.com/fsnotify/fsnotify, +github.com/go-bindata/go-bindata, +github.com/go-openapi/spec, +github.com/go-ozzo/ozzo-validation, +github.com/godbus/dbus/v5, +github.com/gogo/protobuf, +github.com/golang/groupcache, +github.com/google/gofuzz, +github.com/google/uuid, +github.com/googleapis/gnostic, +github.com/hashicorp/golang-lru, +github.com/heketi/heke, +github.com/heketi/tests, +github.com/ishidawataru/sctp, +github.com/json-iterator/go, +github.com/libopenstorage/openstorage, +github.com/lithammer/deden, +github.com/lpabon/godbc, +github.com/miekg/dns, +github.com/moby/ipvs, +github.com/mohae/deepcopy, +github.com/mrunalp/fileutils, +github.com/munnerz/goautone, +github.com/mvdan/xurls, +github.com/onsi/gomega, +github.com/opencontainers/go-diges, +github.com/opencontainers/selinux, +github.com/pkg/errors, +github.com/pmezard/go-difflib, +github.com/prometheus/common, +github.com/quobyte/ap, +github.com/robfig/cron, +github.com/spf13/afero, +github.com/spf13/cobra, +github.com/spf13/jwalterweatherman, +github.com/spf13/pfla, +github.com/storageos/go-ap, +github.com/thecodeteam/goscaleio, +github.com/urfave/negron, +github.com/vishvananda/netlink, +github.com/vmware/govmom, +github.com/Azure/go-autorest/autorest, +github.com/boltdb/bolt, +github.com/containernetworking/cni, +github.com/coreos/pkg, +github.com/heketi/heketi, +github.com/lithammer/dedent, +github.com/munnerz/goautoneg, +github.com/opencontainers/go-digest, +github.com/quobyte/api, +github.com/spf13/pflag, +github.com/storageos/go-api, +github.com/urfave/negroni, +github.com/gonum/gonum, +github.com/gonum/netlib, +github.com/golang/appengine, +github.com/kubernetes/api, +github.com/kubernetes/apiextensions-apiserver, +github.com/kubernetes/apimachinery, +github.com/kubernetes/cli-runtime, +github.com/kubernetes/cloud-provider, +github.com/kubernetes/cluster-bootstrap, +github.com/kubernetes/code-generator, +github.com/kubernetes/component-base, +github.com/kubernetes/component-helpers, +github.com/kubernetes/controller-manager, +github.com/kubernetes/cri-api, +github.com/kubernetes/csi-translation-lib, +github.com/kubernetes/gengo, +github.com/kubernetes/heapster, +github.com/kubernetes/klog, +github.com/kubernetes/kube-aggregator, +github.com/kubernetes/kube-controller-manager, +github.com/kubernetes/kube-openapi, +github.com/kubernetes/kube-proxy, +github.com/kubernetes/kube-scheduler, +github.com/kubernetes/kubelet, +github.com/kubernetes/legacy-cloud-providers, +github.com/kubernetes/metrics, +github.com/kubernetes/mount-utils, +github.com/kubernetes/sample-apiserver, +github.com/kubernetes/system-validators, +github.com/kubernetes/utils, +github.com/kubernetes-sigs/structured-merge-diff, +github.com/kubernetes-sigs/yaml, +github.com/bazil/fuse, +github.com/census-ecosystem/opencensus-go-exporter-aws, +github.com/census-ecosystem/opencensus-go-exporter-stackdriver, +github.com/opencensus-integrations/ocsql, +github.com/Azure/azure-amqp-common-go/v3, +github.com/Azure/azure-pipeline-go, +github.com/Azure/azure-service-bus-go, +github.com/Azure/azure-storage-blob-go, +github.com/Azure/go-amqp, +github.com/Azure/go-autorest, +github.com/Azure/go-autorest/autorest/azure/auth, +github.com/Azure/go-autorest/autorest/azure/cli, +github.com/Azure/go-autorest/autorest/date, +github.com/Azure/go-autorest/autorest/mocks, +github.com/Azure/go-autorest/autorest/validation, +github.com/Azure/go-autorest/logger, +github.com/Azure/go-autorest/tracing, +github.com/BurntSushi/toml, +github.com/BurntSushi/xgb, +github.com/GoogleCloudPlatform/cloudsql-proxy, +github.com/OneOfOne/xxhash, +github.com/alecthomas/template, +github.com/alecthomas/units, +github.com/armon/go-metrics, +github.com/armon/go-radix, +github.com/beorn7/perks, +github.com/bgentry/speakeasy, +github.com/bketelsen/crypt, +github.com/bradfitz/gomemcache, +github.com/bradleyfalzon/ghinstallation, +github.com/cespare/xxhash, +github.com/chzyer/logex, +github.com/chzyer/readline, +github.com/chzyer/test, +github.com/client9/misspell, +github.com/cncf/udpa/go, +github.com/coreos/bbolt, +github.com/coreos/etcd, +github.com/coreos/go-semver, +github.com/creack/pty, +github.com/denisenkom/go-mssqldb, +github.com/devigned/tab, +github.com/dgrijalva/jwt-go, +github.com/dgryski/go-sip13, +github.com/dimchansky/utfbom, +github.com/fatih/color, +github.com/form3tech-oss/jwt-go, +github.com/fortytw2/leaktest, +github.com/ghodss/yaml, +github.com/gin-contrib/sse, +github.com/go-gl/glfw, +github.com/go-gl/glfw/v3.3/glfw, +github.com/go-ini/ini, +github.com/go-kit/kit, +github.com/go-logfmt/logfmt, +github.com/go-playground/assert/v2, +github.com/go-playground/locales, +github.com/go-playground/universal-translator, +github.com/go-playground/validator/v10, +github.com/go-sql-driver/mysql, +github.com/go-stack/stack, +github.com/go-task/slim-sprig, +github.com/gobwas/httphead, +github.com/gobwas/pool, +github.com/gobwas/ws, +github.com/golang-sql/civil, +github.com/golang/glog, +github.com/golang/snappy, +github.com/gomodule/redigo, +github.com/google/btree, +github.com/google/go-github/v29, +github.com/google/go-github/v32, +github.com/google/go-querystring, +github.com/google/go-replayers/grpcreplay, +github.com/google/go-replayers/httpreplay, +github.com/google/martian, +github.com/google/martian/v3, +github.com/google/pprof, +github.com/google/renameio, +github.com/google/subcommands, +github.com/google/wire, +github.com/googleapis/gax-go/v2, +github.com/gopherjs/gopherjs, +github.com/gorilla/websocket, +github.com/gregjones/httpcache, +github.com/grpc-ecosystem/go-grpc-middleware, +github.com/grpc-ecosystem/go-grpc-prometheus, +github.com/hashicorp/consul/api, +github.com/hashicorp/consul/sdk, +github.com/hashicorp/errwrap, +github.com/hashicorp/go-cleanhttp, +github.com/hashicorp/go-immutable-radix, +github.com/hashicorp/go-msgpack, +github.com/hashicorp/go-multierror, +github.com/hashicorp/go-rootcerts, +github.com/hashicorp/go-sockaddr, +github.com/hashicorp/go-syslog, +github.com/hashicorp/go-uuid, +github.com/hashicorp/go.net, +github.com/hashicorp/hcl, +github.com/hashicorp/logutils, +github.com/hashicorp/mdns, +github.com/hashicorp/memberlist, +github.com/hashicorp/serf, +github.com/hpcloud/tail, +github.com/ianlancetaylor/demangle, +github.com/inconshreveable/mousetrap, +github.com/jmespath/go-jmespath, +github.com/jmespath/go-jmespath/internal/testify, +github.com/joho/godotenv, +github.com/jonboulle/clockwork, +github.com/jstemmer/go-junit-report, +github.com/jtolds/gls, +github.com/julienschmidt/httprouter, +github.com/kisielk/errcheck, +github.com/kisielk/gotool, +github.com/klauspost/compress, +github.com/konsorten/go-windows-terminal-sequences, +github.com/kr/logfmt, +github.com/kr/pretty, +github.com/kr/pty, +github.com/kr/text, +github.com/leodido/go-urn, +github.com/lib/pq, +github.com/magiconair/properties, +github.com/mattn/go-colorable, +github.com/mattn/go-ieproxy, +github.com/mattn/go-isatty, +github.com/matttproud/golang_protobuf_extensions, +github.com/mitchellh/cli, +github.com/mitchellh/go-homedir, +github.com/mitchellh/go-testing-interface, +github.com/mitchellh/gox, +github.com/mitchellh/iochan, +github.com/mitchellh/mapstructure, +github.com/modern-go/concurrent, +github.com/modern-go/reflect2, +github.com/mwitkow/go-conntrack, +github.com/naveensrinivasan/httpcache, +github.com/niemeyer/pretty, +github.com/nxadm/tail, +github.com/oklog/ulid, +github.com/pascaldekloe/goe, +github.com/pelletier/go-toml, +github.com/peterbourgon/diskv, +github.com/posener/complete, +github.com/prometheus/procfs, +github.com/prometheus/tsdb, +github.com/rogpeppe/fastuuid, +github.com/rogpeppe/go-internal, +github.com/russross/blackfriday/v2, +github.com/ryanuber/columnize, +github.com/sean-/seed, +github.com/shurcooL/githubv4, +github.com/shurcooL/graphql, +github.com/shurcooL/sanitized_anchor_name, +github.com/smartystreets/assertions, +github.com/smartystreets/goconvey, +github.com/soheilhy/cmux, +github.com/spaolacci/murmur3, +github.com/spf13/cast, +github.com/stretchr/objx, +github.com/subosito/gotenv, +github.com/syndtr/goleveldb, +github.com/tmc/grpc-websocket-proxy, +github.com/ugorji/go, +github.com/ugorji/go/codec, +github.com/xiang90/probing, +github.com/yuin/goldmark, +github.com/etcd-io/bbolt, +github.com/census-instrumentation/opencensus-go, +github.com/uber-go/atomic, +github.com/uber-go/multierr, +github.com/uber-go/tools, +github.com/uber-go/zap, +github.com/google/go-cloud, +github.com/googleapis/go-genproto, +github.com/dominikh/go-tools, +github.com/nhooyr/websocket, +github.com/rsc/binaryregexp, +github.com/rsc/quote, +github.com/rsc/sampler, +github.com/MakeNowJust/heredoc, +github.com/NYTimes/gziphandler, +github.com/PuerkitoBio/urlesc, +github.com/asaskevich/govalidator, +github.com/chai2010/gettext-go, +github.com/checkpoint-restore/go-criu, +github.com/cilium/ebpf, +github.com/containerd/console, +github.com/containerd/ttrpc, +github.com/cpuguy83/go-md2man, +github.com/cyphar/filepath-securejoin, +github.com/daviddengcn/go-colortext, +github.com/dustin/go-humanize, +github.com/euank/go-kmsg-parser, +github.com/exponent-io/jsonpath, +github.com/fatih/camelcase, +github.com/fvbommel/sortorder, +github.com/go-errors/errors, +github.com/go-logr/logr, +github.com/go-openapi/jsonpointer, +github.com/go-openapi/jsonreference, +github.com/go-openapi/swag, +github.com/godbus/dbus, +github.com/google/shlex, +github.com/googleapis/gax-go, +github.com/imdario/mergo, +github.com/karrick/godirwalk, +github.com/liggitt/tabwriter, +github.com/mailru/easyjson, +github.com/mindprince/gonvml, +github.com/mistifyio/go-zfs, +github.com/mitchellh/go-wordwrap, +github.com/moby/spdystream, +github.com/moby/sys, +github.com/moby/term, +github.com/monochromegane/go-gitignore, +github.com/morikuni/aec, +github.com/mxk/go-flowrate, +github.com/opencontainers/image-spec, +github.com/opencontainers/runtime-spec, +github.com/pquerna/cachecontrol, +github.com/rubiojr/go-vhd, +github.com/russross/blackfriday, +github.com/satori/go.uuid, +github.com/syndtr/gocapability, +github.com/vishvananda/netns, +github.com/willf/bitset, +github.com/xlab/treeprint, +github.com/Azure/azure-amqp-common-go, +github.com/cncf/udpa, +github.com/go-playground/assert, +github.com/go-playground/validator, +github.com/google/go-replayers, +github.com/sigstore/cosign, +github.com/Azure/go-ansiterm, +github.com/Knetic/govaluate, +github.com/Masterminds/goutils, +github.com/Masterminds/semver, +github.com/Masterminds/sprig, +github.com/OpenPeeDeeP/depguard, +github.com/Shopify/toxiproxy, +github.com/StackExchange/wmi, +github.com/VividCortex/gohistogram, +github.com/afex/hystrix-go, +github.com/agnivade/levenshtein, +github.com/andreyvit/diff, +github.com/aokoli/goutils, +github.com/armon/consul-api, +github.com/aryann/difflib, +github.com/aws/aws-lambda-go, +github.com/aws/aws-sdk-go-v2, +github.com/bytecodealliance/wasmtime-go, +github.com/casbin/casbin, +github.com/cavaliercoder/badio, +github.com/cavaliercoder/go-cpio, +github.com/cavaliercoder/go-rpm, +github.com/cenkalti/backoff, +github.com/clbanning/x2j, +github.com/cockroachdb/datadriven, +github.com/codahale/hdrhistogram, +github.com/containerd/stargz-snapshotter, +github.com/coreos/go-etcd, +github.com/docker/docker-credential-helpers, +github.com/docopt/docopt-go, +github.com/eapache/go-resiliency, +github.com/eapache/go-xerial-snappy, +github.com/eapache/queue, +github.com/edsrzf/mmap-go, +github.com/flynn/go-docopt, +github.com/franela/goblin, +github.com/franela/goreq, +github.com/fullstorydev/grpcurl, +github.com/gabriel-vasile/mimetype, +github.com/globalsign/mgo, +github.com/go-chi/chi, +github.com/go-critic/go-critic, +github.com/go-lintpack/lintpack, +github.com/go-ole/go-ole, +github.com/go-openapi/analysis, +github.com/go-openapi/errors, +github.com/go-openapi/loads, +github.com/go-openapi/runtime, +github.com/go-openapi/strfmt, +github.com/go-openapi/validate, +github.com/go-piv/piv-go, +github.com/go-test/deep, +github.com/go-toolsmith/astcast, +github.com/go-toolsmith/astcopy, +github.com/go-toolsmith/astequal, +github.com/go-toolsmith/astfmt, +github.com/go-toolsmith/astinfo, +github.com/go-toolsmith/astp, +github.com/go-toolsmith/pkgload, +github.com/go-toolsmith/strparse, +github.com/go-toolsmith/typep, +github.com/gobuffalo/attrs, +github.com/gobuffalo/depgen, +github.com/gobuffalo/envy, +github.com/gobuffalo/flect, +github.com/gobuffalo/genny, +github.com/gobuffalo/gitgen, +github.com/gobuffalo/gogen, +github.com/gobuffalo/logger, +github.com/gobuffalo/mapi, +github.com/gobuffalo/packd, +github.com/gobuffalo/packr, +github.com/gobuffalo/syncx, +github.com/gobwas/glob, +github.com/gogo/googleapis, +github.com/golangci/check, +github.com/golangci/dupl, +github.com/golangci/errcheck, +github.com/golangci/go-misc, +github.com/golangci/go-tools, +github.com/golangci/goconst, +github.com/golangci/gocyclo, +github.com/golangci/gofmt, +github.com/golangci/gosec, +github.com/golangci/ineffassign, +github.com/golangci/lint-1, +github.com/golangci/maligned, +github.com/golangci/misspell, +github.com/golangci/prealloc, +github.com/golangci/revgrep, +github.com/golangci/unconvert, +github.com/google/certificate-transparency-go, +github.com/google/go-containerregistry, +github.com/google/monologue, +github.com/google/rpmpack, +github.com/google/trillian, +github.com/google/trillian-examples, +github.com/gordonklaus/ineffassign, +github.com/gorilla/context, +github.com/gorilla/mux, +github.com/gostaticanalysis/analysisutil, +github.com/hashicorp/go-version, +github.com/huandu/xstrings, +github.com/hudl/fargo, +github.com/influxdata/influxdb1-client, +github.com/jedisct1/go-minisign, +github.com/jhump/protoreflect, +github.com/joefitzgerald/rainbow-reporter, +github.com/josharian/intern, +github.com/jpillora/backoff, +github.com/juju/ansiterm, +github.com/juju/ratelimit, +github.com/klauspost/cpuid, +github.com/kr/fs, +github.com/kylelemons/godebug, +github.com/letsencrypt/pkcs11key, +github.com/lightstep/lightstep-tracer-common, +github.com/lightstep/lightstep-tracer-go, +github.com/logrusorgru/aurora, +github.com/lunixbochs/vtclean, +github.com/lyft/protoc-gen-validate, +github.com/manifoldco/promptui, +github.com/markbates/oncer, +github.com/markbates/safe, +github.com/mattn/go-runewidth, +github.com/mattn/go-sqlite3, +github.com/mattn/goveralls, +github.com/maxbrunsfeld/counterfeiter, +github.com/mediocregopher/radix, +github.com/miekg/pkcs11, +github.com/mitchellh/copystructure, +github.com/mitchellh/go-ps, +github.com/mitchellh/reflectwalk, +github.com/montanaflynn/stats, +github.com/mozilla/tls-observatory, +github.com/mwitkow/go-proto-validators, +github.com/nats-io/jwt, +github.com/nats-io/nats-server, +github.com/nats-io/nats.go, +github.com/nats-io/nkeys, +github.com/nats-io/nuid, +github.com/nbutton23/zxcvbn-go, +github.com/nishanths/predeclared, +github.com/oklog/oklog, +github.com/oklog/run, +github.com/olekukonko/tablewriter, +github.com/op/go-logging, +github.com/opentracing-contrib/go-observer, +github.com/opentracing/basictracer-go, +github.com/opentracing/opentracing-go, +github.com/openzipkin-contrib/zipkin-go-opentracing, +github.com/openzipkin/zipkin-go, +github.com/pact-foundation/pact-go, +github.com/pborman/uuid, +github.com/performancecopilot/speed, +github.com/peterbourgon/ff, +github.com/peterh/liner, +github.com/pierrec/lz4, +github.com/pkg/profile, +github.com/pkg/sftp, +github.com/pseudomuto/protoc-gen-doc, +github.com/pseudomuto/protokit, +github.com/quasilyte/go-consistent, +github.com/rcrowley/go-metrics, +github.com/rs/cors, +github.com/ryanuber/go-glob, +github.com/samuel/go-zookeeper, +github.com/sclevine/spec, +github.com/segmentio/ksuid, +github.com/sergi/go-diff, +github.com/shirou/w32, +github.com/shurcooL/go, +github.com/shurcooL/go-goon, +github.com/sigstore/fulcio, +github.com/sigstore/rekor, +github.com/sigstore/sigstore, +github.com/skratchdot/open-golang, +github.com/sony/gobreaker, +github.com/sourcegraph/go-diff, +github.com/streadway/amqp, +github.com/streadway/handy, +github.com/tent/canonical-json-go, +github.com/theupdateframework/go-tuf, +github.com/tidwall/pretty, +github.com/tilinna/clock, +github.com/timakin/bodyclose, +github.com/tomasen/realip, +github.com/ulikunitz/xz, +github.com/ultraware/funlen, +github.com/valyala/bytebufferpool, +github.com/valyala/quicktemplate, +github.com/valyala/tcplisten, +github.com/vektah/gqlparser, +github.com/xdg-go/pbkdf2, +github.com/xdg-go/scram, +github.com/xdg-go/stringprep, +github.com/xdg/scram, +github.com/xdg/stringprep, +github.com/xeipuuv/gojsonpointer, +github.com/xeipuuv/gojsonreference, +github.com/xordataexchange/crypt, +github.com/yashtewari/glob-intersection, +github.com/youmark/pkcs8, diff --git a/cron/controller/main.go b/cron/controller/main.go new file mode 100644 index 00000000000..37da2a8739a --- /dev/null +++ b/cron/controller/main.go @@ -0,0 +1,94 @@ +// Copyright 2021 Security Scorecard Authors +// +// Licensed under the Apache License, Vershandlern 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permisshandlerns and +// limitathandlerns under the License. + +package main + +import ( + "context" + "fmt" + "os" + "strconv" + "time" + + "github.com/ossf/scorecard/cron/config" + "github.com/ossf/scorecard/cron/data" + "github.com/ossf/scorecard/cron/pubsub" + "google.golang.org/protobuf/types/known/timestamppb" +) + +func PublishToRepoRequestTopic(ctx context.Context, iter data.Iterator, datetime time.Time) (int32, error) { + var shardNum int32 = 0 + request := data.ScorecardBatchRequest{ + JobTime: timestamppb.New(datetime), + ShardNum: &shardNum, + } + topicPublisher, err := pubsub.CreatePublisher(ctx, config.RequestTopicURL) + if err != nil { + return shardNum, fmt.Errorf("error running CreatePublisher: %w", err) + } + + // Create and send batch requests of repoURLs of size `ShardSize`: + // * Iterate through incoming repoURLs until `request` has len(Repos) of size `ShardSize`. + // * Publish request to PubSub topic. + // * Clear request.Repos and increment shardNum. + for iter.HasNext() { + repoURL, err := iter.Next() + if err != nil { + return shardNum, fmt.Errorf("error reading repoURL: %w", err) + } + request.Repos = append(request.GetRepos(), repoURL.URL()) + if len(request.GetRepos()) < config.ShardSize { + continue + } + if err := topicPublisher.Publish(&request); err != nil { + return shardNum, fmt.Errorf("error running topicPublisher.Publish: %w", err) + } + request.Repos = nil + shardNum++ + } + // Check if more repoURLs are pending to be sent in `request`. + if len(request.GetRepos()) > 0 { + if err := topicPublisher.Publish(&request); err != nil { + return shardNum, fmt.Errorf("error running topicPublisher.Publish: %w", err) + } + } + + if err := topicPublisher.Close(); err != nil { + return shardNum, fmt.Errorf("error running topicPublisher.Close: %w", err) + } + return shardNum, nil +} + +func main() { + ctx := context.Background() + t := time.Now() + reposFile, err := os.OpenFile(config.InputReposFile, os.O_RDONLY, 0o644) + if err != nil { + panic(err) + } + reader, err := data.MakeIterator(reposFile) + if err != nil { + panic(err) + } + shardNum, err := PublishToRepoRequestTopic(ctx, reader, t) + if err != nil { + panic(err) + } + err = data.WriteToBlobStore(ctx, config.ResultDataBucketURL, + data.GetShardNumFilename(t), + []byte(strconv.Itoa(int(shardNum)))) + if err != nil { + panic(err) + } +} diff --git a/cron/data/README.md b/cron/data/README.md new file mode 100644 index 00000000000..09d836104fb --- /dev/null +++ b/cron/data/README.md @@ -0,0 +1,22 @@ +# Generating proto files + +## Installation + +Follow instructions +[here](https://developers.google.com/protocol-buffers/docs/gotutorial#compiling-your-protocol-buffers) +to install necessary binaries. + +## Compile + +Use the command below to compile: + +``` +protoc --go_out=$DST_DIR request.proto +``` + +NOTE: $DST_DIR should contain `github.com/ossf/scorecard/cron/data` directory +structure. + +## Future work + +Update Makefile to compile and generate proto files, when we run `make all`. diff --git a/cron/data/blob.go b/cron/data/blob.go new file mode 100644 index 00000000000..c0d82eb635a --- /dev/null +++ b/cron/data/blob.go @@ -0,0 +1,59 @@ +// Copyright 2021 Security Scorecard Authors +// +// Licensed under the Apache License, Vershandlern 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permisshandlerns and +// limitathandlerns under the License. + +package data + +import ( + "context" + "fmt" + "time" + + "github.com/ossf/scorecard/cron/config" + "gocloud.dev/blob" + _ "gocloud.dev/blob/gcsblob" // Needed to link in GCP drivers. +) + +const ( + // filePrefixFormat uses ISO 8601 standard, i.e - YYYY-MM-DDTHH:MM:SS. + // This format guarantees that lexicographically sorted files are chronologically sorted. + filePrefixFormat = "2006.01.02/150405/" +) + +func WriteToBlobStore(ctx context.Context, bucketURL, filename string, data []byte) error { + bucket, err := blob.OpenBucket(ctx, bucketURL) + if err != nil { + return fmt.Errorf("error from blob.OpenBucket: %w", err) + } + defer bucket.Close() + + blobWriter, err := bucket.NewWriter(ctx, filename, nil) + if err != nil { + return fmt.Errorf("error from bucket.NewWriter: %w", err) + } + if _, err = blobWriter.Write(data); err != nil { + return fmt.Errorf("error from blobWriter.Write: %w", err) + } + if err := blobWriter.Close(); err != nil { + return fmt.Errorf("error from blobWriter.Close: %w", err) + } + return nil +} + +func GetBlobFilename(filename string, datetime time.Time) string { + return datetime.Format(filePrefixFormat) + filename +} + +func GetShardNumFilename(datetime time.Time) string { + return GetBlobFilename(config.ShardNumFilename, datetime) +} diff --git a/cron/data/blob_test.go b/cron/data/blob_test.go new file mode 100644 index 00000000000..73fcaa83344 --- /dev/null +++ b/cron/data/blob_test.go @@ -0,0 +1,55 @@ +// Copyright 2021 Security Scorecard Authors +// +// Licensed under the Apache License, Vershandlern 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permisshandlerns and +// limitathandlerns under the License. + +package data + +import ( + "testing" + "time" +) + +const ( + inputTimeFormat string = "2006-01-02T15:04:05" +) + +func TestGetBlobFilename(t *testing.T) { + t.Parallel() + testcases := []struct { + name string + inputTime string + inputFilename string + expectedFilename string + }{ + { + name: "Basic", + inputTime: "2021-04-23T15:06:43", + inputFilename: "file-000", + expectedFilename: "2021.04.23/150643/file-000", + }, + } + for _, testcase := range testcases { + testcase := testcase + t.Run(testcase.name, func(t *testing.T) { + t.Parallel() + datetime, err := time.Parse(inputTimeFormat, testcase.inputTime) + if err != nil { + t.Errorf("failed to parse testcase.inputTime %s: %w", testcase.inputTime, err) + } + gotFilename := GetBlobFilename(testcase.inputFilename, datetime) + if gotFilename != testcase.expectedFilename { + t.Errorf("test failed - expected: %s, got: %s", testcase.expectedFilename, gotFilename) + } + }) + } +} diff --git a/cron/data/iterator.go b/cron/data/iterator.go new file mode 100644 index 00000000000..8d8cd74dc54 --- /dev/null +++ b/cron/data/iterator.go @@ -0,0 +1,67 @@ +// Copyright 2021 Security Scorecard Authors +// +// Licensed under the Apache License, Vershandlern 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permisshandlerns and +// limitathandlerns under the License. + +package data + +import ( + "encoding/csv" + "errors" + "fmt" + "io" + + "github.com/jszwec/csvutil" + "github.com/ossf/scorecard/repos" +) + +type Iterator interface { + HasNext() bool + Next() (repos.RepoURL, error) +} + +func MakeIterator(reader io.Reader) (Iterator, error) { + dec, err := csvutil.NewDecoder(csv.NewReader(reader)) + if err != nil { + return &csvIterator{}, fmt.Errorf("error in csvutil.NewDecoder: %w", err) + } + return &csvIterator{decoder: dec}, nil +} + +type inputRepo struct { + Repo string `csv:"repo"` + Metadata string `csv:"metadata"` +} + +type csvIterator struct { + decoder *csvutil.Decoder + err error + next inputRepo +} + +func (reader *csvIterator) HasNext() bool { + reader.err = reader.decoder.Decode(&reader.next) + return reader.err != io.EOF +} + +func (reader *csvIterator) Next() (repos.RepoURL, error) { + if reader.err != nil { + return repos.RepoURL{}, reader.err + } + ret := repos.RepoURL{} + var err error + err = ret.Set(reader.next.Repo) + if err == nil { + err = ret.ValidGitHubURL() + } + return ret, errors.Unwrap(err) +} diff --git a/cron/data/iterator_test.go b/cron/data/iterator_test.go new file mode 100644 index 00000000000..469c2eae32b --- /dev/null +++ b/cron/data/iterator_test.go @@ -0,0 +1,178 @@ +// Copyright 2021 Security Scorecard Authors +// +// Licensed under the Apache License, Vershandlern 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permisshandlerns and +// limitathandlerns under the License. + +package data + +import ( + "errors" + "os" + "testing" + + "github.com/ossf/scorecard/repos" +) + +type outcome struct { + expectedErr error + repo repos.RepoURL + hasError bool +} + +// nolint: gocognit +func TestCsvIterator(t *testing.T) { + t.Parallel() + testcases := []struct { + name string + filename string + outcomes []outcome + }{ + { + name: "Basic", + filename: "testdata/basic.csv", + outcomes: []outcome{ + { + hasError: false, + repo: repos.RepoURL{ + Host: "github.com", + Owner: "owner1", + Repo: "repo1", + }, + }, + { + hasError: false, + repo: repos.RepoURL{ + Host: "github.com", + Owner: "owner2", + Repo: "repo2", + }, + }, + { + hasError: false, + repo: repos.RepoURL{ + Host: "github.com", + Owner: "owner3", + Repo: "repo3", + }, + }, + }, + }, + { + name: "FailingURLs", + filename: "testdata/failing_urls.csv", + outcomes: []outcome{ + { + hasError: true, + expectedErr: repos.ErrorUnsupportedHost, + }, + { + hasError: true, + expectedErr: repos.ErrorInvalidURL, + }, + { + hasError: true, + expectedErr: repos.ErrorInvalidURL, + }, + }, + }, + { + name: "EmptyRows", + filename: "testdata/empty_row.csv", + outcomes: []outcome{ + { + hasError: false, + repo: repos.RepoURL{ + Host: "github.com", + Owner: "owner1", + Repo: "repo1", + }, + }, + { + hasError: false, + repo: repos.RepoURL{ + Host: "github.com", + Owner: "owner2", + Repo: "repo2", + }, + }, + { + hasError: false, + repo: repos.RepoURL{ + Host: "github.com", + Owner: "owner3", + Repo: "repo3", + }, + }, + }, + }, + { + name: "ExtraColumns", + filename: "testdata/extra_column.csv", + outcomes: []outcome{ + { + hasError: false, + repo: repos.RepoURL{ + Host: "github.com", + Owner: "owner1", + Repo: "repo1", + }, + }, + { + hasError: false, + repo: repos.RepoURL{ + Host: "github.com", + Owner: "owner2", + Repo: "repo2", + }, + }, + { + hasError: true, + }, + }, + }, + } + + for _, testcase := range testcases { + testcase := testcase + t.Run(testcase.name, func(t *testing.T) { + t.Parallel() + testFile, err := os.OpenFile(testcase.filename, os.O_RDONLY, 0o644) + if err != nil { + t.Errorf("failed to open %s: %v", testcase.filename, err) + } + defer testFile.Close() + + testReader, err := MakeIterator(testFile) + if err != nil { + t.Errorf("failed to create reader: %v", err) + } + for _, outcome := range testcase.outcomes { + if !testReader.HasNext() { + t.Error("expected outcome, got EOF") + } + repoURL, err := testReader.Next() + if (err != nil) != outcome.hasError { + t.Errorf("expected hasError: %t, got: %v", outcome.hasError, err) + } + if !outcome.hasError && repoURL != outcome.repo { + t.Errorf("expected repoURL: %s, got %s", &outcome.repo, repoURL) + } + if outcome.hasError && outcome.expectedErr != nil && !errors.Is(err, outcome.expectedErr) { + t.Errorf("expected error: %v, got %v", outcome.expectedErr, err) + } + } + if testReader.HasNext() { + t.Error("actual reader has more repos than expected") + } + }) + } +} diff --git a/cron/data/request.pb.go b/cron/data/request.pb.go new file mode 100644 index 00000000000..60f4b8b6581 --- /dev/null +++ b/cron/data/request.pb.go @@ -0,0 +1,194 @@ +// Copyright 2021 Security Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.15.8 +// source: cron/data/request.proto + +package data + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type ScorecardBatchRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Repos []string `protobuf:"bytes,1,rep,name=repos,proto3" json:"repos,omitempty"` + ShardNum *int32 `protobuf:"varint,2,opt,name=shard_num,json=shardNum,proto3,oneof" json:"shard_num,omitempty"` + JobTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=job_time,json=jobTime,proto3,oneof" json:"job_time,omitempty"` +} + +func (x *ScorecardBatchRequest) Reset() { + *x = ScorecardBatchRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_cron_data_request_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ScorecardBatchRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ScorecardBatchRequest) ProtoMessage() {} + +func (x *ScorecardBatchRequest) ProtoReflect() protoreflect.Message { + mi := &file_cron_data_request_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ScorecardBatchRequest.ProtoReflect.Descriptor instead. +func (*ScorecardBatchRequest) Descriptor() ([]byte, []int) { + return file_cron_data_request_proto_rawDescGZIP(), []int{0} +} + +func (x *ScorecardBatchRequest) GetRepos() []string { + if x != nil { + return x.Repos + } + return nil +} + +func (x *ScorecardBatchRequest) GetShardNum() int32 { + if x != nil && x.ShardNum != nil { + return *x.ShardNum + } + return 0 +} + +func (x *ScorecardBatchRequest) GetJobTime() *timestamppb.Timestamp { + if x != nil { + return x.JobTime + } + return nil +} + +var File_cron_data_request_proto protoreflect.FileDescriptor + +var file_cron_data_request_proto_rawDesc = []byte{ + 0x0a, 0x17, 0x63, 0x72, 0x6f, 0x6e, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x6f, 0x73, 0x73, 0x66, 0x2e, + 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x63, 0x72, 0x6f, 0x6e, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa6, 0x01, 0x0a, 0x15, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, + 0x72, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x72, + 0x65, 0x70, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, + 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x4e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x54, 0x69, 0x6d, 0x65, 0x88, + 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x25, 0x5a, + 0x23, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x73, 0x73, 0x66, + 0x2f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x2f, 0x63, 0x72, 0x6f, 0x6e, 0x2f, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_cron_data_request_proto_rawDescOnce sync.Once + file_cron_data_request_proto_rawDescData = file_cron_data_request_proto_rawDesc +) + +func file_cron_data_request_proto_rawDescGZIP() []byte { + file_cron_data_request_proto_rawDescOnce.Do(func() { + file_cron_data_request_proto_rawDescData = protoimpl.X.CompressGZIP(file_cron_data_request_proto_rawDescData) + }) + return file_cron_data_request_proto_rawDescData +} + +var file_cron_data_request_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_cron_data_request_proto_goTypes = []interface{}{ + (*ScorecardBatchRequest)(nil), // 0: ossf.scorecard.cron.data.ScorecardBatchRequest + (*timestamppb.Timestamp)(nil), // 1: google.protobuf.Timestamp +} +var file_cron_data_request_proto_depIdxs = []int32{ + 1, // 0: ossf.scorecard.cron.data.ScorecardBatchRequest.job_time:type_name -> google.protobuf.Timestamp + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_cron_data_request_proto_init() } +func file_cron_data_request_proto_init() { + if File_cron_data_request_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_cron_data_request_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ScorecardBatchRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_cron_data_request_proto_msgTypes[0].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_cron_data_request_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_cron_data_request_proto_goTypes, + DependencyIndexes: file_cron_data_request_proto_depIdxs, + MessageInfos: file_cron_data_request_proto_msgTypes, + }.Build() + File_cron_data_request_proto = out.File + file_cron_data_request_proto_rawDesc = nil + file_cron_data_request_proto_goTypes = nil + file_cron_data_request_proto_depIdxs = nil +} diff --git a/cron/data/request.proto b/cron/data/request.proto new file mode 100644 index 00000000000..68117cb8c4c --- /dev/null +++ b/cron/data/request.proto @@ -0,0 +1,27 @@ +// Copyright 2021 Security Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package ossf.scorecard.cron.data; + +import "google/protobuf/timestamp.proto"; + +option go_package = "github.com/ossf/scorecard/cron/data"; + +message ScorecardBatchRequest { + repeated string repos = 1; + optional int32 shard_num = 2; + optional google.protobuf.Timestamp job_time = 3; +} diff --git a/cron/data/testdata/basic.csv b/cron/data/testdata/basic.csv new file mode 100644 index 00000000000..d161d065be4 --- /dev/null +++ b/cron/data/testdata/basic.csv @@ -0,0 +1,4 @@ +repo,metadata +github.com/owner1/repo1, +github.com/owner2/repo2, +github.com/owner3/repo3,meta diff --git a/cron/data/testdata/empty_row.csv b/cron/data/testdata/empty_row.csv new file mode 100644 index 00000000000..c3f0f0c5abe --- /dev/null +++ b/cron/data/testdata/empty_row.csv @@ -0,0 +1,5 @@ +repo,metadata +github.com/owner1/repo1, +github.com/owner2/repo2, + +github.com/owner3/repo3,meta diff --git a/cron/data/testdata/extra_column.csv b/cron/data/testdata/extra_column.csv new file mode 100644 index 00000000000..c22c2953149 --- /dev/null +++ b/cron/data/testdata/extra_column.csv @@ -0,0 +1,4 @@ +repo,metadata +github.com/owner1/repo1, +github.com/owner2/repo2, +github.com/owner3/repo3,meta,, diff --git a/cron/data/testdata/failing_urls.csv b/cron/data/testdata/failing_urls.csv new file mode 100644 index 00000000000..f3c4a5d0022 --- /dev/null +++ b/cron/data/testdata/failing_urls.csv @@ -0,0 +1,4 @@ +repo,metadata +gitlab.com/owner1/repo1, +github.com/owner2/, +github.com//repo3,meta diff --git a/cron/pubsub/publisher.go b/cron/pubsub/publisher.go new file mode 100644 index 00000000000..4ffb0c7d744 --- /dev/null +++ b/cron/pubsub/publisher.go @@ -0,0 +1,89 @@ +// Copyright 2021 Security Scorecard Authors +// +// Licensed under the Apache License, Vershandlern 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permisshandlerns and +// limitathandlerns under the License. + +package pubsub + +import ( + "context" + "errors" + "fmt" + "log" + "sync" + "sync/atomic" + + "github.com/ossf/scorecard/cron/data" + "gocloud.dev/pubsub" + _ "gocloud.dev/pubsub/gcppubsub" // Needed to link in GCP drivers. + "google.golang.org/protobuf/encoding/protojson" +) + +var errorPublish = errors.New("total errors when publishing") + +type Publisher interface { + Publish(request *data.ScorecardBatchRequest) error + Close() error +} + +func CreatePublisher(ctx context.Context, topicURL string) (Publisher, error) { + ret := publisherImpl{} + topic, err := pubsub.OpenTopic(ctx, topicURL) + if err != nil { + return &ret, fmt.Errorf("error from pubsub.OpenTopic: %w", err) + } + return &publisherImpl{ + ctx: ctx, + topic: topic, + }, nil +} + +type sender interface { + Send(ctx context.Context, msg *pubsub.Message) error +} + +type publisherImpl struct { + ctx context.Context + topic sender + wg sync.WaitGroup + totalErrors uint64 +} + +func (publisher *publisherImpl) Publish(request *data.ScorecardBatchRequest) error { + msg, err := protojson.Marshal(request) + if err != nil { + return fmt.Errorf("error from protojson.Marshal: %w", err) + } + + publisher.wg.Add(1) + go func() { + defer publisher.wg.Done() + err := publisher.topic.Send(publisher.ctx, &pubsub.Message{ + Body: msg, + }) + if err != nil { + log.Printf("Error when publishing message %s: %v", msg, err) + atomic.AddUint64(&publisher.totalErrors, 1) + return + } + log.Print("Successfully published message") + }() + return nil +} + +func (publisher *publisherImpl) Close() error { + publisher.wg.Wait() + if publisher.totalErrors > 0 { + return fmt.Errorf("%w: %d", errorPublish, publisher.totalErrors) + } + return nil +} diff --git a/cron/pubsub/publisher_test.go b/cron/pubsub/publisher_test.go new file mode 100644 index 00000000000..5777de424cc --- /dev/null +++ b/cron/pubsub/publisher_test.go @@ -0,0 +1,86 @@ +// Copyright 2021 Security Scorecard Authors +// +// Licensed under the Apache License, Vershandlern 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permisshandlerns and +// limitathandlerns under the License. + +package pubsub + +import ( + "context" + "fmt" + "testing" + + "github.com/ossf/scorecard/cron/data" + "gocloud.dev/pubsub" +) + +type mockSucceedTopic struct{} + +func (topic *mockSucceedTopic) Send(ctx context.Context, msg *pubsub.Message) error { + return nil +} + +type mockFailTopic struct{} + +func (topic *mockFailTopic) Send(ctx context.Context, msg *pubsub.Message) error { + // nolint: goerr113 + return fmt.Errorf("mockFailTopic failed to send") +} + +func TestPublish(t *testing.T) { + t.Parallel() + // nolint: govet + testcases := []struct { + numErrors uint64 + name string + errorMsg string + hasError bool + topic sender + }{ + { + name: "SendFails", + topic: &mockFailTopic{}, + hasError: true, + numErrors: 1, + errorMsg: "", + }, + { + name: "SendSucceeds", + topic: &mockSucceedTopic{}, + hasError: false, + }, + } + for _, testcase := range testcases { + testcase := testcase + t.Run(testcase.name, func(t *testing.T) { + t.Parallel() + ctx := context.Background() + publisher := publisherImpl{ + ctx: ctx, + topic: testcase.topic, + } + request := data.ScorecardBatchRequest{ + Repos: []string{"repo1"}, + } + if err := publisher.Publish(&request); err != nil { + t.Errorf("Failed to parse message: %v", err) + } + err := publisher.Close() + if (err == nil) == testcase.hasError { + t.Errorf("Test failed. Expected: %t got: %v", testcase.hasError, err) + } + if testcase.hasError && testcase.numErrors != publisher.totalErrors { + t.Errorf("Test failed. Expected numErrors: %d, got: %d", testcase.numErrors, publisher.totalErrors) + } + }) + } +} diff --git a/go.mod b/go.mod index 2968f180526..a41c54b5269 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.16 require ( github.com/aws/aws-sdk-go v1.36.30 // indirect github.com/bradleyfalzon/ghinstallation v1.1.1 + github.com/golang/protobuf v1.5.2 github.com/google/go-github/v32 v32.1.0 github.com/jszwec/csvutil v1.5.0 github.com/kr/text v0.2.0 // indirect @@ -20,10 +21,10 @@ require ( go.uber.org/zap v1.16.0 gocloud.dev v0.22.0 golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 // indirect - golang.org/x/mod v0.4.2 // indirect golang.org/x/oauth2 v0.0.0-20201203001011-0b49973bad19 golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6 // indirect - golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a // indirect + golang.org/x/tools v0.1.1-0.20210504170620-03ebc2c9fca8 // indirect + google.golang.org/protobuf v1.26.0 gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b // indirect gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect diff --git a/go.sum b/go.sum index 47eace2d307..138659c93bd 100644 --- a/go.sum +++ b/go.sum @@ -32,6 +32,7 @@ cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2k cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/pubsub v1.9.0 h1:KT1LvuKJG2FMHA4HhOC/QFJ/f6i9kdNlXB4U43prxjg= cloud.google.com/go/pubsub v1.9.0/go.mod h1:G3o6/kJvEMIEAN5urdkaP4be49WQsjNiykBIto9LFtY= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= @@ -406,6 +407,7 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.3/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -473,7 +475,6 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -515,6 +516,7 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 h1:DzZ89McO9/gWPsQXS/FVKAlG02ZjaQ6AlZRBimEYOd0= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -535,6 +537,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -580,7 +584,8 @@ golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6 h1:cdsMqa2nXzqlgs183pHxtvoVwU7CyzaCTAUOg94af4c= golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -655,8 +660,8 @@ golang.org/x/tools v0.0.0-20201202200335-bef1c476418a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201203202102-a1a1cbeaa516/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a h1:wcmQQeIPy0fYbQMsfxwcnzKbuBLMGaHcN0nbzHbIjdo= -golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= +golang.org/x/tools v0.1.1-0.20210504170620-03ebc2c9fca8 h1:rTLms91GhM16y4sUcNGLdel0jJ8jXdQeXuN+7evgYiQ= +golang.org/x/tools v0.1.1-0.20210504170620-03ebc2c9fca8/go.mod h1:sH/Eidr0EddymY8HZSakBo32zU3fG5ovDq874hJLjVg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -763,6 +768,7 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=