-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrelease.sh
More file actions
executable file
Β·218 lines (175 loc) Β· 5.7 KB
/
release.sh
File metadata and controls
executable file
Β·218 lines (175 loc) Β· 5.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
#!/bin/bash
# Javalang-analyzing-cli Release Script
# Script for building and preparing release files
set -e # Stop execution on error
echo "π Javalang-analyzing-cli Release Builder"
echo "========================================"
# Get version number
VERSION=$(grep 'version = ' build.gradle | sed "s/version = '//" | sed "s/'//")
echo "π Building version: $VERSION"
# Clean previous builds
echo "π§Ή Cleaning previous builds..."
./gradlew clean
# Refresh dependencies and build Fat JAR
echo "π¨ Building Fat JAR..."
./gradlew shadowJar --refresh-dependencies
# Check if build was successful
if [[ ! -f "build/libs/Javalang-analyzing-cli-${VERSION}-all.jar" ]]; then
echo "β Build failed: JAR file not found"
exit 1
fi
# Get JAR file size
JAR_SIZE=$(ls -lh "build/libs/Javalang-analyzing-cli-${VERSION}-all.jar" | awk '{print $5}')
echo "π¦ JAR file size: $JAR_SIZE"
# Create release directory
RELEASE_DIR="release-${VERSION}"
echo "π Creating release directory: $RELEASE_DIR"
rm -rf "$RELEASE_DIR"
mkdir -p "$RELEASE_DIR"
# Copy files to release directory
echo "π Copying release files..."
cp "build/libs/Javalang-analyzing-cli-${VERSION}-all.jar" "$RELEASE_DIR/"
cp README.md "$RELEASE_DIR/"
cp CHANGELOG.md "$RELEASE_DIR/"
cp LICENSE "$RELEASE_DIR/"
# Create example configuration file
echo "π Creating example configuration..."
cat > "$RELEASE_DIR/analyzer.yml" << EOF
# Javalang-analyzing-cli Example Configuration File
# Copy and modify this file to fit your project
project: /path/to/your/java/project
threads: 8
lang: java
output:
format: json
file: analysis-results.json
# Task-specific configuration
ParseTestCaseToLlmContext:
outputDirectory: /custom/output/path
includeDisabledTests: false
EOF
# Create quick start scripts
echo "π Creating quick start scripts..."
# Linux/macOS script
cat > "$RELEASE_DIR/run.sh" << EOF
#!/bin/bash
# Javalang-analyzing-cli Quick Start Script
JAR_FILE="Javalang-analyzing-cli-${VERSION}-all.jar"
if [[ ! -f "\$JAR_FILE" ]]; then
echo "Error: \$JAR_FILE not found in current directory"
exit 1
fi
echo "π Javalang-analyzing-cli v${VERSION}"
echo "Usage examples:"
echo ""
echo "1. Show help:"
echo " java -jar \$JAR_FILE --help"
echo ""
echo "2. Analyze a project:"
echo " java -jar \$JAR_FILE ParseTestCaseToLlmContext --project /path/to/project"
echo ""
echo "3. Use configuration file:"
echo " java -jar \$JAR_FILE ParseTestCaseToLlmContext --config analyzer.yml"
echo ""
# If arguments are provided, execute directly
if [[ \$# -gt 0 ]]; then
java -jar "\$JAR_FILE" "\$@"
fi
EOF
# Windows script
cat > "$RELEASE_DIR/run.bat" << EOF
@echo off
REM Javalang-analyzing-cli Quick Start Script
set JAR_FILE=Javalang-analyzing-cli-${VERSION}-all.jar
if not exist "%JAR_FILE%" (
echo Error: %JAR_FILE% not found in current directory
exit /b 1
)
echo π Javalang-analyzing-cli v${VERSION}
echo Usage examples:
echo.
echo 1. Show help:
echo java -jar %JAR_FILE% --help
echo.
echo 2. Analyze a project:
echo java -jar %JAR_FILE% ParseTestCaseToLlmContext --project C:\path\to\project
echo.
echo 3. Use configuration file:
echo java -jar %JAR_FILE% ParseTestCaseToLlmContext --config analyzer.yml
echo.
REM If arguments are provided, execute directly
if "%~1" neq "" (
java -jar "%JAR_FILE%" %*
)
EOF
# Set execute permissions
chmod +x "$RELEASE_DIR/run.sh"
# Create release notes
echo "π Creating release notes..."
cat > "$RELEASE_DIR/RELEASE_NOTES.md" << EOF
# Javalang-analyzing-cli v${VERSION}
## π¦ Release Files
- **Javalang-analyzing-cli-${VERSION}-all.jar** (${JAR_SIZE}) - Main executable Fat JAR
- **README.md** - Complete usage documentation
- **CHANGELOG.md** - Version change log
- **LICENSE** - Open source license
- **analyzer.yml** - Example configuration file
- **run.sh** / **run.bat** - Quick start scripts
## π Quick Start
### System Requirements
- Java 21 or higher
### Basic Usage
\`\`\`bash
# Check version
java -jar Javalang-analyzing-cli-${VERSION}-all.jar --version
# Analyze project
java -jar Javalang-analyzing-cli-${VERSION}-all.jar ParseTestCaseToLlmContext \\
--project /path/to/your/java/project
# Use configuration file
java -jar Javalang-analyzing-cli-${VERSION}-all.jar ParseTestCaseToLlmContext \\
--config analyzer.yml
\`\`\`
### Using Scripts
\`\`\`bash
# Linux/macOS
./run.sh ParseTestCaseToLlmContext --project /path/to/project
# Windows
run.bat ParseTestCaseToLlmContext --project C:\path\to\project
\`\`\`
## π New Features
See CHANGELOG.md for complete feature list and updates.
## π Issue Reporting
For issues, please report them in GitHub Issues.
EOF
# Run basic tests
echo "π§ͺ Running basic tests..."
java -jar "$RELEASE_DIR/Javalang-analyzing-cli-${VERSION}-all.jar" --version > /dev/null
if [[ $? -eq 0 ]]; then
echo "β
Basic functionality test passed"
else
echo "β Basic functionality test failed"
exit 1
fi
# Generate checksums
echo "π Generating checksums..."
cd "$RELEASE_DIR"
sha256sum "Javalang-analyzing-cli-${VERSION}-all.jar" > "Javalang-analyzing-cli-${VERSION}-all.jar.sha256"
cd ..
# Create compressed archives
echo "π¦ Creating release archive..."
tar -czf "${RELEASE_DIR}.tar.gz" "$RELEASE_DIR"
zip -r "${RELEASE_DIR}.zip" "$RELEASE_DIR" > /dev/null
echo ""
echo "π Release build completed successfully!"
echo "========================================"
echo "π Release directory: $RELEASE_DIR"
echo "π¦ Archives created:"
echo " - ${RELEASE_DIR}.tar.gz"
echo " - ${RELEASE_DIR}.zip"
echo "π JAR file: Javalang-analyzing-cli-${VERSION}-all.jar (${JAR_SIZE})"
echo ""
echo "π Ready for GitHub release!"
echo " 1. Create a new release on GitHub"
echo " 2. Upload the JAR file and archives"
echo " 3. Copy content from RELEASE_NOTES.md"
echo ""