func generateManifest(dir string, def string) error { if exists("Procfile") { pf, err := readProcfile("Procfile") if err != nil { return err } m := manifest.Manifest{ Services: make(map[string]manifest.Service), } for _, e := range pf { me := manifest.Service{ Build: manifest.Build{ Context: ".", }, Command: manifest.Command{ String: e.Command, }, Labels: make(manifest.Labels), Ports: make(manifest.Ports, 0), } switch e.Name { case "web": me.Labels["convox.port.443.protocol"] = "tls" me.Labels["convox.port.443.proxy"] = "true" me.Ports = append(me.Ports, manifest.Port{ Balancer: 80, Container: 4000, Public: true, }) me.Ports = append(me.Ports, manifest.Port{ Balancer: 443, Container: 4001, Public: true, }) } m.Services[e.Name] = me } data, err := yaml.Marshal(m) if err != nil { return err } // write the generated docker-compose.yml and return return writeFile("docker-compose.yml", data, 0644) } // write the default if we get here return writeAsset("docker-compose.yml", def) }