(ctx context.Context, parentDir model.Obj, dirName string)
| 184 | } |
| 185 | |
| 186 | func (d *Github) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) error { |
| 187 | if !d.isOnBranch { |
| 188 | return errors.New("cannot write to non-branch reference") |
| 189 | } |
| 190 | d.commitMutex.Lock() |
| 191 | defer d.commitMutex.Unlock() |
| 192 | parent, err := d.get(parentDir.GetPath()) |
| 193 | if err != nil { |
| 194 | return err |
| 195 | } |
| 196 | if parent.Entries == nil { |
| 197 | return errs.NotFolder |
| 198 | } |
| 199 | subDirSha, err := d.newTree("", []interface{}{ |
| 200 | map[string]string{ |
| 201 | "path": ".gitkeep", |
| 202 | "mode": "100644", |
| 203 | "type": "blob", |
| 204 | "content": "", |
| 205 | }, |
| 206 | }) |
| 207 | if err != nil { |
| 208 | return err |
| 209 | } |
| 210 | newTree := make([]interface{}, 0, 2) |
| 211 | newTree = append(newTree, TreeObjReq{ |
| 212 | Path: dirName, |
| 213 | Mode: "040000", |
| 214 | Type: "tree", |
| 215 | Sha: subDirSha, |
| 216 | }) |
| 217 | if len(parent.Entries) == 1 && parent.Entries[0].Name == ".gitkeep" { |
| 218 | newTree = append(newTree, TreeObjReq{ |
| 219 | Path: ".gitkeep", |
| 220 | Mode: "100644", |
| 221 | Type: "blob", |
| 222 | Sha: nil, |
| 223 | }) |
| 224 | } |
| 225 | newSha, err := d.newTree(parent.Sha, newTree) |
| 226 | if err != nil { |
| 227 | return err |
| 228 | } |
| 229 | rootSha, err := d.renewParentTrees(parentDir.GetPath(), parent.Sha, newSha, "/") |
| 230 | if err != nil { |
| 231 | return err |
| 232 | } |
| 233 | |
| 234 | commitMessage, err := getMessage(d.mkdirMsgTmpl, &MessageTemplateVars{ |
| 235 | UserName: getUsername(ctx), |
| 236 | ObjName: dirName, |
| 237 | ObjPath: stdpath.Join(parentDir.GetPath(), dirName), |
| 238 | ParentName: parentDir.GetName(), |
| 239 | ParentPath: parentDir.GetPath(), |
| 240 | }, "mkdir") |
| 241 | if err != nil { |
| 242 | return err |
| 243 | } |
nothing calls this directly
no test coverage detected