feat(lib): Initialize libnextcloud C++17 library scaffolding #26

Merged
maj merged 2 commits from create-libnextcloud into develop 2026-01-28 18:34:12 +00:00
Owner

Overview

Implements Issue #25 - Creates the foundational structure for libnextcloud, the cross-platform C++17 shared library for Nextcloud connectivity.

What This PR Adds

Project Structure

  • CMakeLists.txt with modern CMake 3.15+
  • version.hpp with semantic versioning (0.1.0)
  • types.hpp with common enums and structs
  • Google Test integration with 12 passing tests
  • pkg-config and CMake package config
  • Complete README with build instructions

Core Components

version.hpp: Semantic versioning with compile-time and runtime APIs

types.hpp: NextcloudError enum (14 codes), UploadProgress, FileInfo, FolderInfo structs

CMake: C++17, static library, dependencies (curl, mbedtls, tinyxml2), install rules

Testing

All 12 unit tests pass:

  • Version macros and runtime queries
  • Error codes and type definitions
  • Struct sizes and type safety

Build Instructions

Platform Support

  • Linux (development)
  • Nintendo 3DS (via container, ready to test)
  • Switch, Wii U, Vita (ready when needed)

What This Unblocks

  • Issue #8 - WebDAV client (next priority)
  • Issues #9-13 - Auth, upload, folders, config, tests

Acceptance Criteria

All criteria from Issue #25 met:

  • CMake builds successfully
  • Can link from external projects
  • Version info accessible
  • Types defined and documented
  • 12 tests passing
  • README complete
  • pkg-config working
  • Ready for implementation

Closes #25
Enables: #8, #9, #10, #11, #12, #13

## Overview Implements Issue #25 - Creates the foundational structure for libnextcloud, the cross-platform C++17 shared library for Nextcloud connectivity. ## What This PR Adds ### Project Structure - CMakeLists.txt with modern CMake 3.15+ - version.hpp with semantic versioning (0.1.0) - types.hpp with common enums and structs - Google Test integration with 12 passing tests - pkg-config and CMake package config - Complete README with build instructions ### Core Components **version.hpp**: Semantic versioning with compile-time and runtime APIs **types.hpp**: NextcloudError enum (14 codes), UploadProgress, FileInfo, FolderInfo structs **CMake**: C++17, static library, dependencies (curl, mbedtls, tinyxml2), install rules ### Testing All 12 unit tests pass: - Version macros and runtime queries - Error codes and type definitions - Struct sizes and type safety ## Build Instructions ## Platform Support - Linux (development) - Nintendo 3DS (via container, ready to test) - Switch, Wii U, Vita (ready when needed) ## What This Unblocks - Issue #8 - WebDAV client (next priority) - Issues #9-13 - Auth, upload, folders, config, tests ## Acceptance Criteria All criteria from Issue #25 met: - CMake builds successfully - Can link from external projects - Version info accessible - Types defined and documented - 12 tests passing - README complete - pkg-config working - Ready for implementation ## Related Closes #25 Enables: #8, #9, #10, #11, #12, #13
maj added 11 commits 2026-01-28 17:51:20 +00:00
Update documentation to reflect the actual JSON-based configuration
system instead of the old INI-style format.

Changes:
- Updated Quick Start section to reference config.example.json
- Rewrote Configuration section with JSON examples
- Added detailed environment variable override documentation
- Included CI/CD usage examples
- Documented all supported environment variables

All acceptance criteria from Issue #6 verified:
✓ config.example.json created and documented
✓ load-config.sh correctly parses JSON
✓ Environment variables take precedence over JSON
✓ Validation script catches missing required fields
✓ Documentation clear for new developers
✓ CI can inject credentials via env vars

Related: #6
maj merged commit 41dfa6674a into develop 2026-01-28 18:34:12 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: maj/nextcloud-share#26