Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

[PATCH] Improve _hdiutil



This hadn't been updated in a while, needed some attention re: image file
names and image/disk formats. There's probably some other stuff too but i
didn't go through the whole manual

dana


diff --git a/Completion/Darwin/Command/_hdiutil b/Completion/Darwin/Command/_hdiutil
index c31808716..04e81e655 100644
--- a/Completion/Darwin/Command/_hdiutil
+++ b/Completion/Darwin/Command/_hdiutil
@@ -46,28 +46,40 @@ _hdiutil_imagesize(){
 }
 
 _hdiutil_imageformat(){
-  local -a fmts
+  local -a fmts ofmts
   fmts=(
     "UDRW:UDIF read/write image"
     "UDRO:UDIF read-only image"
-    "UDZO:UDIF zlib-compressed image"
     "UDCO:UDIF ADC-compressed image"
-    "UFBI:UDIF entire image with MD5 checksum"
+    "UDZO:UDIF zlib-compressed image"
+    "ULFO:UDIF lzfse-compressed image"
+    "ULMO:UDIF lzma-compressed image"
+    "UDBZ:UDIF bzip2-compressed image"
     "UDTO:DVD/CD-R master for export"
-    "UDxx:UDIF stub image"
-    "UDSP:SPARSE (growable with content)"
-    "Rdxx:NDIF read-only image (Disk Copy 6.3.3 format)"
-    "DC42:Disk Copy 4.2 image"
+    "UDSP:SPARSE (grows with content)"
+    "UDSB:SPARSEBUNDLE (grows with content; bundle-backed)"
+    "UFBI:UDIF entire image with MD5 checksum"
   )
   ofmts=(
     "UDRo:UDIF read-only"
     "UDCo:UDIF compressed"
     "RdWr:NDIF read/write image"
+    "Rdxx:NDIF read-only image (Disk Copy 6.3.3 format)"
     "ROCo:NDIF compressed image"
     "Rken:NDIF compressed"
+    "DC42:Disk Copy 4.2 image"
+    "IPOD:iPod image" # Mentioned in help, not manual
+    "UDxx:UDIF stub image" # Mentioned in help, not manual
+    "UNIV:hybrid image (HFS+/ISO/UDF)" # Mentioned in help, not manual
   )
   _describe -t types "image format" fmts -V1 ||
-  _describe -t types "obsolete/deprecated image format" ofmts -V1 
+  _describe -t types "obsolete/deprecated image format" ofmts -V1
+}
+
+_hdiutil_images() {
+  local -a expl
+  _description files expl 'disk image'
+  _files "$@" "${(@)expl}" -g '*.(bin|cdr|dmg|img|iso|sparse(bundle|image))(-.)'
 }
 
 _hdiutil(){
@@ -178,7 +190,7 @@ _hdiutil(){
         "(-autoopenro)-noautoopenro" \
         "(-noautoopenrw)-autoopenrw[auto-open read/write volumes]" \
         "(-autoopenrw)-noautoopenrw" \
-        "1:disk image to attach:_files -g \*.\(dmg\|sparseimage\)\(\|.bin\)\(-.\)" \
+        "1:disk image to attach:_hdiutil_images" \
         && return 0
       ;;
     detach|eject)
@@ -195,7 +207,7 @@ _hdiutil(){
         "$_common_usage_options[-imagekey]" \
         "$_common_usage_options[-srcimagekey]" \
         "$_common_usage_options[-plist]" \
-        "1:disk image to verify:_files -g \*.\(dmg\|sparseimage\)\(\|.bin\)\(-.\)" \
+        "1:disk image to verify:_hdiutil_images" \
         && return 0
       ;;
     create)
@@ -214,8 +226,26 @@ _hdiutil(){
         "($size_spec)-srcfolder[specify directory]: :_directories" \
         "($size_spec)-srcdir[specify directory]: :_directories" \
         "-align[size to which partition is aligned]:size" \
-        "-type[image type]:image type:(UDIF SPARSE)" \
-        "-fs[filesystem to make]:filesystem:(HFS+ HFS+J HFSX HFS MS-DOS UFS)" \
+        "-type[image type]:image type:((
+          SPARSEBUNDLE\:'sparse bundle disk image'
+          SPARSE\:'sparse disk image'
+          UDIF\:'read/write disk image'
+          UDTO\:'DVD/CD master'
+        ))" \
+        "-fs[filesystem to make]:filesystem:((
+          UDF\:'Universal Disk Format'
+          MS-DOS\ FAT12\:'MS-DOS (FAT12)'
+          MS-DOS\:'MS-DOS (FAT)'
+          MS-DOS\ FAT16\:'MS-DOS (FAT16)'
+          {FAT32,MS-DOS\ FAT32}\:'MS-DOS (FAT32)'
+          ExFAT\:'ExFAT'
+          HFS+\:'Mac OS Extended'
+          {HFS+J,JHFS+,HFSJ,Journaled\ HFS+}\:'Mac OS Extended (journaled)'
+          {HFS+X,HFSX,Case-sensitive\ HFS+}\:'Mac OS Extended (case-sensitive)'
+          {JHFS+X,JHFSX,HFS+X+J,HFS+XJ,HFSXJ,Case-sensitive\ Journaled\ HFS+}\:'Mac OS Extended (case-sensitive, journaled)'
+          APFS\:'APFS'
+          Case-sensitive\ APFS\:'APFS (case-sensitive)'
+        ))" \
         "-volname[volume name]:name" \
         "-uid[uid of root directory]:uid in number" \
         "-gid[gid of root directory]:gid in number" \
@@ -225,7 +255,16 @@ _hdiutil(){
         "(-autostretch)-noautostretch" \
         "-stretch[max_stretch]: :_hdiutil_imagesize" \
         "-fsargs[additional arguments to pass to newfs]:arguments" \
-        "-layout[partition layout]:partition layout:(NONE SPUD UNIVERSAL\ CD UNIVERSAL\ HD)" \
+        "-layout[partition layout]:partition layout:((
+          MBRSPUD\:'single partition, MBR'
+          SPUD\:'single partition, APM'
+          UNIVERSAL\ CD\:'CD/DVD'
+          NONE\:'no partition map'
+          GPTSPUD\:'single partition, GPT'
+          SPCD\:'single partition, CD/DVD'
+          UNIVERSAL\ HD\:'hard disk'
+          ISOCD\:'single partition, CD/DVD with ISO data'
+        ))" \
         "-partitionType[partition type]:partition type:(Apple_HFS Apple_UFS)" \
         "-ov[overwrite an existing file]" \
         "-attach[attach the image after creating it]" \
@@ -265,7 +304,7 @@ _hdiutil(){
         "-ov[overwrite an existing file]" \
         "-format:format:_hdiutil_imageformat" \
         "-o:target disk image:_files" \
-        "1:source disk image:_files -g \*.\(dmg\|sparseimage\)\(\|.bin\)\(-.\)" \
+        "1:source disk image:_hdiutil_images" \
         && return 0
 
       if [[ $state = keyvalue ]]; then
@@ -302,7 +341,7 @@ _hdiutil(){
         "-erase[erase the media]" \
         "-fullerase[erase all sectors of the disc]" \
         "-list[list all burning devices with paths suitable for -device]" \
-        "1:disk image:_files -g \*.\(dmg\|sparseimage\)\(\|.bin\)\(-.\)" \
+        "1: :_hdiutil_images" \
         && return 0
       ;;
     makehybrid)
@@ -343,7 +382,7 @@ _hdiutil(){
         "(-nokernel)-nokernel[attach with a helper process]" \
         "(-kernel)-kernel[attach without a helper process]" \
         "-o:target disk image:_files" \
-        "1:source disk image or directory:_files -g \*.\(dmg\|sparseimage\)\(\|.bin\)\(-.\)" \
+        "1:source disk image or directory:_hdiutil_images" \
         && return 0
       ;;
     compact)
@@ -376,7 +415,7 @@ _hdiutil(){
         "$_common_usage_options[-cacert]" \
         "$_common_usage_options[-plist]" \
         "-type:image type:(UDIF-CRC32 UDIF-MD5 DC42 CRC28 CRC32 MD5)" \
-        "1:disk image:_files -g \*.\(dmg\|sparseimage\)\(\|.bin\)\(-.\)" \
+        "1: :_hdiutil_images" \
         && return 0
       ;;
     chpass)
@@ -386,7 +425,7 @@ _hdiutil(){
         "$_common_usage_options[-srcimagekey]" \
         "-oldstdinpass[specify old password from standard input]" \
         "-newstdinpass[specify new password from standard input]" \
-        "1:disk image:_files -g \*.\(dmg\|sparseimage\)\(\|.bin\)\(-.\)" \
+        "1: :_hdiutil_images" \
         && return 0
       ;;
     unflatten)
@@ -395,7 +434,7 @@ _hdiutil(){
         "$_common_usage_options[-encryption]" \
         "$_common_usage_options[-stdinpass]" \
         "$_common_usage_options[-srcimagekey]" \
-        "1:disk image:_files -g \*.\(dmg\|sparseimage\)\(\|.bin\)\(-.\)" \
+        "1: :_hdiutil_images" \
         && return 0
       ;;
     flatten)
@@ -408,7 +447,7 @@ _hdiutil(){
         "(-noxml)-xml" \
         "(-rsrcfork)-norsrcfork[don\'t embed resource fork data]" \
         "(-norsrcfork)-rsrcfork" \
-        "1:disk image:_files -g \*.\(dmg\|sparseimage\)\(\|.bin\)\(-.\)" \
+        "1: :_hdiutil_images" \
         && return 0
       ;;
     hfsanalyze)
@@ -420,7 +459,7 @@ _hdiutil(){
         "$_common_usage_options[-shadow]" \
         "$_common_usage_options[-insecurehttp]" \
         "$_common_usage_options[-cacert]" \
-        "1:disk image or device:_files -g \*.\(dmg\|sparseimage\)\(\|.bin\)\(-.\)" \
+        "1:disk image or device:_hdiutil_images" \
         && return 0
       ;;
     mountvol)
@@ -447,7 +486,7 @@ _hdiutil(){
         "$_common_usage_options[-plist]" \
         "-format[just print out the image format]" \
         "-checksum[just print out the image checksum]" \
-        "1:disk image:_files -g \*.\(dmg\|sparseimage\)\(\|.bin\)\(-.\)" \
+        "1: :_hdiutil_images" \
         && return 0
       ;;
     plugins)
@@ -462,7 +501,7 @@ _hdiutil(){
         "$_common_usage_options[-srcimagekey]" \
         "$_common_usage_options[-plist]" \
         "(-yes -no -query)"{-yes,-no,-query} \
-        "1:disk image:_files -g \*.\(dmg\|sparseimage\)\(\|.bin\)\(-.\)" \
+        "1: :_hdiutil_images" \
         && return 0
       ;;
 
@@ -514,7 +553,7 @@ _hdiutil(){
         "$_common_usage_options[-insecurehttp]" \
         "$_common_usage_options[-cacert]" \
         "-options[just print out the image checksum]: :->option" \
-        "1:disk image:_files -g \*.\(dmg\|sparseimage\)\(\|.bin\)\(-.\)" \
+        "1: :_hdiutil_images" \
         && return 0
 
       case "$state" in



Messages sorted by: Reverse Date, Date, Thread, Author