2023-11-20 21:13:18 +00:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
2023-11-20 22:50:25 +00:00
|
|
|
|
# Check if the script is run from the root of the repository
|
|
|
|
|
if [ ! -f "Cargo.toml" ] || [ ! -d "crates/zed" ]; then
|
|
|
|
|
echo "Please run the script from the root of the repository."
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
2023-11-20 21:13:18 +00:00
|
|
|
|
# Set the environment variables
|
|
|
|
|
TARGET_DIR="../zed-docs"
|
|
|
|
|
PUSH_CHANGES=false
|
|
|
|
|
CLEAN_FOLDERS=false
|
|
|
|
|
|
|
|
|
|
# Parse command line arguments
|
|
|
|
|
while getopts "pc" opt; do
|
|
|
|
|
case ${opt} in
|
|
|
|
|
p )
|
|
|
|
|
PUSH_CHANGES=true
|
|
|
|
|
;;
|
|
|
|
|
c )
|
|
|
|
|
CLEAN_FOLDERS=true
|
|
|
|
|
;;
|
|
|
|
|
\? )
|
|
|
|
|
echo "Invalid option: $OPTARG" 1>&2
|
|
|
|
|
exit 1
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# Check if the target documentation directory exists
|
|
|
|
|
if [ ! -d "$TARGET_DIR" ]; then
|
|
|
|
|
# Prompt the user for input
|
2023-11-20 22:50:25 +00:00
|
|
|
|
read -p "Can't find ../zed-docs. Do you want to clone the repository (y/n)?" -n 1 -r
|
2023-11-20 21:13:18 +00:00
|
|
|
|
echo # Move to a new line
|
|
|
|
|
|
|
|
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
|
|
|
# Clone the repo if the user agrees
|
|
|
|
|
git clone https://github.com/zed-industries/zed-docs.git "$TARGET_DIR"
|
|
|
|
|
else
|
|
|
|
|
# Exit if the user does not agree to clone the repo
|
|
|
|
|
echo "Exiting without cloning the repository."
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
# If the directory exists, pull the latest changes
|
|
|
|
|
pushd "$TARGET_DIR" > /dev/null
|
|
|
|
|
git pull
|
|
|
|
|
popd > /dev/null
|
|
|
|
|
fi
|
|
|
|
|
|
2023-11-20 22:50:25 +00:00
|
|
|
|
if "$CLEAN_FOLDERS"; then
|
|
|
|
|
echo "Cleaning ./doc and ./debug folders..."
|
|
|
|
|
rm -rf "$TARGET_DIR/doc"
|
|
|
|
|
rm -rf "$TARGET_DIR/debug"
|
|
|
|
|
fi
|
|
|
|
|
|
2023-11-20 21:13:18 +00:00
|
|
|
|
# Build the documentation
|
|
|
|
|
CARGO_TARGET_DIR="$TARGET_DIR" cargo doc --workspace --no-deps --open \
|
|
|
|
|
--exclude activity_indicator \
|
|
|
|
|
--exclude ai \
|
|
|
|
|
--exclude assistant \
|
|
|
|
|
--exclude audio \
|
|
|
|
|
--exclude auto_update \
|
|
|
|
|
--exclude breadcrumbs \
|
|
|
|
|
--exclude call \
|
|
|
|
|
--exclude channel \
|
|
|
|
|
--exclude cli \
|
|
|
|
|
--exclude client \
|
|
|
|
|
--exclude clock \
|
|
|
|
|
--exclude collab \
|
|
|
|
|
--exclude collab_ui \
|
|
|
|
|
--exclude collections \
|
|
|
|
|
--exclude command_palette \
|
|
|
|
|
--exclude component_test \
|
|
|
|
|
--exclude context_menu \
|
|
|
|
|
--exclude copilot \
|
|
|
|
|
--exclude copilot_button \
|
|
|
|
|
--exclude db \
|
|
|
|
|
--exclude diagnostics \
|
|
|
|
|
--exclude drag_and_drop \
|
|
|
|
|
--exclude editor \
|
|
|
|
|
--exclude feature_flags \
|
|
|
|
|
--exclude feedback \
|
|
|
|
|
--exclude file_finder \
|
|
|
|
|
--exclude fs \
|
|
|
|
|
--exclude fsevent \
|
|
|
|
|
--exclude fuzzy \
|
|
|
|
|
--exclude git \
|
|
|
|
|
--exclude go_to_line \
|
|
|
|
|
--exclude gpui \
|
|
|
|
|
--exclude gpui_macros \
|
|
|
|
|
--exclude install_cli \
|
|
|
|
|
--exclude journal \
|
|
|
|
|
--exclude language \
|
|
|
|
|
--exclude language_selector \
|
|
|
|
|
--exclude language_tools \
|
|
|
|
|
--exclude live_kit_client \
|
|
|
|
|
--exclude live_kit_server \
|
|
|
|
|
--exclude lsp \
|
|
|
|
|
--exclude media \
|
|
|
|
|
--exclude menu \
|
|
|
|
|
--exclude multi_buffer \
|
|
|
|
|
--exclude node_runtime \
|
|
|
|
|
--exclude notifications \
|
|
|
|
|
--exclude outline \
|
|
|
|
|
--exclude picker \
|
|
|
|
|
--exclude plugin \
|
|
|
|
|
--exclude plugin_macros \
|
|
|
|
|
--exclude plugin_runtime \
|
|
|
|
|
--exclude prettier \
|
|
|
|
|
--exclude project \
|
|
|
|
|
--exclude project_panel \
|
|
|
|
|
--exclude project_symbols \
|
|
|
|
|
--exclude quick_action_bar \
|
|
|
|
|
--exclude recent_projects \
|
|
|
|
|
--exclude refineable \
|
|
|
|
|
--exclude rich_text \
|
|
|
|
|
--exclude rope \
|
|
|
|
|
--exclude rpc \
|
|
|
|
|
--exclude search \
|
|
|
|
|
--exclude semantic_index \
|
|
|
|
|
--exclude settings \
|
|
|
|
|
--exclude snippet \
|
|
|
|
|
--exclude sqlez \
|
|
|
|
|
--exclude sqlez_macros \
|
|
|
|
|
--exclude sum_tree \
|
|
|
|
|
--exclude terminal \
|
|
|
|
|
--exclude terminal_view \
|
|
|
|
|
--exclude text \
|
|
|
|
|
--exclude theme \
|
|
|
|
|
--exclude theme_importer \
|
|
|
|
|
--exclude theme_selector \
|
|
|
|
|
--exclude util \
|
|
|
|
|
--exclude vcs_menu \
|
|
|
|
|
--exclude vim \
|
|
|
|
|
--exclude welcome \
|
|
|
|
|
--exclude xtask \
|
|
|
|
|
--exclude zed \
|
2023-11-20 22:07:14 +00:00
|
|
|
|
--exclude zed-actions
|
2023-11-20 21:13:18 +00:00
|
|
|
|
|
|
|
|
|
if "$PUSH_CHANGES"; then
|
|
|
|
|
# Commit the changes and push
|
|
|
|
|
pushd "$TARGET_DIR" > /dev/null
|
|
|
|
|
# Check if there are any changes to commit
|
|
|
|
|
if git diff --quiet && git diff --staged --quiet; then
|
|
|
|
|
echo "No changes to the documentation."
|
|
|
|
|
else
|
|
|
|
|
# Staging the changes
|
|
|
|
|
git add .
|
|
|
|
|
|
|
|
|
|
# Creating a commit with the current datetime
|
|
|
|
|
DATETIME=$(date +"%Y-%m-%d %H:%M:%S")
|
|
|
|
|
git commit -m "Update docs – $DATETIME"
|
|
|
|
|
|
|
|
|
|
# Pushing the changes
|
|
|
|
|
git push
|
|
|
|
|
fi
|
|
|
|
|
popd > /dev/null
|
|
|
|
|
fi
|