MCPcopy Index your code
hub / github.com/AlistGo/alist / Remove

Method Remove

drivers/github/driver.go:557–611  ·  view source on GitHub ↗
(ctx context.Context, obj model.Obj)

Source from the content-addressed store, hash-verified

555}
556
557func (d *Github) Remove(ctx context.Context, obj model.Obj) error {
558 if !d.isOnBranch {
559 return errors.New("cannot write to non-branch reference")
560 }
561 d.commitMutex.Lock()
562 defer d.commitMutex.Unlock()
563 parentDir := stdpath.Dir(obj.GetPath())
564 tree, treeSha, err := d.getTreeDirectly(parentDir)
565 if err != nil {
566 return err
567 }
568 var del *TreeObjReq = nil
569 for _, t := range tree.Trees {
570 if t.Path == obj.GetName() {
571 if t.Type == "commit" {
572 return errors.New("cannot remove a submodule")
573 }
574 del = &t.TreeObjReq
575 del.Sha = nil
576 break
577 }
578 }
579 if del == nil {
580 return errs.ObjectNotFound
581 }
582 newTree := make([]interface{}, 0, 2)
583 newTree = append(newTree, *del)
584 if len(tree.Trees) == 1 { // completely emptying the repository will get a 404
585 newTree = append(newTree, map[string]string{
586 "path": ".gitkeep",
587 "mode": "100644",
588 "type": "blob",
589 "content": "",
590 })
591 }
592 newSha, err := d.newTree(treeSha, newTree)
593 if err != nil {
594 return err
595 }
596 rootSha, err := d.renewParentTrees(parentDir, treeSha, newSha, "/")
597 if err != nil {
598 return err
599 }
600 commitMessage, err := getMessage(d.deleteMsgTmpl, &MessageTemplateVars{
601 UserName: getUsername(ctx),
602 ObjName: obj.GetName(),
603 ObjPath: obj.GetPath(),
604 ParentName: stdpath.Base(parentDir),
605 ParentPath: parentDir,
606 }, "remove")
607 if err != nil {
608 return err
609 }
610 return d.commit(commitMessage, rootSha)
611}
612
613func (d *Github) Put(ctx context.Context, dstDir model.Obj, stream model.FileStreamer, up driver.UpdateProgress) error {
614 if !d.isOnBranch {

Callers

nothing calls this directly

Calls 9

getTreeDirectlyMethod · 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