1
1
Fork 0
mirror of https://github.com/mcuadros/ascode synced 2024-05-09 00:56:14 +02:00

*: comments review and starlib version

This commit is contained in:
Máximo Cuadros 2020-03-30 00:41:24 +02:00
parent 151246e2f8
commit 3ac614c86c
No known key found for this signature in database
GPG Key ID: 17A5DFEDC735AE4B
9 changed files with 104 additions and 77 deletions

View File

@ -37,6 +37,7 @@ GO_LDFLAGS_CMD = go run _scripts/goldflags.go
GO_LDFLAGS_PACKAGE = cmd
GO_LDFLAGS_PACKAGES = \
starlarkVersion=go.starlark.net \
starlibVersion=github.com/qri-io/starlib \
terraformVersion=github.com/hashicorp/terraform
# Site

View File

@ -1,5 +1,8 @@
package cmd
import "github.com/jessevdk/go-flags"
// Command descriptions used in the flags.Parser.AddCommand.
const (
REPLCmdShortDescription = "Run as interactive shell."
REPLCmdLongDescription = REPLCmdShortDescription + "\n\n" +
@ -7,13 +10,17 @@ const (
"command."
)
// REPLCmd implements the command `repl`.
type REPLCmd struct {
commonCmd
}
// Execute honors the flags.Commander interface.
func (c *REPLCmd) Execute(args []string) error {
c.init()
c.runtime.REPL()
return nil
}
var _ flags.Commander = &REPLCmd{}

View File

@ -6,9 +6,11 @@ import (
"os"
"github.com/hashicorp/hcl2/hclwrite"
"github.com/jessevdk/go-flags"
"go.starlark.net/starlark"
)
// Command descriptions used in the flags.Parser.AddCommand.
const (
RunCmdShortDescription = "Run parses, resolves, and executes a Starlark file."
RunCmdLongDescription = RunCmdShortDescription + "\n\n" +
@ -20,6 +22,7 @@ const (
"and plan commands.\n"
)
// RunCmd implements the command `run`.
type RunCmd struct {
commonCmd
@ -30,6 +33,7 @@ type RunCmd struct {
} `positional-args:"true" required:"1"`
}
// Execute honors the flags.Commander interface.
func (c *RunCmd) Execute(args []string) error {
c.init()
@ -65,3 +69,5 @@ func (c *RunCmd) dumpToHCL(ctx starlark.StringDict) error {
return ioutil.WriteFile(c.ToHCL, f.Bytes(), 0644)
}
var _ flags.Commander = &RunCmd{}

View File

@ -3,8 +3,11 @@ package cmd
import (
"fmt"
"runtime"
"github.com/jessevdk/go-flags"
)
// Command descriptions used in the flags.Parser.AddCommand.
const (
VersionCmdShortDescription = "Version prints information about this binary."
VersionCmdLongDescription = VersionCmdShortDescription + "\n\n" +
@ -12,14 +15,19 @@ const (
"date but also versions from the Go runtime and other dependencies."
)
var version string
var commit string
var build string
var terraformVersion string
var starlarkVersion string
var (
version string
commit string
build string
terraformVersion string
starlarkVersion string
starlibVersion string
)
// VersionCmd implements the command `version`.
type VersionCmd struct{}
// Execute honors the flags.Commander interface.
func (c *VersionCmd) Execute(args []string) error {
fmt.Printf("Go Version: %s\n", runtime.Version())
fmt.Printf("AsCode Version: %s\n", version)
@ -27,6 +35,9 @@ func (c *VersionCmd) Execute(args []string) error {
fmt.Printf("AsCode Build Date: %s\n", build)
fmt.Printf("Terraform Version: %s\n", terraformVersion)
fmt.Printf("Starlark Version: %s\n", starlarkVersion)
fmt.Printf("Starlib Version: %s\n", starlibVersion)
return nil
}
var _ flags.Commander = &VersionCmd{}

View File

@ -22,9 +22,8 @@ const (
// in starlark's load() function, eg: load('docker', 'docker')
ModuleName = "docker"
ImageFuncName = "image"
latestTag = "lastest"
imageFuncName = "image"
latestTag = "lastest"
)
var (
@ -44,7 +43,7 @@ func LoadModule() (starlark.StringDict, error) {
"docker": &starlarkstruct.Module{
Name: "docker",
Members: starlark.StringDict{
ImageFuncName: starlark.NewBuiltin(ImageFuncName, Image),
imageFuncName: starlark.NewBuiltin(imageFuncName, Image),
},
},
}
@ -104,7 +103,7 @@ func Image(
) (starlark.Value, error) {
var image, constraint string
err := starlark.UnpackArgs(ImageFuncName, args, kwargs, "image", &image, "constraint", &constraint)
err := starlark.UnpackArgs(imageFuncName, args, kwargs, "image", &image, "constraint", &constraint)
if err != nil {
return nil, err
}

View File

@ -1,4 +1,4 @@
package filepath
package filepath
import (
"path/filepath"
@ -13,16 +13,16 @@ const (
// in starlark's load() function, eg: load('io/ioutil', 'json')
ModuleName = "path/filepath"
SeparatorVarName = "separator"
AbsFuncName = "abs"
BaseFuncName = "base"
CleanFuncName = "clean"
DirFuncName = "dir"
ExtFuncName = "ext"
GlobFuncName = "glob"
IsAbsFuncName = "is_abs"
JoinFuncName = "join"
RelFuncName = "rel"
separatorVarName = "separator"
absFuncName = "abs"
baseFuncName = "base"
cleanFuncName = "clean"
dirFuncName = "dir"
extFuncName = "ext"
globFuncName = "glob"
isAbsFuncName = "is_abs"
joinFuncName = "join"
relFuncName = "rel"
)
var (
@ -43,16 +43,16 @@ func LoadModule() (starlark.StringDict, error) {
"filepath": &starlarkstruct.Module{
Name: "filepath",
Members: starlark.StringDict{
SeparatorVarName: starlark.String(string(filepath.Separator)),
GlobFuncName: starlark.NewBuiltin(GlobFuncName, Glob),
AbsFuncName: starlark.NewBuiltin(AbsFuncName, Abs),
BaseFuncName: starlark.NewBuiltin(BaseFuncName, Base),
CleanFuncName: starlark.NewBuiltin(CleanFuncName, Clean),
DirFuncName: starlark.NewBuiltin(DirFuncName, Dir),
ExtFuncName: starlark.NewBuiltin(ExtFuncName, Ext),
IsAbsFuncName: starlark.NewBuiltin(IsAbsFuncName, IsAbs),
JoinFuncName: starlark.NewBuiltin(JoinFuncName, Join),
RelFuncName: starlark.NewBuiltin(RelFuncName, Rel),
separatorVarName: starlark.String(string(filepath.Separator)),
globFuncName: starlark.NewBuiltin(globFuncName, Glob),
absFuncName: starlark.NewBuiltin(absFuncName, Abs),
baseFuncName: starlark.NewBuiltin(baseFuncName, Base),
cleanFuncName: starlark.NewBuiltin(cleanFuncName, Clean),
dirFuncName: starlark.NewBuiltin(dirFuncName, Dir),
extFuncName: starlark.NewBuiltin(extFuncName, Ext),
isAbsFuncName: starlark.NewBuiltin(isAbsFuncName, IsAbs),
joinFuncName: starlark.NewBuiltin(joinFuncName, Join),
relFuncName: starlark.NewBuiltin(relFuncName, Rel),
},
},
}
@ -75,7 +75,7 @@ func LoadModule() (starlark.StringDict, error) {
func Glob(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var pattern string
err := starlark.UnpackArgs(GlobFuncName, args, kwargs, "pattern", &pattern)
err := starlark.UnpackArgs(globFuncName, args, kwargs, "pattern", &pattern)
if err != nil {
return nil, err
}
@ -109,7 +109,7 @@ func Glob(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwa
func Abs(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var path string
err := starlark.UnpackArgs(AbsFuncName, args, kwargs, "path", &path)
err := starlark.UnpackArgs(absFuncName, args, kwargs, "path", &path)
if err != nil {
return nil, err
}
@ -139,7 +139,7 @@ func Abs(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwar
func Base(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var path string
err := starlark.UnpackArgs(BaseFuncName, args, kwargs, "path", &path)
err := starlark.UnpackArgs(baseFuncName, args, kwargs, "path", &path)
if err != nil {
return nil, err
}
@ -160,7 +160,7 @@ func Base(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwa
func Clean(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var path string
err := starlark.UnpackArgs(CleanFuncName, args, kwargs, "path", &path)
err := starlark.UnpackArgs(cleanFuncName, args, kwargs, "path", &path)
if err != nil {
return nil, err
}
@ -185,7 +185,7 @@ func Clean(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kw
func Dir(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var path string
err := starlark.UnpackArgs(DirFuncName, args, kwargs, "path", &path)
err := starlark.UnpackArgs(dirFuncName, args, kwargs, "path", &path)
if err != nil {
return nil, err
}
@ -209,7 +209,7 @@ func Dir(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwar
func Ext(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var path string
err := starlark.UnpackArgs(ExtFuncName, args, kwargs, "path", &path)
err := starlark.UnpackArgs(extFuncName, args, kwargs, "path", &path)
if err != nil {
return nil, err
}
@ -229,7 +229,7 @@ func Ext(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwar
func IsAbs(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var path string
err := starlark.UnpackArgs(IsAbsFuncName, args, kwargs, "path", &path)
err := starlark.UnpackArgs(isAbsFuncName, args, kwargs, "path", &path)
if err != nil {
return nil, err
}
@ -253,7 +253,7 @@ func IsAbs(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kw
func Join(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var elements *starlark.List
err := starlark.UnpackArgs(JoinFuncName, args, kwargs, "elements", &elements)
err := starlark.UnpackArgs(joinFuncName, args, kwargs, "elements", &elements)
if err != nil {
return nil, err
}
@ -287,7 +287,7 @@ func Join(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwa
func Rel(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var basepath, targpath string
err := starlark.UnpackArgs(RelFuncName, args, kwargs, "basepath", &basepath, "targpath", &targpath)
err := starlark.UnpackArgs(relFuncName, args, kwargs, "basepath", &basepath, "targpath", &targpath)
if err != nil {
return nil, err
}

View File

@ -14,18 +14,18 @@ const (
// in starlark's load() function, eg: load('io/ioutil', 'json')
ModuleName = "os"
GetwdFuncName = "getwd"
ChdirFuncName = "chdir"
GetenvFuncName = "getenv"
SetenvFuncName = "setenv"
WriteFileFuncName = "write_file"
ReadFileFuncName = "read_file"
MkdirFuncName = "mkdir"
MkdirAllFuncName = "mkdir_all"
RemoveFuncName = "remove"
RemoveAllFuncName = "remove_all"
RenameFuncName = "rename"
TempDirFuncName = "temp_dir"
getwdFuncName = "getwd"
chdirFuncName = "chdir"
getenvFuncName = "getenv"
setenvFuncName = "setenv"
writeFileFuncName = "write_file"
readFileFuncName = "read_file"
mkdirFuncName = "mkdir"
mkdirAllFuncName = "mkdir_all"
removeFuncName = "remove"
removeAllFuncName = "remove_all"
renameFuncName = "rename"
tempDirFuncName = "temp_dir"
)
var (
@ -45,18 +45,18 @@ func LoadModule() (starlark.StringDict, error) {
"os": &starlarkstruct.Module{
Name: "os",
Members: starlark.StringDict{
ChdirFuncName: starlark.NewBuiltin(ChdirFuncName, Chdir),
GetwdFuncName: starlark.NewBuiltin(GetwdFuncName, Getwd),
SetenvFuncName: starlark.NewBuiltin(SetenvFuncName, Setenv),
GetenvFuncName: starlark.NewBuiltin(GetenvFuncName, Getenv),
WriteFileFuncName: starlark.NewBuiltin(WriteFileFuncName, WriteFile),
ReadFileFuncName: starlark.NewBuiltin(ReadFileFuncName, ReadFile),
MkdirFuncName: starlark.NewBuiltin(MkdirFuncName, Mkdir),
MkdirAllFuncName: starlark.NewBuiltin(MkdirAllFuncName, MkdirAll),
RemoveFuncName: starlark.NewBuiltin(MkdirFuncName, Remove),
RemoveAllFuncName: starlark.NewBuiltin(MkdirFuncName, RemoveAll),
RenameFuncName: starlark.NewBuiltin(RenameFuncName, Rename),
TempDirFuncName: starlark.NewBuiltin(TempDirFuncName, TempDir),
chdirFuncName: starlark.NewBuiltin(chdirFuncName, Chdir),
getwdFuncName: starlark.NewBuiltin(getwdFuncName, Getwd),
setenvFuncName: starlark.NewBuiltin(setenvFuncName, Setenv),
getenvFuncName: starlark.NewBuiltin(getenvFuncName, Getenv),
writeFileFuncName: starlark.NewBuiltin(writeFileFuncName, WriteFile),
readFileFuncName: starlark.NewBuiltin(readFileFuncName, ReadFile),
mkdirFuncName: starlark.NewBuiltin(mkdirFuncName, Mkdir),
mkdirAllFuncName: starlark.NewBuiltin(mkdirAllFuncName, MkdirAll),
removeFuncName: starlark.NewBuiltin(mkdirFuncName, Remove),
removeAllFuncName: starlark.NewBuiltin(mkdirFuncName, RemoveAll),
renameFuncName: starlark.NewBuiltin(renameFuncName, Rename),
tempDirFuncName: starlark.NewBuiltin(tempDirFuncName, TempDir),
},
},
}
@ -77,7 +77,7 @@ func LoadModule() (starlark.StringDict, error) {
func Chdir(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var dir string
err := starlark.UnpackArgs(ChdirFuncName, args, kwargs, "dir", &dir)
err := starlark.UnpackArgs(chdirFuncName, args, kwargs, "dir", &dir)
if err != nil {
return nil, err
}
@ -113,7 +113,7 @@ func Setenv(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, k
value string
)
err := starlark.UnpackArgs(SetenvFuncName, args, kwargs, "key", &key, "value", &value)
err := starlark.UnpackArgs(setenvFuncName, args, kwargs, "key", &key, "value", &value)
if err != nil {
return nil, err
}
@ -136,7 +136,7 @@ func Getenv(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, k
def string
)
err := starlark.UnpackArgs(GetenvFuncName, args, kwargs, "key", &key, "default?", &def)
err := starlark.UnpackArgs(getenvFuncName, args, kwargs, "key", &key, "default?", &def)
if err != nil {
return nil, err
}
@ -171,7 +171,7 @@ func WriteFile(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple
perms = 0644
)
err := starlark.UnpackArgs(WriteFileFuncName, args, kwargs, "filename", &filename, "content", &content, "perms?", &perms)
err := starlark.UnpackArgs(writeFileFuncName, args, kwargs, "filename", &filename, "content", &content, "perms?", &perms)
if err != nil {
return nil, err
}
@ -195,7 +195,7 @@ func WriteFile(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple
func ReadFile(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var filename string
err := starlark.UnpackArgs(ReadFileFuncName, args, kwargs, "filename", &filename)
err := starlark.UnpackArgs(readFileFuncName, args, kwargs, "filename", &filename)
if err != nil {
return nil, err
}
@ -225,7 +225,7 @@ func Mkdir(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kw
perms = 0777
)
err := starlark.UnpackArgs(MkdirFuncName, args, kwargs, "name", &name, "perms?", &perms)
err := starlark.UnpackArgs(mkdirFuncName, args, kwargs, "name", &name, "perms?", &perms)
if err != nil {
return nil, err
}
@ -250,7 +250,7 @@ func MkdirAll(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple,
perms = 0777
)
err := starlark.UnpackArgs(MkdirAllFuncName, args, kwargs, "path", &path, "perms?", &perms)
err := starlark.UnpackArgs(mkdirAllFuncName, args, kwargs, "path", &path, "perms?", &perms)
if err != nil {
return nil, err
}
@ -270,7 +270,7 @@ func MkdirAll(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple,
func Remove(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var name string
err := starlark.UnpackArgs(RemoveFuncName, args, kwargs, "name", &name)
err := starlark.UnpackArgs(removeFuncName, args, kwargs, "name", &name)
if err != nil {
return nil, err
}
@ -291,7 +291,7 @@ func Remove(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, k
func RemoveAll(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var path string
err := starlark.UnpackArgs(RemoveAllFuncName, args, kwargs, "path", &path)
err := starlark.UnpackArgs(removeAllFuncName, args, kwargs, "path", &path)
if err != nil {
return nil, err
}
@ -318,7 +318,7 @@ func Rename(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, k
newpath string
)
err := starlark.UnpackArgs(RenameFuncName, args, kwargs, "oldpath", &oldpath, "newpath", &newpath)
err := starlark.UnpackArgs(renameFuncName, args, kwargs, "oldpath", &oldpath, "newpath", &newpath)
if err != nil {
return nil, err
}

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Package starlarktest defines utilities for testing Starlark programs.
// Package test defines utilities for testing Starlark programs.
//
// Clients can call LoadAssertModule to load a module that defines
// several functions useful for testing. See assert.star for its
@ -61,7 +61,7 @@ var (
func LoadAssertModule() (starlark.StringDict, error) {
once.Do(func() {
predeclared := starlark.StringDict{
"error": starlark.NewBuiltin("error", error_),
"error": starlark.NewBuiltin("error", errorFn),
"catch": starlark.NewBuiltin("catch", catch),
"matches": starlark.NewBuiltin("matches", matches),
"module": starlark.NewBuiltin("module", starlarkstruct.MakeModule),
@ -101,7 +101,7 @@ func matches(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple,
}
// error(x) reports an error to the Go test framework.
func error_(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
func errorFn(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
if len(args) != 1 {
return nil, fmt.Errorf("error: got %d arguments, want 1", len(args))
}

View File

@ -46,6 +46,7 @@ var _ starlark.Indexable = &Attribute{}
var _ starlark.Comparable = &Attribute{}
// NewAttribute returns a new Attribute for a given value or block of a Resource.
// The path is calculated traversing the parents of the given Resource.
func NewAttribute(r *Resource, t cty.Type, name string) *Attribute {
var parts []string
var path string
@ -80,6 +81,7 @@ func NewAttribute(r *Resource, t cty.Type, name string) *Attribute {
return NewAttributeWithPath(r, t, name, path+"."+name)
}
// NewAttributeWithPath returns a new Attribute for a given value or block of a Resource.
func NewAttributeWithPath(r *Resource, t cty.Type, name, path string) *Attribute {
return &Attribute{
r: r,
@ -95,6 +97,7 @@ func (c *Attribute) Type() string {
return fmt.Sprintf("Attribute<%s>", MustTypeFromCty(c.t).Starlark())
}
// InnerType returns the inner Type represented by this Attribute.
func (c *Attribute) InnerType() *Type {
t, _ := NewTypeFromCty(c.t)
return t