blob: a0fce9c1ee5a241476e2bb465e924b23a1dd14c6 [file] [log] [blame]
// Copyright 2021 The CUE 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.
package vendor
import (
"path"
"tool/exec"
"tool/file"
"tool/http"
"tool/os"
)
// _#modroot is a common helper to get the module root
//
// TODO: use once we have a solution to cuelang.org/issue/704.
// This will then allow us to remove the use of .. below.
_#modroot: exec.Run & {
cmd: "go list -m -f {{.Dir}}"
stdout: string
}
// Until we have the ability to inject contextual information
// we need to pass in GOOS explicitly. Either by environment
// variable (which we get for free when this is used via go generate)
// or via a tag in the case you want to manually run the CUE
// command.
_#goos: os.Getenv & {
GOOS: *"unix" | string @tag(os)
}
// vendorgithubschema vendors a "cue import"-ed version of the JSONSchema that
// defines GitHub workflows into the main module's cue.mod/pkg.
//
// Until we have a resolution for cuelang.org/issue/704 this must be
// run from the internal/ci package. At which point we can switch to using
// _#modroot and move the associated go:generate directive into
// internal/ci alongside this command definition.
//
// This also explains why the ../../ relative path specification below
// appear wrong in the context of the containing directory internal/ci/vendor.
command: vendorgithubschema: {
goos: _#goos
get: http.Get & {
request: body: ""
// Tip link for humans:
// https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/github-workflow.json
url: "https://raw.githubusercontent.com/SchemaStore/schemastore/6fe4707b9d1c5d45cfc8d5b6d56968e65d2bdc38/src/schemas/json/github-workflow.json"
}
convert: exec.Run & {
stdin: get.response.body
cmd: "go run cuelang.org/go/cmd/cue import -f -p json -l #Workflow: jsonschema: - -o -"
stdout: string
}
write: file.Create & {
_path: path.FromSlash("../../cue.mod/pkg/github.com/SchemaStore/schemastore/src/schemas/json/github-workflow.cue", "unix")
filename: path.Join([_path], goos.GOOS)
contents: convert.stdout
}
}