// GetChaincodePackageBytes creates bytes for docker container generation using the supplied chaincode specification func GetChaincodePackageBytes(spec *pb.ChaincodeSpec) ([]byte, error) { if spec == nil || spec.ChaincodeID == nil { return nil, fmt.Errorf("invalid chaincode spec") } if spec.ChaincodeID.Name != "" { return nil, fmt.Errorf("chaincode name exists") } inputbuf := bytes.NewBuffer(nil) gw := gzip.NewWriter(inputbuf) tw := tar.NewWriter(gw) platform, err := platforms.Find(spec.Type) if err != nil { return nil, err } err = platform.WritePackage(spec, tw) if err != nil { return nil, err } tw.Close() gw.Close() if err != nil { return nil, err } chaincodePkgBytes := inputbuf.Bytes() return chaincodePkgBytes, nil }
// CheckSpec to see if chaincode resides within current package capture for language. func CheckSpec(spec *pb.ChaincodeSpec) error { // Don't allow nil value if spec == nil { return errors.New("Expected chaincode specification, nil received") } platform, err := platforms.Find(spec.Type) if err != nil { return fmt.Errorf("Failed to determine platform type: %s", err) } return platform.ValidateSpec(spec) }