Browse Source

New shape for dependency listings

default_compile_flags
vector-of-bool 4 years ago
parent
commit
c80b8027e5
12 changed files with 1085 additions and 246 deletions
  1. +105
    -105
      catalog.json
  2. +835
    -0
      catalog.old.json
  3. +89
    -88
      src/dds/package/manifest.cpp
  4. +4
    -4
      tests/deps/git-remote/package.json5
  5. +3
    -3
      tests/deps/use-catch2/project/package.json5
  6. +3
    -3
      tests/deps/use-cryptopp/project/package.json5
  7. +3
    -3
      tests/deps/use-libsodium/project/package.json5
  8. +3
    -3
      tests/deps/use-remote/package.json5
  9. +3
    -3
      tests/deps/use-spdlog/project/package.json5
  10. +14
    -22
      tools/ci.py
  11. +21
    -11
      tools/gen-catalog-json.py
  12. +2
    -1
      tools/self_build.py

+ 105
- 105
catalog.json View File

"packages": { "packages": {
"ctre": { "ctre": {
"2.7.0": { "2.7.0": {
"depends": {},
"depends": [],
"description": "A compile-time PCRE (almost) compatible regular expression matcher", "description": "A compile-time PCRE (almost) compatible regular expression matcher",
"git": { "git": {
"auto-lib": "hanickadot/ctre", "auto-lib": "hanickadot/ctre",
}, },
"fmt": { "fmt": {
"0.10.0": { "0.10.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"0.12.0": { "0.12.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"0.8.0": { "0.8.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"0.9.0": { "0.9.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"1.0.0": { "1.0.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"1.1.0": { "1.1.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"2.0.0": { "2.0.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"2.0.1": { "2.0.1": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"2.1.0": { "2.1.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"2.1.1": { "2.1.1": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"3.0.0": { "3.0.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"3.0.1": { "3.0.1": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"3.0.2": { "3.0.2": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"4.0.0": { "4.0.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"4.1.0": { "4.1.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"5.0.0": { "5.0.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"5.1.0": { "5.1.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"5.2.0": { "5.2.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"5.2.1": { "5.2.1": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"5.3.0": { "5.3.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"6.0.0": { "6.0.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"6.1.0": { "6.1.0": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"6.1.1": { "6.1.1": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
} }
}, },
"6.1.2": { "6.1.2": {
"depends": {},
"depends": [],
"description": "A modern formatting library : https://fmt.dev/", "description": "A modern formatting library : https://fmt.dev/",
"git": { "git": {
"auto-lib": "fmt/fmt", "auto-lib": "fmt/fmt",
}, },
"ms-wil": { "ms-wil": {
"2020.03.16": { "2020.03.16": {
"depends": {},
"depends": [],
"description": "The Windows Implementation Library", "description": "The Windows Implementation Library",
"git": { "git": {
"ref": "dds/2020.03.16", "ref": "dds/2020.03.16",
}, },
"neo-concepts": { "neo-concepts": {
"0.1.0": { "0.1.0": {
"depends": {},
"depends": [],
"description": "Minimal C++ concepts library. Contains many definitions from C++20.", "description": "Minimal C++ concepts library. Contains many definitions from C++20.",
"git": { "git": {
"ref": "0.1.0", "ref": "0.1.0",
} }
}, },
"0.2.0": { "0.2.0": {
"depends": {},
"depends": [],
"description": "Minimal C++ concepts library. Contains many definitions from C++20.", "description": "Minimal C++ concepts library. Contains many definitions from C++20.",
"git": { "git": {
"ref": "0.2.0", "ref": "0.2.0",
} }
}, },
"0.2.1": { "0.2.1": {
"depends": {},
"depends": [],
"description": "Minimal C++ concepts library. Contains many definitions from C++20.", "description": "Minimal C++ concepts library. Contains many definitions from C++20.",
"git": { "git": {
"ref": "0.2.1", "ref": "0.2.1",
} }
}, },
"0.2.2": { "0.2.2": {
"depends": {},
"depends": [],
"description": "Minimal C++ concepts library. Contains many definitions from C++20.", "description": "Minimal C++ concepts library. Contains many definitions from C++20.",
"git": { "git": {
"ref": "0.2.2", "ref": "0.2.2",
} }
}, },
"0.3.0": { "0.3.0": {
"depends": {},
"depends": [],
"description": "Minimal C++ concepts library. Contains many definitions from C++20.", "description": "Minimal C++ concepts library. Contains many definitions from C++20.",
"git": { "git": {
"ref": "0.3.0", "ref": "0.3.0",
} }
}, },
"0.3.1": { "0.3.1": {
"depends": {},
"depends": [],
"description": "Minimal C++ concepts library. Contains many definitions from C++20.", "description": "Minimal C++ concepts library. Contains many definitions from C++20.",
"git": { "git": {
"ref": "0.3.1", "ref": "0.3.1",
} }
}, },
"0.3.2": { "0.3.2": {
"depends": {},
"depends": [],
"description": "Minimal C++ concepts library. Contains many definitions from C++20.", "description": "Minimal C++ concepts library. Contains many definitions from C++20.",
"git": { "git": {
"ref": "0.3.2", "ref": "0.3.2",
}, },
"neo-fun": { "neo-fun": {
"0.1.0": { "0.1.0": {
"depends": {},
"depends": [],
"description": "Some library fundamentals that you might find useful", "description": "Some library fundamentals that you might find useful",
"git": { "git": {
"ref": "0.1.0", "ref": "0.1.0",
} }
}, },
"0.1.1": { "0.1.1": {
"depends": {},
"depends": [],
"description": "Some library fundamentals that you might find useful", "description": "Some library fundamentals that you might find useful",
"git": { "git": {
"ref": "0.1.1", "ref": "0.1.1",
} }
}, },
"0.2.0": { "0.2.0": {
"depends": {},
"depends": [],
"description": "Some library fundamentals that you might find useful", "description": "Some library fundamentals that you might find useful",
"git": { "git": {
"ref": "0.2.0", "ref": "0.2.0",
} }
}, },
"0.2.1": { "0.2.1": {
"depends": {},
"depends": [],
"description": "Some library fundamentals that you might find useful", "description": "Some library fundamentals that you might find useful",
"git": { "git": {
"ref": "0.2.1", "ref": "0.2.1",
} }
}, },
"0.3.0": { "0.3.0": {
"depends": {},
"depends": [],
"description": "Some library fundamentals that you might find useful", "description": "Some library fundamentals that you might find useful",
"git": { "git": {
"ref": "0.3.0", "ref": "0.3.0",
} }
}, },
"0.3.1": { "0.3.1": {
"depends": {},
"depends": [],
"description": "Some library fundamentals that you might find useful", "description": "Some library fundamentals that you might find useful",
"git": { "git": {
"ref": "0.3.1", "ref": "0.3.1",
} }
}, },
"0.3.2": { "0.3.2": {
"depends": {},
"depends": [],
"description": "Some library fundamentals that you might find useful", "description": "Some library fundamentals that you might find useful",
"git": { "git": {
"ref": "0.3.2", "ref": "0.3.2",
}, },
"neo-sqlite3": { "neo-sqlite3": {
"0.1.0": { "0.1.0": {
"depends": {},
"depends": [],
"description": "A modern and low-level C++ SQLite API", "description": "A modern and low-level C++ SQLite API",
"git": { "git": {
"ref": "0.1.0", "ref": "0.1.0",
} }
}, },
"0.2.0": { "0.2.0": {
"depends": {},
"depends": [],
"description": "A modern and low-level C++ SQLite API", "description": "A modern and low-level C++ SQLite API",
"git": { "git": {
"ref": "0.2.0", "ref": "0.2.0",
} }
}, },
"0.2.1": { "0.2.1": {
"depends": {},
"depends": [],
"description": "A modern and low-level C++ SQLite API", "description": "A modern and low-level C++ SQLite API",
"git": { "git": {
"ref": "0.2.1", "ref": "0.2.1",
} }
}, },
"0.2.2": { "0.2.2": {
"depends": {},
"depends": [],
"description": "A modern and low-level C++ SQLite API", "description": "A modern and low-level C++ SQLite API",
"git": { "git": {
"ref": "0.2.2", "ref": "0.2.2",
} }
}, },
"0.2.3": { "0.2.3": {
"depends": {},
"depends": [],
"description": "A modern and low-level C++ SQLite API", "description": "A modern and low-level C++ SQLite API",
"git": { "git": {
"ref": "0.2.3", "ref": "0.2.3",
}, },
"nlohmann-json": { "nlohmann-json": {
"3.0.0": { "3.0.0": {
"depends": {},
"depends": [],
"description": "JSON for Modern C++", "description": "JSON for Modern C++",
"git": { "git": {
"ref": "dds/3.0.0", "ref": "dds/3.0.0",
} }
}, },
"3.0.1": { "3.0.1": {
"depends": {},
"depends": [],
"description": "JSON for Modern C++", "description": "JSON for Modern C++",
"git": { "git": {
"ref": "dds/3.0.1", "ref": "dds/3.0.1",
} }
}, },
"3.1.0": { "3.1.0": {
"depends": {},
"depends": [],
"description": "JSON for Modern C++", "description": "JSON for Modern C++",
"git": { "git": {
"ref": "dds/3.1.0", "ref": "dds/3.1.0",
} }
}, },
"3.1.1": { "3.1.1": {
"depends": {},
"depends": [],
"description": "JSON for Modern C++", "description": "JSON for Modern C++",
"git": { "git": {
"ref": "dds/3.1.1", "ref": "dds/3.1.1",
} }
}, },
"3.1.2": { "3.1.2": {
"depends": {},
"depends": [],
"description": "JSON for Modern C++", "description": "JSON for Modern C++",
"git": { "git": {
"ref": "dds/3.1.2", "ref": "dds/3.1.2",
} }
}, },
"3.2.0": { "3.2.0": {
"depends": {},
"depends": [],
"description": "JSON for Modern C++", "description": "JSON for Modern C++",
"git": { "git": {
"ref": "dds/3.2.0", "ref": "dds/3.2.0",
} }
}, },
"3.3.0": { "3.3.0": {
"depends": {},
"depends": [],
"description": "JSON for Modern C++", "description": "JSON for Modern C++",
"git": { "git": {
"ref": "dds/3.3.0", "ref": "dds/3.3.0",
} }
}, },
"3.4.0": { "3.4.0": {
"depends": {},
"depends": [],
"description": "JSON for Modern C++", "description": "JSON for Modern C++",
"git": { "git": {
"ref": "dds/3.4.0", "ref": "dds/3.4.0",
} }
}, },
"3.5.0": { "3.5.0": {
"depends": {},
"depends": [],
"description": "JSON for Modern C++", "description": "JSON for Modern C++",
"git": { "git": {
"ref": "dds/3.5.0", "ref": "dds/3.5.0",
} }
}, },
"3.6.0": { "3.6.0": {
"depends": {},
"depends": [],
"description": "JSON for Modern C++", "description": "JSON for Modern C++",
"git": { "git": {
"ref": "dds/3.6.0", "ref": "dds/3.6.0",
} }
}, },
"3.6.1": { "3.6.1": {
"depends": {},
"depends": [],
"description": "JSON for Modern C++", "description": "JSON for Modern C++",
"git": { "git": {
"ref": "dds/3.6.1", "ref": "dds/3.6.1",
} }
}, },
"3.7.0": { "3.7.0": {
"depends": {},
"depends": [],
"description": "JSON for Modern C++", "description": "JSON for Modern C++",
"git": { "git": {
"ref": "dds/3.7.0", "ref": "dds/3.7.0",
} }
}, },
"3.7.1": { "3.7.1": {
"depends": {},
"depends": [],
"description": "JSON for Modern C++", "description": "JSON for Modern C++",
"git": { "git": {
"ref": "dds/3.7.1", "ref": "dds/3.7.1",
} }
}, },
"3.7.2": { "3.7.2": {
"depends": {},
"depends": [],
"description": "JSON for Modern C++", "description": "JSON for Modern C++",
"git": { "git": {
"ref": "dds/3.7.2", "ref": "dds/3.7.2",
} }
}, },
"3.7.3": { "3.7.3": {
"depends": {},
"depends": [],
"description": "JSON for Modern C++", "description": "JSON for Modern C++",
"git": { "git": {
"ref": "dds/3.7.3", "ref": "dds/3.7.3",
}, },
"pubgrub": { "pubgrub": {
"0.1.2": { "0.1.2": {
"depends": {},
"depends": [],
"description": "A C++ implementation of the Pubgrub version solving algorithm", "description": "A C++ implementation of the Pubgrub version solving algorithm",
"git": { "git": {
"ref": "0.1.2", "ref": "0.1.2",
} }
}, },
"0.2.0": { "0.2.0": {
"depends": {},
"depends": [],
"description": "A C++ implementation of the Pubgrub version solving algorithm", "description": "A C++ implementation of the Pubgrub version solving algorithm",
"git": { "git": {
"ref": "0.2.0", "ref": "0.2.0",
} }
}, },
"0.2.1": { "0.2.1": {
"depends": {},
"depends": [],
"description": "A C++ implementation of the Pubgrub version solving algorithm", "description": "A C++ implementation of the Pubgrub version solving algorithm",
"git": { "git": {
"ref": "0.2.1", "ref": "0.2.1",
}, },
"range-v3": { "range-v3": {
"0.10.0": { "0.10.0": {
"depends": {},
"depends": [],
"description": "Range library for C++14/17/20, basis for C++20's std::ranges", "description": "Range library for C++14/17/20, basis for C++20's std::ranges",
"git": { "git": {
"auto-lib": "range-v3/range-v3", "auto-lib": "range-v3/range-v3",
} }
}, },
"0.5.0": { "0.5.0": {
"depends": {},
"depends": [],
"description": "Range library for C++14/17/20, basis for C++20's std::ranges", "description": "Range library for C++14/17/20, basis for C++20's std::ranges",
"git": { "git": {
"auto-lib": "range-v3/range-v3", "auto-lib": "range-v3/range-v3",
} }
}, },
"0.9.0": { "0.9.0": {
"depends": {},
"depends": [],
"description": "Range library for C++14/17/20, basis for C++20's std::ranges", "description": "Range library for C++14/17/20, basis for C++20's std::ranges",
"git": { "git": {
"auto-lib": "range-v3/range-v3", "auto-lib": "range-v3/range-v3",
} }
}, },
"0.9.1": { "0.9.1": {
"depends": {},
"depends": [],
"description": "Range library for C++14/17/20, basis for C++20's std::ranges", "description": "Range library for C++14/17/20, basis for C++20's std::ranges",
"git": { "git": {
"auto-lib": "range-v3/range-v3", "auto-lib": "range-v3/range-v3",
}, },
"semver": { "semver": {
"0.2.1": { "0.2.1": {
"depends": {},
"depends": [],
"description": "A C++ library that implements Semantic Versioning parsing, emitting, types, ordering, and operations. See https://semver.org/", "description": "A C++ library that implements Semantic Versioning parsing, emitting, types, ordering, and operations. See https://semver.org/",
"git": { "git": {
"ref": "0.2.1", "ref": "0.2.1",
} }
}, },
"0.2.2": { "0.2.2": {
"depends": {},
"depends": [],
"description": "A C++ library that implements Semantic Versioning parsing, emitting, types, ordering, and operations. See https://semver.org/", "description": "A C++ library that implements Semantic Versioning parsing, emitting, types, ordering, and operations. See https://semver.org/",
"git": { "git": {
"ref": "0.2.2", "ref": "0.2.2",
}, },
"spdlog": { "spdlog": {
"0.10.0": { "0.10.0": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"0.11.0": { "0.11.0": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"0.12.0": { "0.12.0": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"0.13.0": { "0.13.0": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"0.14.0": { "0.14.0": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"0.16.0": { "0.16.0": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"0.16.1": { "0.16.1": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"0.16.2": { "0.16.2": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"0.17.0": { "0.17.0": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"0.9.0": { "0.9.0": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"1.0.0": { "1.0.0": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"1.1.0": { "1.1.0": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"1.2.0": { "1.2.0": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"1.2.1": { "1.2.1": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"1.3.0": { "1.3.0": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"1.3.1": { "1.3.1": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"1.4.0": { "1.4.0": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"1.4.1": { "1.4.1": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
} }
}, },
"1.4.2": { "1.4.2": {
"depends": {},
"depends": [],
"description": "Fast C++ logging library", "description": "Fast C++ logging library",
"git": { "git": {
"auto-lib": "spdlog/spdlog", "auto-lib": "spdlog/spdlog",
}, },
"vob-json5": { "vob-json5": {
"0.1.5": { "0.1.5": {
"depends": {},
"depends": [],
"description": "A C++ implementation of a JSON5 parser", "description": "A C++ implementation of a JSON5 parser",
"git": { "git": {
"ref": "0.1.5", "ref": "0.1.5",
}, },
"vob-semester": { "vob-semester": {
"0.1.0": { "0.1.0": {
"depends": {
"neo-concepts": "^0.2.1",
"neo-fun": "^0.1.0"
},
"depends": [
"neo-fun^0.1.0",
"neo-concepts^0.2.1"
],
"description": "A C++ library to process recursive dynamic data", "description": "A C++ library to process recursive dynamic data",
"git": { "git": {
"ref": "0.1.0", "ref": "0.1.0",
} }
}, },
"0.1.1": { "0.1.1": {
"depends": {
"neo-concepts": "^0.2.2",
"neo-fun": "^0.1.1"
},
"depends": [
"neo-fun^0.1.1",
"neo-concepts^0.2.2"
],
"description": "A C++ library to process recursive dynamic data", "description": "A C++ library to process recursive dynamic data",
"git": { "git": {
"ref": "0.1.1", "ref": "0.1.1",
} }
}, },
"0.2.0": { "0.2.0": {
"depends": {
"neo-concepts": "^0.3.2",
"neo-fun": "^0.3.2"
},
"depends": [
"neo-fun^0.3.2",
"neo-concepts^0.3.2"
],
"description": "A C++ library to process recursive dynamic data", "description": "A C++ library to process recursive dynamic data",
"git": { "git": {
"ref": "0.2.0", "ref": "0.2.0",
} }
}, },
"0.2.1": { "0.2.1": {
"depends": {
"neo-concepts": "^0.3.2",
"neo-fun": "^0.3.2"
},
"depends": [
"neo-fun^0.3.2",
"neo-concepts^0.3.2"
],
"description": "A C++ library to process recursive dynamic data", "description": "A C++ library to process recursive dynamic data",
"git": { "git": {
"ref": "0.2.1", "ref": "0.2.1",

+ 835
- 0
catalog.old.json View File

{
"packages": {
"ctre": {
"2.7.0": {
"depends": {},
"description": "A compile-time PCRE (almost) compatible regular expression matcher",
"git": {
"auto-lib": "hanickadot/ctre",
"ref": "v2.7",
"url": "https://github.com/hanickadot/compile-time-regular-expressions.git"
}
}
},
"fmt": {
"0.10.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "0.10.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"0.12.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "0.12.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"0.8.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "0.8.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"0.9.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "0.9.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"1.0.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "1.0.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"1.1.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "1.1.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"2.0.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "2.0.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"2.0.1": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "2.0.1",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"2.1.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "2.1.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"2.1.1": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "2.1.1",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"3.0.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "3.0.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"3.0.1": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "3.0.1",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"3.0.2": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "3.0.2",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"4.0.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "4.0.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"4.1.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "4.1.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"5.0.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "5.0.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"5.1.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "5.1.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"5.2.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "5.2.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"5.2.1": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "5.2.1",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"5.3.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "5.3.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"6.0.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "6.0.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"6.1.0": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "6.1.0",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"6.1.1": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "6.1.1",
"url": "https://github.com/fmtlib/fmt.git"
}
},
"6.1.2": {
"depends": {},
"description": "A modern formatting library : https://fmt.dev/",
"git": {
"auto-lib": "fmt/fmt",
"ref": "6.1.2",
"url": "https://github.com/fmtlib/fmt.git"
}
}
},
"ms-wil": {
"2020.03.16": {
"depends": {},
"description": "The Windows Implementation Library",
"git": {
"ref": "dds/2020.03.16",
"url": "https://github.com/vector-of-bool/wil.git"
}
}
},
"neo-concepts": {
"0.1.0": {
"depends": {},
"description": "Minimal C++ concepts library. Contains many definitions from C++20.",
"git": {
"ref": "0.1.0",
"url": "https://github.com/vector-of-bool/neo-concepts.git"
}
},
"0.2.0": {
"depends": {},
"description": "Minimal C++ concepts library. Contains many definitions from C++20.",
"git": {
"ref": "0.2.0",
"url": "https://github.com/vector-of-bool/neo-concepts.git"
}
},
"0.2.1": {
"depends": {},
"description": "Minimal C++ concepts library. Contains many definitions from C++20.",
"git": {
"ref": "0.2.1",
"url": "https://github.com/vector-of-bool/neo-concepts.git"
}
},
"0.2.2": {
"depends": {},
"description": "Minimal C++ concepts library. Contains many definitions from C++20.",
"git": {
"ref": "0.2.2",
"url": "https://github.com/vector-of-bool/neo-concepts.git"
}
},
"0.3.0": {
"depends": {},
"description": "Minimal C++ concepts library. Contains many definitions from C++20.",
"git": {
"ref": "0.3.0",
"url": "https://github.com/vector-of-bool/neo-concepts.git"
}
},
"0.3.1": {
"depends": {},
"description": "Minimal C++ concepts library. Contains many definitions from C++20.",
"git": {
"ref": "0.3.1",
"url": "https://github.com/vector-of-bool/neo-concepts.git"
}
},
"0.3.2": {
"depends": {},
"description": "Minimal C++ concepts library. Contains many definitions from C++20.",
"git": {
"ref": "0.3.2",
"url": "https://github.com/vector-of-bool/neo-concepts.git"
}
}
},
"neo-fun": {
"0.1.0": {
"depends": {},
"description": "Some library fundamentals that you might find useful",
"git": {
"ref": "0.1.0",
"url": "https://github.com/vector-of-bool/neo-fun.git"
}
},
"0.1.1": {
"depends": {},
"description": "Some library fundamentals that you might find useful",
"git": {
"ref": "0.1.1",
"url": "https://github.com/vector-of-bool/neo-fun.git"
}
},
"0.2.0": {
"depends": {},
"description": "Some library fundamentals that you might find useful",
"git": {
"ref": "0.2.0",
"url": "https://github.com/vector-of-bool/neo-fun.git"
}
},
"0.2.1": {
"depends": {},
"description": "Some library fundamentals that you might find useful",
"git": {
"ref": "0.2.1",
"url": "https://github.com/vector-of-bool/neo-fun.git"
}
},
"0.3.0": {
"depends": {},
"description": "Some library fundamentals that you might find useful",
"git": {
"ref": "0.3.0",
"url": "https://github.com/vector-of-bool/neo-fun.git"
}
},
"0.3.1": {
"depends": {},
"description": "Some library fundamentals that you might find useful",
"git": {
"ref": "0.3.1",
"url": "https://github.com/vector-of-bool/neo-fun.git"
}
},
"0.3.2": {
"depends": {},
"description": "Some library fundamentals that you might find useful",
"git": {
"ref": "0.3.2",
"url": "https://github.com/vector-of-bool/neo-fun.git"
}
}
},
"neo-sqlite3": {
"0.1.0": {
"depends": {},
"description": "A modern and low-level C++ SQLite API",
"git": {
"ref": "0.1.0",
"url": "https://github.com/vector-of-bool/neo-sqlite3.git"
}
},
"0.2.0": {
"depends": {},
"description": "A modern and low-level C++ SQLite API",
"git": {
"ref": "0.2.0",
"url": "https://github.com/vector-of-bool/neo-sqlite3.git"
}
},
"0.2.1": {
"depends": {},
"description": "A modern and low-level C++ SQLite API",
"git": {
"ref": "0.2.1",
"url": "https://github.com/vector-of-bool/neo-sqlite3.git"
}
},
"0.2.2": {
"depends": {},
"description": "A modern and low-level C++ SQLite API",
"git": {
"ref": "0.2.2",
"url": "https://github.com/vector-of-bool/neo-sqlite3.git"
}
},
"0.2.3": {
"depends": {},
"description": "A modern and low-level C++ SQLite API",
"git": {
"ref": "0.2.3",
"url": "https://github.com/vector-of-bool/neo-sqlite3.git"
}
}
},
"nlohmann-json": {
"3.0.0": {
"depends": {},
"description": "JSON for Modern C++",
"git": {
"ref": "dds/3.0.0",
"url": "https://github.com/vector-of-bool/json.git"
}
},
"3.0.1": {
"depends": {},
"description": "JSON for Modern C++",
"git": {
"ref": "dds/3.0.1",
"url": "https://github.com/vector-of-bool/json.git"
}
},
"3.1.0": {
"depends": {},
"description": "JSON for Modern C++",
"git": {
"ref": "dds/3.1.0",
"url": "https://github.com/vector-of-bool/json.git"
}
},
"3.1.1": {
"depends": {},
"description": "JSON for Modern C++",
"git": {
"ref": "dds/3.1.1",
"url": "https://github.com/vector-of-bool/json.git"
}
},
"3.1.2": {
"depends": {},
"description": "JSON for Modern C++",
"git": {
"ref": "dds/3.1.2",
"url": "https://github.com/vector-of-bool/json.git"
}
},
"3.2.0": {
"depends": {},
"description": "JSON for Modern C++",
"git": {
"ref": "dds/3.2.0",
"url": "https://github.com/vector-of-bool/json.git"
}
},
"3.3.0": {
"depends": {},
"description": "JSON for Modern C++",
"git": {
"ref": "dds/3.3.0",
"url": "https://github.com/vector-of-bool/json.git"
}
},
"3.4.0": {
"depends": {},
"description": "JSON for Modern C++",
"git": {
"ref": "dds/3.4.0",
"url": "https://github.com/vector-of-bool/json.git"
}
},
"3.5.0": {
"depends": {},
"description": "JSON for Modern C++",
"git": {
"ref": "dds/3.5.0",
"url": "https://github.com/vector-of-bool/json.git"
}
},
"3.6.0": {
"depends": {},
"description": "JSON for Modern C++",
"git": {
"ref": "dds/3.6.0",
"url": "https://github.com/vector-of-bool/json.git"
}
},
"3.6.1": {
"depends": {},
"description": "JSON for Modern C++",
"git": {
"ref": "dds/3.6.1",
"url": "https://github.com/vector-of-bool/json.git"
}
},
"3.7.0": {
"depends": {},
"description": "JSON for Modern C++",
"git": {
"ref": "dds/3.7.0",
"url": "https://github.com/vector-of-bool/json.git"
}
},
"3.7.1": {
"depends": {},
"description": "JSON for Modern C++",
"git": {
"ref": "dds/3.7.1",
"url": "https://github.com/vector-of-bool/json.git"
}
},
"3.7.2": {
"depends": {},
"description": "JSON for Modern C++",
"git": {
"ref": "dds/3.7.2",
"url": "https://github.com/vector-of-bool/json.git"
}
},
"3.7.3": {
"depends": {},
"description": "JSON for Modern C++",
"git": {
"ref": "dds/3.7.3",
"url": "https://github.com/vector-of-bool/json.git"
}
}
},
"pubgrub": {
"0.1.2": {
"depends": {},
"description": "A C++ implementation of the Pubgrub version solving algorithm",
"git": {
"ref": "0.1.2",
"url": "https://github.com/vector-of-bool/pubgrub.git"
}
},
"0.2.0": {
"depends": {},
"description": "A C++ implementation of the Pubgrub version solving algorithm",
"git": {
"ref": "0.2.0",
"url": "https://github.com/vector-of-bool/pubgrub.git"
}
},
"0.2.1": {
"depends": {},
"description": "A C++ implementation of the Pubgrub version solving algorithm",
"git": {
"ref": "0.2.1",
"url": "https://github.com/vector-of-bool/pubgrub.git"
}
}
},
"range-v3": {
"0.10.0": {
"depends": {},
"description": "Range library for C++14/17/20, basis for C++20's std::ranges",
"git": {
"auto-lib": "range-v3/range-v3",
"ref": "0.10.0",
"url": "https://github.com/ericniebler/range-v3.git"
}
},
"0.5.0": {
"depends": {},
"description": "Range library for C++14/17/20, basis for C++20's std::ranges",
"git": {
"auto-lib": "range-v3/range-v3",
"ref": "0.5.0",
"url": "https://github.com/ericniebler/range-v3.git"
}
},
"0.9.0": {
"depends": {},
"description": "Range library for C++14/17/20, basis for C++20's std::ranges",
"git": {
"auto-lib": "range-v3/range-v3",
"ref": "0.9.0",
"url": "https://github.com/ericniebler/range-v3.git"
}
},
"0.9.1": {
"depends": {},
"description": "Range library for C++14/17/20, basis for C++20's std::ranges",
"git": {
"auto-lib": "range-v3/range-v3",
"ref": "0.9.1",
"url": "https://github.com/ericniebler/range-v3.git"
}
}
},
"semver": {
"0.2.1": {
"depends": {},
"description": "A C++ library that implements Semantic Versioning parsing, emitting, types, ordering, and operations. See https://semver.org/",
"git": {
"ref": "0.2.1",
"url": "https://github.com/vector-of-bool/semver.git"
}
},
"0.2.2": {
"depends": {},
"description": "A C++ library that implements Semantic Versioning parsing, emitting, types, ordering, and operations. See https://semver.org/",
"git": {
"ref": "0.2.2",
"url": "https://github.com/vector-of-bool/semver.git"
}
}
},
"spdlog": {
"0.10.0": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v0.10.0",
"url": "https://github.com/gabime/spdlog.git"
}
},
"0.11.0": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v0.11.0",
"url": "https://github.com/gabime/spdlog.git"
}
},
"0.12.0": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v0.12.0",
"url": "https://github.com/gabime/spdlog.git"
}
},
"0.13.0": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v0.13.0",
"url": "https://github.com/gabime/spdlog.git"
}
},
"0.14.0": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v0.14.0",
"url": "https://github.com/gabime/spdlog.git"
}
},
"0.16.0": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v0.16.0",
"url": "https://github.com/gabime/spdlog.git"
}
},
"0.16.1": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v0.16.1",
"url": "https://github.com/gabime/spdlog.git"
}
},
"0.16.2": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v0.16.2",
"url": "https://github.com/gabime/spdlog.git"
}
},
"0.17.0": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v0.17.0",
"url": "https://github.com/gabime/spdlog.git"
}
},
"0.9.0": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v0.9.0",
"url": "https://github.com/gabime/spdlog.git"
}
},
"1.0.0": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v1.0.0",
"url": "https://github.com/gabime/spdlog.git"
}
},
"1.1.0": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v1.1.0",
"url": "https://github.com/gabime/spdlog.git"
}
},
"1.2.0": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v1.2.0",
"url": "https://github.com/gabime/spdlog.git"
}
},
"1.2.1": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v1.2.1",
"url": "https://github.com/gabime/spdlog.git"
}
},
"1.3.0": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v1.3.0",
"url": "https://github.com/gabime/spdlog.git"
}
},
"1.3.1": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v1.3.1",
"url": "https://github.com/gabime/spdlog.git"
}
},
"1.4.0": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v1.4.0",
"url": "https://github.com/gabime/spdlog.git"
}
},
"1.4.1": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v1.4.1",
"url": "https://github.com/gabime/spdlog.git"
}
},
"1.4.2": {
"depends": {},
"description": "Fast C++ logging library",
"git": {
"auto-lib": "spdlog/spdlog",
"ref": "v1.4.2",
"url": "https://github.com/gabime/spdlog.git"
}
}
},
"vob-json5": {
"0.1.5": {
"depends": {},
"description": "A C++ implementation of a JSON5 parser",
"git": {
"ref": "0.1.5",
"url": "https://github.com/vector-of-bool/json5.git"
}
}
},
"vob-semester": {
"0.1.0": {
"depends": {
"neo-concepts": "^0.2.1",
"neo-fun": "^0.1.0"
},
"description": "A C++ library to process recursive dynamic data",
"git": {
"ref": "0.1.0",
"url": "https://github.com/vector-of-bool/semester.git"
}
},
"0.1.1": {
"depends": {
"neo-concepts": "^0.2.2",
"neo-fun": "^0.1.1"
},
"description": "A C++ library to process recursive dynamic data",
"git": {
"ref": "0.1.1",
"url": "https://github.com/vector-of-bool/semester.git"
}
},
"0.2.0": {
"depends": {
"neo-concepts": "^0.3.2",
"neo-fun": "^0.3.2"
},
"description": "A C++ library to process recursive dynamic data",
"git": {
"ref": "0.2.0",
"url": "https://github.com/vector-of-bool/semester.git"
}
},
"0.2.1": {
"depends": {
"neo-concepts": "^0.3.2",
"neo-fun": "^0.3.2"
},
"description": "A C++ library to process recursive dynamic data",
"git": {
"ref": "0.2.1",
"url": "https://github.com/vector-of-bool/semester.git"
}
}
}
},
"version": 1
}

+ 89
- 88
src/dds/package/manifest.cpp View File

#include <range/v3/view/split.hpp> #include <range/v3/view/split.hpp>
#include <range/v3/view/split_when.hpp> #include <range/v3/view/split_when.hpp>
#include <range/v3/view/transform.hpp> #include <range/v3/view/transform.hpp>
#include <semester/decomp.hpp>
#include <semester/walk.hpp>
#include <spdlog/spdlog.h> #include <spdlog/spdlog.h>


#include <json5/parse_data.hpp> #include <json5/parse_data.hpp>


using namespace dds; using namespace dds;


package_manifest package_manifest::load_from_file(const fs::path& fpath) {
auto content = slurp_file(fpath);
auto data = json5::parse_data(content);
namespace {


if (!data.is_object()) {
throw_user_error<errc::invalid_pkg_manifest>("Root value must be an object");
}
using require_obj = semester::require_type<json5::data::mapping_type>;
using require_array = semester::require_type<json5::data::array_type>;
using require_str = semester::require_type<std::string>;


package_manifest parse_json(const json5::data& data, std::string_view fpath) {
package_manifest ret; package_manifest ret;
using namespace semester::decompose_ops;
auto res = semester::decompose( //
data,
try_seq{
require_type<json5::data::mapping_type>{
"The root of a package manifest must be an object (mapping)"},
mapping{
if_key{"$schema", just_accept},
if_key{
"name",
require_type<std::string>{"`name` must be a string"},
put_into{ret.pkg_id.name},
},
if_key{
"namespace",
require_type<std::string>{"`namespace` must be a string"},
put_into{ret.namespace_},
},
if_key{
"version",
require_type<std::string>{"`version` must be a string"},
[&](auto&& version_str_) {
auto& version = version_str_.as_string();
ret.pkg_id.version = semver::version::parse(version);
return semester::dc_accept;
},
},
if_key{
"depends",
require_type<json5::data::mapping_type>{
"`depends` must be a mapping between package names and version ranges"},
mapping{[&](auto pkg_name, auto&& range_str_) {
if (!range_str_.is_string()) {
throw_user_error<errc::invalid_pkg_manifest>(
"Dependency for '{}' must be a range string", pkg_name);
}
try {
auto rng = semver::range::parse_restricted(range_str_.as_string());
dependency dep{std::string(pkg_name), {rng.low(), rng.high()}};
ret.dependencies.push_back(std::move(dep));
} catch (const semver::invalid_range&) {
throw_user_error<errc::invalid_version_range_string>(
"Invalid version range string '{}' in dependency declaration for "
"'{}'",
range_str_.as_string(),
pkg_name);

using namespace semester::walk_ops;
auto push_depends_obj_kv = [&](std::string key, auto&& dat) {
dependency pending_dep;
if (!dat.is_string()) {
return walk.reject("Dependency object values should be strings");
}
try {
auto rng = semver::range::parse_restricted(dat.as_string());
dependency dep{std::move(key), {rng.low(), rng.high()}};
ret.dependencies.push_back(std::move(dep));
} catch (const semver::invalid_range&) {
throw_user_error<errc::invalid_version_range_string>(
"Invalid version range string '{}' in dependency declaration for "
"'{}'",
dat.as_string(),
key);
}
return walk.accept;
};

walk(data,
require_obj{"Root of package manifest should be a JSON object"},
mapping{
if_key{"$schema", just_accept},
required_key{"name",
"A string 'name' is required",
require_str{"'name' must be a string"},
put_into{ret.pkg_id.name}},
required_key{"namespace",
"A string 'namespace' is a required ",
require_str{"'namespace' must be a string"},
put_into{ret.namespace_}},
required_key{"version",
"A 'version' string is requried",
require_str{"'version' must be a string"},
put_into{ret.pkg_id.version,
[](std::string s) { return semver::version::parse(s); }}},
if_key{"depends",
[&](auto&& dat) {
if (dat.is_object()) {
spdlog::warn(
"{}: Using a JSON object for 'depends' is deprecated. Use an"
"array of strings instead.",
fpath);
return mapping{push_depends_obj_kv}(dat);
} else if (dat.is_array()) {
return for_each{put_into{std::back_inserter(ret.dependencies),
[](const std::string& depstr) {
return dependency::parse_depends_string(
depstr);
}}}(dat);
} else {
return walk.reject(
"'depends' should be an array of dependency strings");
} }
return semester::dc_accept;
}}, }},
},
if_key{"test_driver",
require_type<std::string>{"`test_driver` must be a string"},
[&](auto&& test_driver_str_) {
auto& test_driver = test_driver_str_.as_string();
if (test_driver == "Catch-Main") {
ret.test_driver = test_lib::catch_main;
} else if (test_driver == "Catch") {
ret.test_driver = test_lib::catch_;
} else {
auto dym = *did_you_mean(test_driver, {"Catch-Main", "Catch"});
throw_user_error<errc::unknown_test_driver>(
"Unknown 'test_driver' '{}' (Did you mean '{}'?)",
test_driver,
dym);
}
return semester::dc_accept;
}},
[&](auto key, auto&&) {
return semester::dc_reject_t{
fmt::format("Unknown key `{}` in package manifest", key)};
}}});
auto rej = std::get_if<semester::dc_reject_t>(&res);
if (rej) {
throw_user_error<errc::invalid_pkg_manifest>(rej->message);
}
if_key{"test_driver",
require_str{"'test_driver' must be a string"},
put_into{ret.test_driver,
[](std::string const& td_str) {
if (td_str == "Catch-Main") {
return test_lib::catch_main;
} else if (td_str == "Catch") {
return test_lib::catch_;
} else {
auto dym = *did_you_mean(td_str, {"Catch-Main", "Catch"});
throw_user_error<errc::unknown_test_driver>(
"Unknown 'test_driver' '{}' (Did you mean '{}'?)",
td_str,
dym);
}
}}},
});
return ret;
}


if (ret.pkg_id.name.empty()) {
throw_user_error<errc::invalid_pkg_manifest>("The 'name' field is required.");
}
} // namespace


if (ret.namespace_.empty()) {
throw_user_error<errc::invalid_pkg_manifest>("The 'namespace'` field is required.");
package_manifest package_manifest::load_from_file(const fs::path& fpath) {
auto content = slurp_file(fpath);
auto data = json5::parse_data(content);
try {
return parse_json(data, fpath.string());
} catch (const semester::walk_error& e) {
throw_user_error<errc::invalid_pkg_manifest>(e.what());
} }

return ret;
} }


std::optional<fs::path> package_manifest::find_in_directory(path_ref dirpath) { std::optional<fs::path> package_manifest::find_in_directory(path_ref dirpath) {
return std::nullopt; return std::nullopt;
} }
return load_from_file(*found); return load_from_file(*found);
}
}

+ 4
- 4
tests/deps/git-remote/package.json5 View File

name: 'deps-test', name: 'deps-test',
"namespace": "test", "namespace": "test",
version: '0.0.0', version: '0.0.0',
depends: {
'neo-fun': '0.3.2',
'range-v3': '0.9.1',
}
depends: [
'neo-fun@0.3.2',
'range-v3@0.9.1',
]
} }

+ 3
- 3
tests/deps/use-catch2/project/package.json5 View File

name: 'use-catch2', name: 'use-catch2',
version: '1.0.0', version: '1.0.0',
namespace: 'test', namespace: 'test',
depends: {
'catch2': '2.12.4'
}
depends: [
'catch2@2.12.4'
]
} }

+ 3
- 3
tests/deps/use-cryptopp/project/package.json5 View File

name: 'use-cryptopp', name: 'use-cryptopp',
version: '1.0.0', version: '1.0.0',
namespace: 'test', namespace: 'test',
depends: {
'cryptopp': '8.2.0'
}
depends: [
'cryptopp@8.2.0'
]
} }

+ 3
- 3
tests/deps/use-libsodium/project/package.json5 View File

name: 'use-libsodium', name: 'use-libsodium',
version: '1.0.0', version: '1.0.0',
namespace: 'test', namespace: 'test',
depends: {
'libsodium': '1.0.18'
}
depends: [
'libsodium@1.0.18'
]
} }

+ 3
- 3
tests/deps/use-remote/package.json5 View File

"name": "json-test", "name": "json-test",
"version": "0.0.0", "version": "0.0.0",
"namespace": "test", "namespace": "test",
"depends": {
"nlohmann-json": "3.7.1"
}
"depends": [
"nlohmann-json@3.7.1"
]
} }

+ 3
- 3
tests/deps/use-spdlog/project/package.json5 View File

name: 'test', name: 'test',
version: '0.0.0', version: '0.0.0',
"namespace": "test", "namespace": "test",
depends: {
'spdlog': '1.4.2',
},
depends: [
'spdlog@1.4.2',
],
} }

+ 14
- 22
tools/ci.py View File

import pytest import pytest
from pathlib import Path from pathlib import Path
from typing import Sequence, NamedTuple from typing import Sequence, NamedTuple
import multiprocessing
import subprocess import subprocess
import urllib.request import urllib.request
import shutil import shutil
if old_cat_path.is_file(): if old_cat_path.is_file():
old_cat_path.unlink() old_cat_path.unlink()


ci_repo_dir = paths.PREBUILT_DIR / '_ci-repo'
ci_repo_dir = paths.PREBUILT_DIR / 'ci-repo'
if ci_repo_dir.exists(): if ci_repo_dir.exists():
shutil.rmtree(ci_repo_dir) shutil.rmtree(ci_repo_dir)


proc.check_run([
self_build(
paths.PREBUILT_DDS, paths.PREBUILT_DDS,
'catalog',
'import',
('--catalog', old_cat_path),
('--json', paths.PROJECT_ROOT / 'catalog.json'),
])
self_build(paths.PREBUILT_DDS,
toolchain=opts.toolchain,
cat_path=old_cat_path,
dds_flags=[('--repo-dir', ci_repo_dir)])
toolchain=opts.toolchain,
cat_path=old_cat_path,
cat_json_path=Path('catalog.old.json'),
dds_flags=[('--repo-dir', ci_repo_dir)])
print('Main build PASSED!') print('Main build PASSED!')
print(f'A `dds` executable has been generated: {paths.CUR_BUILT_DDS}') print(f'A `dds` executable has been generated: {paths.CUR_BUILT_DDS}')


) )
return 0 return 0


print('Bootstrapping myself:')
new_cat_path = paths.BUILD_DIR / 'catalog.db' new_cat_path = paths.BUILD_DIR / 'catalog.db'
proc.check_run([
self_build(
paths.CUR_BUILT_DDS, paths.CUR_BUILT_DDS,
'catalog',
'import',
('--catalog', new_cat_path),
('--json', paths.PROJECT_ROOT / 'catalog.json'),
])
self_build(paths.CUR_BUILT_DDS,
toolchain=opts.toolchain,
cat_path=new_cat_path,
dds_flags=[f'--repo-dir={ci_repo_dir}'])
toolchain=opts.toolchain,
cat_path=new_cat_path,
dds_flags=[f'--repo-dir={ci_repo_dir}'])
print('Bootstrap test PASSED!') print('Bootstrap test PASSED!')


return pytest.main([ return pytest.main([
'-v', '-v',
'--durations=10', '--durations=10',
f'--basetemp={paths.BUILD_DIR / "_tmp"}', f'--basetemp={paths.BUILD_DIR / "_tmp"}',
'-n4',
'-n',
str(multiprocessing.cpu_count() + 2),
'tests/', 'tests/',
]) ])



+ 21
- 11
tools/gen-catalog-json.py View File

import argparse
import json import json
from typing import NamedTuple, Tuple, List, Sequence, Union, Optional, Mapping from typing import NamedTuple, Tuple, List, Sequence, Union, Optional, Mapping
import sys import sys
depends: Mapping[str, str] = {} depends: Mapping[str, str] = {}
description: str = '(No description provided)' description: str = '(No description provided)'


def to_dict(self) -> dict:
def to_dict(self, new=False) -> dict:
ret: dict = { ret: dict = {
'description': self.description, 'description': self.description,
} }
ret['depends'] = self.depends
if new:
ret['depends'] = [k + v for k, v in self.depends.items()]
else:
ret['depends'] = self.depends
if isinstance(self.remote, Git): if isinstance(self.remote, Git):
ret['git'] = self.remote.to_dict() ret['git'] = self.remote.to_dict()
return ret return ret
]) ])




packages = [
PACKAGES = [
many_versions( many_versions(
'range-v3', 'range-v3',
( (
), ),
] ]


data = {
'version': 1,
'packages': {
pkg.name: {ver.version: ver.to_dict()
for ver in pkg.versions}
for pkg in packages
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--new', action='store_true')
args = parser.parse_args()

data = {
'version': 1,
'packages': {
pkg.name:
{ver.version: ver.to_dict(new=args.new)
for ver in pkg.versions}
for pkg in PACKAGES
}
} }
}


print(json.dumps(data, indent=2, sort_keys=True))
print(json.dumps(data, indent=2, sort_keys=True))

+ 2
- 1
tools/self_build.py View File

toolchain: str, toolchain: str,
lmi_path: Path = None, lmi_path: Path = None,
cat_path: Path = Path('_build/catalog.db'), cat_path: Path = Path('_build/catalog.db'),
cat_json_path: Path = Path('catalog.json'),
dds_flags: proc.CommandLine = ()): dds_flags: proc.CommandLine = ()):
# Copy the exe to another location, as windows refuses to let a binary be # Copy the exe to another location, as windows refuses to let a binary be
# replaced while it is executing # replaced while it is executing
'catalog', 'catalog',
'import', 'import',
f'--catalog={cat_path}', f'--catalog={cat_path}',
f'--json=catalog.json',
f'--json={cat_json_path}',
) )
proc.check_run( proc.check_run(
new_exe, new_exe,

Loading…
Cancel
Save