@@ -89,8 +89,9 @@ type DeployOptions struct {
8989
9090 Observer DeployObserver
9191
92- files * deployFiles
93- functions * deployFiles
92+ files * deployFiles
93+ functions * deployFiles
94+ functionSchedules []models.FunctionSchedule
9495}
9596
9697type uploadError struct {
@@ -211,14 +212,15 @@ func (n *Netlify) DoDeploy(ctx context.Context, options *DeployOptions, deploy *
211212
212213 options .files = files
213214
214- functions , err := bundle (options .FunctionsDir , options .Observer )
215+ functions , schedules , err := bundle (options .FunctionsDir , options .Observer )
215216 if err != nil {
216217 if options .Observer != nil {
217218 options .Observer .OnFailedWalk ()
218219 }
219220 return nil , err
220221 }
221222 options .functions = functions
223+ options .functionSchedules = schedules
222224
223225 deployFiles := & models.DeployFiles {
224226 Files : options .files .Sums ,
@@ -578,9 +580,9 @@ func walk(dir string, observer DeployObserver, useLargeMedia, ignoreInstallDirs
578580 return files , err
579581}
580582
581- func bundle (functionDir string , observer DeployObserver ) (* deployFiles , error ) {
583+ func bundle (functionDir string , observer DeployObserver ) (* deployFiles , []models. FunctionSchedule , error ) {
582584 if functionDir == "" {
583- return nil , nil
585+ return nil , nil , nil
584586 }
585587
586588 manifestFile , err := os .Open (filepath .Join (functionDir , "manifest.json" ))
@@ -597,7 +599,7 @@ func bundle(functionDir string, observer DeployObserver) (*deployFiles, error) {
597599
598600 info , err := ioutil .ReadDir (functionDir )
599601 if err != nil {
600- return nil , err
602+ return nil , nil , err
601603 }
602604
603605 for _ , i := range info {
@@ -607,23 +609,23 @@ func bundle(functionDir string, observer DeployObserver) (*deployFiles, error) {
607609 case zipFile (i ):
608610 runtime , err := readZipRuntime (filePath )
609611 if err != nil {
610- return nil , err
612+ return nil , nil , err
611613 }
612614 file , err := newFunctionFile (filePath , i , runtime , observer )
613615 if err != nil {
614- return nil , err
616+ return nil , nil , err
615617 }
616618 functions .Add (file .Name , file )
617619 case jsFile (i ):
618620 file , err := newFunctionFile (filePath , i , jsRuntime , observer )
619621 if err != nil {
620- return nil , err
622+ return nil , nil , err
621623 }
622624 functions .Add (file .Name , file )
623625 case goFile (filePath , i , observer ):
624626 file , err := newFunctionFile (filePath , i , goRuntime , observer )
625627 if err != nil {
626- return nil , err
628+ return nil , nil , err
627629 }
628630 functions .Add (file .Name , file )
629631 default :
@@ -633,43 +635,51 @@ func bundle(functionDir string, observer DeployObserver) (*deployFiles, error) {
633635 }
634636 }
635637
636- return functions , nil
638+ return functions , nil , nil
637639}
638640
639- func bundleFromManifest (manifestFile * os.File , observer DeployObserver ) (* deployFiles , error ) {
641+ func bundleFromManifest (manifestFile * os.File , observer DeployObserver ) (* deployFiles , []models. FunctionSchedule , error ) {
640642 manifestBytes , err := ioutil .ReadAll (manifestFile )
641643
642644 if err != nil {
643- return nil , err
645+ return nil , nil , err
644646 }
645647
646648 var manifest functionsManifest
647649
648650 err = json .Unmarshal (manifestBytes , & manifest )
649651
650652 if err != nil {
651- return nil , fmt .Errorf ("malformed functions manifest file: %w" , err )
653+ return nil , nil , fmt .Errorf ("malformed functions manifest file: %w" , err )
652654 }
653655
656+ schedules := make ([]models.FunctionSchedule , 0 , len (manifest .Functions ))
654657 functions := newDeployFiles ()
655658
656659 for _ , function := range manifest .Functions {
657660 fileInfo , err := os .Stat (function .Path )
658661
659662 if err != nil {
660- return nil , fmt .Errorf ("manifest file specifies a function path that cannot be found: %s" , function .Path )
663+ return nil , nil , fmt .Errorf ("manifest file specifies a function path that cannot be found: %s" , function .Path )
661664 }
662665
663666 file , err := newFunctionFile (function .Path , fileInfo , function .Runtime , observer )
664667
665668 if err != nil {
666- return nil , err
669+ return nil , nil , err
670+ }
671+
672+ if function .Schedule != "" {
673+ schedules = append (schedules , models.FunctionSchedule {
674+ Cron : function .Schedule ,
675+ Name : function .Name ,
676+ })
667677 }
668678
669679 functions .Add (file .Name , file )
670680 }
671681
672- return functions , nil
682+ return functions , schedules , nil
673683}
674684
675685func readZipRuntime (filePath string ) (string , error ) {
0 commit comments