CM interface to extract files in a unified way on any system
January 5, 2024 ยท View on GitHub
Extract files without CM caching
You can use this script to extract .tar, .gz, .zip, .bz2, .tag.gz and .tgz files.
Before using further examples, you can download coco-2017-val-annotations.zip using CM:
cmr "download file" --url=https://cKnowledge.org/test/coco-2017-val-annotations.zip
Extract this archive in the current path while keeping the archive file:
cmr "extract file _keep" --input=coco-2017-val-annotations.zip
or
cmr "extract file _keep _path.coco-2017-val-annotations.zip"
You can remove _keep to delete archive after extracting files:
cmr "extract file" --input=coco-2017-val-annotations.zip
Output environment variables
You can check produced environment variables produced by this CM script by adding the -j flag:
cmr "extract file _keep" --input=coco-2017-val-annotations.zip -j
"new_env": {
"CM_EXTRACT_EXTRACTED_PATH": "D:\\Work99.3 readme\\xyz",
"CM_GET_DEPENDENT_CACHED_PATH": "D:\\Work99.3 readme\\xyz"
},
Input flags and equivalent environment variables
--inputor--env.CM_EXTRACT_FILEPATH- input file--extract_pathor--toor--env.CM_EXTRACT_PATH- where to extract files (--input should have full path then)--extra_folderor--env.CM_EXTRACT_TO_FOLDER- extra directory when extracting file (to avoid messing up current directory)
Variations
_keepor_no-remove-extractedor--env.CM_EXTRACT_REMOVE_EXTRACTED=no- keep archive file (it will be deleted by default)
Extract to a specific folder
Note that you need to provide a full path to the archive file if you want to extract it to some directory:
cmr "extract file _keep" --input="$PWD/coco-2017-val-annotations.zip" --extract_path="$HOME/cm-test"
Add extra folder to extracted files
You can add extra folder when extracting files to avoid messing up current directory:
cmr "extract file _keep" --input=coco-2017-val-annotations.zip --extra_folder=xyz
Extract 1 file and test MD5SUM without CM caching
You can use this script to extract 1 archived file (model, captions, etc) and test MD5SUM.
To test this CM script, download captions_val2017.json.gz:
cmr "download file _url.https://cKnowledge.org/test/captions_val2017.json.gz"
Then extract it and test MD5SUM as follows:
cmr "extract file _keep _path.captions_val2017.json.gz" --env.CM_EXTRACT_EXTRACTED_CHECKSUM=b7bec29ab7bd8971ae4cafc2390a658f -j
Force another filename during extract
Some workflows may need to use a different filename than original. You can change it as follows:
cmr "extract file _keep _path.captions_val2017.json.gz" --env.CM_EXTRACT_EXTRACTED_FILENAME=new-file.json --env.CM_EXTRACT_EXTRACTED_CHECKSUM=b7bec29ab7bd8971ae4cafc2390a658f
Extract file(s) to CM cache
You can use all above commands with --force_cache and --extra_cache_tags flags.
In such case, file(s) will be extracted to the CM cache and can be reused by other CM scripts and workflows.
Note that you need to provide full path to the archive file.
cmr "extract file _keep" --input=$HOME/coco-2017-val-annotations.zip --force_cache --extra_cache_tags=coco,2017,val,annotations
You can find it in CM cache using extra cache tags as follows:
cm show cache "extract file annotations coco 2017 val"