Skip to content

Commit 930a794

Browse files
committed
Refactor project structure: rename repository to slick-net, update CMake configuration, add vcpkg integration, and enhance documentation; include GitHub Actions for release automation and update license years
1 parent b0b9157 commit 930a794

File tree

12 files changed

+289
-94
lines changed

12 files changed

+289
-94
lines changed

.github/FUNDING.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# These are supported funding model platforms
2+
3+
github: SlickQuant
4+
patreon: # Replace with a single Patreon username
5+
open_collective: # Replace with a single Open Collective username
6+
ko_fi: # Replace with a single Ko-fi username
7+
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9+
liberapay: # Replace with a single Liberapay username
10+
issuehunt: # Replace with a single IssueHunt username
11+
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
12+
polar: # Replace with a single Polar username
13+
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
14+
thanks_dev: # Replace with a single thanks.dev username
15+
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

.github/workflows/release.yml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: Create Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*' # Trigger on version tags like v0.1.0, v1.0.0, etc.
7+
8+
permissions:
9+
contents: write
10+
11+
jobs:
12+
create-release:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Checkout code
16+
uses: actions/checkout@v4
17+
18+
- name: Extract version from tag
19+
id: get_version
20+
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
21+
22+
- name: Extract changelog for this version
23+
id: changelog
24+
run: |
25+
if [ -f CHANGELOG.md ]; then
26+
# Extract the section for this version from CHANGELOG.md
27+
VERSION="${{ github.ref_name }}"
28+
# Escape dots in version for regex
29+
VERSION_ESCAPED=$(echo "$VERSION" | sed 's/\./\\./g')
30+
# Use awk to extract content: start at version header, stop at next ## header
31+
CHANGES=$(awk "BEGIN{p=0} /^# \[$VERSION_ESCAPED/{p=1;next} /^# \[/{p=0} p" CHANGELOG | sed '/^$/d')
32+
33+
if [ -z "$CHANGES" ]; then
34+
echo "CHANGELOG_CONTENT=No changelog entry found for this version." >> $GITHUB_OUTPUT
35+
else
36+
# Escape newlines for GitHub output
37+
echo "CHANGELOG_CONTENT<<EOF" >> $GITHUB_OUTPUT
38+
echo "$CHANGES" >> $GITHUB_OUTPUT
39+
echo "EOF" >> $GITHUB_OUTPUT
40+
fi
41+
else
42+
echo "CHANGELOG_CONTENT=CHANGELOG not found." >> $GITHUB_OUTPUT
43+
fi
44+
45+
- name: Create header archive
46+
run: |
47+
zip -r ./slick-net-${{ steps.get_version.outputs.VERSION }}.zip include/
48+
49+
- name: Create Release
50+
uses: softprops/action-gh-release@v1
51+
with:
52+
name: Release ${{ github.ref_name }}
53+
body: |
54+
## Changes
55+
56+
${{ steps.changelog.outputs.CHANGELOG_CONTENT }}
57+
58+
draft: true
59+
prerelease: false
60+
generate_release_notes: false
61+
files: |
62+
slick-net-${{ steps.get_version.outputs.VERSION }}.zip

CHANGELOG.md

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
1-
# [1.2.1] - 2025-01-25
1+
# [v1.2.2] - 2026-01-12
2+
- Upgraded to slick-queue v1.2.2
3+
- Renamed repository from slick_net to slick-net (hyphenated naming follows recommended convention)
4+
- Changed export name from slick_net, slick::slick_net to slick::net
5+
- Refactored repository name in CMake configuration files
6+
- Updated documentation and build references to use new repository name
7+
- Added release GitHub Workflow
8+
- Updated license copyright years
9+
10+
# [v1.2.1] - 2025-01-25
211

312
## New Features
413
- **vcpkg Package Manager Support**: Full integration with vcpkg for easy installation and dependency management
@@ -28,7 +37,7 @@
2837
- Updated GitHub Actions CI to use GCC 14 on Linux for full C++20 coroutine support
2938
- Removed GCC 13 compatibility workarounds for awaitable HTTP tests
3039

31-
# [1.2.0] - 2025-01-18
40+
# [v1.2.0] - 2025-01-18
3241

3342
## New Features
3443
- **C++20 Coroutine Awaitable HTTP API**: Added modern async/await interface for all HTTP methods
@@ -42,27 +51,27 @@
4251
- Supports both HTTP and HTTPS protocols
4352
- **Note**: GCC 13 has a known compiler bug with coroutine lambdas. Awaitable tests are disabled on GCC 13. Use GCC 14+ or Clang for full awaitable support.
4453

45-
# [1.1.2] - 2025-11-13
54+
# [v1.1.2] - 2025-11-13
4655
- Remove unnecessary slick_logger from slick_net link dependencies
4756
- Update CMakeLists to link slick_logger with example executables
4857

49-
# [1.1.1] - 2025-10-22
58+
# [v1.1.1] - 2025-10-22
5059
- Fix slick_queue header include
5160
- Fix GitHub CI builds
5261
- Change Version to 3 digits
5362

54-
# [1.1.0.1] - 2025-10-21
63+
# [v1.1.0.1] - 2025-10-21
5564

5665
- Update slick_queue to v1.1.0.2
5766
- Change namespace from slick_net to slick::net
5867
- Change include folder structure from include/slick_net to include/slick/net
5968

60-
# [1.1.0.0] - 2025-10-19
69+
# [v1.1.0.0] - 2025-10-19
6170

6271
- Added plain WebSocket (ws://) and plain Http (http://) protocol support
6372
- Added Comprehensive test coverage for plain HTTP (non-SSL) client
6473

65-
## [1.0.0] - 2025-10-11
74+
## [v1.0.0] - 2025-10-11
6675

6776
- Initial release of slick_net
6877
- HTTP/HTTPS client with full SSL/TLS support

CMakeLists.txt

Lines changed: 38 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ if (MSVC)
77
endif()
88
endif()
99

10-
project(slick_net
10+
project(slick-net
1111
VERSION 1.2.1
1212
LANGUAGES CXX
1313
)
1414

15-
message(STATUS "slick_net: ${PROJECT_VERSION}")
15+
message(STATUS "slick-net: ${PROJECT_VERSION}")
1616

1717
set(CMAKE_CXX_STANDARD 20)
1818
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -27,28 +27,31 @@ find_package(OpenSSL REQUIRED)
2727

2828
include(FetchContent)
2929

30-
# Disable tests for slick_queue
30+
# Disable tests for slick-queue
3131
set(BUILD_SLICK_QUEUE_TESTS OFF CACHE BOOL "" FORCE)
3232
FetchContent_Declare(
33-
slick_queue
34-
GIT_REPOSITORY https://github.com/SlickQuant/slick_queue.git
35-
GIT_TAG v1.1.2
33+
slick-queue
34+
GIT_REPOSITORY https://github.com/SlickQuant/slick-queue.git
35+
GIT_TAG v1.2.2
3636
)
37-
FetchContent_MakeAvailable(slick_queue)
37+
FetchContent_MakeAvailable(slick-queue)
3838

39-
message(STATUS "slick_queue: ${slick_queue_SOURCE_DIR}")
4039
message(STATUS "OpenSSL: ${OPENSSL_INCLUDE_DIR}")
4140
message(STATUS "Beast: ${boost_beast_CONFIG}")
4241

4342
# Add header-only library
44-
add_library(slick_net INTERFACE)
45-
add_library(slick::slick_net ALIAS slick_net)
46-
target_include_directories(slick_net INTERFACE
43+
add_library(slick-net INTERFACE)
44+
add_library(slick::net ALIAS slick-net)
45+
# For backward compatiblity
46+
add_library(slick_net ALIAS slick-net)
47+
add_library(slick::slick_net ALIAS slick-net)
48+
49+
target_include_directories(slick-net INTERFACE
4750
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
4851
$<INSTALL_INTERFACE:include>
4952
)
50-
target_link_libraries(slick_net INTERFACE slick::slick_queue Boost::asio Boost::beast Boost::context OpenSSL::SSL OpenSSL::Crypto)
51-
target_precompile_headers(slick_net INTERFACE
53+
target_link_libraries(slick-net INTERFACE slick::queue Boost::asio Boost::beast Boost::context OpenSSL::SSL OpenSSL::Crypto)
54+
target_precompile_headers(slick-net INTERFACE
5255
# Standard library headers
5356
<atomic>
5457
<cstdlib>
@@ -75,15 +78,16 @@ target_precompile_headers(slick_net INTERFACE
7578
# External dependencies
7679
<slick/queue.h>
7780
)
81+
set_target_properties(slick-net PROPERTIES EXPORT_NAME net)
7882

7983
if (MSVC)
8084
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
8185
add_definitions(-D_WIN32_WINNT=0x0A00)
8286
set(CMAKE_SUPPRESS_REGENERATION true) # supress zero_check
83-
set_target_properties(slick_net PROPERTIES LINK_INCREMENTAL ON)
84-
target_compile_options(slick_net INTERFACE "/bigobj")
87+
set_target_properties(slick-net PROPERTIES LINK_INCREMENTAL ON)
88+
target_compile_options(slick-net INTERFACE "/bigobj")
8589
if (LINK_STATICALLY)
86-
set_target_properties(slick_net PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
90+
set_target_properties(slick-net PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
8791
endif()
8892
else()
8993
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -march=native")
@@ -115,71 +119,52 @@ endif()
115119

116120
option(BUILD_SLICK_NET_TESTS "Build tests" ON)
117121
if (BUILD_SLICK_NET_TESTS)
118-
message(STATUS "Building slick_net tests")
122+
message(STATUS "Building slick-net tests")
123+
enable_testing()
119124
add_subdirectory(tests)
120125
else()
121-
message(STATUS "Skipping slick_net tests")
126+
message(STATUS "Skipping slick-net tests")
122127
endif()
123128

124129
option(BUILD_SLICK_NET_EXAMPLES "Build examples" ON)
125130
if(BUILD_SLICK_NET_EXAMPLES)
126-
message(STATUS "Building slick_net examples")
131+
message(STATUS "Building slick::net examples")
127132
add_subdirectory(examples)
128133
else()
129-
message(STATUS "Skipping slick_net examples")
134+
message(STATUS "Skipping slick::net examples")
130135
endif()
131136

132137
# Installation rules
133138
install(DIRECTORY include/ DESTINATION include)
134139

135140
# Install targets and create CMake config files
136-
install(TARGETS slick_net
137-
EXPORT slick_net-targets
141+
install(TARGETS slick-net
142+
EXPORT slick-net-targets
138143
INCLUDES DESTINATION include
139144
)
140145

141-
install(EXPORT slick_net-targets
142-
FILE slick_net-targets.cmake
146+
install(EXPORT slick-net-targets
147+
FILE slick-net-targets.cmake
143148
NAMESPACE slick::
144-
DESTINATION share/slick_net
149+
DESTINATION share/slick-net
145150
)
146151

147152
# Create config file
148153
include(CMakePackageConfigHelpers)
149154
configure_package_config_file(
150-
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/slick_net-config.cmake.in"
151-
"${CMAKE_CURRENT_BINARY_DIR}/slick_net-config.cmake"
152-
INSTALL_DESTINATION share/slick_net
155+
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/slick-net-config.cmake.in"
156+
"${CMAKE_CURRENT_BINARY_DIR}/slick-net-config.cmake"
157+
INSTALL_DESTINATION share/slick-net
153158
)
154159

155160
write_basic_package_version_file(
156-
"${CMAKE_CURRENT_BINARY_DIR}/slick_net-config-version.cmake"
161+
"${CMAKE_CURRENT_BINARY_DIR}/slick-net-config-version.cmake"
157162
VERSION ${PROJECT_VERSION}
158163
COMPATIBILITY SameMajorVersion
159164
)
160165

161166
install(FILES
162-
"${CMAKE_CURRENT_BINARY_DIR}/slick_net-config.cmake"
163-
"${CMAKE_CURRENT_BINARY_DIR}/slick_net-config-version.cmake"
164-
DESTINATION share/slick_net
165-
)
166-
167-
# Automatically run install after build in Release mode
168-
if(CMAKE_BUILD_TYPE STREQUAL "Release")
169-
add_custom_target(dist_slick_net ALL
170-
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_BINARY_DIR}/dist/include
171-
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
172-
COMMENT "Copying slick_net headers to dist/include"
173-
VERBATIM
174-
)
175-
176-
if (PROJECT_IS_TOP_LEVEL)
177-
add_custom_target(package_slick_net ALL
178-
COMMAND ${CMAKE_COMMAND} -E tar "cfv" "${CMAKE_BINARY_DIR}/dist/slick_net_${PROJECT_VERSION}.zip" --format=zip "include"
179-
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/dist"
180-
COMMENT "Creating zip archive"
181-
)
182-
183-
add_dependencies(package_slick_net dist_slick_net)
184-
endif()
185-
endif()
167+
"${CMAKE_CURRENT_BINARY_DIR}/slick-net-config.cmake"
168+
"${CMAKE_CURRENT_BINARY_DIR}/slick-net-config-version.cmake"
169+
DESTINATION share/slick-net
170+
)

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2025 Slick Quant
3+
Copyright (c) 2025-2026 Slick Quant
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
# slick_net
1+
# slick-net
22

33
[![C++20](https://img.shields.io/badge/C%2B%2B-20-blue.svg)](https://en.cppreference.com/w/cpp/20)
44
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5-
[![CI](https://github.com/SlickQuant/slick_net/actions/workflows/ci.yml/badge.svg)](https://github.com/SlickQuant/slick_net/actions/workflows/ci.yml)
6-
[![GitHub release](https://img.shields.io/github/v/release/SlickQuant/slick_net)](https://github.com/SlickQuant/slick_net/releases)
5+
[![CI](https://github.com/SlickQuant/slick-net/actions/workflows/ci.yml/badge.svg)](https://github.com/SlickQuant/slick-net/actions/workflows/ci.yml)
6+
[![GitHub release](https://img.shields.io/github/v/release/SlickQuant/slick-net)](https://github.com/SlickQuant/slick-net/releases)
77

88
A high-performance C++ HTTP/WebSocket client library built on Boost.Beast with full SSL/TLS support. Designed for asynchronous, non-blocking HTTP/WebSocket communication in modern C++ applications.
99

@@ -33,24 +33,24 @@ A high-performance C++ HTTP/WebSocket client library built on Boost.Beast with f
3333

3434
### CMake Integration
3535

36-
Add slick_net as a subdirectory in your CMake project:
36+
Add slick-net as a subdirectory in your CMake project:
3737

3838
```cmake
39-
add_subdirectory(path/to/slick_net)
40-
target_link_libraries(your_target PRIVATE slick_net)
39+
add_subdirectory(path/to/slick-net)
40+
target_link_libraries(your_target PRIVATE slick::net)
4141
```
4242

4343
Or use FetchContent:
4444

4545
```cmake
4646
include(FetchContent)
4747
FetchContent_Declare(
48-
slick_net
49-
GIT_REPOSITORY https://github.com/SlickQuant/slick_net.git
48+
slick-net
49+
GIT_REPOSITORY https://github.com/SlickQuant/slick-net.git
5050
GIT_TAG main
5151
)
52-
FetchContent_MakeAvailable(slick_net)
53-
target_link_libraries(your_target PRIVATE slick_net)
52+
FetchContent_MakeAvailable(slick-net)
53+
target_link_libraries(your_target PRIVATE slick::net)
5454
```
5555

5656
## Usage

0 commit comments

Comments
 (0)