pkg/tool: generate package documentation
Fixes #39
Change-Id: I3acc6bd67a8012dd8a33819d153ee5c97342faa5
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/1926
Reviewed-by: Marcel van Lohuizen <mpvl@google.com>
diff --git a/pkg/tool/file/doc.go b/pkg/tool/file/doc.go
new file mode 100644
index 0000000..e52615f
--- /dev/null
+++ b/pkg/tool/file/doc.go
@@ -0,0 +1,55 @@
+// Code generated by cue get go. DO NOT EDIT.
+
+// Package file provides file operations for cue tasks.
+//
+// These are the supported tasks:
+//
+// // Read reads the contents of a file.
+// Read: {
+// kind: "tool/file.Read"
+//
+// // filename names the file to read.
+// filename: !=""
+//
+// // contents is the read contents. If the contents are constraint to bytes
+// // (the default), the file is read as is. If it is constraint to a string,
+// // the contents are checked to be valid UTF-8.
+// contents: *bytes | string
+// }
+//
+// // Append writes contents to the given file.
+// Append: {
+// kind: "tool/file.Append"
+//
+// // filename names the file to append.
+// filename: !=""
+//
+// // permissions defines the permissions to use if the file does not yet exist.
+// permissions: int | *0o644
+//
+// // contents specifies the bytes to be written.
+// contents: bytes | string
+// }
+//
+// // Create writes contents to the given file.
+// Create: {
+// kind: "tool/file.Create"
+//
+// // filename names the file to write.
+// filename: !=""
+//
+// // permissions defines the permissions to use if the file does not yet exist.
+// permissions: int | *0o644
+//
+// // contents specifies the bytes to be written.
+// contents: bytes | string
+// }
+//
+// Glob: {
+// kind: "tool/file.Glob"
+//
+// glob: !=""
+// files: [...string]
+// }
+//
+package file
diff --git a/pkg/tool/file/file.go b/pkg/tool/file/file.go
index e5673cc..29bf6d9 100644
--- a/pkg/tool/file/file.go
+++ b/pkg/tool/file/file.go
@@ -12,9 +12,10 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-// Package file provides file operations for cue tasks.
package file
+//go:generate go run gen.go
+
import (
"io/ioutil"
"os"
diff --git a/pkg/tool/file/gen.go b/pkg/tool/file/gen.go
new file mode 100644
index 0000000..a67f796
--- /dev/null
+++ b/pkg/tool/file/gen.go
@@ -0,0 +1,46 @@
+// Copyright 2019 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
+
+// TODO: remove when we have a cuedoc server. Until then,
+// piggyback on godoc.org.
+
+import (
+ "bytes"
+ "fmt"
+ "io/ioutil"
+ "os"
+)
+
+const msg = `// Code generated by cue get go. DO NOT EDIT.
+
+// Package file provides file operations for cue tasks.
+//
+// These are the supported tasks:
+// %s
+package file
+`
+
+func main() {
+ f, _ := os.Create("doc.go")
+ defer f.Close()
+ b, _ := ioutil.ReadFile("file.cue")
+ i := bytes.Index(b, []byte("package file"))
+ b = b[i+len("package file")+1:]
+ b = bytes.ReplaceAll(b, []byte("\n"), []byte("\n// "))
+ fmt.Fprintf(f, msg, string(b))
+}