blob: ad0980a224294adab5216134d81112d7225b462f [file]
#!/bin/bash
#
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# This script helps automate the Beads process setup for TinkerPop.
# It initializes Beads and clones the tinkerpop/tinkerbeads database.
# Contributors can use this to quickly set up their local environment.
set -e
# Check if bd command exists
if ! command -v bd &> /dev/null; then
echo "Error: 'bd' command not found. Please install Beads first: https://github.com/steveyegge/beads"
exit 1
fi
# Check if dolt command exists
if ! command -v dolt &> /dev/null; then
echo "Error: 'dolt' command not found. Please install Dolt first: https://www.dolthub.com/docs/introduction/installation/"
exit 1
fi
# Check if dolt credentials are valid
echo "Checking Dolt credentials..."
if ! dolt creds check; then
echo "Error: Dolt credentials check failed."
echo "Please run 'dolt login' to authenticate with DoltHub."
exit 1
fi
# Ensure we are in the project root
if [ ! -f "pom.xml" ]; then
echo "Error: This script must be run from the TinkerPop project root."
exit 1
fi
echo "Initializing Beads..."
# Run bd init if .beads directory doesn't exist
if [ ! -d ".beads" ]; then
bd init --skip-agents --skip-hooks --database tinkerbeads --prefix tinkerpop
else
echo ".beads directory already exists. Skipping 'bd init'."
fi
echo "Setting up Dolt database..."
# Navigate to the embedded dolt directory
mkdir -p .beads/embeddeddolt
pushd .beads/embeddeddolt > /dev/null
# Remove existing database if any, to allow cloning
if [ -d "tinkerbeads" ]; then
echo "Removing existing local tinkerbeads database..."
rm -rf tinkerbeads
fi
echo "Cloning tinkerpop/tinkerbeads from DoltHub..."
dolt clone tinkerpop/tinkerbeads
popd > /dev/null
echo "Removing project_id from metadata.json to avoid identity mismatch..."
if [ -f ".beads/metadata.json" ]; then
# Use jq to safely remove the project_id field.
if command -v jq &> /dev/null; then
jq 'del(.project_id)' .beads/metadata.json > .beads/metadata.json.tmp && mv .beads/metadata.json.tmp .beads/metadata.json
else
# Fallback to sed if jq is not available
sed -i '/"project_id":/d' .beads/metadata.json
fi
fi
echo "Finalizing setup..."
bd ready
echo "Beads bootstrap complete for TinkerPop!"