internal/filetypes: package for interpreting command line args
The idea is that the build.File type will be added
to the build.Instance type, replacing the current
file specs. It will be populated by the load package.
The command line tool can subsequently use this
package to determine settings on how to interpret
build.File. It is a separate internal package so that
the API can be shared by load and cmd.
Issue #280
Issue #254
Issue #183
Issue #130
Issue #116
Change-Id: I47f2391945113fe664f0ec33b0048be70326edb5
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/4946
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
Reviewed-by: Daniel Martà <mvdan@mvdan.cc>
diff --git a/internal/filetypes/gen.go b/internal/filetypes/gen.go
new file mode 100644
index 0000000..f0b9f03
--- /dev/null
+++ b/internal/filetypes/gen.go
@@ -0,0 +1,52 @@
+// Copyright 2020 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.
+
+// +build ignore
+
+package main
+
+import (
+ "io/ioutil"
+ "log"
+ "os"
+
+ "cuelang.org/go/cue"
+ "cuelang.org/go/cue/load"
+ "cuelang.org/go/encoding/gocode"
+)
+
+func main() {
+ cwd, err := os.Getwd()
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ inst := cue.Build(load.Instances([]string{"types.cue"}, &load.Config{
+ Dir: cwd,
+ ModuleRoot: cwd,
+ Module: "cuelang.org/go/cue/build",
+ }))[0]
+ if inst.Err != nil {
+ log.Fatal(inst.Err)
+ }
+
+ b, err := gocode.Generate(".", inst, &gocode.Config{})
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ if err := ioutil.WriteFile("types.go", b, 0644); err != nil {
+ log.Fatal(err)
+ }
+}