lang: Move the inputs logic into a separate package
This commit is contained in:
@@ -25,6 +25,7 @@ import (
|
|||||||
|
|
||||||
"github.com/purpleidea/mgmt/gapi"
|
"github.com/purpleidea/mgmt/gapi"
|
||||||
"github.com/purpleidea/mgmt/lang/funcs/vars"
|
"github.com/purpleidea/mgmt/lang/funcs/vars"
|
||||||
|
"github.com/purpleidea/mgmt/lang/inputs"
|
||||||
"github.com/purpleidea/mgmt/lang/interfaces"
|
"github.com/purpleidea/mgmt/lang/interfaces"
|
||||||
"github.com/purpleidea/mgmt/lang/unification"
|
"github.com/purpleidea/mgmt/lang/unification"
|
||||||
"github.com/purpleidea/mgmt/pgraph"
|
"github.com/purpleidea/mgmt/pgraph"
|
||||||
@@ -179,7 +180,7 @@ func (obj *GAPI) Cli(cliInfo *gapi.CliInfo) (*gapi.Deploy, error) {
|
|||||||
|
|
||||||
// the fs input here is the local fs we're reading to get the files from
|
// the fs input here is the local fs we're reading to get the files from
|
||||||
// this is different from the fs variable which is our output dest!!!
|
// this is different from the fs variable which is our output dest!!!
|
||||||
output, err := parseInput(input, localFs)
|
output, err := inputs.ParseInput(input, localFs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errwrap.Wrapf(err, "could not activate an input parser")
|
return nil, errwrap.Wrapf(err, "could not activate an input parser")
|
||||||
}
|
}
|
||||||
@@ -652,7 +653,7 @@ func (obj *GAPI) Get(getInfo *gapi.GetInfo) error {
|
|||||||
|
|
||||||
// the fs input here is the local fs we're reading to get the files from
|
// the fs input here is the local fs we're reading to get the files from
|
||||||
// this is different from the fs variable which is our output dest!!!
|
// this is different from the fs variable which is our output dest!!!
|
||||||
output, err := parseInput(input, localFs)
|
output, err := inputs.ParseInput(input, localFs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errwrap.Wrapf(err, "could not activate an input parser")
|
return errwrap.Wrapf(err, "could not activate an input parser")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
package lang
|
package inputs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -67,9 +67,9 @@ type ParsedInput struct {
|
|||||||
Workers []func(engine.Fs) error // copy files here that aren't listed!
|
Workers []func(engine.Fs) error // copy files here that aren't listed!
|
||||||
}
|
}
|
||||||
|
|
||||||
// parseInput runs the list if input parsers to know how to run the lexer,
|
// ParseInput runs the list if input parsers to know how to run the lexer,
|
||||||
// parser, and so on... The fs input is the source filesystem to look in.
|
// parser, and so on... The fs input is the source filesystem to look in.
|
||||||
func parseInput(s string, fs engine.Fs) (*ParsedInput, error) {
|
func ParseInput(s string, fs engine.Fs) (*ParsedInput, error) {
|
||||||
var err error
|
var err error
|
||||||
var output *ParsedInput
|
var output *ParsedInput
|
||||||
activated := false
|
activated := false
|
||||||
@@ -35,6 +35,7 @@ import (
|
|||||||
"github.com/purpleidea/mgmt/etcd"
|
"github.com/purpleidea/mgmt/etcd"
|
||||||
"github.com/purpleidea/mgmt/lang/funcs"
|
"github.com/purpleidea/mgmt/lang/funcs"
|
||||||
"github.com/purpleidea/mgmt/lang/funcs/vars"
|
"github.com/purpleidea/mgmt/lang/funcs/vars"
|
||||||
|
"github.com/purpleidea/mgmt/lang/inputs"
|
||||||
"github.com/purpleidea/mgmt/lang/interfaces"
|
"github.com/purpleidea/mgmt/lang/interfaces"
|
||||||
"github.com/purpleidea/mgmt/lang/interpret"
|
"github.com/purpleidea/mgmt/lang/interpret"
|
||||||
"github.com/purpleidea/mgmt/lang/unification"
|
"github.com/purpleidea/mgmt/lang/unification"
|
||||||
@@ -753,10 +754,10 @@ func TestAstFunc1(t *testing.T) {
|
|||||||
input := "/"
|
input := "/"
|
||||||
logf("input: %s", input)
|
logf("input: %s", input)
|
||||||
|
|
||||||
output, err := parseInput(input, fs) // raw code can be passed in
|
output, err := inputs.ParseInput(input, fs) // raw code can be passed in
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("test #%d: FAIL", index)
|
t.Errorf("test #%d: FAIL", index)
|
||||||
t.Errorf("test #%d: parseInput failed: %+v", index, err)
|
t.Errorf("test #%d: ParseInput failed: %+v", index, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for _, fn := range output.Workers {
|
for _, fn := range output.Workers {
|
||||||
@@ -1249,10 +1250,10 @@ func TestAstFunc2(t *testing.T) {
|
|||||||
input := "/"
|
input := "/"
|
||||||
logf("input: %s", input)
|
logf("input: %s", input)
|
||||||
|
|
||||||
output, err := parseInput(input, fs) // raw code can be passed in
|
output, err := inputs.ParseInput(input, fs) // raw code can be passed in
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("test #%d: FAIL", index)
|
t.Errorf("test #%d: FAIL", index)
|
||||||
t.Errorf("test #%d: parseInput failed: %+v", index, err)
|
t.Errorf("test #%d: ParseInput failed: %+v", index, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for _, fn := range output.Workers {
|
for _, fn := range output.Workers {
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import (
|
|||||||
"github.com/purpleidea/mgmt/lang/funcs"
|
"github.com/purpleidea/mgmt/lang/funcs"
|
||||||
_ "github.com/purpleidea/mgmt/lang/funcs/core" // import so the funcs register
|
_ "github.com/purpleidea/mgmt/lang/funcs/core" // import so the funcs register
|
||||||
"github.com/purpleidea/mgmt/lang/funcs/vars"
|
"github.com/purpleidea/mgmt/lang/funcs/vars"
|
||||||
|
"github.com/purpleidea/mgmt/lang/inputs"
|
||||||
"github.com/purpleidea/mgmt/lang/interfaces"
|
"github.com/purpleidea/mgmt/lang/interfaces"
|
||||||
"github.com/purpleidea/mgmt/lang/interpret"
|
"github.com/purpleidea/mgmt/lang/interpret"
|
||||||
"github.com/purpleidea/mgmt/lang/unification"
|
"github.com/purpleidea/mgmt/lang/unification"
|
||||||
@@ -99,13 +100,13 @@ func (obj *Lang) Init() error {
|
|||||||
// we used to support stdin passthrough, but we we got rid of it for now
|
// we used to support stdin passthrough, but we we got rid of it for now
|
||||||
// the fs input here is the local fs we're reading to get the files from
|
// the fs input here is the local fs we're reading to get the files from
|
||||||
// which is usually etcdFs.
|
// which is usually etcdFs.
|
||||||
output, err := parseInput(obj.Input, obj.Fs)
|
output, err := inputs.ParseInput(obj.Input, obj.Fs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errwrap.Wrapf(err, "could not activate an input parser")
|
return errwrap.Wrapf(err, "could not activate an input parser")
|
||||||
}
|
}
|
||||||
if len(output.Workers) > 0 {
|
if len(output.Workers) > 0 {
|
||||||
// either programming error, or someone hacked in something here
|
// either programming error, or someone hacked in something here
|
||||||
// by the time *this* parseInput runs, we should be standardized
|
// by the time *this* ParseInput runs, we should be standardized
|
||||||
return fmt.Errorf("input contained file system workers")
|
return fmt.Errorf("input contained file system workers")
|
||||||
}
|
}
|
||||||
reader := bytes.NewReader(output.Main)
|
reader := bytes.NewReader(output.Main)
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import (
|
|||||||
"github.com/purpleidea/mgmt/engine"
|
"github.com/purpleidea/mgmt/engine"
|
||||||
"github.com/purpleidea/mgmt/engine/resources"
|
"github.com/purpleidea/mgmt/engine/resources"
|
||||||
_ "github.com/purpleidea/mgmt/lang/funcs/core" // import so the funcs register
|
_ "github.com/purpleidea/mgmt/lang/funcs/core" // import so the funcs register
|
||||||
|
"github.com/purpleidea/mgmt/lang/inputs"
|
||||||
"github.com/purpleidea/mgmt/lang/interfaces"
|
"github.com/purpleidea/mgmt/lang/interfaces"
|
||||||
"github.com/purpleidea/mgmt/pgraph"
|
"github.com/purpleidea/mgmt/pgraph"
|
||||||
"github.com/purpleidea/mgmt/util"
|
"github.com/purpleidea/mgmt/util"
|
||||||
@@ -97,9 +98,9 @@ func runInterpret(t *testing.T, code string) (*pgraph.Graph, error) {
|
|||||||
afs := &afero.Afero{Fs: mmFs} // wrap so that we're implementing ioutil
|
afs := &afero.Afero{Fs: mmFs} // wrap so that we're implementing ioutil
|
||||||
fs := &util.Fs{Afero: afs}
|
fs := &util.Fs{Afero: afs}
|
||||||
|
|
||||||
output, err := parseInput(code, fs) // raw code can be passed in
|
output, err := inputs.ParseInput(code, fs) // raw code can be passed in
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errwrap.Wrapf(err, "parseInput failed")
|
return nil, errwrap.Wrapf(err, "ParseInput failed")
|
||||||
}
|
}
|
||||||
for _, fn := range output.Workers {
|
for _, fn := range output.Workers {
|
||||||
if err := fn(fs); err != nil {
|
if err := fn(fs); err != nil {
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import (
|
|||||||
"github.com/purpleidea/mgmt/lang/funcs"
|
"github.com/purpleidea/mgmt/lang/funcs"
|
||||||
"github.com/purpleidea/mgmt/lang/funcs/bindata"
|
"github.com/purpleidea/mgmt/lang/funcs/bindata"
|
||||||
"github.com/purpleidea/mgmt/lang/funcs/structs"
|
"github.com/purpleidea/mgmt/lang/funcs/structs"
|
||||||
|
"github.com/purpleidea/mgmt/lang/inputs"
|
||||||
"github.com/purpleidea/mgmt/lang/interfaces"
|
"github.com/purpleidea/mgmt/lang/interfaces"
|
||||||
"github.com/purpleidea/mgmt/lang/types"
|
"github.com/purpleidea/mgmt/lang/types"
|
||||||
langutil "github.com/purpleidea/mgmt/lang/util"
|
langutil "github.com/purpleidea/mgmt/lang/util"
|
||||||
@@ -3207,7 +3208,7 @@ func (obj *StmtProg) importSystemScope(name string) (*interfaces.Scope, error) {
|
|||||||
// importScopeWithInputs returns a local or remote scope from an inputs string.
|
// importScopeWithInputs returns a local or remote scope from an inputs string.
|
||||||
// The inputs string is the common frontend for a lot of our parsing decisions.
|
// The inputs string is the common frontend for a lot of our parsing decisions.
|
||||||
func (obj *StmtProg) importScopeWithInputs(s string, scope *interfaces.Scope, parentVertex *pgraph.SelfVertex) (*interfaces.Scope, error) {
|
func (obj *StmtProg) importScopeWithInputs(s string, scope *interfaces.Scope, parentVertex *pgraph.SelfVertex) (*interfaces.Scope, error) {
|
||||||
output, err := parseInput(s, obj.data.Fs)
|
output, err := inputs.ParseInput(s, obj.data.Fs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errwrap.Wrapf(err, "could not activate an input parser")
|
return nil, errwrap.Wrapf(err, "could not activate an input parser")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user