MCPcopy
hub / github.com/redspread/spread / globalDeploy

Method globalDeploy

cli/deploy.go:111–163  ·  view source on GitHub ↗
(ref string)

Source from the content-addressed store, hash-verified

109}
110
111func (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
165func (s *SpreadCli) promptForArgs(docs map[string]*pb.Document, required bool) error {
166 paramFields := data.ParameterFields(docs)

Callers 1

DeployMethod · 0.95

Calls 9

fileDeployMethod · 0.95
fatalfMethod · 0.95
globalProjectMethod · 0.95
printfMethod · 0.95
promptForArgsMethod · 0.95
RemotesMethod · 0.80
FetchMethod · 0.80
NameMethod · 0.80
BranchMethod · 0.80

Tested by

no test coverage detected