├── .github └── workflows │ ├── ci.yml │ └── sbt-dependency-graph.yaml ├── .gitignore ├── .prout.json ├── .scala-steward.conf ├── .tool-versions ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── app.json ├── app ├── configuration │ ├── AppLoader.scala │ ├── ApplicationComponents.scala │ └── ReasonableHttpFilters.scala ├── controllers │ ├── Api.scala │ ├── Application.scala │ ├── Auth.scala │ ├── BaseAppController.scala │ └── RepoAcceptListService.scala ├── lib │ ├── Bot.scala │ ├── CheckpointSnapshot.scala │ ├── Config.scala │ ├── ConfigFinder.scala │ ├── Delayer.scala │ ├── Dogpile.scala │ ├── Droid.scala │ ├── EverythingYouWantToKnowAboutACheckpoint.scala │ ├── FileFinder.scala │ ├── GitChanges.scala │ ├── GithubAppConfig.scala │ ├── PRSnapshot.scala │ ├── PRUpdater.scala │ ├── PullRequestCheckpointsStateChangeSummary.scala │ ├── RepoSnapshot.scala │ ├── RepoUpdater.scala │ ├── RepoUtil.scala │ ├── Responsibility.scala │ ├── SSL.scala │ ├── ScanScheduler.scala │ ├── UpdateReporter.scala │ ├── actions │ │ ├── Actions.scala │ │ ├── Functions.scala │ │ └── Parsers.scala │ ├── gitgithub │ │ ├── LabelMapping.scala │ │ └── StateSnapshot.scala │ ├── labels │ │ ├── CheckpointTestStatus.scala │ │ ├── PullRequestCheckpointStatus.scala │ │ └── PullRequestLabel.scala │ ├── librato │ │ ├── LibratoApiClient.scala │ │ ├── LibratoDeployReporter.scala │ │ └── model │ │ │ └── Librato.scala │ ├── sentry │ │ ├── PRSentryRelease.scala │ │ ├── SentryApiClient.scala │ │ ├── SentryReporter.scala │ │ └── model │ │ │ └── Sentry.scala │ └── slack │ │ ├── DeployReporter.scala │ │ └── package.scala ├── monitoring │ └── SentryLogging.scala └── views │ ├── main.scala.html │ └── userPages │ ├── index.scala.html │ └── repo.scala.html ├── artwork ├── prout-logo.svg ├── prout-pull-request-history-diagram.svg ├── prout-spans-the-pipeline.svg ├── prout-team-write.gif └── prout-web-hook.gif ├── conf ├── application.conf ├── logback.xml └── routes ├── notes.md ├── project ├── build.properties └── plugins.sbt ├── public ├── images │ └── favicon.png └── stylesheets │ └── main.css ├── system.properties └── test ├── FunctionalSpec.scala ├── lib ├── CheckpointSpec.scala ├── ConfigFinderSpec.scala ├── ConfigSpec.scala ├── DogpileSpec.scala ├── GitChangesSpec.scala └── Helpers.scala └── resources ├── feature-branches.top-level-config.git.zip ├── impatient-top-level-config.git.zip ├── logback.xml ├── multi-folder.git.zip ├── multi-project.ignorable-changes.zip ├── multi-project.master-updated-before-feature-merged.git.zip ├── sample.checkpoint.json ├── sample.insecure.checkpoint.json ├── sample.messages.checkpoint.json ├── sample.one.message.checkpoint.json ├── simple-with-messages.git.zip ├── simple.git.zip └── small-feature-branches.git.zip /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.github/workflows/sbt-dependency-graph.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/.github/workflows/sbt-dependency-graph.yaml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/.gitignore -------------------------------------------------------------------------------- /.prout.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/.prout.json -------------------------------------------------------------------------------- /.scala-steward.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/.scala-steward.conf -------------------------------------------------------------------------------- /.tool-versions: -------------------------------------------------------------------------------- 1 | java corretto-21.0.3.9.1 2 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/CONTRIBUTING.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/README.md -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app.json -------------------------------------------------------------------------------- /app/configuration/AppLoader.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/configuration/AppLoader.scala -------------------------------------------------------------------------------- /app/configuration/ApplicationComponents.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/configuration/ApplicationComponents.scala -------------------------------------------------------------------------------- /app/configuration/ReasonableHttpFilters.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/configuration/ReasonableHttpFilters.scala -------------------------------------------------------------------------------- /app/controllers/Api.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/controllers/Api.scala -------------------------------------------------------------------------------- /app/controllers/Application.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/controllers/Application.scala -------------------------------------------------------------------------------- /app/controllers/Auth.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/controllers/Auth.scala -------------------------------------------------------------------------------- /app/controllers/BaseAppController.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/controllers/BaseAppController.scala -------------------------------------------------------------------------------- /app/controllers/RepoAcceptListService.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/controllers/RepoAcceptListService.scala -------------------------------------------------------------------------------- /app/lib/Bot.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/Bot.scala -------------------------------------------------------------------------------- /app/lib/CheckpointSnapshot.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/CheckpointSnapshot.scala -------------------------------------------------------------------------------- /app/lib/Config.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/Config.scala -------------------------------------------------------------------------------- /app/lib/ConfigFinder.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/ConfigFinder.scala -------------------------------------------------------------------------------- /app/lib/Delayer.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/Delayer.scala -------------------------------------------------------------------------------- /app/lib/Dogpile.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/Dogpile.scala -------------------------------------------------------------------------------- /app/lib/Droid.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/Droid.scala -------------------------------------------------------------------------------- /app/lib/EverythingYouWantToKnowAboutACheckpoint.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/EverythingYouWantToKnowAboutACheckpoint.scala -------------------------------------------------------------------------------- /app/lib/FileFinder.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/FileFinder.scala -------------------------------------------------------------------------------- /app/lib/GitChanges.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/GitChanges.scala -------------------------------------------------------------------------------- /app/lib/GithubAppConfig.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/GithubAppConfig.scala -------------------------------------------------------------------------------- /app/lib/PRSnapshot.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/PRSnapshot.scala -------------------------------------------------------------------------------- /app/lib/PRUpdater.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/PRUpdater.scala -------------------------------------------------------------------------------- /app/lib/PullRequestCheckpointsStateChangeSummary.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/PullRequestCheckpointsStateChangeSummary.scala -------------------------------------------------------------------------------- /app/lib/RepoSnapshot.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/RepoSnapshot.scala -------------------------------------------------------------------------------- /app/lib/RepoUpdater.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/RepoUpdater.scala -------------------------------------------------------------------------------- /app/lib/RepoUtil.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/RepoUtil.scala -------------------------------------------------------------------------------- /app/lib/Responsibility.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/Responsibility.scala -------------------------------------------------------------------------------- /app/lib/SSL.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/SSL.scala -------------------------------------------------------------------------------- /app/lib/ScanScheduler.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/ScanScheduler.scala -------------------------------------------------------------------------------- /app/lib/UpdateReporter.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/UpdateReporter.scala -------------------------------------------------------------------------------- /app/lib/actions/Actions.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/actions/Actions.scala -------------------------------------------------------------------------------- /app/lib/actions/Functions.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/actions/Functions.scala -------------------------------------------------------------------------------- /app/lib/actions/Parsers.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/actions/Parsers.scala -------------------------------------------------------------------------------- /app/lib/gitgithub/LabelMapping.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/gitgithub/LabelMapping.scala -------------------------------------------------------------------------------- /app/lib/gitgithub/StateSnapshot.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/gitgithub/StateSnapshot.scala -------------------------------------------------------------------------------- /app/lib/labels/CheckpointTestStatus.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/labels/CheckpointTestStatus.scala -------------------------------------------------------------------------------- /app/lib/labels/PullRequestCheckpointStatus.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/labels/PullRequestCheckpointStatus.scala -------------------------------------------------------------------------------- /app/lib/labels/PullRequestLabel.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/labels/PullRequestLabel.scala -------------------------------------------------------------------------------- /app/lib/librato/LibratoApiClient.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/librato/LibratoApiClient.scala -------------------------------------------------------------------------------- /app/lib/librato/LibratoDeployReporter.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/librato/LibratoDeployReporter.scala -------------------------------------------------------------------------------- /app/lib/librato/model/Librato.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/librato/model/Librato.scala -------------------------------------------------------------------------------- /app/lib/sentry/PRSentryRelease.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/sentry/PRSentryRelease.scala -------------------------------------------------------------------------------- /app/lib/sentry/SentryApiClient.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/sentry/SentryApiClient.scala -------------------------------------------------------------------------------- /app/lib/sentry/SentryReporter.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/sentry/SentryReporter.scala -------------------------------------------------------------------------------- /app/lib/sentry/model/Sentry.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/sentry/model/Sentry.scala -------------------------------------------------------------------------------- /app/lib/slack/DeployReporter.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/slack/DeployReporter.scala -------------------------------------------------------------------------------- /app/lib/slack/package.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/lib/slack/package.scala -------------------------------------------------------------------------------- /app/monitoring/SentryLogging.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/monitoring/SentryLogging.scala -------------------------------------------------------------------------------- /app/views/main.scala.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/views/main.scala.html -------------------------------------------------------------------------------- /app/views/userPages/index.scala.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/views/userPages/index.scala.html -------------------------------------------------------------------------------- /app/views/userPages/repo.scala.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/app/views/userPages/repo.scala.html -------------------------------------------------------------------------------- /artwork/prout-logo.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/artwork/prout-logo.svg -------------------------------------------------------------------------------- /artwork/prout-pull-request-history-diagram.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/artwork/prout-pull-request-history-diagram.svg -------------------------------------------------------------------------------- /artwork/prout-spans-the-pipeline.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/artwork/prout-spans-the-pipeline.svg -------------------------------------------------------------------------------- /artwork/prout-team-write.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/artwork/prout-team-write.gif -------------------------------------------------------------------------------- /artwork/prout-web-hook.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/artwork/prout-web-hook.gif -------------------------------------------------------------------------------- /conf/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/conf/application.conf -------------------------------------------------------------------------------- /conf/logback.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/conf/logback.xml -------------------------------------------------------------------------------- /conf/routes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/conf/routes -------------------------------------------------------------------------------- /notes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/notes.md -------------------------------------------------------------------------------- /project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.11.4 2 | -------------------------------------------------------------------------------- /project/plugins.sbt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/project/plugins.sbt -------------------------------------------------------------------------------- /public/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/public/images/favicon.png -------------------------------------------------------------------------------- /public/stylesheets/main.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/public/stylesheets/main.css -------------------------------------------------------------------------------- /system.properties: -------------------------------------------------------------------------------- 1 | java.runtime.version=21 2 | 3 | -------------------------------------------------------------------------------- /test/FunctionalSpec.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/FunctionalSpec.scala -------------------------------------------------------------------------------- /test/lib/CheckpointSpec.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/lib/CheckpointSpec.scala -------------------------------------------------------------------------------- /test/lib/ConfigFinderSpec.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/lib/ConfigFinderSpec.scala -------------------------------------------------------------------------------- /test/lib/ConfigSpec.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/lib/ConfigSpec.scala -------------------------------------------------------------------------------- /test/lib/DogpileSpec.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/lib/DogpileSpec.scala -------------------------------------------------------------------------------- /test/lib/GitChangesSpec.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/lib/GitChangesSpec.scala -------------------------------------------------------------------------------- /test/lib/Helpers.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/lib/Helpers.scala -------------------------------------------------------------------------------- /test/resources/feature-branches.top-level-config.git.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/resources/feature-branches.top-level-config.git.zip -------------------------------------------------------------------------------- /test/resources/impatient-top-level-config.git.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/resources/impatient-top-level-config.git.zip -------------------------------------------------------------------------------- /test/resources/logback.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/resources/logback.xml -------------------------------------------------------------------------------- /test/resources/multi-folder.git.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/resources/multi-folder.git.zip -------------------------------------------------------------------------------- /test/resources/multi-project.ignorable-changes.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/resources/multi-project.ignorable-changes.zip -------------------------------------------------------------------------------- /test/resources/multi-project.master-updated-before-feature-merged.git.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/resources/multi-project.master-updated-before-feature-merged.git.zip -------------------------------------------------------------------------------- /test/resources/sample.checkpoint.json: -------------------------------------------------------------------------------- 1 | { "url": "https://membership.theguardian.com/", "overdue": "14M" } 2 | -------------------------------------------------------------------------------- /test/resources/sample.insecure.checkpoint.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/resources/sample.insecure.checkpoint.json -------------------------------------------------------------------------------- /test/resources/sample.messages.checkpoint.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/resources/sample.messages.checkpoint.json -------------------------------------------------------------------------------- /test/resources/sample.one.message.checkpoint.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/resources/sample.one.message.checkpoint.json -------------------------------------------------------------------------------- /test/resources/simple-with-messages.git.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/resources/simple-with-messages.git.zip -------------------------------------------------------------------------------- /test/resources/simple.git.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/resources/simple.git.zip -------------------------------------------------------------------------------- /test/resources/small-feature-branches.git.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guardian/prout/HEAD/test/resources/small-feature-branches.git.zip --------------------------------------------------------------------------------