MCPcopy Index your code
hub / github.com/OpenListTeam/OpenList / MakeDir

Method MakeDir

drivers/github/driver.go:186–245  ·  view source on GitHub ↗
(ctx context.Context, parentDir model.Obj, dirName string)

Source from the content-addressed store, hash-verified

184}
185
186func (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 }

Callers

nothing calls this directly

Calls 9

getMethod · 0.95
newTreeMethod · 0.95
renewParentTreesMethod · 0.95
commitMethod · 0.95
getMessageFunction · 0.85
getUsernameFunction · 0.85
UnlockMethod · 0.65
GetPathMethod · 0.65
GetNameMethod · 0.65

Tested by

no test coverage detected