skilleter-thingy 0.0.99__tar.gz → 0.1.1__tar.gz

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.

Files changed (73) hide show
  1. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/PKG-INFO +1 -1
  2. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/pyproject.toml +1 -1
  3. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/multigit.py +24 -8
  4. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy.egg-info/PKG-INFO +1 -1
  5. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/LICENSE +0 -0
  6. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/README.md +0 -0
  7. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/setup.cfg +0 -0
  8. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/__init__.py +0 -0
  9. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/addpath.py +0 -0
  10. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/borger.py +0 -0
  11. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/console_colours.py +0 -0
  12. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/diskspacecheck.py +0 -0
  13. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/docker_purge.py +0 -0
  14. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/ffind.py +0 -0
  15. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/ggit.py +0 -0
  16. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/ggrep.py +0 -0
  17. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/git_br.py +0 -0
  18. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/git_ca.py +0 -0
  19. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/git_cleanup.py +0 -0
  20. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/git_co.py +0 -0
  21. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/git_common.py +0 -0
  22. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/git_hold.py +0 -0
  23. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/git_mr.py +0 -0
  24. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/git_parent.py +0 -0
  25. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/git_review.py +0 -0
  26. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/git_update.py +0 -0
  27. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/git_wt.py +0 -0
  28. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/gitcmp_helper.py +0 -0
  29. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/gitprompt.py +0 -0
  30. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/gl.py +0 -0
  31. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/gphotosync.py +0 -0
  32. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/linecount.py +0 -0
  33. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/moviemover.py +0 -0
  34. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/photodupe.py +0 -0
  35. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/phototidier.py +0 -0
  36. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/py_audit.py +0 -0
  37. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/readable.py +0 -0
  38. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/remdir.py +0 -0
  39. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/rmdupe.py +0 -0
  40. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/rpylint.py +0 -0
  41. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/splitpics.py +0 -0
  42. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/strreplace.py +0 -0
  43. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/sysmon.py +0 -0
  44. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/tfm.py +0 -0
  45. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/tfparse.py +0 -0
  46. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/__init__.py +0 -0
  47. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/colour.py +0 -0
  48. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/dc_curses.py +0 -0
  49. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/dc_defaults.py +0 -0
  50. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/dc_util.py +0 -0
  51. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/dircolors.py +0 -0
  52. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/docker.py +0 -0
  53. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/files.py +0 -0
  54. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/git.py +0 -0
  55. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/git2.py +0 -0
  56. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/gitlab.py +0 -0
  57. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/path.py +0 -0
  58. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/popup.py +0 -0
  59. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/process.py +0 -0
  60. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/run.py +0 -0
  61. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/tfm_pane.py +0 -0
  62. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/tidy.py +0 -0
  63. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/thingy/venv_template.py +0 -0
  64. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/trimpath.py +0 -0
  65. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/venv_create.py +0 -0
  66. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/window_rename.py +0 -0
  67. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/xchmod.py +0 -0
  68. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy/yamlcheck.py +0 -0
  69. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy.egg-info/SOURCES.txt +0 -0
  70. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy.egg-info/dependency_links.txt +0 -0
  71. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy.egg-info/entry_points.txt +0 -0
  72. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy.egg-info/requires.txt +0 -0
  73. {skilleter_thingy-0.0.99 → skilleter_thingy-0.1.1}/skilleter_thingy.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: skilleter_thingy
3
- Version: 0.0.99
3
+ Version: 0.1.1
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
@@ -7,7 +7,7 @@ name = "skilleter_thingy"
7
7
 
8
8
  # Version must be incremented to install updated Thingy
9
9
 
10
- version = "0.0.99"
10
+ version = "0.1.1"
11
11
 
12
12
  authors = [
13
13
  {name="John Skilleter", email="john@skilleter.org.uk"},
@@ -41,6 +41,9 @@ import thingy.colour as colour
41
41
  # TODO: If run in a subdirectory, only process working trees in that tree (or have an option to do so, or an option _not_ to do so; --all)
42
42
  # TODO: Ability to read default configuration options from ~/.config/thingy/multigit.rc - these are insert before argv[1] before argparse called
43
43
  # TODO: When we have something with multiple matches display a menu for user to select the one that they one - make it a library routine so can be used, for instance, for branch selection
44
+ # TODO: Use pygit2
45
+ # TODO: Use PathLib
46
+ # TODO: Shell autocomplete for +dir
44
47
  ################################################################################
45
48
 
46
49
  DEFAULT_CONFIG_FILE = 'multigit.toml'
@@ -52,7 +55,7 @@ DEFAULT_BRANCH = 'DEFAULT'
52
55
 
53
56
  ################################################################################
54
57
 
55
- HELP_INFO = """usage: multigit [-h] [--verbose] [--quiet] [--config CONFIG] [--repos REPOS] [--modified] [--branched] [--tag TAGS]
58
+ HELP_INFO = """usage: multigit [-h] [--verbose] [--quiet] [--config CONFIG] [--repos REPOS] [--modified] [--branched] [--sub] [--tag TAGS]
56
59
  {+init, +config, +dir, GIT_COMMAND} ...
57
60
 
58
61
  Run git commands in multiple Git repos. DISCLAIMER: This is beta-quality software, with missing features and liable to fail with a stack trace, but shouldn't eat your data
@@ -69,6 +72,7 @@ options:
69
72
  --branched, -b Select repos that do not have the default branch checked out
70
73
  --tag TAG, -t TAG Select repos that have the specified tag (can be issued multiple times on the command line)
71
74
  --continue, -C Continue if a git command returns an error (by default, executation terminates when a command fails)
75
+ --sub, -s Select only the repos in the current directory and subdirectories
72
76
 
73
77
  Sub-commands:
74
78
  {+init,+dir,+config,GIT_COMMAND}
@@ -107,6 +111,7 @@ class Arguments():
107
111
  tag: list[str] = field(default_factory=list)
108
112
  modified: bool = False
109
113
  branched: bool = False
114
+ subdirectories: bool = False
110
115
 
111
116
  # Command to run with parameters
112
117
 
@@ -190,7 +195,7 @@ def find_working_trees(args):
190
195
 
191
196
  def select_git_repos(args, config):
192
197
  """Return git repos from the configuration that match the criteria on the
193
- multigit command line (the --repos, --tag, --modified and --branched options)
198
+ multigit command line (the --repos, --tag, --modified, --sub and --branched options)
194
199
  or, return them all if no relevant options specified"""
195
200
 
196
201
  for repo_path in config.sections():
@@ -242,6 +247,14 @@ def select_git_repos(args, config):
242
247
  else:
243
248
  matching = False
244
249
 
250
+ # If subdirectories specified, only match if the repo is in the current directory tree
251
+
252
+ if matching and args.subdirectories:
253
+ repo_path_rel = os.path.relpath(repo_path)
254
+
255
+ if repo_path_rel == '..' or repo_path_rel.startswith('../'):
256
+ matching = False
257
+
245
258
  # If we have a match, yield the config entry to the caller
246
259
 
247
260
  if matching:
@@ -263,8 +276,8 @@ def mg_init(args, config, console):
263
276
 
264
277
  # Sanity checks
265
278
 
266
- if args.modified or args.branched or args.tag:
267
- error('The "--tag", "--modified" and "--branched" options cannot be used with the "init" subcommand')
279
+ if args.modified or args.branched or args.tag or args.subdirectories:
280
+ error('The "--tag", "--modified" "--sub", and "--branched" options cannot be used with the "init" subcommand')
268
281
 
269
282
  # Search for .git directories and add any that aren't already in the configuration
270
283
 
@@ -361,8 +374,8 @@ def mg_dir(args, config, console):
361
374
  error(f'No matches with [BLUE:{search_name}]')
362
375
 
363
376
  if len(destination) > 1:
364
- dest_list = "\n\t".join(destination)
365
- error(f'Multiple matches with [BLUE:{search_name}]: {dest_list}')
377
+ dest_list = "\n\t".join([os.path.relpath(d) for d in destination])
378
+ error(f'Multiple matches with [BLUE:{search_name}]: \n\t{dest_list}')
366
379
 
367
380
  colour.write(os.path.join(os.path.dirname(args.configuration_file), destination[0]))
368
381
  else:
@@ -424,7 +437,7 @@ def mg_config(args, config, console):
424
437
  if len(args.parameters):
425
438
  error('The +config command does not take parameters')
426
439
 
427
- colour.write(args.configuration_file)
440
+ colour.write(os.path.relpath(args.configuration_file))
428
441
 
429
442
  ################################################################################
430
443
 
@@ -440,7 +453,7 @@ def run_git_command(args, config, console):
440
453
  for cmd in args.parameters:
441
454
  repo_command.append(branch_name(cmd, repo['default branch']))
442
455
 
443
- colour.write(f'\n[BOLD:{repo.name}]\n')
456
+ colour.write(f'\n[BOLD:{os.path.relpath(repo.name)}]\n')
444
457
 
445
458
  _, status = git.git_run_status(repo_command, path=repo.name, redirect=False)
446
459
 
@@ -505,6 +518,9 @@ def parse_command_line():
505
518
  elif param in ('--branched', '-b'):
506
519
  args.branched = True
507
520
 
521
+ elif param in ('--sub', '-s'):
522
+ args.subdirectories = True
523
+
508
524
  elif param in ('--continue', '-C'):
509
525
  args.error_continue = True
510
526
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: skilleter_thingy
3
- Version: 0.0.99
3
+ Version: 0.1.1
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