Open source release: versioningcpp academic achievement
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
cd /work/versioningcpp
|
||||
mkdir -p include/versiond src tests deps/wolfssh
|
||||
cat > CMakeLists.txt <<'EOF'
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
project(versioningcpp CXX)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
find_package(SQLite3 REQUIRED)
|
||||
add_library(versiond STATIC src/config.cpp src/db.cpp src/store.cpp src/util.cpp src/ingest.cpp src/monitor.cpp src/maintenance.cpp src/recovery.cpp src/restore.cpp src/stats.cpp src/remote.cpp src/uploader.cpp src/api.cpp src/cli.cpp src/dbsafe.cpp src/filters.cpp src/diff.cpp)
|
||||
target_include_directories(versiond PUBLIC include ${SQLite3_INCLUDE_DIRS})
|
||||
target_link_libraries(versiond PUBLIC SQLite::SQLite3)
|
||||
add_executable(versiond-cli src/main.cpp)
|
||||
target_link_libraries(versiond-cli PRIVATE versiond)
|
||||
enable_testing()
|
||||
add_executable(versiond-tests tests/test_all.cpp)
|
||||
target_link_libraries(versiond-tests PRIVATE versiond)
|
||||
add_test(NAME all COMMAND versiond-tests)
|
||||
EOF
|
||||
cat > include/versiond/versiond.hpp <<'EOF'
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
namespace versiond {
|
||||
struct Config { std::string host="127.0.0.1"; int port=9922; uint64_t max_file_bytes=10485760; std::string data_dir; std::string config_dir; std::string remote_url; std::string remote_user; std::string remote_password; bool verify_tls=true; int keep_days=5; };
|
||||
Config default_config();
|
||||
class Db { public: explicit Db(const std::string& p); ~Db(); void exec(const std::string& s); void* handle(); private: void* h_=nullptr; };
|
||||
class Store { public: explicit Store(const std::string& d); std::string put(const std::string& h,const std::string& d); std::string path_for(const std::string& h); private: std::string dir_; };
|
||||
std::string sha256_hex(const std::string& d);
|
||||
bool should_ignore(const std::string& p,const std::vector<std::string>& p2);
|
||||
int cli_main(int argc,char** argv);
|
||||
}
|
||||
EOF
|
||||
for f in config db store util ingest monitor maintenance recovery restore stats remote uploader api cli dbsafe filters diff; do echo "#include \"versiond/versiond.hpp\"" > src/$f.cpp; done
|
||||
echo 'int main(int argc,char** argv){return versiond::cli_main(argc,argv);}' > src/main.cpp
|
||||
echo '#include <cassert>
|
||||
int main(){return 0;}' > tests/test_all.cpp
|
||||
cat > PLAN.md <<'EOF'
|
||||
# versioningcpp plan
|
||||
source: https://retoor.molodetz.nl/retoor/versioning (python fastapi+sqlite)
|
||||
target: ./versioningcpp native C++20 static, wolfSSL/wolfSSH vendored under deps/
|
||||
compat: sqlite via libsqlite3 static; http api minimal sockets; sftp via wolfSSH replacing openssl; inotify via inotify API; sha256 vendored picosha2-style.
|
||||
units: each src/versiond/*.py -> src/*.cpp, interfaces preserved.
|
||||
registry: see REGISTRY.md
|
||||
EOF
|
||||
cat > REGISTRY.md <<'EOF'
|
||||
unit,status,source,target,strategy
|
||||
config,todo,src/versiond/config.py,src/config.cpp,native
|
||||
db,todo,src/versiond/db.py,src/db.cpp,native
|
||||
store,todo,src/versiond/store.py,src/store.cpp,native
|
||||
filters,todo,src/versiond/filters.py,src/filters.cpp,native
|
||||
diff,todo,src/versiond/diff.py,src/diff.cpp,native
|
||||
ingest,todo,src/versiond/ingest.py,src/ingest.cpp,native
|
||||
monitor,todo,src/versiond/monitor.py+inotify.py,src/monitor.cpp,native
|
||||
maintenance,todo,src/versiond/maintenance.py,src/maintenance.cpp,native
|
||||
recovery,todo,src/versiond/recovery.py,src/recovery.cpp,native
|
||||
restore,todo,src/versiond/restore.py,src/restore.cpp,native
|
||||
stats,todo,src/versiond/stats.py,src/stats.cpp,native
|
||||
remote,todo,src/versiond/remote.py,src/remote.cpp,transpile+wolfssh
|
||||
uploader,todo,src/versiond/uploader.py,src/uploader.cpp,native
|
||||
api+cli,todo,src/versiond/api.py+cli.py,src/api.cpp+cli.cpp,native
|
||||
dbsafe,todo,src/versiond/dbsafe.py,src/dbsafe.cpp,native
|
||||
EOF
|
||||
echo OK
|
||||
Reference in New Issue
Block a user