1+ #! /bin/bash
2+
3+ # Get the new version from tag
4+ VERSION=$1
5+
6+ if [ -z " $VERSION " ]; then
7+ echo " Please provide version number"
8+ exit 1
9+ fi
10+
11+ # Remove 'v' prefix if present
12+ VERSION=${VERSION# v}
13+
14+ # Define packages and their sections based on composer.json
15+ declare -A REQUIRE_PACKAGES=(
16+ [" src-utils" ]=" cognesy/utils"
17+ [" src-addons" ]=" cognesy/instructor-php-addons"
18+ [" src-llm" ]=" cognesy/llm"
19+ )
20+
21+ declare -A REQUIRE_DEV_PACKAGES=(
22+ [" src-aux" ]=" cognesy/aux-tools"
23+ [" src-experimental" ]=" cognesy/experimental"
24+ [" src-hub" ]=" cognesy/instructor-php-hub"
25+ [" src-setup" ]=" cognesy/instructor-php-setup"
26+ [" src-tell" ]=" cognesy/tell"
27+ )
28+
29+ # Update version in each package's composer.json
30+ update_package_version () {
31+ local package_dir=$1
32+ if [ -f " $package_dir /composer.json" ]; then
33+ # Update version while preserving the rest of the file
34+ jq --arg version " $VERSION " ' . + {version: $version}' " $package_dir /composer.json" > " $package_dir /composer.json.tmp"
35+ mv " $package_dir /composer.json.tmp" " $package_dir /composer.json"
36+ echo " Updated $package_dir to version $VERSION "
37+ fi
38+ }
39+
40+ # Function to update package versions in composer.json sections
41+ update_main_composer () {
42+ local section=$1
43+ local package_name=$2
44+ local new_content
45+
46+ echo " Attempting to update $package_name in $section ..."
47+
48+ # Create a temporary file with updated content
49+ new_content=$( jq --arg section " $section " \
50+ --arg pkg " $package_name " \
51+ --arg ver " ^$VERSION " \
52+ ' setpath([$section, $pkg]; $ver)' \
53+ composer.json)
54+
55+ # Check if the content actually changed
56+ if [ " $new_content " != " $( cat composer.json) " ]; then
57+ echo " $new_content " > composer.json
58+ echo " Updated $package_name to version $VERSION in $section "
59+ else
60+ echo " Package $package_name not found in $section "
61+ fi
62+ }
63+
64+ # First, let's check what packages are actually in composer.json
65+ echo " Checking current package versions in composer.json..."
66+ echo " In require:"
67+ jq -r ' .require | keys[]' composer.json | grep ' ^cognesy/'
68+ echo " In require-dev:"
69+ jq -r ' ."require-dev" | keys[]' composer.json | grep ' ^cognesy/'
70+
71+ # Update package versions
72+ echo " Updating package versions..."
73+ for dir in " ${! REQUIRE_PACKAGES[@]} " ; do
74+ update_package_version " $dir "
75+ done
76+
77+ for dir in " ${! REQUIRE_DEV_PACKAGES[@]} " ; do
78+ update_package_version " $dir "
79+ done
80+
81+ # Update main composer.json
82+ echo " Updating main composer.json..."
83+
84+ # Update require section
85+ for dir in " ${! REQUIRE_PACKAGES[@]} " ; do
86+ pkg_name=" ${REQUIRE_PACKAGES[$dir]} "
87+ update_main_composer " require" " $pkg_name "
88+ done
89+
90+ # Update require-dev section
91+ for dir in " ${! REQUIRE_DEV_PACKAGES[@]} " ; do
92+ pkg_name=" ${REQUIRE_DEV_PACKAGES[$dir]} "
93+ update_main_composer " require-dev" " $pkg_name "
94+ done
95+
96+ echo " Version sync complete"
0 commit comments