simple check option
This commit is contained in:
		@@ -4,7 +4,8 @@ WORKDIR /tmp/nomad-resource
 | 
			
		||||
COPY . .
 | 
			
		||||
 | 
			
		||||
RUN go build -o dist/out out/main.go && \
 | 
			
		||||
    go build -o dist/in in/main.go
 | 
			
		||||
    go build -o dist/in in/main.go   && \
 | 
			
		||||
    go build -o dist/check check/main.go
 | 
			
		||||
 | 
			
		||||
FROM alpine:edge
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										38
									
								
								check/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								check/main.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"os"
 | 
			
		||||
 | 
			
		||||
	resource "github.com/cioplenu/concourse-nomad-resource"
 | 
			
		||||
	"github.com/cioplenu/concourse-nomad-resource/common"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Request struct {
 | 
			
		||||
	Source  resource.Source  `json:"source"`
 | 
			
		||||
	Version resource.Version `json:"version,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	var request Request
 | 
			
		||||
	err := json.NewDecoder(os.Stdin).Decode(&request)
 | 
			
		||||
	common.Check(err, "Error parsing request")
 | 
			
		||||
 | 
			
		||||
	lastVersion := request.Version.Version
 | 
			
		||||
 | 
			
		||||
	history := common.GetHistory(request.Source)
 | 
			
		||||
	versions := make([]resource.Version, 0)
 | 
			
		||||
 | 
			
		||||
	for _, jobVersion := range history {
 | 
			
		||||
		if lastVersion != 0 && lastVersion > jobVersion.Version {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		versions = append(versions, resource.Version{jobVersion.Version})
 | 
			
		||||
		if lastVersion == 0 {
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	json.NewEncoder(os.Stdout).Encode(versions)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,8 +1,13 @@
 | 
			
		||||
package common
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"os/exec"
 | 
			
		||||
 | 
			
		||||
	resource "github.com/cioplenu/concourse-nomad-resource"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func Check(err error, msg string) {
 | 
			
		||||
@@ -11,3 +16,24 @@ func Check(err error, msg string) {
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetHistory(source resource.Source) []resource.JobVersion {
 | 
			
		||||
	cmd := exec.Command(
 | 
			
		||||
		"nomad",
 | 
			
		||||
		"job",
 | 
			
		||||
		"history",
 | 
			
		||||
		"-json",
 | 
			
		||||
		"-address="+source.URL,
 | 
			
		||||
		"-token="+source.Token,
 | 
			
		||||
		source.Name,
 | 
			
		||||
	)
 | 
			
		||||
	var histResp bytes.Buffer
 | 
			
		||||
	cmd.Stdout = &histResp
 | 
			
		||||
	err := cmd.Run()
 | 
			
		||||
	Check(err, "Error checking versions")
 | 
			
		||||
 | 
			
		||||
	var history []resource.JobVersion
 | 
			
		||||
	json.Unmarshal(histResp.Bytes(), &history)
 | 
			
		||||
 | 
			
		||||
	return history
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								out/main.go
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								out/main.go
									
									
									
									
									
								
							@@ -86,22 +86,7 @@ func main() {
 | 
			
		||||
 | 
			
		||||
	fmt.Fprint(os.Stderr, out.String())
 | 
			
		||||
 | 
			
		||||
	cmd = exec.Command(
 | 
			
		||||
		"nomad",
 | 
			
		||||
		"job",
 | 
			
		||||
		"history",
 | 
			
		||||
		"-json",
 | 
			
		||||
		"-address="+config.Source.URL,
 | 
			
		||||
		"-token="+config.Source.Token,
 | 
			
		||||
		config.Source.Name,
 | 
			
		||||
	)
 | 
			
		||||
	var histResp bytes.Buffer
 | 
			
		||||
	cmd.Stdout = &histResp
 | 
			
		||||
	err = cmd.Run()
 | 
			
		||||
	common.Check(err, "Error checking versions")
 | 
			
		||||
 | 
			
		||||
	var history []resource.JobVersion
 | 
			
		||||
	json.Unmarshal(histResp.Bytes(), &history)
 | 
			
		||||
	history := common.GetHistory(config.Source)
 | 
			
		||||
 | 
			
		||||
	response := Response{
 | 
			
		||||
		Version: resource.Version{
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user