skilleter-thingy 0.0.90__py3-none-any.whl → 0.0.92__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of skilleter-thingy might be problematic. Click here for more details.

@@ -23,11 +23,11 @@ def initialise():
23
23
 
24
24
  parser = argparse.ArgumentParser(description='Purge docker instances and images')
25
25
 
26
- parser.add_argument('-s', '--stop', action='store_true', help='Stop Docker instances')
27
- parser.add_argument('-k', '--kill', action='store_true', help='Kill Docker instances')
28
- parser.add_argument('-r', '--remove', action='store_true', help='Remove Docker images')
29
- parser.add_argument('-l', '--list', action='store_true', help='List what would be done without doing it')
30
- parser.add_argument('-f', '--force', action='store_true', help='Forcibly kill/remove instances')
26
+ parser.add_argument('--stop', '-s', action='store_true', help='Stop Docker instances')
27
+ parser.add_argument('--kill', '-k', action='store_true', help='Kill Docker instances')
28
+ parser.add_argument('--remove', '-r', action='store_true', help='Remove Docker images')
29
+ parser.add_argument('--list', '-l', action='store_true', help='List what would be done without doing it')
30
+ parser.add_argument('--force', '-f', action='store_true', help='Forcibly kill/remove instances')
31
31
  parser.add_argument('--debug', action='store_true', help='Enable debug output')
32
32
  parser.add_argument('images', nargs='*', help='List of Docker containers (regular expression)')
33
33
 
skilleter_thingy/ggit.py CHANGED
@@ -38,7 +38,7 @@ def parse_command_line():
38
38
 
39
39
  parser = argparse.ArgumentParser(description='Run a git command recursively in subdirectories')
40
40
 
41
- parser.add_argument('-q', '--quiet', action='store_true', help='Run quietly - only output errors or output from git')
41
+ parser.add_argument('--quiet', '-q', action='store_true', help='Run quietly - only output errors or output from git')
42
42
  parser.add_argument('path', nargs='?', action='store', default='.', help='Specify the path to run in')
43
43
 
44
44
  args = parser.parse_args()
skilleter_thingy/ggrep.py CHANGED
@@ -28,18 +28,18 @@ def parse_command_line():
28
28
  parser = argparse.ArgumentParser(
29
29
  description='Run a git grep in either the current working tree or all working git working trees under the current directory')
30
30
 
31
- parser.add_argument('-f', '--follow', action='store_true', help='Follow symlinks')
32
- parser.add_argument('-a', '--text', action='store_true', help='Process binary files as if they were text.')
33
- parser.add_argument('-i', '--ignore-case', action='store_true', help='Ignore case differences between the patterns and the files.')
34
- parser.add_argument('-w', '--word-regexp', action='store_true',
31
+ parser.add_argument('--follow', '-f', action='store_true', help='Follow symlinks')
32
+ parser.add_argument('--text', '-a', action='store_true', help='Process binary files as if they were text.')
33
+ parser.add_argument('--ignore-case', '-i', action='store_true', help='Ignore case differences between the patterns and the files.')
34
+ parser.add_argument('--word-regexp', '-w', action='store_true',
35
35
  help='Match the pattern only at word boundary (either begin at the beginning of a line, or preceded by a non-word character; end at the end of a line or followed by a non-word character).')
36
- parser.add_argument('-v', '--invert-match', action='store_true', help='Select non-matching lines.')
37
- parser.add_argument('-F', '--fixed-strings', action='store_true', help='Use fixed strings for patterns (don’t interpret pattern as a regex).')
38
- parser.add_argument('-n', '--line-number', action='store_true', help='Prefix the line number to matching lines.')
39
- parser.add_argument('-l', '--files-with-matches', action='store_true', help='Show only the names of files that contain matches')
40
- parser.add_argument('-L', '--files-without-matches', action='store_true', help='Show only the names of files that do NOT contain matches')
41
- parser.add_argument('-W', '--wildcard', action='append', help='Only search files matching the wildcard(s)')
42
- parser.add_argument('-o', '--only-matching', action='store_true', help='Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.')
36
+ parser.add_argument('--invert-match', '-v', action='store_true', help='Select non-matching lines.')
37
+ parser.add_argument('--fixed-strings', '-F', action='store_true', help='Use fixed strings for patterns (don’t interpret pattern as a regex).')
38
+ parser.add_argument('--line-number', '-n', action='store_true', help='Prefix the line number to matching lines.')
39
+ parser.add_argument('--files-with-matches', '-l', action='store_true', help='Show only the names of files that contain matches')
40
+ parser.add_argument('--files-without-matches', '-L', action='store_true', help='Show only the names of files that do NOT contain matches')
41
+ parser.add_argument('--wildcard', '-W', action='append', help='Only search files matching the wildcard(s)')
42
+ parser.add_argument('--only-matching', '-o', action='store_true', help='Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.')
43
43
  parser.add_argument('--no-color', action='store_true', help='Turn off match highlighting')
44
44
  parser.add_argument('pattern', action='store', help='Regular expression to search for')
45
45
  parser.add_argument('paths', nargs='*', help='Optional list of one or more paths to search')
@@ -31,8 +31,8 @@ def parse_command_line():
31
31
 
32
32
  parser = argparse.ArgumentParser(description='List or delete branches that have been merged')
33
33
 
34
- parser.add_argument('-a', '--all', action='store_true', help='List all branches, including remotes')
35
- parser.add_argument('-d', '--delete', action='store_true',
34
+ parser.add_argument('--all', '-a', action='store_true', help='List all branches, including remotes')
35
+ parser.add_argument('--delete', '-d', action='store_true',
36
36
  help='Delete the specified branch(es), even if it is the current one (list of branches to delete must be supplied as parameters)')
37
37
  parser.add_argument('branches', nargs='*', help='Filter the list of branches according to one or more patterns')
38
38
 
@@ -36,13 +36,13 @@ def main():
36
36
  parser = argparse.ArgumentParser(
37
37
  description='Amend changes to the current commit. Updates files that are already in the commit and, optionally, adds additional files.')
38
38
 
39
- parser.add_argument('-A', '--added', action='store_true', help='Update files in the current commit, including files added with "git add"')
40
- parser.add_argument('-a', '--all', action='store_true', help='Append all locally-modified, tracked files to the current commit')
41
- parser.add_argument('-e', '--everything', action='store_true', help='Append all modified and untracked files to the current commit (implies --all)')
42
- parser.add_argument('-i', '--ignored', action='store_true', dest='ignored', help='Include files normally hidden by .gitignore')
43
- parser.add_argument('-p', '--patch', action='store_true', help='Use the interactive patch selection interface to chose which changes to commit.')
44
- parser.add_argument('-v', '--verbose', action='store_true', help='Verbose mode')
45
- parser.add_argument('-D', '--dry-run', action='store_true', help='Dry-run')
39
+ parser.add_argument('--added', '-A', action='store_true', help='Update files in the current commit, including files added with "git add"')
40
+ parser.add_argument('--all', '-a', action='store_true', help='Append all locally-modified, tracked files to the current commit')
41
+ parser.add_argument('--everything', '-e', action='store_true', help='Append all modified and untracked files to the current commit (implies --all)')
42
+ parser.add_argument('--ignored', '-i', action='store_true', dest='ignored', help='Include files normally hidden by .gitignore')
43
+ parser.add_argument('--patch', '-p', action='store_true', help='Use the interactive patch selection interface to chose which changes to commit.')
44
+ parser.add_argument('--verbose', '-v', action='store_true', help='Verbose mode')
45
+ parser.add_argument('--dry-run', '-D', action='store_true', help='Dry-run')
46
46
 
47
47
  parser.add_argument('files', nargs='*', help='List of files to add to the commit')
48
48
 
@@ -31,12 +31,12 @@ def parse_command_line():
31
31
  parser = argparse.ArgumentParser(
32
32
  description='List or delete branches that have been merged.\nWhen deleting branches, also delete tracking branches that are not longer on the remote.')
33
33
 
34
- parser.add_argument('-d', '--delete', action='store_true', dest='delete', help='Delete all branches that have been merged')
35
- parser.add_argument('-m', '--master', '--main', dest='master',
34
+ parser.add_argument('--delete', '-d', action='store_true', dest='delete', help='Delete all branches that have been merged')
35
+ parser.add_argument('--master', '-m', '--main', dest='master',
36
36
  help='Specify the master branch (Attempts to read this from GitLab or defaults to "develop" if present or "master" or "main" otherwise')
37
- parser.add_argument('-f', '--force', action='store_true', dest='force', help='Allow protected branches (e.g. master) to be removed')
38
- parser.add_argument('-u', '--unmerged', action='store_true', dest='list_unmerged', help='List branches that have NOT been merged')
39
- parser.add_argument('-y', '--yes', action='store_true', dest='force', help='Assume "yes" in response to any prompts (e.g. to delete branches)')
37
+ parser.add_argument('--force', '-f', action='store_true', dest='force', help='Allow protected branches (e.g. master) to be removed')
38
+ parser.add_argument('--unmerged', '-u', action='store_true', dest='list_unmerged', help='List branches that have NOT been merged')
39
+ parser.add_argument('--yes', '-y', action='store_true', dest='force', help='Assume "yes" in response to any prompts (e.g. to delete branches)')
40
40
  parser.add_argument('--debug', action='store_true', help='Enable debug output')
41
41
 
42
42
  parser.add_argument('branches', nargs='*', help='List of branches to check (default is all branches)')
@@ -59,12 +59,12 @@ def parse_arguments():
59
59
  """ Parse and return command line arguments """
60
60
 
61
61
  parser = argparse.ArgumentParser(description=DESCRIPTION, formatter_class=argparse.RawTextHelpFormatter)
62
- parser.add_argument('-b', '--branch', action='store_true', help='Create the specified branch')
63
- parser.add_argument('-u', '--update', action='store_true', help='If a remote branch exists, delete any local branch and check out the remote version')
64
- parser.add_argument('-r', '--rebase', action='store_true', help='Rebase the branch onto its parent after checking it out')
65
- parser.add_argument('-f', '--force', action='store_true',
62
+ parser.add_argument('--branch', '-b', action='store_true', help='Create the specified branch')
63
+ parser.add_argument('--update', '-u', action='store_true', help='If a remote branch exists, delete any local branch and check out the remote version')
64
+ parser.add_argument('--rebase', '-r', action='store_true', help='Rebase the branch onto its parent after checking it out')
65
+ parser.add_argument('--force', '-f', action='store_true',
66
66
  help='When using the update option, recreate the local branch even if it is owned by the current user (based on the author of the most recent commit)')
67
- parser.add_argument('-e', '--exact', action='store_true', help='Do not use branch name matching - check out the branch as specified (if it exists)')
67
+ parser.add_argument('--exact', '-e', action='store_true', help='Do not use branch name matching - check out the branch as specified (if it exists)')
68
68
  parser.add_argument('--debug', action='store_true', help='Enable debug output')
69
69
  parser.add_argument('branchname', nargs=1, type=str,
70
70
  help='The branch name (or a partial name that matches uniquely against a local branch, remote branch, commit ID or tag)')
@@ -23,7 +23,7 @@ def parse_arguments():
23
23
  parser = argparse.ArgumentParser(description=DESCRIPTION, formatter_class=argparse.RawTextHelpFormatter)
24
24
 
25
25
  parser.add_argument('--debug', action='store_true', help='Enable debug output')
26
- parser.add_argument('-f', '--force', action='store_true', help='Force-push the branch')
26
+ parser.add_argument('--force', '-f', action='store_true', help='Force-push the branch')
27
27
  parser.add_argument('--parent', '-p', action='store', help='Override the default parent and specify the branch to merge onto')
28
28
  parser.add_argument('--reviewer', '-r', action='store', help='Specify the name of the reviewer for the merge request')
29
29
  parser.add_argument('--keep', '-k', action='store_true', help='Keep the source branch after the merge (default is to delete it).')
@@ -21,8 +21,8 @@ def main():
21
21
  current_branch = git.branch()
22
22
 
23
23
  parser = argparse.ArgumentParser(description='Attempt to determine the parent branch for the specified branch (defaulting to the current one)')
24
- parser.add_argument('-a', '--all', action='store_true', help='Include feature branches as possible parents')
25
- parser.add_argument('-v', '--verbose', action='store_true', help='Report verbose results (includes number of commits between branch and parent)')
24
+ parser.add_argument('--all', '-a', action='store_true', help='Include feature branches as possible parents')
25
+ parser.add_argument('--verbose', '-v', action='store_true', help='Report verbose results (includes number of commits between branch and parent)')
26
26
  parser.add_argument('branch', action='store', nargs='?', type=str, default=current_branch, help=f'Branch, commit or commit (defaults to current branch; {current_branch})')
27
27
 
28
28
  args = parser.parse_args()
@@ -1284,10 +1284,10 @@ def parse_command_line():
1284
1284
 
1285
1285
  parser = argparse.ArgumentParser(description='Menu-driven Git code review tool')
1286
1286
 
1287
- parser.add_argument('-c', '--commit', type=str, help='Compare the specified commit with its parent')
1288
- parser.add_argument('-b', '--branch', type=str, help='Compare the specified commit to branch point on specified branch')
1289
- parser.add_argument('-C', '--change', action='store_true', help='Compare the current commit with its parent')
1290
- parser.add_argument('-d', '--debug', action='store_true', help='Start a debug session over Telnet using pudb')
1287
+ parser.add_argument('--commit', '-c', type=str, help='Compare the specified commit with its parent')
1288
+ parser.add_argument('--branch', '-b', type=str, help='Compare the specified commit to branch point on specified branch')
1289
+ parser.add_argument('--change', '-C', action='store_true', help='Compare the current commit with its parent')
1290
+ parser.add_argument('--debug', '-d', action='store_true', help='Start a debug session over Telnet using pudb')
1291
1291
  parser.add_argument('--dir', action='store', help='Work in the specified directory')
1292
1292
  parser.add_argument('--difftool', type=str, default=None, help='Override the default git diff tool')
1293
1293
 
@@ -36,17 +36,17 @@ def parse_command_line():
36
36
 
37
37
  parser = argparse.ArgumentParser(description='Rebase branch(es) against their parent branch, updating both in the process')
38
38
 
39
- parser.add_argument('-c', '--cleanup', action='store_true',
39
+ parser.add_argument('--cleanup', '-c', action='store_true',
40
40
  help='After updating a branch, delete it if there are no differences between it and its parent branch')
41
- parser.add_argument('-a', '--all', action='store_true', help='Update all local branches, not just the current one')
42
- parser.add_argument('-A', '--everything', action='store_true',
41
+ parser.add_argument('--all', '-a', action='store_true', help='Update all local branches, not just the current one')
42
+ parser.add_argument('--everything', '-A', action='store_true',
43
43
  help='Update all local branches, not just the current one and ignore the default ignore list specified in the Git configuration')
44
- parser.add_argument('-d', '--default', action='store_true', help='Checkout the main or master branch on completion')
45
- parser.add_argument('-p', '--parent', action='store', help='Specify the parent branch, rather than trying to work it out')
46
- parser.add_argument('-P', '--all-parents', action='store_true',
44
+ parser.add_argument('--default', '-d', action='store_true', help='Checkout the main or master branch on completion')
45
+ parser.add_argument('--parent', '-p', action='store', help='Specify the parent branch, rather than trying to work it out')
46
+ parser.add_argument('--all-parents', '-P', action='store_true',
47
47
  help='Feature branches are not considered as alternative parents unless this option is specified')
48
- parser.add_argument('-s', '--stop', action='store_true', help='Stop if a rebase problem occurs, instead of skipping the branch')
49
- parser.add_argument('-i', '--ignore', action='store', default=None,
48
+ parser.add_argument('--stop', '-s', action='store_true', help='Stop if a rebase problem occurs, instead of skipping the branch')
49
+ parser.add_argument('--ignore', '-i', action='store', default=None,
50
50
  help='List of one or more wildcard branch names not to attempt to update (uses update.ignore from the Git configuration if not specified)')
51
51
  parser.add_argument('--verbose', action='store_true', help='Enable verbose output')
52
52
  parser.add_argument('--dry-run', action='store_true', help='Report what would be done without actually doing it')
@@ -75,7 +75,7 @@ def main():
75
75
  """ Report Summary of files by name or extension """
76
76
 
77
77
  parser = argparse.ArgumentParser(description='Summarise number of files, lines of text and total size of files in a directory tree')
78
- parser.add_argument('-e-', '--ext', action='store_true', help='Identify file type using the file extension (faster but less accurrate)')
78
+ parser.add_argument('--ext', '-e', action='store_true', help='Identify file type using the file extension (faster but less accurrate)')
79
79
 
80
80
  args = parser.parse_args()
81
81
 
@@ -27,9 +27,9 @@ def parse_command_line():
27
27
 
28
28
  parser = argparse.ArgumentParser(description='File relocation - move files by wildcard from one directory tree to another')
29
29
 
30
- parser.add_argument('-s', '--source', type=str, required=True, help='Source directory')
31
- parser.add_argument('-d', '--destination', type=str, required=True, help='Destination directory')
32
- parser.add_argument('-D', '--dry-run', action='store_true', help='Report what files would be moved, without actually moving them')
30
+ parser.add_argument('--source', '-s', type=str, required=True, help='Source directory')
31
+ parser.add_argument('--destination', '-d', type=str, required=True, help='Destination directory')
32
+ parser.add_argument('--dry-run', '-D', action='store_true', help='Report what files would be moved, without actually moving them')
33
33
  parser.add_argument('files', nargs='*', help='List of wildcard matches')
34
34
 
35
35
  args = parser.parse_args()
@@ -232,7 +232,7 @@ def mg_init(args, config, console):
232
232
  if not args.quiet:
233
233
  show_progress(console.columns, repo.name)
234
234
 
235
- if not repo in config:
235
+ if repo not in config:
236
236
  config[repo] = {
237
237
  'default branch': git.branch(path=repo)
238
238
  }
@@ -257,7 +257,6 @@ def mg_dir(args, config, console):
257
257
  _ = console
258
258
  _ = config
259
259
 
260
-
261
260
  if len(args.parameters) > 1:
262
261
  error('The +dir command takes no more than one parameter - the name of the working tree to search for')
263
262
  elif args.parameters:
@@ -423,7 +422,9 @@ def main():
423
422
  config = configparser.ConfigParser()
424
423
 
425
424
  if not (args.internal_command and args.command == 'init'):
426
- if not os.path.isfile(args.configuration_file):
425
+ if not args.configuration_file:
426
+ error('Cannot locate configuration file')
427
+ elif not os.path.isfile(args.configuration_file):
427
428
  error(f'Cannot read configuration file {args.configuration_file}')
428
429
 
429
430
  if os.path.isfile(args.configuration_file):
@@ -52,7 +52,7 @@ def parse_command_line():
52
52
 
53
53
  parser = argparse.ArgumentParser(description='Re-organise photos into (hopefully) the correct folders.')
54
54
 
55
- parser.add_argument('-D', '--dry-run', action='store_true', help='Report what files would be moved, without actually moving them')
55
+ parser.add_argument('--dry-run', '-D', action='store_true', help='Report what files would be moved, without actually moving them')
56
56
  parser.add_argument('path', nargs=1, help='Path to the picture storage directory')
57
57
 
58
58
  args = parser.parse_args()
@@ -52,6 +52,7 @@ TF_MISC_REGEX = \
52
52
  { 'regex': re.compile(r'"(.*:.*)"( = ".*")'), 'replace': r'\1\2'},
53
53
  { 'regex': re.compile(r'"(.*:.*)"( = \[$)'), 'replace': r'\1\2'},
54
54
  { 'regex': re.compile(r'^last "terraform apply":$'), 'replace':r'last "terraform apply" which may have affected this plan:'},
55
+ { 'find': ' ~ ', 'replace': ' * '},
55
56
  ]
56
57
 
57
58
  TF_IGNORE_LIST = [
@@ -37,11 +37,11 @@ def main():
37
37
  # Parse the command line
38
38
 
39
39
  parser = argparse.ArgumentParser(description='Remove empty directories')
40
- parser.add_argument('-D', '--dry-run', action='store_true', help='Dry-run - report what would be done without doing anything')
40
+ parser.add_argument('--dry-run', '-D', action='store_true', help='Dry-run - report what would be done without doing anything')
41
41
  parser.add_argument('--debug', action='store_true', help='Output debug information')
42
42
  parser.add_argument('--verbose', action='store_true', help='Output verbose information')
43
- parser.add_argument('-I', '--ignore', action='append', help='Files to ignore when considering whether a directory is empty')
44
- parser.add_argument('-K', '--keep', action='append', help='Directories that should be kept even if they are empty')
43
+ parser.add_argument('--ignore', '-I', action='append', help='Files to ignore when considering whether a directory is empty')
44
+ parser.add_argument('--keep', '-K', action='append', help='Directories that should be kept even if they are empty')
45
45
  parser.add_argument('dirs', nargs='+', help='Directories to prune')
46
46
  args = parser.parse_args()
47
47
 
@@ -20,7 +20,7 @@ def main():
20
20
  """ Main function """
21
21
 
22
22
  parser = argparse.ArgumentParser(description='Textual search and replace')
23
- parser.add_argument('-i', '--inplace', action='store_true', help='Do an in-place search and replace on the input file')
23
+ parser.add_argument('--inplace', '-i', action='store_true', help='Do an in-place search and replace on the input file')
24
24
  parser.add_argument('search', nargs=1, action='store', help='Search text')
25
25
  parser.add_argument('replace', nargs=1, action='store', help='Replacment text')
26
26
  parser.add_argument('infile', nargs='?', action='store', help='Input file')
@@ -26,7 +26,7 @@ def main():
26
26
 
27
27
  parser = argparse.ArgumentParser(description='Trim a path for display to a specified with by replacing intermediate directory names with "..."')
28
28
 
29
- parser.add_argument('-w', '--width', default=None, help='Specify the width to trim to the path to. Default is 25% of the current console width')
29
+ parser.add_argument('--width', '-w', default=None, help='Specify the width to trim to the path to. Default is 25% of the current console width')
30
30
  parser.add_argument('path', nargs='?', default=None, help='The path to trim. Default is the current directory')
31
31
  parser.add_argument('--debug', action='store_true', help='Enable debug output')
32
32
 
@@ -73,7 +73,7 @@ def make_public():
73
73
 
74
74
  parser.add_argument('--debug', action='store_true', help='Output the list of files (if any) that need to be made publically writeable')
75
75
  parser.add_argument('--verbose', action='store_true', help='List files as they are updated')
76
- parser.add_argument('-R', '--recursive', action='store_true', help='Operate recursively')
76
+ parser.add_argument('--recursive', '-R', action='store_true', help='Operate recursively')
77
77
  parser.add_argument('mode', help='Mode to set')
78
78
  parser.add_argument('paths', nargs='+', help='List of directory paths to search')
79
79
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: skilleter_thingy
3
- Version: 0.0.90
3
+ Version: 0.0.92
4
4
  Summary: A collection of useful utilities, mainly aimed at making Git more friendly
5
5
  Author-email: John Skilleter <john@skilleter.org.uk>
6
6
  Project-URL: Home, https://skilleter.org.uk
@@ -18,6 +18,7 @@ Requires-Dist: pyaml
18
18
  Requires-Dist: pygit2
19
19
  Requires-Dist: python-dateutil
20
20
  Requires-Dist: requests
21
+ Requires-Dist: filetype
21
22
 
22
23
  # Thingy
23
24
 
@@ -49,7 +50,9 @@ The multigit command line format is:
49
50
 
50
51
  Where COMMAND is an internal multigit command if it starts with a '+' and is a git command otherwise.
51
52
 
52
- By default, when a multigit command, other than `init` is run, it runs a git command in each of the working trees. The command takes a number of options that can be used to select the list of working trees that each of the subcommands that it supports runs in:
53
+ By default, when multigit is invoked with a git command, it runs a the command in each of the working trees selected by the command line options passed to multigit (if no options are specified then the command is run in all the working trees.
54
+
55
+ The command takes a number of options that can be used to select the list of working trees that each of the subcommands that it supports runs in:
53
56
 
54
57
  *--repos / -r* Allows a list of working trees to be specfied, either as the full or relative path, the name or a wildcard.
55
58
 
@@ -57,11 +60,11 @@ By default, when a multigit command, other than `init` is run, it runs a git com
57
60
 
58
61
  *--branched / -b* Run only working trees where the current branch that is checked out is NOT the default branch
59
62
 
60
- Multigit supports a small list of subcommands:
63
+ Multigit supports a small list of subcommands, each of which are prefixed with a `+` to distinguish them from Git commands:
61
64
 
62
65
  *+init* - Create or update the configuration file
63
66
 
64
- *+dir* - Given the name of a working tree, prin the location within the multigit tree
67
+ *+dir* - Given the name of a working tree, output the location within the multigit tree of that working tree if the name matches uniquely, or the name of the directory where the multigit configuration file resides if no parameter is specified.
65
68
 
66
69
  *+config* - Print the name and location of the multigit configuration file.
67
70
 
@@ -69,23 +72,17 @@ Any command not prefixed with '+' is run in each of the working trees (filtered
69
72
 
70
73
  For example; `multigit -m commit -ab` would run `git commit -a` in each of the working trees that is branched and contains modified files.
71
74
 
72
- # Miscellaneous Git Utilities
73
-
74
- ## ggit
75
-
76
- Run a git command in all working trees under the current directory (note that this is not related to multigit).
75
+ The `+dir` command can be used with shell aliases (or their equivalent in the user's shell of choice) to create an alias to run, for example, `cd (multigit +dir "$@")` (Bash) or `cd (multigit +dir $argv)` (for the Fish shell) that would cd to the top level direcory.
77
76
 
78
- ## ggrep
79
-
80
- Run 'git grep' in all repos under the current directory (note that this is not related to multigit).
77
+ # Miscellaneous Git Utilities
81
78
 
82
79
  ## gitprompt
83
80
 
84
- Output a string containing colour-coded shell nesting level, current directory and git working tree status (used in the shell prompt).
81
+ Output a string containing colour-coded shell nesting level, current directory and git working tree status (intended to be used in the shell prompt).
85
82
 
86
83
  # Git Extensions
87
84
 
88
- Due to the way that the git command works, these can be run as they were additional git subcommands
85
+ Due to the way that the git command works, these can be run as they were additional git subcommands.
89
86
 
90
87
  ## git ca
91
88
 
@@ -115,16 +112,6 @@ Output the top level directory of the git working tree or return an error if we
115
112
 
116
113
  Console-based git change review tool.
117
114
 
118
- ## GitLab Commands
119
-
120
- ### git mr
121
-
122
- Push a feature branch to GitLab and create a merge request
123
-
124
- ### gl
125
-
126
- Command line for GitLab
127
-
128
115
  # General Commands
129
116
 
130
117
  ## addpath
@@ -137,9 +124,7 @@ Stop or kill docker instances and/or remove docker images.
137
124
 
138
125
  ## ffind
139
126
 
140
- Simple file find utility
141
-
142
- Implements the functionality of the find command that is regularly used in a simpler fashion and ignores all the options that nobody ever uses.
127
+ Simple file find utility - replaces the `find` command with something that is more human-friendly.
143
128
 
144
129
  ## linecount
145
130
 
@@ -251,3 +236,25 @@ Simple console system monitor
251
236
  ## window-rename
252
237
 
253
238
  Monitor window titles and rename them to fit an alphabetical grouping in 'Appname - Document' format.
239
+
240
+ # Obsolescent Commands
241
+
242
+ These commands will probably be retired in future versions of Thingy
243
+
244
+ ## ggit
245
+
246
+ Run a git command in all working trees under the current directory (superceded by multigit).
247
+
248
+ ## ggrep
249
+
250
+ Run 'git grep' in all repos under the current directory (superceded by multigit).
251
+
252
+ ## GitLab Commands
253
+
254
+ ### git mr
255
+
256
+ Push a feature branch to GitLab and create a merge request
257
+
258
+ ### gl
259
+
260
+ Command line for GitLab
@@ -4,44 +4,44 @@ skilleter_thingy/borger.py,sha256=AQX7OHeGXcUjkgyXEWE2h_oOey9eczZBbKjrreXvRAs,78
4
4
  skilleter_thingy/box.py,sha256=WJlviIvPtpdDUt4MfSMcnIo9OxV3j-ua_CAtR8CTYnc,745
5
5
  skilleter_thingy/console_colours.py,sha256=BOS9mo3jChx_FE8L1j488MDoVNgib11KjTRhrz_YRYE,1781
6
6
  skilleter_thingy/diskspacecheck.py,sha256=7xsj4egXXV6jPhXZTe2b5rS03XAmm5uLC5TeiO1NJoE,2072
7
- skilleter_thingy/docker_purge.py,sha256=Qsykf_xR9ekn2u5n0ZNK84jMJbp08CilcCw1EAZKX2I,3307
7
+ skilleter_thingy/docker_purge.py,sha256=j7A1W7dRrRr_VUUAiVaioQ5cM9o0AJU5MAgzYYxAsLg,3307
8
8
  skilleter_thingy/ffind.py,sha256=XJwH27rTLI0-zGD-7s8viyg7_SZjJaq5Q7VBbJPSYSI,19235
9
- skilleter_thingy/ggit.py,sha256=VW1SgNug0Gr_t_BhinHxJSN0hL7UT-5_lAKuImWrZJM,2465
10
- skilleter_thingy/ggrep.py,sha256=Mxme8gliQms9-_uf7CLqD9Zd3ZAVFWjamsK6dWw58jg,5863
11
- skilleter_thingy/git_br.py,sha256=NUCqe85VCgouzEpbMVODaScPIsbCrC4pe7zDMDz02Ro,5799
12
- skilleter_thingy/git_ca.py,sha256=wzYFaQmT1MyOF-Caz0daAUv7OUvrNKCyemIWMEBW-dA,4944
13
- skilleter_thingy/git_cleanup.py,sha256=TnUPYAUnByVyY_dwANzDg2BGGNh3jskNF1DgU3pc8Jk,10201
14
- skilleter_thingy/git_co.py,sha256=VhgfUU-rNeEYh4ZQNlQRRusxDrnEOVmWCB1OQWj5WT4,8205
9
+ skilleter_thingy/ggit.py,sha256=_gJo3Pqangdwszga2YMRshJLNI3eGFZ7aP0Fu68yqzU,2465
10
+ skilleter_thingy/ggrep.py,sha256=0zFyo9pxmYCuWrJgcH3Sj2hr7qOi02ijQuJ5teLbvCI,5863
11
+ skilleter_thingy/git_br.py,sha256=-N6TcN_KwsIGxzNejLalO126HufU8OtQfexdQydiuO4,5799
12
+ skilleter_thingy/git_ca.py,sha256=ewHCGLWpY8SdG_4OFdZ-YFg1GCmCesgQRXTWGMba1Ok,4944
13
+ skilleter_thingy/git_cleanup.py,sha256=8PAxf3ZeKYYAuiBZNHQrKd_PlYYs9_-OwrIWFCC8_xg,10201
14
+ skilleter_thingy/git_co.py,sha256=0i8bOHJIA4zhyy_KWVWh8HbbEuQCKUAxASGZOdr_SYY,8205
15
15
  skilleter_thingy/git_common.py,sha256=ZjNkvIBRDGNLFYwOu9FjeqdDKJdm0sndX5QATtmq290,1879
16
16
  skilleter_thingy/git_hold.py,sha256=Zk6YUhr08znUOdpVJkJAt0rOtrCXnKE0NHoZzoaEEGo,4616
17
- skilleter_thingy/git_mr.py,sha256=2vLzpd5waddNBRlOvQUxwqHVQaK9Rg6FYHb4VMEpS8c,3086
18
- skilleter_thingy/git_parent.py,sha256=znw0ehKau-YocFJu2jLBsYSnLJfUvSNFKSDBdQ9_OTo,2774
19
- skilleter_thingy/git_review.py,sha256=Rh5zVEsvkVg3H4JsvAiG69MsrODgSdS5mirNS8L-c5c,52462
20
- skilleter_thingy/git_update.py,sha256=6mXHSF7fxhKzFxsG3-78JOHYKdmAEE68iq39-Ho5WQU,14181
17
+ skilleter_thingy/git_mr.py,sha256=g33FaRtJTbIQI0tfXv_a042YpGwtbg5fKw072aqjAdw,3086
18
+ skilleter_thingy/git_parent.py,sha256=DLy38mo06R0YDyJWQjrP8pQS-qc7tvLYcn8unKqzEiQ,2774
19
+ skilleter_thingy/git_review.py,sha256=e0yvDD9fIVhscnEP7hY26Od8VUbPEb7iMVMbY63Xjbc,52462
20
+ skilleter_thingy/git_update.py,sha256=WQm-itTpdl1it75pmHbYKDEwXd0PaqXiu6xo_Kyc1aY,14181
21
21
  skilleter_thingy/git_wt.py,sha256=Xm4VBBXMI4GxNtH3QvF-QL9rtvo4RrlWSbNQDFpGZu8,2954
22
22
  skilleter_thingy/gitcmp_helper.py,sha256=wutDHpBPOX8ZsXbsC5ApHxMY5tOKgD3P0eyFVs_mSAI,11214
23
23
  skilleter_thingy/gitprompt.py,sha256=SzSMd0EGI7ftPko80Q2PipwbVA-qjU1jsmdpmTCM5GI,8912
24
24
  skilleter_thingy/gl.py,sha256=9zbGpKxw6lX9RghLkdy-Q5sZlqtbB3uGFO04qTu1dH8,5954
25
25
  skilleter_thingy/gphotosync.py,sha256=Vb2zYTEFp26BYdkG810SRg9afyfDqvq4CLHTk-MFf60,22388
26
- skilleter_thingy/linecount.py,sha256=5voQtjJjDCVx4zjPwVRy620NpuLiwwFitzxjIsRGtxQ,4310
27
- skilleter_thingy/moviemover.py,sha256=j_Xb9_jFdgpFBAXcF4tEqbnKH_FonlnUU39LiCK980k,4470
28
- skilleter_thingy/multigit.py,sha256=-UzmnCHXTq3Wlsem1zm4QsEp8wIB1HZnFvpTo3R3h_o,16575
26
+ skilleter_thingy/linecount.py,sha256=ehTN6VD76i4U5k6dXuYoiqSRHI67_BP-bziklNAJSKY,4309
27
+ skilleter_thingy/moviemover.py,sha256=QzUAWQzQ1AWWREIhl-VMaLo2h8MMhOekBnao5jGWV1s,4470
28
+ skilleter_thingy/multigit.py,sha256=Ge5VpyqhFFF8TEN--M0oIN2g7A_Amht_F1KVhF1VhiU,16670
29
29
  skilleter_thingy/photodupe.py,sha256=l0hbzSLb2Vk2ceteg-x9fHXCEE1uUuFo84hz5rsZUPA,4184
30
- skilleter_thingy/phototidier.py,sha256=5gSjlINUxf3ZQl3NG0o7CsWwODvTbokIMIafLFvn8Hc,7818
30
+ skilleter_thingy/phototidier.py,sha256=BOu-cKHMivDlBqlRqv7sL3J6Ix1K2dxWWNcderldyZo,7818
31
31
  skilleter_thingy/py_audit.py,sha256=xJm5k5qyeA6ii8mODa4dOkmP8L1drv94UHuxR54RsIM,4384
32
- skilleter_thingy/readable.py,sha256=HR68vsm5xki6UF_p_1c6Dqsy9Yi7kW4RI-Z7qsLKor8,15414
33
- skilleter_thingy/remdir.py,sha256=SkN9xEc1ckFGRP4zS2LUbx7Ihw697YMV0ybr_-afiyE,4653
32
+ skilleter_thingy/readable.py,sha256=fzToF2WsLNZC79nBS448z7WwJlzsyFX-8YHqNYDVfsA,15454
33
+ skilleter_thingy/remdir.py,sha256=Ueg3a6_m7y50zWykhKk6pcuz4FKPjoLJVPo9gh_dsic,4653
34
34
  skilleter_thingy/rmdupe.py,sha256=tcX3w8XvliGwBMdSt9BUu07kuDtQEc0IiU8sCxmgzHA,17117
35
35
  skilleter_thingy/rpylint.py,sha256=TzZ5GvWrqgTKYKZwadTvzdbX-DJ8ll4WfVJqtN6IzO0,2635
36
36
  skilleter_thingy/splitpics.py,sha256=qRlJrqet7TEI6SodS4bkuKXQUpOdMaqmjE4c1CR7ouo,3266
37
- skilleter_thingy/strreplace.py,sha256=xsIWw0hc452rYEBtNEQFKIzmV03xjm_Taz-eDTmFFKI,2539
37
+ skilleter_thingy/strreplace.py,sha256=zMhqC38KF0BddTsRM5Pa99HU3KXvxXg942qxRK-LALA,2539
38
38
  skilleter_thingy/sysmon.py,sha256=XRZG6EVSzoVYan_N16qVB1l1RaU51uvLWlRA0CDjC54,11348
39
39
  skilleter_thingy/tfm.py,sha256=xMsqcuNJ32PwKF5vO3SO6etlbJKbCLUJhSdC2w0clwE,33829
40
40
  skilleter_thingy/tfparse.py,sha256=u1IZH2J_WH1aORyMozKSI2JKok7_S1MMJhiobzmhlUI,2988
41
- skilleter_thingy/trimpath.py,sha256=25On5OHTT1rXTzTuRWQeS3FWtTd0XZr5NFDDACR6AGM,2294
41
+ skilleter_thingy/trimpath.py,sha256=vJgPKF5zTC1HnLEViucB4JVPIGbwLEuhWNxn9FcWOlM,2294
42
42
  skilleter_thingy/venv_create.py,sha256=lMcGvWNwP-ZlyPJ1eZU-PHNOnscZHjtjhoT6sLfhIU4,1153
43
43
  skilleter_thingy/window_rename.py,sha256=dCBgZqih_3YKHt35hsOAhARFp3QxOi8w8huC63sqJK8,3128
44
- skilleter_thingy/xchmod.py,sha256=NgSNpB7mU28n21xC-PbDF2Y0nKPmvVFOJhtm_r6OT_0,4604
44
+ skilleter_thingy/xchmod.py,sha256=T89xiH_po0nvH5T1AGgQOD5yhjKd9-LcHcmez3IORww,4604
45
45
  skilleter_thingy/yamlcheck.py,sha256=FXylZ5NtHirDlPVhVEUZUZkTugVR-g51BbjaN06akAc,2868
46
46
  skilleter_thingy/thingy/__init__.py,sha256=rVPTxm8L5w52U0YdTd7r_D44SBP7pS3JCJtsf0iIsow,110
47
47
  skilleter_thingy/thingy/colour.py,sha256=-I5HOfWZNVxN85DjNPpzYLIUlzGrzMr3oLRwim7O6us,7103
@@ -61,9 +61,9 @@ skilleter_thingy/thingy/run.py,sha256=6SNKWF01fSxzB10GMU9ajraXYZqAL1w0PXkqjJdr1U
61
61
  skilleter_thingy/thingy/tfm_pane.py,sha256=oqy5zBzKwfbjbGqetbbhpKi4x5He7sl4qkmhUeqtdZc,19789
62
62
  skilleter_thingy/thingy/tidy.py,sha256=71DCyj0VJrj52RmjQyj1eOiQJIfy5EIPHuThOrS6ZTA,5876
63
63
  skilleter_thingy/thingy/venv_template.py,sha256=SsVNvSwojd8NnFeQaZPCRQYTNdwJRplpZpygbUEXRnY,1015
64
- skilleter_thingy-0.0.90.dist-info/LICENSE,sha256=ljOS4DjXvqEo5VzGfdaRwgRZPbNScGBmfwyC8PChvmQ,32422
65
- skilleter_thingy-0.0.90.dist-info/METADATA,sha256=JqhKf6MsYFBPaHNvtsPxEv0kbzzd9kVyWYdRmwDEVS8,8236
66
- skilleter_thingy-0.0.90.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
67
- skilleter_thingy-0.0.90.dist-info/entry_points.txt,sha256=u5ymS-KPljIGTnprV5yJsAjz7qgeT2BZ-Qo_Con_PFM,2145
68
- skilleter_thingy-0.0.90.dist-info/top_level.txt,sha256=8-JhgToBBiWURunmvfpSxEvNkDHQQ7r25-aBXtZv61g,17
69
- skilleter_thingy-0.0.90.dist-info/RECORD,,
64
+ skilleter_thingy-0.0.92.dist-info/LICENSE,sha256=ljOS4DjXvqEo5VzGfdaRwgRZPbNScGBmfwyC8PChvmQ,32422
65
+ skilleter_thingy-0.0.92.dist-info/METADATA,sha256=au3jgzKaEu5F-JiZre_gFLBzP8tP_CtSiphrEj7IE34,8894
66
+ skilleter_thingy-0.0.92.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
67
+ skilleter_thingy-0.0.92.dist-info/entry_points.txt,sha256=u5ymS-KPljIGTnprV5yJsAjz7qgeT2BZ-Qo_Con_PFM,2145
68
+ skilleter_thingy-0.0.92.dist-info/top_level.txt,sha256=8-JhgToBBiWURunmvfpSxEvNkDHQQ7r25-aBXtZv61g,17
69
+ skilleter_thingy-0.0.92.dist-info/RECORD,,