"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", |
{ | |||||
"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 | |||||
} |
#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); | ||||
} | |||||
} |
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', | |||||
] | |||||
} | } |
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' | |||||
] | |||||
} | } |
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' | |||||
] | |||||
} | } |
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' | |||||
] | |||||
} | } |
"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" | |||||
] | |||||
} | } |
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', | |||||
], | |||||
} | } |
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/', | ||||
]) | ]) | ||||
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)) |
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, |