Coverage for src / gitq / git_edit.py: 93%

35 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-04-15 15:32 -0400

1#!/usr/bin/env python3 

2 

3import sys 

4import argparse 

5 

6from . import continuations 

7from .continuations import EditBranch, Suspend, Abort 

8from .git_swap import edit_commit 

9 

10 

11description = """ 

12Detaches HEAD at COMMIT, suspending so the user can amend it. When done, 

13resume with `git edit --continue` to replay all commits that were above 

14COMMIT back on top. 

15""" 

16 

17 

18class Main(continuations.Main): 

19 

20 tool = "git-edit" 

21 suspend_message = "Suspended! edit HEAD, then resume with `git edit --continue`" 

22 

23 def main(self): 

24 parser = argparse.ArgumentParser( 

25 description=description, formatter_class=argparse.RawDescriptionHelpFormatter 

26 ) 

27 parser.add_argument("commit", nargs="?", metavar="COMMIT") 

28 parser.add_argument( 

29 "--continue", 

30 "-c", 

31 action="store_true", 

32 dest="resume", 

33 help="resume edits have been made", 

34 ) 

35 parser.add_argument( 

36 "--abort", 

37 action="store_true", 

38 ) 

39 parser.add_argument("--status", action="store_true", help="print status") 

40 args = parser.parse_args() 

41 

42 if args.resume: 

43 self.resume(None) 

44 return 

45 

46 if args.abort: 

47 self.resume(Abort()) 

48 

49 if args.status: 

50 self.status() 

51 return 

52 

53 if not args.commit: 

54 parser.print_usage() 

55 sys.exit(1) 

56 

57 with self.setup(): 

58 commit = self.git.commit(args.commit) 

59 with EditBranch(message="git-edit"): 

60 with edit_commit(commit, git=self.git, edit=True): 

61 raise Suspend 

62 

63 

64main = Main() 

65 

66if __name__ == "__main__": 66 ↛ 67line 66 didn't jump to line 67 because the condition on line 66 was never true

67 main()