@momo-kits/native-kits 0.156.1-test.8-debug → 0.156.1-test.9-debug

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -40,7 +40,7 @@ kotlin {
40
40
  }
41
41
 
42
42
  cocoapods {
43
- version = "0.156.1-test.8-debug"
43
+ version = "0.156.1-test.9-debug"
44
44
  summary = "IOS Shared module"
45
45
  homepage = "https://momo.vn"
46
46
  ios.deploymentTarget = "15.0"
package/gradle.properties CHANGED
@@ -18,7 +18,7 @@ kotlin.apple.xcodeCompatibility.nowarn=true
18
18
  name="ComposeKits"
19
19
  group=vn.momo.kits
20
20
  artifact.id=kits
21
- version=0.156.1-test.8
21
+ version=0.156.1-test.9
22
22
 
23
23
  repo=GitLab
24
24
  url=https://gitlab.mservice.com.vn/api/v4/projects/5400/packages/maven
@@ -0,0 +1,8 @@
1
+ ## This file must *NOT* be checked into Version Control Systems,
2
+ # as it contains information specific to your local configuration.
3
+ #
4
+ # Location of the SDK. This is only used by Gradle.
5
+ # For customization when using a Version Control System, please read the
6
+ # header note.
7
+ #Mon Dec 22 10:07:29 ICT 2025
8
+ sdk.dir=/Users/phuc/Library/Android/sdk
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@momo-kits/native-kits",
3
- "version": "0.156.1-test.8-debug",
3
+ "version": "0.156.1-test.9-debug",
4
4
  "private": false,
5
5
  "dependencies": {},
6
6
  "devDependencies": {},
package/publish_beta.sh CHANGED
@@ -2,115 +2,171 @@
2
2
 
3
3
  set -e # Exit on error
4
4
 
5
- echo "🔍 Reading version from local package.json..."
5
+ # ============================================================================
6
+ # PUBLISH BETA SCRIPT WITH MULTIPLE PHASES
7
+ # ============================================================================
8
+ # Usage:
9
+ # sh publish_beta.sh # Run all phases
10
+ # sh publish_beta.sh check # Phase 1: Check and update version
11
+ # sh publish_beta.sh npm # Phase 2: Publish to NPM
12
+ # sh publish_beta.sh maven # Phase 3: Publish to Maven
13
+ # ============================================================================
6
14
 
7
- # Get the version from local package.json
8
- VERSION=$(node -p "require('./package.json').version")
15
+ PHASE="${1:-all}"
9
16
 
10
- if [ -z "$VERSION" ]; then
11
- echo "❌ Error: Could not read version from package.json"
12
- exit 1
13
- fi
17
+ # ============================================================================
18
+ # PHASE 1: CHECK AND UPDATE VERSION
19
+ # ============================================================================
20
+ phase_check_version() {
21
+ echo ""
22
+ echo "==============================================="
23
+ echo "📋 PHASE 1: CHECK AND UPDATE VERSION"
24
+ echo "==============================================="
25
+
26
+ echo "🔍 Reading version from local package.json..."
27
+
28
+ # Get the version from local package.json
29
+ VERSION=$(node -p "require('./package.json').version")
30
+
31
+ if [ -z "$VERSION" ]; then
32
+ echo "❌ Error: Could not read version from package.json"
33
+ exit 1
34
+ fi
35
+
36
+ echo "📦 Version from package.json: $VERSION"
37
+
38
+ # Check if this version already exists on npm
39
+ PACKAGE_NAME=$(node -p "require('./package.json').name")
40
+ echo "🔎 Checking if version $VERSION already exists on npm for package $PACKAGE_NAME..."
41
+
42
+ NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
43
+
44
+ if [ -n "$NPM_VERSION_INFO" ]; then
45
+ echo ""
46
+ echo "❌ ERROR: Version $VERSION already exists on npm!"
47
+ echo ""
48
+ echo "Please update the version in package.json before publishing."
49
+ echo "You can increment the version manually, for example:"
50
+ echo " - Current: $VERSION"
51
+ echo " - Suggested: Increment patch, minor, or major version"
52
+ echo ""
53
+ exit 1
54
+ fi
55
+
56
+ echo "✅ Version $VERSION does not exist on npm. Safe to publish."
57
+
58
+ # Update gradle.properties with the same version
59
+ echo "📝 Updating gradle.properties..."
60
+ # Get current gradle version
61
+ CURRENT_GRADLE_VERSION=$(grep "^version=" gradle.properties | cut -d'=' -f2 | tr -d '"')
62
+
63
+ # Update version in gradle.properties using sed
64
+ if [[ "$OSTYPE" == "darwin"* ]]; then
65
+ # macOS
66
+ sed -i '' "s/^version=.*/version=$VERSION/" gradle.properties
67
+ else
68
+ # Linux
69
+ sed -i "s/^version=.*/version=$VERSION/" gradle.properties
70
+ fi
71
+
72
+ echo " Gradle version updated: $CURRENT_GRADLE_VERSION → $VERSION"
73
+
74
+ export VERSION="$VERSION"
75
+
76
+ echo "✅ Using version: $VERSION"
77
+ echo "✅ PHASE 1 COMPLETED"
78
+ echo ""
79
+ }
14
80
 
15
- echo "📦 Version from package.json: $VERSION"
16
-
17
- # Update gradle.properties with the same version
18
- echo "📝 Updating gradle.properties..."
19
- # Get current gradle version
20
- CURRENT_GRADLE_VERSION=$(grep "^version=" gradle.properties | cut -d'=' -f2 | tr -d '"')
21
-
22
- # Update version in gradle.properties using sed
23
- if [[ "$OSTYPE" == "darwin"* ]]; then
24
- # macOS
25
- sed -i '' "s/^version=.*/version=$VERSION/" gradle.properties
26
- else
27
- # Linux
28
- sed -i "s/^version=.*/version=$VERSION/" gradle.properties
29
- fi
30
-
31
- echo " Gradle version updated: $CURRENT_GRADLE_VERSION → $VERSION"
32
-
33
- export VERSION="$VERSION"
34
-
35
- echo "✅ Using version: $VERSION"
36
- echo "📦 Publishing KMP artifacts to Maven (version ${VERSION})..."
37
-
38
- ./gradlew clean
39
-
40
- # First publish: normal version (compose/ is excluded via .npmignore)
41
- echo "📤 Publishing normal version (without compose)..."
42
- npm publish --tag beta --access=public
43
-
44
- ./gradlew :compose:publishAllPublicationsToGitLabPackagesRepository
45
-
46
- echo "✅ Normal version published successfully!"
47
-
48
- # Second publish: debug version with compose kits included
49
- echo ""
50
- echo "🔧 Preparing debug version with compose kits..."
51
-
52
- # Create debug version
53
- DEBUG_VERSION="${VERSION}-debug"
54
- echo "📦 Debug version: $DEBUG_VERSION"
55
-
56
- # Update package.json version to debug version
57
- if [[ "$OSTYPE" == "darwin"* ]]; then
58
- # macOS
59
- sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
60
- else
61
- # Linux
62
- sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
63
- fi
64
-
65
- # Backup compose/build.gradle.kts
66
- echo "? Backing up compose/build.gradle.kts..."
67
- cp compose/build.gradle.kts compose/build.gradle.kts.backup
68
-
69
- # Comment out maven publish in compose/build.gradle.kts
70
- echo "💬 Commenting out maven publish in compose/build.gradle.kts..."
71
- if [[ "$OSTYPE" == "darwin"* ]]; then
72
- # macOS - Comment out imports
73
- sed -i '' 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
74
- sed -i '' 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
75
- # Comment out plugin
76
- sed -i '' 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
77
- # Comment out publishing block
78
- sed -i '' '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
79
- # Comment out entire mavenPublishing block (lines starting from mavenPublishing { to its closing })
80
- sed -i '' '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
81
- else
82
- # Linux - Comment out imports
83
- sed -i 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
84
- sed -i 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
85
- # Comment out plugin
86
- sed -i 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
87
- # Comment out publishing block
88
- sed -i '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
89
- # Comment out entire mavenPublishing block
90
- sed -i '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
91
- fi
92
-
93
- # Modify android configuration for debug version
94
- echo "🔧 Modifying android configuration for debug version..."
95
- if [[ "$OSTYPE" == "darwin"* ]]; then
96
- # macOS
97
- sed -i '' 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
98
- sed -i '' 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
99
- sed -i '' 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
100
- sed -i '' "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
101
- else
102
- # Linux
103
- sed -i 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
104
- sed -i 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
105
- sed -i 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
106
- sed -i "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
107
- fi
108
-
109
- # Backup .npmignore
110
- cp .npmignore .npmignore.backup
111
-
112
- # Create minimal .npmignore for debug version (only exclude build artifacts and IDE configs)
113
- cat > .npmignore << 'EOF'
81
+ # ============================================================================
82
+ # PHASE 2: PUBLISH TO NPM
83
+ # ============================================================================
84
+ phase_publish_npm() {
85
+ echo ""
86
+ echo "==============================================="
87
+ echo "📦 PHASE 2: PUBLISH TO NPM"
88
+ echo "==============================================="
89
+
90
+ # Get version from package.json
91
+ VERSION=$(node -p "require('./package.json').version")
92
+ export VERSION="$VERSION"
93
+
94
+ echo "📦 Publishing version: $VERSION"
95
+
96
+ ./gradlew clean
97
+
98
+ # First publish: normal version (compose/ is excluded via .npmignore)
99
+ echo "📤 Publishing normal version (without compose)..."
100
+ npm publish --tag beta --access=public
101
+
102
+ echo " Normal version published successfully!"
103
+
104
+ # Second publish: debug version with compose kits included
105
+ echo ""
106
+ echo "🔧 Preparing debug version with compose kits..."
107
+
108
+ # Create debug version
109
+ DEBUG_VERSION="${VERSION}-debug"
110
+ echo "📦 Debug version: $DEBUG_VERSION"
111
+
112
+ # Update package.json version to debug version
113
+ if [[ "$OSTYPE" == "darwin"* ]]; then
114
+ # macOS
115
+ sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
116
+ else
117
+ # Linux
118
+ sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
119
+ fi
120
+
121
+ # Backup compose/build.gradle.kts
122
+ echo "📦 Backing up compose/build.gradle.kts..."
123
+ cp compose/build.gradle.kts compose/build.gradle.kts.backup
124
+
125
+ # Comment out maven publish in compose/build.gradle.kts
126
+ echo "💬 Commenting out maven publish in compose/build.gradle.kts..."
127
+ if [[ "$OSTYPE" == "darwin"* ]]; then
128
+ # macOS - Comment out imports
129
+ sed -i '' 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
130
+ sed -i '' 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
131
+ # Comment out plugin
132
+ sed -i '' 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
133
+ # Comment out publishing block
134
+ sed -i '' '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
135
+ # Comment out entire mavenPublishing block (lines starting from mavenPublishing { to its closing })
136
+ sed -i '' '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
137
+ else
138
+ # Linux - Comment out imports
139
+ sed -i 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
140
+ sed -i 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
141
+ # Comment out plugin
142
+ sed -i 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
143
+ # Comment out publishing block
144
+ sed -i '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
145
+ # Comment out entire mavenPublishing block
146
+ sed -i '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
147
+ fi
148
+
149
+ # Modify android configuration for debug version
150
+ echo "🔧 Modifying android configuration for debug version..."
151
+ if [[ "$OSTYPE" == "darwin"* ]]; then
152
+ # macOS
153
+ sed -i '' 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
154
+ sed -i '' 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
155
+ sed -i '' 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
156
+ sed -i '' "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
157
+ else
158
+ # Linux
159
+ sed -i 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
160
+ sed -i 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
161
+ sed -i 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
162
+ sed -i "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
163
+ fi
164
+
165
+ # Backup .npmignore
166
+ cp .npmignore .npmignore.backup
167
+
168
+ # Create minimal .npmignore for debug version (only exclude build artifacts and IDE configs)
169
+ cat > .npmignore << 'EOF'
114
170
  sample/
115
171
  build/
116
172
 
@@ -124,30 +180,96 @@ build/
124
180
  .gitlab-ci.yml
125
181
  .npmignore.backup
126
182
  EOF
183
+
184
+ echo "📤 Publishing debug version (with compose)..."
185
+ npm publish --tag beta --access=public
186
+
187
+ # Restore .npmignore
188
+ mv .npmignore.backup .npmignore
189
+ echo "✅ .npmignore restored"
190
+
191
+ # Restore compose/build.gradle.kts
192
+ mv compose/build.gradle.kts.backup compose/build.gradle.kts
193
+ echo "✅ compose/build.gradle.kts restored"
194
+
195
+ # Restore package.json version to original
196
+ if [[ "$OSTYPE" == "darwin"* ]]; then
197
+ # macOS
198
+ sed -i '' "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
199
+ else
200
+ # Linux
201
+ sed -i "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
202
+ fi
203
+
204
+ echo "✅ package.json version restored"
205
+
206
+ echo ""
207
+ echo "✅ PHASE 2 COMPLETED"
208
+ echo " 📦 Normal version: $VERSION (without compose)"
209
+ echo " 🐛 Debug version: $DEBUG_VERSION (with compose)"
210
+ echo ""
211
+ }
127
212
 
128
- echo "📤 Publishing debug version (with compose)..."
129
- npm publish --tag beta --access=public
130
-
131
- # Restore .npmignore
132
- mv .npmignore.backup .npmignore
133
- echo "✅ .npmignore restored"
134
-
135
- # Restore compose/build.gradle.kts
136
- mv compose/build.gradle.kts.backup compose/build.gradle.kts
137
- echo "✅ compose/build.gradle.kts restored"
213
+ # ============================================================================
214
+ # PHASE 3: PUBLISH TO MAVEN
215
+ # ============================================================================
216
+ phase_publish_maven() {
217
+ echo ""
218
+ echo "==============================================="
219
+ echo "🔧 PHASE 3: PUBLISH TO MAVEN"
220
+ echo "==============================================="
221
+
222
+ # Get version from package.json
223
+ VERSION=$(node -p "require('./package.json').version")
224
+ export VERSION="$VERSION"
225
+
226
+ echo "📦 Publishing KMP artifacts to Maven (version ${VERSION})..."
227
+
228
+ ./gradlew :compose:publishAllPublicationsToGitLabPackagesRepository
229
+
230
+ echo "✅ Maven publishing completed successfully!"
231
+ echo "✅ PHASE 3 COMPLETED"
232
+ echo ""
233
+ }
138
234
 
139
- # Restore package.json version to original
140
- if [[ "$OSTYPE" == "darwin"* ]]; then
141
- # macOS
142
- sed -i '' "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
143
- else
144
- # Linux
145
- sed -i "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
146
- fi
147
-
148
- echo "✅ package.json version restored"
235
+ # ============================================================================
236
+ # MAIN EXECUTION
237
+ # ============================================================================
149
238
 
150
239
  echo ""
151
- echo "🎉 Publishing completed successfully!"
152
- echo " 📦 Normal version: $VERSION (without compose)"
153
- echo " 🐛 Debug version: $DEBUG_VERSION (with compose)"
240
+ echo "🚀 PUBLISH BETA SCRIPT"
241
+ echo "================================================="
242
+
243
+ case "$PHASE" in
244
+ "check")
245
+ echo "Running PHASE 1 only: Check and update version"
246
+ phase_check_version
247
+ ;;
248
+ "npm")
249
+ echo "Running PHASE 2 only: Publish to NPM"
250
+ phase_publish_npm
251
+ ;;
252
+ "maven")
253
+ echo "Running PHASE 3 only: Publish to Maven"
254
+ phase_publish_maven
255
+ ;;
256
+ "all")
257
+ echo "Running ALL PHASES"
258
+ phase_check_version
259
+ phase_publish_npm
260
+ phase_publish_maven
261
+ echo ""
262
+ echo "🎉 ALL PHASES COMPLETED SUCCESSFULLY!"
263
+ echo "================================================="
264
+ ;;
265
+ *)
266
+ echo "❌ Error: Invalid phase '$PHASE'"
267
+ echo ""
268
+ echo "Usage:"
269
+ echo " sh publish_beta.sh # Run all phases"
270
+ echo " sh publish_beta.sh check # Phase 1: Check and update version"
271
+ echo " sh publish_beta.sh npm # Phase 2: Publish to NPM"
272
+ echo " sh publish_beta.sh maven # Phase 3: Publish to Maven"
273
+ exit 1
274
+ ;;
275
+ esac
@@ -2,194 +2,230 @@
2
2
 
3
3
  set -e # Exit on error
4
4
 
5
- echo "🔍 Reading version from local package.json..."
6
-
7
- # Get the version from local package.json
8
- VERSION=$(node -p "require('./package.json').version")
9
-
10
- if [ -z "$VERSION" ]; then
11
- echo "❌ Error: Could not read version from package.json"
12
- exit 1
13
- fi
14
-
15
- echo "📦 Version from package.json: $VERSION"
16
-
17
- # Check if version has prerelease suffix and convert to beta format if needed
18
- if [[ "$VERSION" == *"-"* ]]; then
19
- # Extract base version (e.g., 0.156.1 from 0.156.1-test.5)
20
- BASE_VERSION=$(echo "$VERSION" | cut -d'-' -f1)
21
- PRERELEASE_SUFFIX=$(echo "$VERSION" | cut -d'-' -f2)
22
-
23
- # If it's not already in beta format, convert to beta.1
24
- if [[ "$PRERELEASE_SUFFIX" != "beta."* ]]; then
25
- BETA_VERSION="${BASE_VERSION}-beta.1"
26
- echo "🔄 Converting to beta format: $VERSION → $BETA_VERSION"
5
+ # ============================================================================
6
+ # PUBLISH RELEASE SCRIPT WITH MULTIPLE PHASES
7
+ # ============================================================================
8
+ # Usage:
9
+ # sh publish_release.sh # Run all phases
10
+ # sh publish_release.sh check # Phase 1: Check and update version
11
+ # sh publish_release.sh npm # Phase 2: Publish to NPM
12
+ # sh publish_release.sh maven # Phase 3: Publish to Maven
13
+ # ============================================================================
14
+
15
+ PHASE="${1:-all}"
16
+
17
+ # ============================================================================
18
+ # PHASE 1: CHECK AND UPDATE VERSION
19
+ # ============================================================================
20
+ phase_check_version() {
21
+ echo ""
22
+ echo "==============================================="
23
+ echo "📋 PHASE 1: CHECK AND UPDATE VERSION"
24
+ echo "==============================================="
25
+
26
+ echo "🔍 Reading version from local package.json..."
27
+
28
+ # Get the version from local package.json
29
+ VERSION=$(node -p "require('./package.json').version")
30
+
31
+ if [ -z "$VERSION" ]; then
32
+ echo "❌ Error: Could not read version from package.json"
33
+ exit 1
34
+ fi
35
+
36
+ echo "📦 Version from package.json: $VERSION"
37
+
38
+ # Check if version has prerelease suffix and convert to beta format if needed
39
+ if [[ "$VERSION" == *"-"* ]]; then
40
+ # Extract base version (e.g., 0.156.1 from 0.156.1-test.5)
41
+ BASE_VERSION=$(echo "$VERSION" | cut -d'-' -f1)
42
+ PRERELEASE_SUFFIX=$(echo "$VERSION" | cut -d'-' -f2)
27
43
 
28
- # Update package.json with beta version
29
- if [[ "$OSTYPE" == "darwin"* ]]; then
30
- # macOS
31
- sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$BETA_VERSION\"/" package.json
32
- else
33
- # Linux
34
- sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$BETA_VERSION\"/" package.json
44
+ # If it's not already in beta format, convert to beta.1
45
+ if [[ "$PRERELEASE_SUFFIX" != "beta."* ]]; then
46
+ BETA_VERSION="${BASE_VERSION}-beta.1"
47
+ echo "🔄 Converting to beta format: $VERSION $BETA_VERSION"
48
+
49
+ # Update package.json with beta version
50
+ if [[ "$OSTYPE" == "darwin"* ]]; then
51
+ # macOS
52
+ sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$BETA_VERSION\"/" package.json
53
+ else
54
+ # Linux
55
+ sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$BETA_VERSION\"/" package.json
56
+ fi
57
+
58
+ VERSION="$BETA_VERSION"
59
+ echo "✅ Version updated to beta format: $VERSION"
35
60
  fi
36
-
37
- VERSION="$BETA_VERSION"
38
- echo "✅ Version updated to beta format: $VERSION"
39
61
  fi
40
- fi
41
-
42
- # Check if this version already exists on npm and increment until we find one that doesn't
43
- PACKAGE_NAME=$(node -p "require('./package.json').name")
44
- echo "🔎 Checking if version $VERSION already exists on npm for package $PACKAGE_NAME..."
45
-
46
- # Loop until we find a version that doesn't exist on npm
47
- while true; do
48
- # Try to get the version info from npm
49
- NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
50
62
 
51
- if [ -n "$NPM_VERSION_INFO" ]; then
52
- echo "⚠️ Version $VERSION already exists on npm. Auto-incrementing version..."
63
+ # Check if this version already exists on npm and increment until we find one that doesn't
64
+ PACKAGE_NAME=$(node -p "require('./package.json').name")
65
+ echo "🔎 Checking if version $VERSION already exists on npm for package $PACKAGE_NAME..."
66
+
67
+ # Loop until we find a version that doesn't exist on npm
68
+ while true; do
69
+ # Try to get the version info from npm
70
+ NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
53
71
 
54
- # Check if it's a beta version
55
- if [[ "$VERSION" == *"-beta."* ]]; then
56
- # Extract base version and beta number (e.g., 0.156.1-beta.5)
57
- BASE_VERSION=$(echo "$VERSION" | cut -d'-' -f1)
58
- BETA_NUMBER=$(echo "$VERSION" | cut -d'.' -f4)
72
+ if [ -n "$NPM_VERSION_INFO" ]; then
73
+ echo "⚠️ Version $VERSION already exists on npm. Auto-incrementing version..."
59
74
 
60
- # Increment beta number
61
- NEW_BETA_NUMBER=$((BETA_NUMBER + 1))
62
- NEW_VERSION="${BASE_VERSION}-beta.${NEW_BETA_NUMBER}"
75
+ # Check if it's a beta version
76
+ if [[ "$VERSION" == *"-beta."* ]]; then
77
+ # Extract base version and beta number (e.g., 0.156.1-beta.5)
78
+ BASE_VERSION=$(echo "$VERSION" | cut -d'-' -f1)
79
+ BETA_NUMBER=$(echo "$VERSION" | cut -d'.' -f4)
80
+
81
+ # Increment beta number
82
+ NEW_BETA_NUMBER=$((BETA_NUMBER + 1))
83
+ NEW_VERSION="${BASE_VERSION}-beta.${NEW_BETA_NUMBER}"
84
+
85
+ echo " Version incremented: $VERSION → $NEW_VERSION"
86
+ else
87
+ # Regular version without beta suffix
88
+ # Extract major.minor.patch
89
+ MAJOR=$(echo "$VERSION" | cut -d'.' -f1)
90
+ MINOR=$(echo "$VERSION" | cut -d'.' -f2)
91
+ PATCH=$(echo "$VERSION" | cut -d'.' -f3 | cut -d'-' -f1)
92
+
93
+ # Increment patch version
94
+ NEW_PATCH=$((PATCH + 1))
95
+ NEW_VERSION="$MAJOR.$MINOR.$NEW_PATCH"
96
+
97
+ echo " Version incremented: $VERSION → $NEW_VERSION"
98
+ fi
63
99
 
64
- echo " Version incremented: $VERSION $NEW_VERSION"
65
- else
66
- # Regular version without beta suffix
67
- # Extract major.minor.patch
68
- MAJOR=$(echo "$VERSION" | cut -d'.' -f1)
69
- MINOR=$(echo "$VERSION" | cut -d'.' -f2)
70
- PATCH=$(echo "$VERSION" | cut -d'.' -f3 | cut -d'-' -f1)
100
+ # Update package.json with new version
101
+ if [[ "$OSTYPE" == "darwin"* ]]; then
102
+ # macOS
103
+ sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$NEW_VERSION\"/" package.json
104
+ else
105
+ # Linux
106
+ sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$NEW_VERSION\"/" package.json
107
+ fi
71
108
 
72
- # Increment patch version
73
- NEW_PATCH=$((PATCH + 1))
74
- NEW_VERSION="$MAJOR.$MINOR.$NEW_PATCH"
75
-
76
- echo " Version incremented: $VERSION → $NEW_VERSION"
77
- fi
78
-
79
- # Update package.json with new version
80
- if [[ "$OSTYPE" == "darwin"* ]]; then
81
- # macOS
82
- sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$NEW_VERSION\"/" package.json
109
+ VERSION="$NEW_VERSION"
110
+ echo "🔄 Checking version $VERSION on npm..."
83
111
  else
84
- # Linux
85
- sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$NEW_VERSION\"/" package.json
112
+ echo "✅ Version $VERSION does not exist on npm. Using this version."
113
+ break
86
114
  fi
87
-
88
- VERSION="$NEW_VERSION"
89
- echo "🔄 Checking version $VERSION on npm..."
115
+ done
116
+
117
+ # Update gradle.properties with the same version
118
+ echo "📝 Updating gradle.properties..."
119
+ # Get current gradle version
120
+ CURRENT_GRADLE_VERSION=$(grep "^version=" gradle.properties | cut -d'=' -f2 | tr -d '"')
121
+
122
+ # Update version in gradle.properties using sed
123
+ if [[ "$OSTYPE" == "darwin"* ]]; then
124
+ # macOS
125
+ sed -i '' "s/^version=.*/version=$VERSION/" gradle.properties
90
126
  else
91
- echo "✅ Version $VERSION does not exist on npm. Using this version."
92
- break
127
+ # Linux
128
+ sed -i "s/^version=.*/version=$VERSION/" gradle.properties
93
129
  fi
94
- done
95
-
96
- # Update gradle.properties with the same version
97
- echo "📝 Updating gradle.properties..."
98
- # Get current gradle version
99
- CURRENT_GRADLE_VERSION=$(grep "^version=" gradle.properties | cut -d'=' -f2 | tr -d '"')
100
-
101
- # Update version in gradle.properties using sed
102
- if [[ "$OSTYPE" == "darwin"* ]]; then
103
- # macOS
104
- sed -i '' "s/^version=.*/version=$VERSION/" gradle.properties
105
- else
106
- # Linux
107
- sed -i "s/^version=.*/version=$VERSION/" gradle.properties
108
- fi
109
-
110
- echo " Gradle version updated: $CURRENT_GRADLE_VERSION $VERSION"
111
-
112
- export VERSION="$VERSION"
113
-
114
- echo "✅ Using version: $VERSION"
115
- echo "📦 Publishing KMP artifacts to Maven (version ${VERSION})..."
116
-
117
- ./gradlew clean
118
-
119
- # First publish: normal version (compose/ is excluded via .npmignore)
120
- echo "📤 Publishing normal version (without compose)..."
121
- npm publish --tag latest --access=public
122
-
123
- ./gradlew :compose:publishAllPublicationsToGitLabPackagesRepository
124
-
125
- echo "✅ Normal version published successfully!"
126
-
127
- # Second publish: debug version with compose kits included
128
- echo ""
129
- echo "🔧 Preparing debug version with compose kits..."
130
-
131
- # Create debug version
132
- DEBUG_VERSION="${VERSION}-debug"
133
- echo "📦 Debug version: $DEBUG_VERSION"
134
-
135
- # Update package.json version to debug version
136
- if [[ "$OSTYPE" == "darwin"* ]]; then
137
- # macOS
138
- sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
139
- else
140
- # Linux
141
- sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
142
- fi
143
-
144
- # Backup compose/build.gradle.kts
145
- echo "📦 Backing up compose/build.gradle.kts..."
146
- cp compose/build.gradle.kts compose/build.gradle.kts.backup
147
-
148
- # Comment out maven publish in compose/build.gradle.kts
149
- echo "💬 Commenting out maven publish in compose/build.gradle.kts..."
150
- if [[ "$OSTYPE" == "darwin"* ]]; then
151
- # macOS - Comment out imports
152
- sed -i '' 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
153
- sed -i '' 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
154
- # Comment out plugin
155
- sed -i '' 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
156
- # Comment out publishing block
157
- sed -i '' '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
158
- # Comment out entire mavenPublishing block (lines starting from mavenPublishing { to its closing })
159
- sed -i '' '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
160
- else
161
- # Linux - Comment out imports
162
- sed -i 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
163
- sed -i 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
164
- # Comment out plugin
165
- sed -i 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
166
- # Comment out publishing block
167
- sed -i '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
168
- # Comment out entire mavenPublishing block
169
- sed -i '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
170
- fi
171
-
172
- # Modify android configuration for debug version
173
- echo "🔧 Modifying android configuration for debug version..."
174
- if [[ "$OSTYPE" == "darwin"* ]]; then
175
- # macOS
176
- sed -i '' 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
177
- sed -i '' 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
178
- sed -i '' 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
179
- sed -i '' "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
180
- else
181
- # Linux
182
- sed -i 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
183
- sed -i 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
184
- sed -i 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
185
- sed -i "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
186
- fi
187
-
188
- # Backup .npmignore
189
- cp .npmignore .npmignore.backup
190
-
191
- # Create minimal .npmignore for debug version (only exclude build artifacts and IDE configs)
192
- cat > .npmignore << 'EOF'
130
+
131
+ echo " Gradle version updated: $CURRENT_GRADLE_VERSION → $VERSION"
132
+
133
+ export VERSION="$VERSION"
134
+
135
+ echo " Using version: $VERSION"
136
+ echo "✅ PHASE 1 COMPLETED"
137
+ echo ""
138
+ }
139
+
140
+ # ============================================================================
141
+ # PHASE 2: PUBLISH TO NPM
142
+ # ============================================================================
143
+ phase_publish_npm() {
144
+ echo ""
145
+ echo "==============================================="
146
+ echo "📦 PHASE 2: PUBLISH TO NPM"
147
+ echo "==============================================="
148
+
149
+ # Get version from package.json
150
+ VERSION=$(node -p "require('./package.json').version")
151
+ export VERSION="$VERSION"
152
+
153
+ echo "📦 Publishing version: $VERSION"
154
+
155
+ ./gradlew clean
156
+
157
+ # First publish: normal version (compose/ is excluded via .npmignore)
158
+ echo "📤 Publishing normal version (without compose)..."
159
+ npm publish --tag latest --access=public
160
+
161
+ echo "✅ Normal version published successfully!"
162
+
163
+ # Second publish: debug version with compose kits included
164
+ echo ""
165
+ echo "🔧 Preparing debug version with compose kits..."
166
+
167
+ # Create debug version
168
+ DEBUG_VERSION="${VERSION}-debug"
169
+ echo "📦 Debug version: $DEBUG_VERSION"
170
+
171
+ # Update package.json version to debug version
172
+ if [[ "$OSTYPE" == "darwin"* ]]; then
173
+ # macOS
174
+ sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
175
+ else
176
+ # Linux
177
+ sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
178
+ fi
179
+
180
+ # Backup compose/build.gradle.kts
181
+ echo "📦 Backing up compose/build.gradle.kts..."
182
+ cp compose/build.gradle.kts compose/build.gradle.kts.backup
183
+
184
+ # Comment out maven publish in compose/build.gradle.kts
185
+ echo "💬 Commenting out maven publish in compose/build.gradle.kts..."
186
+ if [[ "$OSTYPE" == "darwin"* ]]; then
187
+ # macOS - Comment out imports
188
+ sed -i '' 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
189
+ sed -i '' 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
190
+ # Comment out plugin
191
+ sed -i '' 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
192
+ # Comment out publishing block
193
+ sed -i '' '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
194
+ # Comment out entire mavenPublishing block (lines starting from mavenPublishing { to its closing })
195
+ sed -i '' '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
196
+ else
197
+ # Linux - Comment out imports
198
+ sed -i 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
199
+ sed -i 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
200
+ # Comment out plugin
201
+ sed -i 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
202
+ # Comment out publishing block
203
+ sed -i '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
204
+ # Comment out entire mavenPublishing block
205
+ sed -i '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
206
+ fi
207
+
208
+ # Modify android configuration for debug version
209
+ echo "🔧 Modifying android configuration for debug version..."
210
+ if [[ "$OSTYPE" == "darwin"* ]]; then
211
+ # macOS
212
+ sed -i '' 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
213
+ sed -i '' 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
214
+ sed -i '' 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
215
+ sed -i '' "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
216
+ else
217
+ # Linux
218
+ sed -i 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
219
+ sed -i 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
220
+ sed -i 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
221
+ sed -i "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
222
+ fi
223
+
224
+ # Backup .npmignore
225
+ cp .npmignore .npmignore.backup
226
+
227
+ # Create minimal .npmignore for debug version (only exclude build artifacts and IDE configs)
228
+ cat > .npmignore << 'EOF'
193
229
  sample/
194
230
  build/
195
231
 
@@ -203,30 +239,96 @@ build/
203
239
  .gitlab-ci.yml
204
240
  .npmignore.backup
205
241
  EOF
242
+
243
+ echo "📤 Publishing debug version (with compose)..."
244
+ npm publish --tag latest --access=public
245
+
246
+ # Restore .npmignore
247
+ mv .npmignore.backup .npmignore
248
+ echo "✅ .npmignore restored"
249
+
250
+ # Restore compose/build.gradle.kts
251
+ mv compose/build.gradle.kts.backup compose/build.gradle.kts
252
+ echo "✅ compose/build.gradle.kts restored"
253
+
254
+ # Restore package.json version to original
255
+ if [[ "$OSTYPE" == "darwin"* ]]; then
256
+ # macOS
257
+ sed -i '' "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
258
+ else
259
+ # Linux
260
+ sed -i "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
261
+ fi
262
+
263
+ echo "✅ package.json version restored"
264
+
265
+ echo ""
266
+ echo "✅ PHASE 2 COMPLETED"
267
+ echo " 📦 Normal version: $VERSION (without compose)"
268
+ echo " 🐛 Debug version: $DEBUG_VERSION (with compose)"
269
+ echo ""
270
+ }
271
+
272
+ # ============================================================================
273
+ # PHASE 3: PUBLISH TO MAVEN
274
+ # ============================================================================
275
+ phase_publish_maven() {
276
+ echo ""
277
+ echo "==============================================="
278
+ echo "🔧 PHASE 3: PUBLISH TO MAVEN"
279
+ echo "==============================================="
280
+
281
+ # Get version from package.json
282
+ VERSION=$(node -p "require('./package.json').version")
283
+ export VERSION="$VERSION"
284
+
285
+ echo "📦 Publishing KMP artifacts to Maven (version ${VERSION})..."
286
+
287
+ ./gradlew :compose:publishAllPublicationsToGitLabPackagesRepository
288
+
289
+ echo "✅ Maven publishing completed successfully!"
290
+ echo "✅ PHASE 3 COMPLETED"
291
+ echo ""
292
+ }
206
293
 
207
- echo "📤 Publishing debug version (with compose)..."
208
- npm publish --tag latest --access=public
209
-
210
- # Restore .npmignore
211
- mv .npmignore.backup .npmignore
212
- echo "✅ .npmignore restored"
213
-
214
- # Restore compose/build.gradle.kts
215
- mv compose/build.gradle.kts.backup compose/build.gradle.kts
216
- echo "✅ compose/build.gradle.kts restored"
217
-
218
- # Restore package.json version to original
219
- if [[ "$OSTYPE" == "darwin"* ]]; then
220
- # macOS
221
- sed -i '' "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
222
- else
223
- # Linux
224
- sed -i "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
225
- fi
226
-
227
- echo "✅ package.json version restored"
294
+ # ============================================================================
295
+ # MAIN EXECUTION
296
+ # ============================================================================
228
297
 
229
298
  echo ""
230
- echo "🎉 Publishing completed successfully!"
231
- echo " 📦 Normal version: $VERSION (without compose)"
232
- echo " 🐛 Debug version: $DEBUG_VERSION (with compose)"
299
+ echo "🚀 PUBLISH RELEASE SCRIPT"
300
+ echo "================================================="
301
+
302
+ case "$PHASE" in
303
+ "check")
304
+ echo "Running PHASE 1 only: Check and update version"
305
+ phase_check_version
306
+ ;;
307
+ "npm")
308
+ echo "Running PHASE 2 only: Publish to NPM"
309
+ phase_publish_npm
310
+ ;;
311
+ "maven")
312
+ echo "Running PHASE 3 only: Publish to Maven"
313
+ phase_publish_maven
314
+ ;;
315
+ "all")
316
+ echo "Running ALL PHASES"
317
+ phase_check_version
318
+ phase_publish_npm
319
+ phase_publish_maven
320
+ echo ""
321
+ echo "🎉 ALL PHASES COMPLETED SUCCESSFULLY!"
322
+ echo "================================================="
323
+ ;;
324
+ *)
325
+ echo "❌ Error: Invalid phase '$PHASE'"
326
+ echo ""
327
+ echo "Usage:"
328
+ echo " sh publish_release.sh # Run all phases"
329
+ echo " sh publish_release.sh check # Phase 1: Check and update version"
330
+ echo " sh publish_release.sh npm # Phase 2: Publish to NPM"
331
+ echo " sh publish_release.sh maven # Phase 3: Publish to Maven"
332
+ exit 1
333
+ ;;
334
+ esac