Skip to content

Commit

Permalink
Merge pull request lyraproj#135 from thallgren/lyra-link
Browse files Browse the repository at this point in the history
Add support for lyra link files
  • Loading branch information
markfuller authored Feb 20, 2019
2 parents b291420 + b75fc15 commit 57c7372
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 8 deletions.
7 changes: 5 additions & 2 deletions 3RDPARTY_LICENSES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,11 @@ github.com/lyraproj/lyra/vendor/github.com/golang/protobuf
github.com/lyraproj/lyra/vendor/github.com/golang/snappy BSD 3-clause "New" or "Revised" License (96%)
github.com/lyraproj/lyra/vendor/github.com/google/btree Apache License 2.0
github.com/lyraproj/lyra/vendor/github.com/google/go-cmp/cmp/internal BSD 3-clause "New" or "Revised" License (96%)
github.com/lyraproj/lyra/vendor/github.com/google/go-github/github BSD 3-clause "New" or "Revised" License (96%)
github.com/lyraproj/lyra/vendor/github.com/google/go-querystring/query BSD 3-clause "New" or "Revised" License (96%)
github.com/lyraproj/lyra/vendor/github.com/google/gofuzz Apache License 2.0
github.com/lyraproj/lyra/vendor/github.com/google/uuid BSD 3-clause "New" or "Revised" License (96%)
github.com/lyraproj/lyra/vendor/github.com/googleapis/gax-go BSD 3-clause "New" or "Revised" License (97%)
github.com/lyraproj/lyra/vendor/github.com/googleapis/gax-go/v2 BSD 3-clause "New" or "Revised" License (97%)
github.com/lyraproj/lyra/vendor/github.com/googleapis/gnostic Apache License 2.0
github.com/lyraproj/lyra/vendor/github.com/gophercloud/gophercloud Apache License 2.0 (96%)
github.com/lyraproj/lyra/vendor/github.com/gregjones/httpcache/diskcache MIT License (98%)
Expand All @@ -40,7 +42,7 @@ github.com/lyraproj/lyra/vendor/github.com/hashicorp/go-cleanhttp
github.com/lyraproj/lyra/vendor/github.com/hashicorp/go-getter/helper/url Mozilla Public License 2.0
github.com/lyraproj/lyra/vendor/github.com/hashicorp/go-hclog MIT License
github.com/lyraproj/lyra/vendor/github.com/hashicorp/go-multierror Mozilla Public License 2.0
github.com/lyraproj/lyra/vendor/github.com/hashicorp/go-plugin/internal/proto Mozilla Public License 2.0
github.com/lyraproj/lyra/vendor/github.com/hashicorp/go-plugin/internal/plugin Mozilla Public License 2.0
github.com/lyraproj/lyra/vendor/github.com/hashicorp/go-safetemp Mozilla Public License 2.0
github.com/lyraproj/lyra/vendor/github.com/hashicorp/go-uuid Mozilla Public License 2.0
github.com/lyraproj/lyra/vendor/github.com/hashicorp/go-version Mozilla Public License 2.0
Expand Down Expand Up @@ -99,6 +101,7 @@ github.com/lyraproj/lyra/vendor/github.com/spf13/pflag
github.com/lyraproj/lyra/vendor/github.com/stoewer/go-strcase MIT License
github.com/lyraproj/lyra/vendor/github.com/terraform-providers/terraform-provider-aws/aws Mozilla Public License 2.0
github.com/lyraproj/lyra/vendor/github.com/terraform-providers/terraform-provider-azurerm Mozilla Public License 2.0
github.com/lyraproj/lyra/vendor/github.com/terraform-providers/terraform-provider-github/github Mozilla Public License 2.0
github.com/lyraproj/lyra/vendor/github.com/terraform-providers/terraform-provider-google Mozilla Public License 2.0
github.com/lyraproj/lyra/vendor/github.com/terraform-providers/terraform-provider-kubernetes/kubernetes Mozilla Public License 2.0
github.com/lyraproj/lyra/vendor/github.com/toqueteos/trie MIT License
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ require (
github.com/lyraproj/puppet-evaluator v0.0.0-20190213111014-f445b297391c
github.com/lyraproj/puppet-workflow v0.0.0-20190215162224-286a7c080f50
github.com/lyraproj/semver v0.0.0-20181213164306-02ecea2cd6a2
github.com/lyraproj/servicesdk v0.0.0-20190215155324-03dc27163cc2
github.com/lyraproj/servicesdk v0.0.0-20190220105000-da78ac393e34
github.com/lyraproj/wfe v0.0.0-20190213141324-1ca88d9ec407
github.com/marstr/guid v1.1.0 // indirect
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b
Expand Down
3 changes: 3 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,8 @@ github.com/lyraproj/servicesdk v0.0.0-20190213111125-9b344bb575d1 h1:f5fbA3fPFgQ
github.com/lyraproj/servicesdk v0.0.0-20190213111125-9b344bb575d1/go.mod h1:TszLWROByVHvGy/7kMLJRCjXvDG0oCPu+2cjP6nF+YQ=
github.com/lyraproj/servicesdk v0.0.0-20190215155324-03dc27163cc2 h1:Yb9hHXVPmUFDQU1cRSzarrw205SCYtEEtJBrCS7QytI=
github.com/lyraproj/servicesdk v0.0.0-20190215155324-03dc27163cc2/go.mod h1:TszLWROByVHvGy/7kMLJRCjXvDG0oCPu+2cjP6nF+YQ=
github.com/lyraproj/servicesdk v0.0.0-20190220105000-da78ac393e34 h1:gDqM85RjppOdunfj89nuqdp40LlSaLYMPt9YczRDbNc=
github.com/lyraproj/servicesdk v0.0.0-20190220105000-da78ac393e34/go.mod h1:TszLWROByVHvGy/7kMLJRCjXvDG0oCPu+2cjP6nF+YQ=
github.com/lyraproj/wfe v0.0.0-20190213141324-1ca88d9ec407 h1:fjJbMN7Ik10r2LcC/IEoMZboXttJLfEVDgKxkV3owok=
github.com/lyraproj/wfe v0.0.0-20190213141324-1ca88d9ec407/go.mod h1:LdDYELaYRN0JFCboMQfIS+f6X8iWPPb65XsjaB7UuoE=
github.com/marstr/guid v1.1.0 h1:/M4H/1G4avsieL6BbUwCOBzulmoeKVP5ux/3mQNnbyI=
Expand Down Expand Up @@ -311,6 +313,7 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/moovweb/rubex v0.0.1 h1:ly/bF6+2uxAciT7hvw+Uic5/s9l9SQW62sAJrJoa3f8=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo=
github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM=
Expand Down
55 changes: 50 additions & 5 deletions pkg/loader/loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
hclog "github.com/hashicorp/go-hclog"
"github.com/lyraproj/issue/issue"
"github.com/lyraproj/puppet-evaluator/eval"
"github.com/lyraproj/puppet-evaluator/yaml"
"github.com/lyraproj/servicesdk/grpc"
"github.com/lyraproj/servicesdk/serviceapi"
)
Expand Down Expand Up @@ -120,6 +121,9 @@ func (l *Loader) PreLoad(c eval.Context) {
// Puppet DSL files
l.loadPuppetDSL(c, dir)

// Lyra Links
l.loadLyraLinks(c, dir)

// Loading services based on other transports or dedicated loaders happens here
// e.g. REST, serverless, Typescript ...
})
Expand Down Expand Up @@ -195,7 +199,53 @@ func (s *subService) Identifier(eval.Context) eval.TypedName {
return eval.NewTypedName(eval.NsService, s.def.Identifier().Name())
}

func (l *Loader) loadLyraLinks(c eval.Context, dir string) {
llFiles, err := findFiles(dir, "*.ll")
if err != nil {
l.logger.Error("failed to load Lyra Links", "dir", dir, "err", err)
return
}

for _, lf := range llFiles {
l.logger.Debug("reading Lyra Link", "file", lf)
bts := types.BinaryFromFile(c, lf)
link, ok := yaml.Unmarshal(c, bts.Bytes()).(eval.OrderedMap)
if !ok {
l.logger.Error("Lyra Link did not contain a map", "file", lf, "err", err)
}
exe := ``
if v, ok := link.Get4(`executable`); ok {
if s, ok := v.(eval.StringValue); ok {
exe = s.String()
}
}
if exe == `` {
l.logger.Error("Lyra Link did not contain a valid 'executable' entry", "file", lf, "err", err)
}
exe = os.ExpandEnv(exe)

args := []string{}
if v, ok := link.Get4(`arguments`); ok {
// Accepts array of strings or a string
if a, ok := v.(*types.ArrayValue); ok {
args = make([]string, a.Len())
a.EachWithIndex(func(s eval.Value, i int) { args[i] = os.ExpandEnv(s.String()) })
} else if s, ok := v.(eval.StringValue); ok {
args = []string{os.ExpandEnv(s.String())}
}
}
l.loadLiveMetadataFromPlugin(c, exe, args...)
}
}

func (l *Loader) loadPuppetDSL(c eval.Context, dir string) {
x, ok := eval.Load(c, eval.NewTypedName(eval.NsService, `Puppet`))
if !ok {
l.logger.Error("failed to load Puppet DSL Service plugin")
return
}
ppServer := x.(serviceapi.Service)

l.logger.Debug("reading Puppet DSL and YAML from filesystem", "dir", dir)

ppFiles, err := findFiles(dir, "*.pp")
Expand All @@ -217,11 +267,6 @@ func (l *Loader) loadPuppetDSL(c eval.Context, dir string) {
return
}

x, ok := eval.Load(c, eval.NewTypedName(eval.NsService, `Puppet`))
if !ok {
l.logger.Error("failed to load Puppet DSL Service plugin")
}
ppServer := x.(serviceapi.Service)
for _, f := range allFiles {
l.logger.Debug("loading manifest", "file", f)
def := ppServer.Invoke(c, puppet.ManifestLoaderID, `loadManifest`, types.WrapString(f)).(serviceapi.Definition)
Expand Down
2 changes: 2 additions & 0 deletions plugins/tsw-sample.ll
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
executable: node
arguments: '$HOME/git/tsw-samples/dist/vpc_with_subnet.js'

0 comments on commit 57c7372

Please sign in to comment.