(ref string)
| 109 | } |
| 110 | |
| 111 | func (s *SpreadCli) globalDeploy(ref string) (*deploy.Deployment, error) { |
| 112 | // check if reference is local file |
| 113 | dep, err := s.fileDeploy(ref) |
| 114 | if err != nil { |
| 115 | ref, err = packages.ExpandPackageName(ref) |
| 116 | if err == nil { |
| 117 | var info packages.PackageInfo |
| 118 | info, err = packages.DiscoverPackage(ref, true, false) |
| 119 | if err != nil { |
| 120 | s.fatalf("failed to retrieve package info: %v", err) |
| 121 | } |
| 122 | |
| 123 | proj, err := s.globalProject() |
| 124 | if err != nil { |
| 125 | s.fatalf("error setting up global project: %v", err) |
| 126 | } |
| 127 | |
| 128 | remote, err := proj.Remotes().Lookup(ref) |
| 129 | // if does not exist or has different URL, create new remote |
| 130 | if err != nil { |
| 131 | remote, err = proj.Remotes().Create(ref, info.RepoURL) |
| 132 | if err != nil { |
| 133 | return nil, fmt.Errorf("could not create remote: %v", err) |
| 134 | } |
| 135 | } else if remote.Url() != info.RepoURL { |
| 136 | s.printf("changing remote URL for %s, current: '%s' new: '%s'", ref, remote.Url(), info.RepoURL) |
| 137 | err = proj.Remotes().SetUrl(ref, info.RepoURL) |
| 138 | if err != nil { |
| 139 | return nil, fmt.Errorf("failed to change URL for %s: %v", ref, err) |
| 140 | } |
| 141 | } |
| 142 | |
| 143 | s.printf("pulling repo from %s", info.RepoURL) |
| 144 | branch := fmt.Sprintf("%s/master", ref) |
| 145 | err = proj.Fetch(remote.Name(), "master") |
| 146 | if err != nil { |
| 147 | return nil, fmt.Errorf("failed to fetch '%s': %v", ref, err) |
| 148 | } |
| 149 | |
| 150 | docs, err := proj.Branch(branch) |
| 151 | if err != nil { |
| 152 | return nil, err |
| 153 | } |
| 154 | |
| 155 | if err = s.promptForArgs(docs, false); err != nil { |
| 156 | return nil, err |
| 157 | } |
| 158 | |
| 159 | return deploy.DeploymentFromDocMap(docs) |
| 160 | } |
| 161 | } |
| 162 | return dep, err |
| 163 | } |
| 164 | |
| 165 | func (s *SpreadCli) promptForArgs(docs map[string]*pb.Document, required bool) error { |
| 166 | paramFields := data.ParameterFields(docs) |
no test coverage detected