Skip to content

Instantly share code, notes, and snippets.

@travishathaway
Created December 17, 2025 07:45
Show Gist options
  • Select an option

  • Save travishathaway/94753efc1f4e146dd431a76005807273 to your computer and use it in GitHub Desktop.

Select an option

Save travishathaway/94753efc1f4e146dd431a76005807273 to your computer and use it in GitHub Desktop.
Strip conda package contents and replace with mock/testing placeholder data
#! /bin/bash
#
# Strip Packages
#
# This is script that goes through all conda packages in the current
# directory and removes everything except the essential "info" metadata
# folder. It also updates the metadata so that this package can be installed
# by conda without failing package validation.
echo "Processing .conda files"
for f in $(ls *.conda); do
dir_name=$(echo "$f" | sed -e "s/.conda$//")
cph extract "$f"
find "$dir_name" -not -path "$dir_name" -not -path "$dir_name/info*" -exec rm -rf {} +
package_name=$(cat "$dir_name/info/index.json" | jq -r '.name')
mkdir -p "$dir_name/include/$package_name/"
echo "# Mock package" > "$dir_name/include/$package_name/README"
sha=$(sha256sum "$dir_name/include/$package_name/README" | cut -d ' ' -f1)
echo "include/$package_name/README" > "$dir_name/info/files"
cat <<EOF> "$dir_name/info/paths.json"
{
"paths": [
{
"_path": "include/$package_name/README",
"path_type": "hardlink",
"sha256": "$sha",
"size_in_bytes": 15
}
],
"paths_version": 1
}
EOF
cph create "$dir_name" "$dir_name.conda"
rm -rf "$dir_name"
done
echo "Processing .tar.bz2 files"
for f in $(ls *.tar.bz2); do
dir_name=$(echo "$f" | sed -e "s/.tar.bz2$//")
cph extract "$f"
find "$dir_name" -not -path "$dir_name" -not -path "$dir_name/info*" -exec rm -rf {} +
package_name=$(cat "$dir_name/info/index.json" | jq -r '.name')
mkdir -p "$dir_name/include/$package_name/"
echo "# Mock package" > "$dir_name/include/$package_name/README"
sha=$(sha256sum "$dir_name/include/$package_name/README" | cut -d ' ' -f1)
echo "include/$package_name/README" > "$dir_name/info/files"
cat <<EOF> "$dir_name/info/paths.json"
{
"paths": [
{
"_path": "include/$package_name/README",
"path_type": "hardlink",
"sha256": "$sha",
"size_in_bytes": 15
}
],
"paths_version": 1
}
EOF
cph create "$dir_name" "$dir_name.tar.bz2"
rm -rf "$dir_name"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment