Commit d36c6f93d8dde634a1232495944a6f6adbce2ea4
1 parent
d985103372
Implemented `antigen-snapshot` command.
Creates a snapshot file with some basic metadata information and pairs of repo urls and their version hashes. Tests included.
Showing 2 changed files with 59 additions and 0 deletions Side-by-side Diff
antigen.zsh
... | ... | @@ -349,6 +349,43 @@ antigen-list () { |
349 | 349 | fi |
350 | 350 | } |
351 | 351 | |
352 | +antigen-snapshot () { | |
353 | + | |
354 | + local snapshot_file="${1:-antigen-shapshot}" | |
355 | + | |
356 | + # The snapshot content lines are pairs of repo-url and git version hash, in | |
357 | + # the form: | |
358 | + # <version-hash> <repo-url> | |
359 | + local snapshot_content="$(-antigen-echo-record | sed 's/ .*$//' | sort -u | | |
360 | + while read url; do | |
361 | + dir="$(-antigen-get-clone-dir "$url")" | |
362 | + version_hash="$(cd "$dir" && git rev-parse HEAD)" | |
363 | + echo "$version_hash $dir" | |
364 | + done)" | |
365 | + | |
366 | + { | |
367 | + # The first line in the snapshot file is for metadata, in the form: | |
368 | + # key='value'; key='value'; key='value'; | |
369 | + # Where `key`s are valid shell variable names. | |
370 | + | |
371 | + # Snapshot version. Has no relation to antigen version. If the snapshot | |
372 | + # file format changes, this number can be incremented. | |
373 | + echo -n "version='1';" | |
374 | + | |
375 | + # Snapshot creation date+time. | |
376 | + echo -n " created_on='$(date)';" | |
377 | + | |
378 | + # Add a checksum with the md5 checksum of all the snapshot lines. | |
379 | + local checksum="$(echo "$snapshot_content" | md5sum)" | |
380 | + echo -n " checksum='${checksum%% *}';" | |
381 | + | |
382 | + # A newline after the metadata and then the snapshot lines. | |
383 | + echo "\n$snapshot_content" | |
384 | + | |
385 | + } > "$snapshot_file" | |
386 | + | |
387 | +} | |
388 | + | |
352 | 389 | antigen-help () { |
353 | 390 | cat <<EOF |
354 | 391 | Antigen is a plugin management system for zsh. It makes it easy to grab awesome |
tests/snapshots.t
... | ... | @@ -0,0 +1,22 @@ |
1 | +Load a couple of plugins. | |
2 | + | |
3 | + $ antigen-bundle $PLUGIN_DIR | |
4 | + Cloning into '*'... (glob) | |
5 | + done. | |
6 | + $ antigen-bundle $PLUGIN_DIR2 | |
7 | + Cloning into '*'... (glob) | |
8 | + done. | |
9 | + | |
10 | +Create a snapshot file. | |
11 | + | |
12 | + $ test -f snapshot-file | |
13 | + [1] | |
14 | + $ antigen-snapshot snapshot-file | |
15 | + $ test -f snapshot-file | |
16 | + | |
17 | +See the contents of the snapshot file. | |
18 | + | |
19 | + $ cat snapshot-file | |
20 | + version='1'; created_on='*'; checksum='*'; (glob) | |
21 | + .{40} .*-test-plugin (re) | |
22 | + .{40} .*-test-plugin2 (re) |