本文整理匯總了Golang中github.com/eris-ltd/eris-cli/definitions.Contracts類的典型用法代碼示例。如果您正苦於以下問題:Golang Contracts類的具體用法?Golang Contracts怎麽用?Golang Contracts使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Contracts類的9個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: setAppType
func setAppType(app *definitions.Contracts, name, command, typ string) error {
var t string
log.WithFields(log.Fields{
"task": command,
"type": typ,
"app": name,
}).Debug("Setting app type")
if typ != "" {
t = typ
} else {
switch command {
case "test":
t = app.TestType
case "deploy":
t = app.DeployType
}
}
switch t {
case "embark":
app.AppType = definitions.EmbarkApp()
case "sunit":
app.AppType = definitions.SUnitApp()
case "manual":
app.AppType = definitions.GulpApp()
default:
app.AppType = definitions.EPMApp()
}
log.WithField("app type", app.AppType.Name).Debug()
return nil
}
示例2: setDappType
func setDappType(dapp *definitions.Contracts, name, command, typ string) error {
var t string
logger.Debugf("Setting Dapp Type. Task =>\t%s\n", command)
logger.Debugf("\tType =>\t\t%s\n", typ)
logger.Debugf("\tChainName =>\t\t%s\n", name)
if typ != "" {
t = typ
} else {
switch command {
case "test":
t = dapp.TestType
case "deploy":
t = dapp.DeployType
}
}
switch t {
case "embark":
dapp.DappType = definitions.EmbarkDapp()
case "pyepm":
dapp.DappType = definitions.PyEpmDapp()
case "sunit":
dapp.DappType = definitions.SUnitDapp()
case "manual":
dapp.DappType = definitions.GulpDapp()
default:
return fmt.Errorf("Unregistered DappType.\nUnfortunately our marmots cannot deal with that.\nPlease ensure that the dapp type is set in the package.json.")
}
logger.Debugf("\tDapp Type =>\t\t%s\n", dapp.DappType.Name)
return nil
}
示例3: setAppType
func setAppType(app *definitions.Contracts, name, command, typ string) error {
var t string
logger.Debugf("Setting App Type. Task =>\t%s\n", command)
logger.Debugf("\tChainType =>\t\t%s\n", typ)
logger.Debugf("\tChainName =>\t\t%s\n", name)
if typ != "" {
t = typ
} else {
switch command {
case "test":
t = app.TestType
case "deploy":
t = app.DeployType
}
}
switch t {
case "embark":
app.AppType = definitions.EmbarkApp()
case "sunit":
app.AppType = definitions.SUnitApp()
case "manual":
app.AppType = definitions.GulpApp()
default:
app.AppType = definitions.EPMApp()
}
logger.Debugf("\tApp Type =>\t\t%s\n", app.AppType.Name)
return nil
}
示例4: checkAppAndChain
func checkAppAndChain(app *definitions.Contracts, name string) error {
var chain string
// name is pulled in from the do struct. need to work with both
// it (as an override) and the app.ChainName
switch name {
case "":
if app.ChainName == "" {
return nil
} else {
chain = app.ChainName
}
case "t", "tmp", "temp":
return nil
default:
chain = name
}
if strings.Contains(app.Name, " ") {
app.Name = strings.Replace(app.Name, " ", "_", -1)
}
// this is hacky.... at best.
if len(app.AppType.ChainTypes) == 1 && app.AppType.ChainTypes[0] == "eth" {
if r := regexp.MustCompile("eth"); r.MatchString(chain) {
return nil
} else {
return fmt.Errorf("The marmots detected a disturbance in the force.\n\nYou asked them to run the App Type: (%s).\nBut the chainName (%s) doesn't contain the name (%s).\nPlease rename the chain or service to contain the name (%s)", app.AppType.Name, chain, "eth", "eth")
}
}
return nil
}
示例5: BootServicesAndChain
func BootServicesAndChain(do *definitions.Do, dapp *definitions.Contracts) error {
var err error
var srvs []*definitions.ServiceDefinition
// launch the services
for _, s := range do.ServicesSlice {
t, err := services.BuildServicesGroup(s, do.Operations.ContainerNumber, srvs...)
if err != nil {
return err
}
srvs = append(srvs, t...)
}
// TODO: refactor this logic, should only need to call services.StartGroup(srvs)
if len(srvs) >= 1 {
wg, ch := new(sync.WaitGroup), make(chan error, 1)
services.StartGroup(ch, wg, srvs)
go func() {
wg.Wait()
ch <- nil
}()
if err := <-ch; err != nil {
return err
}
}
// boot the chain
switch do.ChainName {
case "":
if dapp.ChainName == "" {
logger.Infof("No chain was given, booting a throwaway chain.\n")
err = bootThrowAwayChain(dapp.Name, do)
} else {
logger.Infof("Booting chain =>\t\t%s\n", dapp.ChainName)
err = bootChain(dapp.ChainName, do)
}
case "t", "tmp", "temp":
logger.Infof("No chain was given, booting a throwaway chain.\n")
err = bootThrowAwayChain(dapp.Name, do)
default:
logger.Infof("Booting chain =>\t\t%s\n", do.ChainName)
err = bootChain(do.ChainName, do)
}
dapp.ChainName = do.Chain.Name
if err != nil {
return err
}
return nil
}
示例6: BootServicesAndChain
func BootServicesAndChain(do *definitions.Do, app *definitions.Contracts) error {
var err error
var srvs []*definitions.ServiceDefinition
// launch the services
for _, s := range do.ServicesSlice {
t, err := services.BuildServicesGroup(s, do.Operations.ContainerNumber, srvs...)
if err != nil {
return err
}
srvs = append(srvs, t...)
}
if len(srvs) >= 1 {
if err := services.StartGroup(srvs); err != nil {
return err
}
}
// boot the chain
switch do.ChainName {
case "":
if app.ChainName == "" {
// TODO [csk]: first check if there is a chain checked out. if not, then use throwAway
log.Info("No chain was given, booting a throwaway chain")
err = bootThrowAwayChain(app.Name, do)
} else {
log.WithField("=>", app.ChainName).Info("Booting chain")
err = bootChain(app.ChainName, do)
}
case "t", "tmp", "temp":
log.Info("No chain was given, booting a throwaway chain")
err = bootThrowAwayChain(app.Name, do)
default:
log.WithField("=>", do.ChainName).Info("Booting chain")
err = bootChain(do.ChainName, do)
}
app.ChainName = do.Chain.Name
if err != nil {
return err
}
return nil
}
示例7: BootServicesAndChain
func BootServicesAndChain(do *definitions.Do, dapp *definitions.Contracts) error {
var err error
var srvs []*definitions.ServiceDefinition
// launch the services
for _, s := range do.ServicesSlice {
t, err := services.BuildServicesGroup(s, do.Operations.ContainerNumber, srvs...)
if err != nil {
return err
}
srvs = append(srvs, t...)
}
if len(srvs) >= 1 {
if err := services.StartGroup(srvs); err != nil {
return err
}
}
// boot the chain
switch do.ChainName {
case "":
if dapp.ChainName == "" {
logger.Infof("No chain was given, booting a throwaway chain.\n")
err = bootThrowAwayChain(dapp.Name, do)
} else {
logger.Infof("Booting chain =>\t\t%s\n", dapp.ChainName)
err = bootChain(dapp.ChainName, do)
}
case "t", "tmp", "temp":
logger.Infof("No chain was given, booting a throwaway chain.\n")
err = bootThrowAwayChain(dapp.Name, do)
default:
logger.Infof("Booting chain =>\t\t%s\n", do.ChainName)
err = bootChain(do.ChainName, do)
}
dapp.ChainName = do.Chain.Name
if err != nil {
return err
}
return nil
}
示例8: DefineAppActionService
func DefineAppActionService(do *definitions.Do, app *definitions.Contracts) error {
var cmd string
switch do.Name {
case "test":
cmd = app.AppType.TestCmd
case "deploy":
cmd = app.AppType.DeployCmd
default:
return fmt.Errorf("I do not know how to perform that task (%s)\nPlease check what you can do with contracts by typing [eris contracts].\n", do.Name)
}
// if manual, set task
if app.AppType.Name == "manual" {
switch do.Name {
case "test":
cmd = app.TestTask
case "deploy":
cmd = app.DeployTask
}
}
// task flag override
if do.Task != "" {
app.AppType = definitions.GulpApp()
cmd = do.Task
}
if cmd == "nil" {
return fmt.Errorf("I cannot perform that task against that app type.\n")
}
// build service that will run
do.Service.Name = app.Name + "_tmp_" + do.Name
do.Service.Image = app.AppType.BaseImage
do.Service.AutoData = true
do.Service.EntryPoint = app.AppType.EntryPoint
do.Service.Command = cmd
if do.Path != pwd {
do.Service.WorkDir = do.Path // do.Path is actually where the workdir inside the container goes
} else {
do.Service.WorkDir = filepath.Join(common.ErisContainerRoot, "apps", app.Name)
}
do.Service.User = "eris"
srv := definitions.BlankServiceDefinition()
srv.Service = do.Service
srv.Operations = do.Operations
loaders.ServiceFinalizeLoad(srv)
do.Service = srv.Service
do.Operations = srv.Operations
do.Operations.Follow = true
linkAppToChain(do, app)
if app.AppType.Name == "epm" {
prepareEpmAction(do, app)
}
// make data container and import do.Path to do.Path (if exists)
doData := definitions.NowDo()
doData.Name = do.Service.Name
doData.Operations = do.Operations
if do.Path != pwd {
doData.Destination = do.Path
} else {
doData.Destination = common.ErisContainerRoot
}
doData.Source = filepath.Join(common.DataContainersPath, doData.Name)
var loca string
if do.Path != pwd {
loca = filepath.Join(common.DataContainersPath, doData.Name, do.Path)
} else {
loca = filepath.Join(common.DataContainersPath, doData.Name, "apps", app.Name)
}
log.WithFields(log.Fields{
"path": do.Path,
"location": loca,
}).Debug("Creating app data container")
common.Copy(do.Path, loca)
if err := data.ImportData(doData); err != nil {
return err
}
do.Operations.DataContainerName = util.DataContainersName(doData.Name, doData.Operations.ContainerNumber)
log.Debug("App action built")
return nil
}
示例9: DefineDappActionService
func DefineDappActionService(do *definitions.Do, dapp *definitions.Contracts) error {
var cmd string
switch do.Name {
case "test":
cmd = dapp.DappType.TestCmd
case "deploy":
cmd = dapp.DappType.DeployCmd
default:
return fmt.Errorf("I do not know how to perform that task (%s)\nPlease check what you can do with contracts by typing [eris contracts].\n", do.Name)
}
// if manual, set task
if dapp.DappType.Name == "manual" {
switch do.Name {
case "test":
cmd = dapp.TestTask
case "deploy":
cmd = dapp.DeployTask
}
}
// task flag override
if do.Task != "" {
dapp.DappType = definitions.GulpDapp()
cmd = do.Task
}
if cmd == "nil" {
return fmt.Errorf("I cannot perform that task against that dapp type.\n")
}
// dapp-specific tests
if dapp.DappType.Name == "pyepm" {
if do.ConfigFile == "" {
return fmt.Errorf("The pyepm dapp type requires a --yaml flag for the package definition you would like to deploy.\n")
} else {
cmd = do.ConfigFile
}
}
// build service that will run
do.Service.Name = dapp.Name + "_tmp_" + do.Name
do.Service.Image = dapp.DappType.BaseImage
do.Service.AutoData = true
do.Service.EntryPoint = dapp.DappType.EntryPoint
do.Service.Command = cmd
if do.NewName != "" {
do.Service.WorkDir = do.NewName // do.NewName is actually where the workdir inside the container goes
}
do.Service.User = "eris"
srv := definitions.BlankServiceDefinition()
srv.Service = do.Service
srv.Operations = do.Operations
loaders.ServiceFinalizeLoad(srv)
do.Service = srv.Service
do.Operations = srv.Operations
do.Operations.Remove = true
linkDappToChain(do, dapp)
// make data container and import do.Path to do.NewName (if exists)
doData := definitions.NowDo()
doData.Name = do.Service.Name
doData.Operations = do.Operations
if do.NewName != "" {
doData.Path = do.NewName
}
loca := path.Join(common.DataContainersPath, doData.Name)
logger.Debugf("Creating Dapp Data Cont =>\t%s:%s\n", do.Path, loca)
common.Copy(do.Path, loca)
data.ImportData(doData)
do.Operations.DataContainerName = util.DataContainersName(doData.Name, doData.Operations.ContainerNumber)
logger.Debugf("DApp Action Built.\n")
return nil
}