Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions build/gulpfile.vscode.linux.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ function getDebPackageArch(arch) {
}

function prepareDebPackage(arch) {
const binaryDir = '../VSCode-linux-' + arch;
const binaryDir = '../PearAI-' + arch;
const debArch = getDebPackageArch(arch);
const destination = '.build/linux/deb/' + debArch + '/' + product.applicationName + '-' + debArch;

Expand Down Expand Up @@ -150,7 +150,7 @@ function getRpmPackageArch(arch) {
* @param {string} arch
*/
function prepareRpmPackage(arch) {
const binaryDir = '../VSCode-linux-' + arch;
const binaryDir = '../PearAI-' + arch;
const rpmArch = getRpmPackageArch(arch);
const stripBinary = process.env['STRIP'] ?? '/usr/bin/strip';

Expand Down Expand Up @@ -250,7 +250,7 @@ function getSnapBuildPath(arch) {
* @param {string} arch
*/
function prepareSnapPackage(arch) {
const binaryDir = '../VSCode-linux-' + arch;
const binaryDir = '../PearAI-' + arch;
const destination = getSnapBuildPath(arch);

return function () {
Expand Down Expand Up @@ -309,19 +309,19 @@ const BUILD_TARGETS = [

BUILD_TARGETS.forEach(({ arch }) => {
const debArch = getDebPackageArch(arch);
const prepareDebTask = task.define(`vscode-linux-${arch}-prepare-deb`, task.series(rimraf(`.build/linux/deb/${debArch}`), prepareDebPackage(arch)));
const prepareDebTask = task.define(`pearai-linux-${arch}-prepare-deb`, task.series(rimraf(`.build/linux/deb/${debArch}`), prepareDebPackage(arch)));
gulp.task(prepareDebTask);
const buildDebTask = task.define(`vscode-linux-${arch}-build-deb`, buildDebPackage(arch));
const buildDebTask = task.define(`pearai-linux-${arch}-build-deb`, buildDebPackage(arch));
gulp.task(buildDebTask);

const rpmArch = getRpmPackageArch(arch);
const prepareRpmTask = task.define(`vscode-linux-${arch}-prepare-rpm`, task.series(rimraf(`.build/linux/rpm/${rpmArch}`), prepareRpmPackage(arch)));
const prepareRpmTask = task.define(`pearai-linux-${arch}-prepare-rpm`, task.series(rimraf(`.build/linux/rpm/${rpmArch}`), prepareRpmPackage(arch)));
gulp.task(prepareRpmTask);
const buildRpmTask = task.define(`vscode-linux-${arch}-build-rpm`, buildRpmPackage(arch));
const buildRpmTask = task.define(`pearai-linux-${arch}-build-rpm`, buildRpmPackage(arch));
gulp.task(buildRpmTask);

const prepareSnapTask = task.define(`vscode-linux-${arch}-prepare-snap`, task.series(rimraf(`.build/linux/snap/${arch}`), prepareSnapPackage(arch)));
const prepareSnapTask = task.define(`pearai-linux-${arch}-prepare-snap`, task.series(rimraf(`.build/linux/snap/${arch}`), prepareSnapPackage(arch)));
gulp.task(prepareSnapTask);
const buildSnapTask = task.define(`vscode-linux-${arch}-build-snap`, task.series(prepareSnapTask, buildSnapPackage(arch)));
const buildSnapTask = task.define(`pearai-linux-${arch}-build-snap`, task.series(prepareSnapTask, buildSnapPackage(arch)));
gulp.task(buildSnapTask);
});
25 changes: 20 additions & 5 deletions build/lib/compilation.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@
"extensions-ci": "node ./node_modules/gulp/bin/gulp.js extensions-ci",
"extensions-ci-pr": "node ./node_modules/gulp/bin/gulp.js extensions-ci-pr",
"perf": "node scripts/code-perf.js",
"update-build-ts-version": "npm install typescript@next && tsc -p ./build/tsconfig.build.json"
"update-build-ts-version": "npm install typescript@next && tsc -p ./build/tsconfig.build.json",
"vscode-linux-x64-fast": "node --max-old-space-size=12288 ./node_modules/gulp/bin/gulp.js vscode-linux-x64 --max_old_space_size=12288 --no-source-maps --skip-dependency-check --parallel"
},
"dependencies": {
"@microsoft/1ds-core-js": "^3.2.13",
Expand Down
177 changes: 144 additions & 33 deletions scripts/pearai/setup-environment.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,27 +15,27 @@ printf "\n\nDetected operating system: $os\n\n"

# If the OS is Windows, give warning and prompt user to continue
if [ "$os" == "Windows" ]; then
echo "This script is for unix systems (mac, linux)"
echo -e "Symbolic links might not work properly on Windows, please run windows scripts"
read -n 1 -s -r -p "Press any key to exit or enter to continue..."
# Check the user's input
if [ "$REPLY" != "" ]; then
echo -e "\n\e[91mExiting...\e[0m"
exit
fi
echo "This script is for unix systems (mac, linux)"
echo -e "Symbolic links might not work properly on Windows, please run windows scripts"
read -n 1 -s -r -p "Press any key to exit or enter to continue..."
# Check the user's input
if [ "$REPLY" != "" ]; then
echo -e "\n\e[91mExiting...\e[0m"
exit
fi
fi


# Function to execute a command and check its status
execute() {
local cmd=$1
local failure_message=$2
echo "Executing: $cmd"
eval $cmd
if [ $? -ne 0 ]; then
echo "Setup | $failure_message"
exit 1
fi
local cmd=$1
local failure_message=$2
echo "Executing: $cmd"
eval $cmd
if [ $? -ne 0 ]; then
echo "Setup | $failure_message"
exit 1
fi
}

# Setup all necessary paths for this script
Expand All @@ -44,36 +44,105 @@ target_path="$app_dir/extensions/pearai-submodule/extensions/vscode"
link_path="$app_dir/extensions/pearai-ref"

# Run the base functionality
echo -e "\nInitializing sub-modules..."

# Check if the submodule directory already exists
echo -e "\n========================================="
echo "Starting PearAI Environment Setup"
echo "========================================="
echo "1. Cleaning up existing installations"
echo "2. Initializing submodules"
echo "3. Setting up symbolic links"
echo "4. Configuring pearai-submodule"
echo "5. Configuring PearAI-Roo-Code"
echo "6. Installing dependencies"
echo -e "=========================================\n"

echo "Step 1/6: Cleaning up existing installations..."

# Clean up any existing installations
echo "Cleaning up any existing installations..."

# Clean up pearai-submodule
# Clean up pearai-submodule if it exists
if [ -d "$app_dir/extensions/pearai-submodule" ]; then
echo "Removing existing pearai-submodule directory"
execute "rm -rf $app_dir/extensions/pearai-submodule" "Failed to remove existing pearai-submodule directory"
echo "Cleaning up existing pearai-submodule..."
if git config --file .gitmodules --get-regexp '^submodule\..*pearai-submodule' > /dev/null 2>&1; then
echo "Removing submodule configuration..."
git submodule deinit -f ./extensions/pearai-submodule 2>/dev/null || true
rm -rf .git/modules/extensions/pearai-submodule 2>/dev/null || true
git rm -f ./extensions/pearai-submodule 2>/dev/null || true
fi
rm -rf "$app_dir/extensions/pearai-submodule"
echo "Successfully removed pearai-submodule"
fi

# Check if the PearAI Roo Code directory already exists
# Clean up PearAI-Roo-Code if it exists
if [ -d "$app_dir/extensions/PearAI-Roo-Code" ]; then
echo "Removing existing PearAI-Roo-Code directory"
execute "rm -rf $app_dir/extensions/PearAI-Roo-Code" "Failed to remove existing PearAI-Roo-Code directory"
echo "Cleaning up existing PearAI-Roo-Code..."
if git config --file .gitmodules --get-regexp '^submodule\..*PearAI-Roo-Code' > /dev/null 2>&1; then
echo "Removing submodule configuration..."
git submodule deinit -f ./extensions/PearAI-Roo-Code 2>/dev/null || true
rm -rf .git/modules/extensions/PearAI-Roo-Code 2>/dev/null || true
git rm -f ./extensions/PearAI-Roo-Code 2>/dev/null || true
fi
rm -rf "$app_dir/extensions/PearAI-Roo-Code"
echo "Successfully removed PearAI-Roo-Code"
fi

echo -e "\nStep 2/6: Initializing submodules..."
# Clone the submodule extension folder
execute "git submodule update --init --recursive" "Failed to initialize git submodules"
execute "git submodule update --recursive --remote" "Failed to update to latest tip of submodule"

echo -e "\nStep 3/6: Setting up symbolic links..."
# Handle symbolic link creation/update
echo -e "\nChecking symbolic link..."
if [ -L "$link_path" ]; then
echo -e "\e[93mRemoving existing symbolic link...\e[0m"
rm "$link_path"
fi

# Check if the symbolic link exists
if [ ! -L "$link_path" ]; then
# Print message about creating a symbolic link from link_path to target_path
echo -e "\nCreating symbolic link '$link_path' -> '$target_path'"
# Create the symbolic link
ln -s "$target_path" "$link_path"
# Ensure target directory exists before creating symlink
if [ ! -d "$target_path" ]; then
echo "Warning: Target path '$target_path' does not exist yet."
echo "Symbolic link will be created once the submodule is properly initialized."
else
echo -e "\n\e[93mSymbolic link already exists...\e[0m"
echo -e "Creating symbolic link '$link_path' -> '$target_path'"
ln -s "$target_path" "$link_path"
fi


# Verify submodule directory exists after initialization
if [ ! -d "./extensions/pearai-submodule" ]; then
echo "Error: pearai-submodule directory not found after git submodule initialization"
echo "Attempting to fix by re-running submodule commands..."
execute "git submodule update --init --recursive" "Failed to re-initialize git submodules"
execute "git submodule update --recursive --remote" "Failed to re-update submodules"

if [ ! -d "./extensions/pearai-submodule" ]; then
echo "Submodule commands failed. Attempting direct clone as fallback..."

# Try cleanup but don't exit on failure
echo "Attempting to clean up any existing configuration (errors will be ignored)..."
git submodule deinit -f ./extensions/pearai-submodule 2>/dev/null || true
rm -rf .git/modules/extensions/pearai-submodule 2>/dev/null || true
git rm -f ./extensions/pearai-submodule 2>/dev/null || true

# Ensure the directory is removed if it exists
rm -rf "./extensions/pearai-submodule" 2>/dev/null || true

echo "Attempting direct clone from repository..."
# Direct clone as fallback - this is the critical step
if git clone https://github.com/trypear/pearai-submodule.git ./extensions/pearai-submodule; then
echo "Successfully cloned pearai-submodule directly."
else
echo "Error: Failed to clone pearai-submodule repository."
echo "Please check your internet connection and git configuration."
exit 1
fi
fi
fi

echo -e "\nStep 4/6: Configuring pearai-submodule..."
# Change directory and continue with submodule setup
execute "cd ./extensions/pearai-submodule" "Failed to change directory to extensions/pearai-submodule"
echo -e "\nSetting the submodule directory to match origin/main's latest changes..."

Expand All @@ -96,7 +165,40 @@ execute "./scripts/install-and-build.sh" "Failed to install dependencies for the
# Discard the package.json and package-lock.json version update changes
execute "git reset --hard" "Failed to reset --hard after submodule dependencies install"

echo -e "\nStep 5/6: Configuring PearAI-Roo-Code..."
# ROO CODE
# Verify PearAI-Roo-Code directory exists
if [ ! -d "../PearAI-Roo-Code" ]; then
echo "Error: PearAI-Roo-Code directory not found"
echo "Attempting to fix by re-running submodule commands..."
cd "$app_dir"
execute "git submodule update --init --recursive" "Failed to re-initialize git submodules"
execute "git submodule update --recursive --remote" "Failed to re-update submodules"

if [ ! -d "./extensions/PearAI-Roo-Code" ]; then
echo "Submodule commands failed. Attempting direct clone as fallback..."

# Clean up any potential submodule configuration if it exists
if git config --file .gitmodules --get-regexp '^submodule\..*PearAI-Roo-Code' > /dev/null 2>&1; then
echo "Cleaning up existing submodule configuration..."
git submodule deinit -f ./extensions/PearAI-Roo-Code 2>/dev/null || true
rm -rf .git/modules/extensions/PearAI-Roo-Code 2>/dev/null || true
git rm -f ./extensions/PearAI-Roo-Code 2>/dev/null || true
fi

echo "Attempting direct clone from repository..."
# Direct clone as fallback
if git clone https://github.com/trypear/PearAI-Roo-Code.git ./extensions/PearAI-Roo-Code; then
echo "Successfully cloned PearAI-Roo-Code directly."
else
echo "Error: Failed to clone PearAI-Roo-Code repository."
echo "Please check your internet connection and git configuration."
exit 1
fi
fi
execute "cd ./extensions/pearai-submodule" "Failed to return to pearai-submodule directory"
fi

execute "cd ../PearAI-Roo-Code" "Failed to change directory to extensions/PearAI-Roo-Code"
# Discard any potential changes or merge conflicts in the working directory or staging area,
# ensuring local branch matches remote branch exactly before checking out main
Expand All @@ -108,9 +210,18 @@ execute "git pull origin main" "Failed to pull latest changes from origin/main"
execute "npm run install:all" "Failed to install dependencies for the PearAI-Roo-Code"
execute "npm run build" "Failed to build the PearAI-Roo-Code"

execute "cd '$app_dir'" "Failed to change directory to application root"
# Ensure we return to the app directory for final setup
if ! cd "$app_dir"; then
echo "Error: Failed to return to application root directory"
exit 1
fi

echo -e "\nSetting up root application..."
echo -e "\nStep 6/6: Setting up root application..."
pwd

# Final npm install in app directory
execute "npm install" "Failed to install dependencies with npm"

echo -e "\n========================================="
echo "🎉 PearAI Environment Setup Complete! 🎉"
echo "========================================="