DodoApp: clone with submodules

Change-Id: I82d53cb91e9629cc7735f92608d9b0ddaef9b913
diff --git a/apps/app-runner/main.go b/apps/app-runner/main.go
index ee2476a..ca99831 100644
--- a/apps/app-runner/main.go
+++ b/apps/app-runner/main.go
@@ -28,7 +28,7 @@
 }
 
 func CloneRepository(addr string, signer ssh.Signer, path string) error {
-	_, err := git.Clone(memory.NewStorage(), osfs.New(path, osfs.WithBoundOS()), &git.CloneOptions{
+	c, err := git.Clone(memory.NewStorage(), osfs.New(path, osfs.WithBoundOS()), &git.CloneOptions{
 		URL: addr,
 		Auth: &gitssh.PublicKeys{
 			User:   "git",
@@ -41,13 +41,32 @@
 				},
 			},
 		},
-		RemoteName:        "origin",
-		ReferenceName:     "refs/heads/master",
-		Depth:             1,
-		RecurseSubmodules: git.DefaultSubmoduleRecursionDepth,
-		ShallowSubmodules: true,
-		InsecureSkipTLS:   true,
+		RemoteName:      "origin",
+		ReferenceName:   "refs/heads/master",
+		SingleBranch:    true,
+		Depth:           1,
+		InsecureSkipTLS: true,
+		Progress:        os.Stdout,
 	})
+	if err != nil {
+		return err
+	}
+	wt, err := c.Worktree()
+	if err != nil {
+		return err
+	}
+	sb, err := wt.Submodules()
+	if err != nil {
+		return err
+	}
+	if err := sb.Init(); err != nil {
+		return err
+	}
+	if err := sb.Update(&git.SubmoduleUpdateOptions{
+		Depth: 1,
+	}); err != nil {
+		return err
+	}
 	return err
 }