skilleter-thingy 0.0.97__tar.gz → 0.0.99__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.
- skilleter_thingy-0.0.99/PKG-INFO +655 -0
- skilleter_thingy-0.0.99/README.md +633 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/pyproject.toml +1 -1
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/borger.py +5 -1
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/docker_purge.py +1 -1
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/gphotosync.py +2 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/multigit.py +11 -16
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/rmdupe.py +4 -1
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/colour.py +17 -3
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/git.py +2 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/git2.py +6 -0
- skilleter_thingy-0.0.99/skilleter_thingy.egg-info/PKG-INFO +655 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy.egg-info/SOURCES.txt +0 -1
- skilleter_thingy-0.0.97/PKG-INFO +0 -349
- skilleter_thingy-0.0.97/README.md +0 -327
- skilleter_thingy-0.0.97/skilleter_thingy/box.py +0 -31
- skilleter_thingy-0.0.97/skilleter_thingy.egg-info/PKG-INFO +0 -349
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/LICENSE +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/setup.cfg +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/__init__.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/addpath.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/console_colours.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/diskspacecheck.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/ffind.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/ggit.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/ggrep.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/git_br.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/git_ca.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/git_cleanup.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/git_co.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/git_common.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/git_hold.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/git_mr.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/git_parent.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/git_review.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/git_update.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/git_wt.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/gitcmp_helper.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/gitprompt.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/gl.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/linecount.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/moviemover.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/photodupe.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/phototidier.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/py_audit.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/readable.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/remdir.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/rpylint.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/splitpics.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/strreplace.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/sysmon.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/tfm.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/tfparse.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/__init__.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/dc_curses.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/dc_defaults.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/dc_util.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/dircolors.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/docker.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/files.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/gitlab.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/path.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/popup.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/process.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/run.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/tfm_pane.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/tidy.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/thingy/venv_template.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/trimpath.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/venv_create.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/window_rename.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/xchmod.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy/yamlcheck.py +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy.egg-info/dependency_links.txt +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy.egg-info/entry_points.txt +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy.egg-info/requires.txt +0 -0
- {skilleter_thingy-0.0.97 → skilleter_thingy-0.0.99}/skilleter_thingy.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,655 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: skilleter_thingy
|
|
3
|
+
Version: 0.0.99
|
|
4
|
+
Summary: A collection of useful utilities, mainly aimed at making Git more friendly
|
|
5
|
+
Author-email: John Skilleter <john@skilleter.org.uk>
|
|
6
|
+
Project-URL: Home, https://skilleter.org.uk
|
|
7
|
+
Classifier: Programming Language :: Python :: 3
|
|
8
|
+
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Requires-Python: >=3.8
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Requires-Dist: imagehash
|
|
14
|
+
Requires-Dist: inotify
|
|
15
|
+
Requires-Dist: pillow
|
|
16
|
+
Requires-Dist: psutil
|
|
17
|
+
Requires-Dist: pyaml
|
|
18
|
+
Requires-Dist: pygit2
|
|
19
|
+
Requires-Dist: python-dateutil
|
|
20
|
+
Requires-Dist: requests
|
|
21
|
+
Requires-Dist: filetype
|
|
22
|
+
|
|
23
|
+
# Thingy
|
|
24
|
+
|
|
25
|
+
Licence: GPL v3
|
|
26
|
+
|
|
27
|
+
Author: John Skilleter v0.99
|
|
28
|
+
|
|
29
|
+
A collection of shell utilities and configuration stuff for Linux and MacOS. Untested on other operating systems.
|
|
30
|
+
|
|
31
|
+
Permanently (for the foreseeable future!) in a beta stage - usable, with a few rough edges, and probably with bugs when used in way I'm not expecting!
|
|
32
|
+
|
|
33
|
+
Install from PyPi via pip or pipx as the `skilleter-thingy` package; for instance - `pipx install skilleter_thingy`
|
|
34
|
+
|
|
35
|
+
The commands are categorised into:
|
|
36
|
+
|
|
37
|
+
* Git working tree management
|
|
38
|
+
* Miscellaneous commands
|
|
39
|
+
* Git Extensions
|
|
40
|
+
* General-purpose commands
|
|
41
|
+
|
|
42
|
+
# Git Working Tree Management
|
|
43
|
+
|
|
44
|
+
## Multigit
|
|
45
|
+
|
|
46
|
+
Multigit is a tool for managing a collection of related git working trees.
|
|
47
|
+
|
|
48
|
+
This is intended for use in a situation where you have a collection of related git working trees organised in a directory hierarchy which aren't managed using git submodules or any other tool. It allows you to run git commands on multiple working trees at once, without navigating around the different working trees to do so and to select which working trees commands are run in.
|
|
49
|
+
|
|
50
|
+
For ease of use it is recommended that you create an alias for multigit called `mg`. How you do this is dependent on the shell you use, for instance in Bash, you could create an alias in your `~/.bashrc` file:
|
|
51
|
+
|
|
52
|
+
alias mg="multigit $@"
|
|
53
|
+
|
|
54
|
+
## Initialisation
|
|
55
|
+
|
|
56
|
+
To use multigit, start by creating working trees for the repositories that you want to use in a directory tree - the working trees can be at different levels or even nested, for example:
|
|
57
|
+
|
|
58
|
+
multigit_tree
|
|
59
|
+
|
|
|
60
|
+
+----working tree 1
|
|
61
|
+
|
|
|
62
|
+
+---+subdirectory
|
|
63
|
+
| |
|
|
64
|
+
| +----working tree 2
|
|
65
|
+
| |
|
|
66
|
+
| +----working tree 3
|
|
67
|
+
|
|
|
68
|
+
+----working tree 4
|
|
69
|
+
|
|
70
|
+
Start by running ensuring that the default branch (e.g. `main`) is checked out in each of the working trees and, in the top-level directory, run `multigit init` to create the configuration file which, by default is called `multigit.toml` - this is just a text file that sets the configuration for each working tree in terms of name, origin, default branch, tags and location.
|
|
71
|
+
|
|
72
|
+
## Multigit Command Line
|
|
73
|
+
|
|
74
|
+
The multigit command line format is:
|
|
75
|
+
|
|
76
|
+
multigit OPTIONS COMMAND
|
|
77
|
+
|
|
78
|
+
Where COMMAND is an internal multigit command if it starts with a `+` and is a git command otherwise (including the additional git commands described in this document).
|
|
79
|
+
|
|
80
|
+
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.
|
|
81
|
+
|
|
82
|
+
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:
|
|
83
|
+
|
|
84
|
+
`--repos REPO` / `-r REPO` Allows a list of working trees to be specfied, either by path, name or a wildcard matching either.
|
|
85
|
+
|
|
86
|
+
`--modified` / `-m` Run only in working trees containing locally modified files
|
|
87
|
+
|
|
88
|
+
`--branched` / `-b` Run only in working trees where the current branch that is checked out is NOT the default branch
|
|
89
|
+
|
|
90
|
+
`--tag TAG` / `-t TAG` Run only in working trees that are tagged with the specified tag
|
|
91
|
+
|
|
92
|
+
These options are AND-ed together, so specifying `--modified --branched --tag WOMBAT` will select only working trees that are modified AND branched AND tagged with `WOMBAT`, but the parameters to the `--repos` and `--tag` options are OR-ed together, so specifying `--tag WOMBAT --tag EMU` will select repos that are tagged as `WOMBAT` *OR* `EMU`.
|
|
93
|
+
|
|
94
|
+
Multigit tags are stored in the configuration file, not within the working tree and each working tree can have multiple tags.
|
|
95
|
+
|
|
96
|
+
## Multigit Commands
|
|
97
|
+
|
|
98
|
+
Multigit supports a small list of subcommands, each of which are prefixed with a `+` to distinguish them from Git commands:
|
|
99
|
+
|
|
100
|
+
`+init` - Create or update the configuration file
|
|
101
|
+
|
|
102
|
+
`+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.
|
|
103
|
+
|
|
104
|
+
`+config` - Print the name and location of the multigit configuration file.
|
|
105
|
+
|
|
106
|
+
`+tag TAG` - If no tag specified list tags applied to the specified working trees. If a tag *is* specified, then *apply* the tag to the specified working trees.
|
|
107
|
+
|
|
108
|
+
`+untag TAG` - Remove the tag from the specified working trees (do nothing if the tag is not applied in the first place).
|
|
109
|
+
|
|
110
|
+
Any command *not* prefixed with `+` is run in each of the working trees (filtered by the various multigit options) as a git command.
|
|
111
|
+
|
|
112
|
+
For example; `multigit -m commit -ab` would run `git commit -a` in each of the working trees that is branched and contains modified files.
|
|
113
|
+
|
|
114
|
+
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 directory.
|
|
115
|
+
|
|
116
|
+
# Miscellaneous Git Utilities
|
|
117
|
+
|
|
118
|
+
## gitprompt
|
|
119
|
+
|
|
120
|
+
Output a string containing colour-coded shell nesting level, current directory and git working tree status. It is intended to be used in the shell prompt; for instance, for Bash via adding:
|
|
121
|
+
|
|
122
|
+
export PS1=$(gitprompt)
|
|
123
|
+
|
|
124
|
+
to the `~/.bashrc` file.
|
|
125
|
+
|
|
126
|
+
The appearance of the prompt is controlled by configuration settings in the `.gitconfig` file:
|
|
127
|
+
|
|
128
|
+
[prompt]
|
|
129
|
+
prefix = 0..2
|
|
130
|
+
|
|
131
|
+
The `prefix` value determines what git status information is shown in the prompt:
|
|
132
|
+
|
|
133
|
+
* 0 - No status information
|
|
134
|
+
* 1 - A single letter followed by a file count showing the number of stashed, untracked, modified, etc. files in the working tree
|
|
135
|
+
* 2 - As 1, but using a word, rather than a single letter
|
|
136
|
+
|
|
137
|
+
If a rebase, bisect or merge is process, this is also shown in the prompt.
|
|
138
|
+
|
|
139
|
+
The name of the repo and the current branch are also appended and the prompt is also colour-coded according to the state of the working tree.
|
|
140
|
+
|
|
141
|
+
# Git Extensions
|
|
142
|
+
|
|
143
|
+
Due to the way that the git command works, these can be run as they were additional git subcommands, although, due to a limitation in git, the only things that does not work is the `--help` option where the command has to be run with a hyphen between `git` and the subcommand - for example `git ca --help` does not work, but `git-ca --help` does.
|
|
144
|
+
|
|
145
|
+
## Branch Names
|
|
146
|
+
|
|
147
|
+
Where one of the git extensions takes an existing branch name as a parameter, the branch name can be abbreviated and the abbreviated form is expanded according to the following rules:
|
|
148
|
+
|
|
149
|
+
* If the specified branch name exactly matches an existing branch, tag or commit ID then that is used (this includes remote branches where appropriate, if no local branches match).
|
|
150
|
+
* Otherwise, the branch name is compared to existing branches (again, including remote branches where appropriate, if no local branches match) and, if the specified name uniquely partially matches an existing branch (optionally using `*` and `?` wildcard characters) that branch is used. If it matches multiple branches than an error is reported.
|
|
151
|
+
|
|
152
|
+
For example, given a repo with the following branches:
|
|
153
|
+
|
|
154
|
+
origin/wombat
|
|
155
|
+
origin/platypus
|
|
156
|
+
wombat
|
|
157
|
+
emu
|
|
158
|
+
battery
|
|
159
|
+
chaos
|
|
160
|
+
|
|
161
|
+
Then:
|
|
162
|
+
|
|
163
|
+
* 'emu' will match 'emu'
|
|
164
|
+
* 'wombat' will match 'wombat' but not 'origin/wombat' since the local branch takes precedence
|
|
165
|
+
* 'at' will match both 'wombat' and 'battery' and will report an error
|
|
166
|
+
* 'pus' will match 'origin/platypus'
|
|
167
|
+
|
|
168
|
+
This is most useful where branches contain ticket numbers so, for instance given a branch called `feature/SKIL-103` you can check it out using `git co 103` assuming no other local branches contain `103` in their name.
|
|
169
|
+
|
|
170
|
+
Note that the concept of the default branch `DEFAULT` mentioned above *only* applies when using the `multigit` command, although some of the commands will treat branches called `master` or `main` as special cases (see the individual command documentation).
|
|
171
|
+
|
|
172
|
+
## git ca
|
|
173
|
+
|
|
174
|
+
Improved version of 'git commit --amend'. Updates files that are already in the commit and, optionally, adds and commits additional files.
|
|
175
|
+
|
|
176
|
+
usage: git-ca [-h] [--added] [--all] [--everything] [--ignored] [--patch] [--verbose] [--dry-run] [files ...]
|
|
177
|
+
|
|
178
|
+
positional arguments:
|
|
179
|
+
files List of files to add to the commit
|
|
180
|
+
|
|
181
|
+
options:
|
|
182
|
+
-h, --help show this help message and exit
|
|
183
|
+
--added, -A Update files in the current commit, including files added with `git add`
|
|
184
|
+
--all, -a Append all locally-modified, tracked files to the current commit
|
|
185
|
+
--everything, -e Append all modified and untracked files to the current commit (implies `~--all`)
|
|
186
|
+
--ignored, -i Include files normally hidden by `.gitignore`
|
|
187
|
+
--patch, -p Use the interactive patch selection interface to chose which changes to commit.
|
|
188
|
+
--verbose, -v Verbose mode
|
|
189
|
+
--dry-run, -D Dry-run
|
|
190
|
+
|
|
191
|
+
## git cleanup
|
|
192
|
+
|
|
193
|
+
List or delete branches that have already been merged and delete tracking branches that are no longer on the remote.
|
|
194
|
+
|
|
195
|
+
git-cleanup [-h] [--delete] [--master MASTER] [--force] [--unmerged] [--yes] [--debug] [branches ...]
|
|
196
|
+
|
|
197
|
+
positional arguments:
|
|
198
|
+
|
|
199
|
+
branches List of branches to check (default is all branches)
|
|
200
|
+
|
|
201
|
+
options:
|
|
202
|
+
-h, --help show this help message and exit
|
|
203
|
+
--delete, -d Delete all branches that have been merged
|
|
204
|
+
--master MASTER, -m MASTER, --main MASTER
|
|
205
|
+
Specify the master branch (Attempts to read this from GitLab or defaults to "develop" if present or "master" or "main" otherwise
|
|
206
|
+
--force, -f Allow protected branches (e.g. master) to be removed
|
|
207
|
+
--unmerged, -u List branches that have NOT been merged
|
|
208
|
+
--yes, -y Assume "yes" in response to any prompts (e.g. to delete branches)
|
|
209
|
+
--debug Enable debug output
|
|
210
|
+
|
|
211
|
+
## git co
|
|
212
|
+
|
|
213
|
+
Equivalent to `git checkout` but with enhanced branch matching as described above. The command does not support the full range of options supported by the `git checkout` comamnd which should still be used where additional functionality is required.
|
|
214
|
+
|
|
215
|
+
git-co [-h] [--branch] [--update] [--rebase] [--force] [--exact] [--debug] branchname
|
|
216
|
+
|
|
217
|
+
positional arguments:
|
|
218
|
+
|
|
219
|
+
branchname The branch name (or a partial name that matches uniquely against a local branch, remote branch, commit ID or tag)
|
|
220
|
+
|
|
221
|
+
options:
|
|
222
|
+
-h, --help show this help message and exit
|
|
223
|
+
--branch, -b Create the specified branch
|
|
224
|
+
--update, -u If a remote branch exists, delete any local branch and check out the remote version
|
|
225
|
+
--rebase, -r Rebase the branch onto its parent after checking it out
|
|
226
|
+
--force, -f 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)
|
|
227
|
+
--exact, -e Do not use branch name matching - check out the branch as specified (if it exists)
|
|
228
|
+
--debug Enable debug output
|
|
229
|
+
|
|
230
|
+
## git parent
|
|
231
|
+
|
|
232
|
+
Attempt to determine the parent branch for the specified branch (defaulting to the current one).
|
|
233
|
+
|
|
234
|
+
git-parent [-h] [--all] [--verbose] [branch]
|
|
235
|
+
|
|
236
|
+
Attempt to determine the parent branch for the specified branch (defaulting to the current one)
|
|
237
|
+
|
|
238
|
+
positional arguments:
|
|
239
|
+
branch Branch, commit or commit (defaults to current branch; main)
|
|
240
|
+
|
|
241
|
+
options:
|
|
242
|
+
-h, --help show this help message and exit
|
|
243
|
+
--all, -a Include feature branches as possible parents
|
|
244
|
+
--verbose, -v Report verbose results (includes number of commits between branch and parent)
|
|
245
|
+
|
|
246
|
+
## git update
|
|
247
|
+
|
|
248
|
+
Update the rworking tree from the remote, rebase local branch(es) against their parents and optionally run git cleanup.
|
|
249
|
+
|
|
250
|
+
git-update [-h] [--cleanup] [--all] [--everything] [--default] [--parent PARENT] [--all-parents] [--stop] [--ignore IGNORE] [--verbose] [--dry-run]
|
|
251
|
+
|
|
252
|
+
options:
|
|
253
|
+
-h, --help show this help message and exit
|
|
254
|
+
--cleanup, -c After updating a branch, delete it if there are no differences between it and its parent branch
|
|
255
|
+
--all, -a Update all local branches, not just the current one
|
|
256
|
+
--everything, -A Update all local branches, not just the current one and ignore the default ignore list specified in the Git configuration
|
|
257
|
+
--default, -d Checkout the main or master branch on completion
|
|
258
|
+
--parent PARENT, -p PARENT
|
|
259
|
+
Specify the parent branch, rather than trying to work it out
|
|
260
|
+
--all-parents, -P Feature branches are not considered as alternative parents unless this option is specified
|
|
261
|
+
--stop, -s Stop if a rebase problem occurs, instead of skipping the branch
|
|
262
|
+
--ignore IGNORE, -i IGNORE
|
|
263
|
+
List of one or more wildcard branch names not to attempt to update (uses update.ignore from the Git configuration if not specified)
|
|
264
|
+
--verbose Enable verbose output
|
|
265
|
+
--dry-run Report what would be done without actually doing it
|
|
266
|
+
|
|
267
|
+
## git wt
|
|
268
|
+
|
|
269
|
+
Output the top level directory of the git working tree or return an error if we are not in a git working tree.
|
|
270
|
+
|
|
271
|
+
git-wt [-h] [--parent] [--dir DIR] [level]
|
|
272
|
+
|
|
273
|
+
positional arguments:
|
|
274
|
+
level Number of levels below the top-level directory to report
|
|
275
|
+
|
|
276
|
+
options:
|
|
277
|
+
-h, --help show this help message and exit
|
|
278
|
+
--parent, -p If we are already at the top of the working tree, check if the parent directory is in a working tree and output the top-level directory of that tree.
|
|
279
|
+
--dir DIR, -d DIR Find the location of the top-level directory in the working tree starting at the specified directory
|
|
280
|
+
|
|
281
|
+
## git review
|
|
282
|
+
|
|
283
|
+
Menu-driven Git code review tool
|
|
284
|
+
|
|
285
|
+
git-review [-h] [--commit COMMIT] [--branch BRANCH] [--change] [--debug] [--dir DIR] [--difftool DIFFTOOL] [commits ...]
|
|
286
|
+
|
|
287
|
+
positional arguments:
|
|
288
|
+
commits Commit(s) or paths to compare
|
|
289
|
+
|
|
290
|
+
options:
|
|
291
|
+
-h, --help show this help message and exit
|
|
292
|
+
--commit COMMIT, -c COMMIT
|
|
293
|
+
Compare the specified commit with its parent
|
|
294
|
+
--branch BRANCH, -b BRANCH
|
|
295
|
+
Compare the specified commit to branch point on specified branch
|
|
296
|
+
--change, -C Compare the current commit with its parent
|
|
297
|
+
--debug, -d Start a debug session over Telnet using pudb
|
|
298
|
+
--dir DIR Work in the specified directory
|
|
299
|
+
--difftool DIFFTOOL Override the default git diff tool
|
|
300
|
+
|
|
301
|
+
# General Commands
|
|
302
|
+
|
|
303
|
+
## addpath
|
|
304
|
+
|
|
305
|
+
Add or remove entries from a path list (e.g. as used by the PATH environment variable)
|
|
306
|
+
|
|
307
|
+
addpath [-h] [--add ADD] [--prefix PREFIX] [--suffix SUFFIX] [--remove REMOVE] [--force FORCE] [--separator SEPARATOR] path
|
|
308
|
+
|
|
309
|
+
positional arguments:
|
|
310
|
+
path The path to modify
|
|
311
|
+
|
|
312
|
+
options:
|
|
313
|
+
-h, --help show this help message and exit
|
|
314
|
+
--add ADD Add an entry to the front of the path (do nothing if it is already present in the path)
|
|
315
|
+
--prefix PREFIX Add an entry to the front of the path (or move it there if it is already present)
|
|
316
|
+
--suffix SUFFIX Add an entry to the end of the path (or move it there if it is already present)
|
|
317
|
+
--remove REMOVE Remove an entry from the path (do nothing if it is not present
|
|
318
|
+
--force FORCE Add entries even if a corresponding directory does not exist
|
|
319
|
+
--separator SEPARATOR
|
|
320
|
+
Override the default path separator
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
## docker-purge
|
|
324
|
+
|
|
325
|
+
Stop or kill docker instances and/or remove docker images.
|
|
326
|
+
|
|
327
|
+
docker-purge [-h] [--stop] [--kill] [--remove] [--list] [--force] [--debug] [images ...]
|
|
328
|
+
|
|
329
|
+
positional arguments:
|
|
330
|
+
images List of Docker containers (regular expression)
|
|
331
|
+
|
|
332
|
+
options:
|
|
333
|
+
-h, --help show this help message and exit
|
|
334
|
+
--stop, -s Stop Docker instances
|
|
335
|
+
--kill, -k Kill Docker instances
|
|
336
|
+
--remove, -r Remove Docker images
|
|
337
|
+
--list, -l List what would be done without doing it
|
|
338
|
+
--force, -f Forcibly kill/remove instances
|
|
339
|
+
--debug Enable debug output
|
|
340
|
+
|
|
341
|
+
## ffind
|
|
342
|
+
|
|
343
|
+
Simple file find utility - replaces the `find` command with something that is more human-friendly.
|
|
344
|
+
|
|
345
|
+
ffind [-h] [--path PATH] [--long] [--colour] [--no-colour] [--all] [--zero] [--iname] [--follow] [--git] [--diff] [--regex] [--fullpath] [--human-readable] [--grep GREP] [--abspath]
|
|
346
|
+
[--unquoted] [--quiet] [--invert] [--exec EXEC] [--count] [--count-only] [--type TYPE] [--file] [--dir] [--block] [--char] [--pipe] [--symlink] [--socket] [--any] [--verbose]
|
|
347
|
+
[--debug]
|
|
348
|
+
[patterns ...]
|
|
349
|
+
|
|
350
|
+
positional arguments:
|
|
351
|
+
patterns List of things to search for.
|
|
352
|
+
|
|
353
|
+
options:
|
|
354
|
+
-h, --help show this help message and exit
|
|
355
|
+
--path PATH, -p PATH Search the specified path, rather than the current directory
|
|
356
|
+
--long, -l Output details of any files that match (cannot be used with -0/--zero)
|
|
357
|
+
--colour, -C, --color
|
|
358
|
+
Colourise output even if not outputting to the terminal
|
|
359
|
+
--no-colour, -N, --no-color
|
|
360
|
+
Never colourise output
|
|
361
|
+
--all Search all directories (do not skip .git, and similar control directories)
|
|
362
|
+
--zero, -0 Output results separated by NUL characters
|
|
363
|
+
--iname, -i Perform case-independent search
|
|
364
|
+
--follow, -F Follow symlinks
|
|
365
|
+
--git, -g Only search for objects in the current git repository
|
|
366
|
+
--diff, -D, --diffuse
|
|
367
|
+
Run Diffuse to on all the found objects (files only)
|
|
368
|
+
--regex, -R Use regex matching rather than globbing
|
|
369
|
+
--fullpath, -P Match the entire path, rather than just the filename
|
|
370
|
+
--human-readable, -H When reporting results in long format, use human-readable sizes
|
|
371
|
+
--grep GREP, -G GREP Only report files that contain text that matches the specified regular expression
|
|
372
|
+
--abspath, -A Report the absolute path to matching entities, rather than the relative path
|
|
373
|
+
--unquoted, -U Do not use quotation marks around results containing spaces
|
|
374
|
+
--quiet, -q Do not report permission errors that prevented a complete search
|
|
375
|
+
--invert, -I Invert the wildcard - list files that do not match
|
|
376
|
+
--exec EXEC, -x EXEC Execute the specified command on each match (optionally use ^ to mark the position of the filename)
|
|
377
|
+
--count, -K Report the number of objects found
|
|
378
|
+
--count-only, -c Just report the number of objects found
|
|
379
|
+
--type TYPE, -t TYPE Type of item(s) to include in the results, where b=block device, c=character device, d=directory, p=pipe, f=file, l=symlink, s=socket. Defaults to files and directories
|
|
380
|
+
--file, -f Include files in the results (the default if no other type specified)
|
|
381
|
+
--dir, -d Include directories in the results
|
|
382
|
+
--block Include block devices in the results
|
|
383
|
+
--char Include character devices in the results
|
|
384
|
+
--pipe Include pipes in the results
|
|
385
|
+
--symlink, --link Include symbolic links in the results
|
|
386
|
+
--socket Include sockets in the results
|
|
387
|
+
--any, -a Include all types of item (the default unless specific types specified)
|
|
388
|
+
--verbose, -v Output verbose data
|
|
389
|
+
--debug Output debug data
|
|
390
|
+
|
|
391
|
+
## linecount
|
|
392
|
+
|
|
393
|
+
Summarise number of files, lines of text and total size of files in a directory tree
|
|
394
|
+
|
|
395
|
+
usage: linecount [-h] [--ext]
|
|
396
|
+
|
|
397
|
+
options:
|
|
398
|
+
-h, --help show this help message and exit
|
|
399
|
+
--ext, -e Identify file type using the file extension (faster but less accurrate)
|
|
400
|
+
|
|
401
|
+
## py-audit
|
|
402
|
+
|
|
403
|
+
Query api.osv.dev to determine whether a specified version of a particular Python package is subject to known security vulnerabilities
|
|
404
|
+
|
|
405
|
+
py-audit [-h] [requirements ...]
|
|
406
|
+
|
|
407
|
+
positional arguments:
|
|
408
|
+
requirements The requirements file (if not specified, then the script searches for a requirements.txt file)
|
|
409
|
+
|
|
410
|
+
options:
|
|
411
|
+
-h, --help show this help message and exit
|
|
412
|
+
|
|
413
|
+
## readable
|
|
414
|
+
|
|
415
|
+
Remove 'cruft' from log files to make them easier to read and compare. Can remove times, dates, hashes and has options to remove a lot of the 'noise' that Terraform generates and tidy up the output.
|
|
416
|
+
|
|
417
|
+
readable [-h] [--light] [--dark] [--none] [--tidy] [--strip-blank] [--debug] [--out] [--dir DIR] [--aws] [--terraform] [--replace REPLACE] [--verbose] [--minimal] [--non-minimal]
|
|
418
|
+
[files ...]
|
|
419
|
+
|
|
420
|
+
positional arguments:
|
|
421
|
+
files The files to convert (use stdin/stout if no input files are specified)
|
|
422
|
+
|
|
423
|
+
options:
|
|
424
|
+
-h, --help show this help message and exit
|
|
425
|
+
--light, -l Modify colours for a light background (the default)
|
|
426
|
+
--dark, -d Modify colours for a dark background
|
|
427
|
+
--none, -n Remove all colour codes
|
|
428
|
+
--tidy, -t Remove colour codes and stuff that typically occurs in log files causing diffs, but is of no particular interest (e.g. SHA1 values, times, dates)
|
|
429
|
+
--strip-blank, -s Strip all blank lines
|
|
430
|
+
--debug, -D Replace colours with debug information
|
|
431
|
+
--out, -o Output to standard output rather than overwriting input files
|
|
432
|
+
--dir DIR, -O DIR Store output files in the specified directory (creating it if it doesn't exist)
|
|
433
|
+
--aws, -a Remove AWS resource IDs
|
|
434
|
+
--terraform, -T Clean Terraform plan/apply log files
|
|
435
|
+
--replace REPLACE, -R REPLACE
|
|
436
|
+
Additional regex replacements in the form "REGEX=REPLACEMENT"
|
|
437
|
+
--verbose, -v Output verbose status
|
|
438
|
+
--minimal, -m Remove unnecessary data from the file (e.g. Terraform progress updates (Refreshing..., Reading..., etc.))
|
|
439
|
+
--non-minimal, -M Do not remove unnecessary data from the file (e.g. Terraform progress updates (Refreshing..., Reading..., etc.))
|
|
440
|
+
|
|
441
|
+
## remdir
|
|
442
|
+
|
|
443
|
+
Recursively delete empty directories
|
|
444
|
+
|
|
445
|
+
remdir [-h] [--dry-run] [--debug] [--verbose] [--ignore IGNORE] [--keep KEEP] dirs [dirs ...]
|
|
446
|
+
|
|
447
|
+
positional arguments:
|
|
448
|
+
dirs Directories to prune
|
|
449
|
+
|
|
450
|
+
options:
|
|
451
|
+
-h, --help show this help message and exit
|
|
452
|
+
--dry-run, -D Dry-run - report what would be done without doing anything
|
|
453
|
+
--debug Output debug information
|
|
454
|
+
--verbose Output verbose information
|
|
455
|
+
--ignore IGNORE, -I IGNORE
|
|
456
|
+
Files to ignore when considering whether a directory is empty
|
|
457
|
+
--keep KEEP, -K KEEP Directories that should be kept even if they are empty
|
|
458
|
+
|
|
459
|
+
## rmdupe
|
|
460
|
+
|
|
461
|
+
Search for duplicate files.
|
|
462
|
+
|
|
463
|
+
rmdupe [-h] [--debug] [--save SAVE] [--load LOAD] [--script SCRIPT] [--exclude EXCLUDE] [--ignore IGNORE] [path]
|
|
464
|
+
|
|
465
|
+
positional arguments:
|
|
466
|
+
path Path(s) to search for duplicates
|
|
467
|
+
|
|
468
|
+
options:
|
|
469
|
+
-h, --help show this help message and exit
|
|
470
|
+
--debug Debug output
|
|
471
|
+
--save SAVE Save duplicate file list
|
|
472
|
+
--load LOAD Load duplicate file list
|
|
473
|
+
--script SCRIPT Generate a shell script to delete the duplicates
|
|
474
|
+
--exclude EXCLUDE Directories to skip when looking for duplicates
|
|
475
|
+
--ignore IGNORE Wildcards to ignore when looking for duplicates
|
|
476
|
+
|
|
477
|
+
## rpylint
|
|
478
|
+
|
|
479
|
+
Run pylint on all the Python source files in a directory tree
|
|
480
|
+
|
|
481
|
+
usage: rpylint [-h] [paths ...]
|
|
482
|
+
|
|
483
|
+
positional arguments:
|
|
484
|
+
paths List of files or paths to lint
|
|
485
|
+
|
|
486
|
+
options:
|
|
487
|
+
-h, --help show this help message and exit
|
|
488
|
+
|
|
489
|
+
## s3-sync
|
|
490
|
+
|
|
491
|
+
Synchronise files from S3 to local storage.
|
|
492
|
+
|
|
493
|
+
## strreplace
|
|
494
|
+
|
|
495
|
+
Simple search and replace utility for those times when trying to escape characters in a regexp to use sed is more hassle than it is worth.
|
|
496
|
+
|
|
497
|
+
strreplace [-h] [--inplace] search replace [infile] [outfile]
|
|
498
|
+
|
|
499
|
+
positional arguments:
|
|
500
|
+
search Search text
|
|
501
|
+
replace Replacment text
|
|
502
|
+
infile Input file
|
|
503
|
+
outfile Output file
|
|
504
|
+
|
|
505
|
+
options:
|
|
506
|
+
-h, --help show this help message and exit
|
|
507
|
+
--inplace, -i Do an in-place search and replace on the input file
|
|
508
|
+
|
|
509
|
+
## tfm
|
|
510
|
+
|
|
511
|
+
Console-based file-manager, similar to Midnight Commander but aiming to be better.
|
|
512
|
+
|
|
513
|
+
usage: tfm [-h] [--pudb]
|
|
514
|
+
|
|
515
|
+
options:
|
|
516
|
+
-h, --help show this help message and exit
|
|
517
|
+
--pudb Invoke pudb debugger over Telnet
|
|
518
|
+
|
|
519
|
+
## tfparse
|
|
520
|
+
|
|
521
|
+
Read JSON Terraform output and convert back to human-readable text
|
|
522
|
+
|
|
523
|
+
This allows multiple errors and warnings to be reported as there's no way of doing this directly from Terraform
|
|
524
|
+
|
|
525
|
+
usage: tfparse [-h] [--abspath] [infile ...]
|
|
526
|
+
|
|
527
|
+
positional arguments:
|
|
528
|
+
infile The error file (defaults to standard input if not specified)
|
|
529
|
+
|
|
530
|
+
options:
|
|
531
|
+
-h, --help show this help message and exit
|
|
532
|
+
--abspath, -a Output absolute file paths
|
|
533
|
+
|
|
534
|
+
## trimpath
|
|
535
|
+
|
|
536
|
+
Intelligently trim a path to fit a given width (used by gitprompt)
|
|
537
|
+
|
|
538
|
+
## venv-create
|
|
539
|
+
|
|
540
|
+
Create a script to create/update a virtual environment and run a python script in it.
|
|
541
|
+
|
|
542
|
+
usage: venv-create [-h] name
|
|
543
|
+
|
|
544
|
+
positional arguments:
|
|
545
|
+
name Name of the script to create
|
|
546
|
+
|
|
547
|
+
options:
|
|
548
|
+
-h, --help show this help message and exit
|
|
549
|
+
|
|
550
|
+
## xchmod
|
|
551
|
+
|
|
552
|
+
Command to run chmod only on files that need it (only modifies files that don't have the required permissions already).
|
|
553
|
+
|
|
554
|
+
usage: xchmod [-h] [--debug] [--verbose] [--recursive] mode paths [paths ...]
|
|
555
|
+
|
|
556
|
+
positional arguments:
|
|
557
|
+
mode Mode to set
|
|
558
|
+
paths List of directory paths to search
|
|
559
|
+
|
|
560
|
+
options:
|
|
561
|
+
-h, --help show this help message and exit
|
|
562
|
+
--debug Output the list of files (if any) that need to be made publically writeable
|
|
563
|
+
--verbose List files as they are updated
|
|
564
|
+
--recursive, -R Operate recursively
|
|
565
|
+
|
|
566
|
+
## yamlcheck
|
|
567
|
+
|
|
568
|
+
YAML validator - checks that a file is valid YAML (use yamllint to verify that it is nicely-formatted YAML).
|
|
569
|
+
|
|
570
|
+
usage: yamlcheck [-h] [--dump] [--block] [--flow] [--hiera] files [files ...]
|
|
571
|
+
|
|
572
|
+
positional arguments:
|
|
573
|
+
files YAML source file
|
|
574
|
+
|
|
575
|
+
options:
|
|
576
|
+
-h, --help show this help message and exit
|
|
577
|
+
--dump Dump the YAML data after parsing it
|
|
578
|
+
--block Force block style when dumping the YAML data
|
|
579
|
+
--flow Force flow style when dumping the YAML data
|
|
580
|
+
--hiera Process the file as Puppet Hiera data
|
|
581
|
+
|
|
582
|
+
# Obsolescent Utilities
|
|
583
|
+
|
|
584
|
+
These will be moved to the skilleter-extras package in due course.
|
|
585
|
+
|
|
586
|
+
## borger
|
|
587
|
+
|
|
588
|
+
Wrapper for the borg backup utility to make it easier to use with a fixed set of options.
|
|
589
|
+
|
|
590
|
+
## consolecolours
|
|
591
|
+
|
|
592
|
+
Display all available colours in the console.
|
|
593
|
+
|
|
594
|
+
## diskspacecheck
|
|
595
|
+
|
|
596
|
+
Check how much free space is available on all filesystems, ignoring read-only filesystems, /dev and tmpfs.
|
|
597
|
+
|
|
598
|
+
Issue a warning if any are above 90% used.
|
|
599
|
+
|
|
600
|
+
## gphotosync
|
|
601
|
+
|
|
602
|
+
Utility for syncing photos from Google Photos to local storage
|
|
603
|
+
|
|
604
|
+
## moviemover
|
|
605
|
+
|
|
606
|
+
Search for files matching a wildcard in a directory tree and move them to an equivalent location in a different tree
|
|
607
|
+
|
|
608
|
+
## phototidier
|
|
609
|
+
|
|
610
|
+
Perform various tidying operations on a directory full of photos:
|
|
611
|
+
|
|
612
|
+
* Remove leading '$' and '_' from filenames
|
|
613
|
+
* Move files in hidden directories up 1 level
|
|
614
|
+
* If the EXIF data in a photo indicates that it was taken on date that doesn't match the name of the directory it is stored in (in YYYY-MM-DD format) then it is moved to the correct directory, creating it if necessary.
|
|
615
|
+
|
|
616
|
+
All move/rename operations are carried out safely with the file being moved having
|
|
617
|
+
a numeric suffix added to the name if it conflicts with an existing file.
|
|
618
|
+
|
|
619
|
+
## photodupe
|
|
620
|
+
|
|
621
|
+
Search for duplicate images in a directory tree
|
|
622
|
+
|
|
623
|
+
## splitpics
|
|
624
|
+
|
|
625
|
+
Copy a directory full of pictures to a destination, creating subdiretories with a fixed number of pictures in each in the destination directory for use with FAT filesystems and digital photo frames.
|
|
626
|
+
|
|
627
|
+
## sysmon
|
|
628
|
+
|
|
629
|
+
Simple console system monitor
|
|
630
|
+
|
|
631
|
+
## window-rename
|
|
632
|
+
|
|
633
|
+
Monitor window titles and rename them to fit an alphabetical grouping in 'Appname - Document' format.
|
|
634
|
+
|
|
635
|
+
# Obsolescent Commands
|
|
636
|
+
|
|
637
|
+
These commands will probably be retired in future versions of Thingy
|
|
638
|
+
|
|
639
|
+
## ggit
|
|
640
|
+
|
|
641
|
+
Run a git command in all working trees under the current directory (superceded by multigit).
|
|
642
|
+
|
|
643
|
+
## ggrep
|
|
644
|
+
|
|
645
|
+
Run 'git grep' in all repos under the current directory (superceded by multigit).
|
|
646
|
+
|
|
647
|
+
## GitLab Commands
|
|
648
|
+
|
|
649
|
+
### git mr
|
|
650
|
+
|
|
651
|
+
Push a feature branch to GitLab and create a merge request
|
|
652
|
+
|
|
653
|
+
### gl
|
|
654
|
+
|
|
655
|
+
Command line for GitLab
|