// Copyright 2017 HootSuite Media Inc. // // 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. // Modified hereafter by contributors to runatlantis/atlantis. package server import ( "html/template" "io" "time" ) //go:generate pegomock generate -m --use-experimental-model-gen --package mocks -o mocks/mock_template_writer.go TemplateWriter // TemplateWriter is an interface over html/template that's used to enable // mocking. type TemplateWriter interface { // Execute applies a parsed template to the specified data object, // writing the output to wr. Execute(wr io.Writer, data interface{}) error } // LockIndexData holds the fields needed to display the index view for locks. type LockIndexData struct { LockPath string RepoFullName string PullNum int Time time.Time } // IndexData holds the data for rendering the index page type IndexData struct { Locks []LockIndexData AtlantisVersion string // CleanedBasePath is the path Atlantis is accessible at externally. If // not using a path-based proxy, this will be an empty string. Never ends // in a '/' (hence "cleaned"). CleanedBasePath string } var indexTemplate = template.Must(template.New("index.html.tmpl").Parse(` atlantis

atlantis

Plan discarded and unlocked!


Locks

{{ if .Locks }} {{ $basePath := .CleanedBasePath }} {{ range .Locks }}
{{.RepoFullName}} - #{{.PullNum}}
Locked
{{.Time}}
{{ end }} {{ else }}

No locks found.

{{ end }}
`)) // LockDetailData holds the fields needed to display the lock detail view. type LockDetailData struct { LockKeyEncoded string LockKey string RepoOwner string RepoName string PullRequestLink string LockedBy string Workspace string Time time.Time AtlantisVersion string // CleanedBasePath is the path Atlantis is accessible at externally. If // not using a path-based proxy, this will be an empty string. Never ends // in a '/' (hence "cleaned"). CleanedBasePath string } var lockTemplate = template.Must(template.New("lock.html.tmpl").Parse(` atlantis

atlantis

{{.LockKey}} Locked


Repo Owner: {{.RepoOwner}}
Repo Name: {{.RepoName}}
Pull Request Link: {{.PullRequestLink}}
Locked By: {{.LockedBy}}
Workspace: {{.Workspace}}

`))