Skip to content

Commit 44156a0

Browse files
committed
more
1 parent fa7f07c commit 44156a0

File tree

5 files changed

+71
-79
lines changed

5 files changed

+71
-79
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ cmake --workflow --preset zig-cc-target-wasm32-wasi-musl
7979
cmake --workflow --preset zig-cc-target-* # There's more!
8080
```
8181

82-
<dt>Compile and run tests
82+
<dt><s>Compile and run tests</s> <i>No tests right now</i>
8383
<dd>
8484

8585
```sh

include/platformdirs.h

Lines changed: 62 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@
77

88
#if __COSMOPOLITAN__
99
#include "platformdirs/cosmopolitan.h"
10-
#include "platformdirs/macos.h"
11-
#include "platformdirs/windows.h"
12-
#include "platformdirs/unix.h"
1310
#elif __APPLE__
1411
#include "platformdirs/macos.h"
1512
#elif _WIN32
@@ -20,9 +17,9 @@
2017

2118
namespace platformdirs {
2219

23-
const auto& version_ = platformdirs::version::version;
20+
using version_ = platformdirs::version::version;
2421

25-
const auto& version_tuple = platformdirs::version::version_tuple;
22+
using platformdirs::version::version_tuple;
2623

2724
using platform_dirs =
2825
#if __COSMOPOLITAN__
@@ -35,19 +32,67 @@ platformdirs::windows::windows;
3532
platformdirs::unix::unix;
3633
#endif
3734

38-
std::string user_data_dir();
39-
std::string user_data_dir(const std::optional<std::string>& appname);
40-
std::string user_data_dir(const std::optional<std::string>& appname, const std::variant<std::string, std::nullopt_t, bool>& appauthor);
41-
std::string user_data_dir(const std::optional<std::string>& appname, const std::variant<std::string, std::nullopt_t, bool>& appauthor, const std::optional<std::string>& version);
42-
std::string user_data_dir(const std::optional<std::string>& appname, const std::variant<std::string, std::nullopt_t, bool>& appauthor, const std::optional<std::string>& version, bool roaming);
43-
std::string user_data_dir(const std::optional<std::string>& appname, const std::variant<std::string, std::nullopt_t, bool>& appauthor, const std::optional<std::string>& version, bool roaming, bool ensure_exists);
35+
using app_dirs = platform_dirs;
36+
37+
/**
38+
* @param appname See platform_dirs_abc::appname
39+
* @param appauthor See platform_dirs_abc::appauthor
40+
* @param version See platform_dirs_abc::version
41+
* @param roaming See platform_dirs_abc::roaming
42+
* @param ensure_exists See platform_dirs_abc::ensure_exists
43+
* @returns data directory tied to the user
44+
*/
45+
std::string user_data_dir(const std::optional<std::string>& appname = std::nullopt, const std::variant<std::string, std::nullopt_t, bool>& appauthor = std::nullopt, const std::optional<std::string>& version = std::nullopt, bool roaming = false, bool ensure_exists = false);
46+
47+
/**
48+
* @param appname See platform_dirs_abc::appname
49+
* @param appauthor See platform_dirs_abc::appauthor
50+
* @param version See platform_dirs_abc::version
51+
* @param multipath See platform_dirs_abc::multipath
52+
* @param ensure_exists See platform_dirs_abc::ensure_exists
53+
* @returns data directory shared by users
54+
*/
55+
std::string site_data_dir(const std::optional<std::string>& appname = std::nullopt, const std::variant<std::string, std::nullopt_t, bool>& appauthor = std::nullopt, const std::optional<std::string>& version = std::nullopt, bool multipath = false, bool ensure_exists = false);
56+
57+
/**
58+
* @param appname See platform_dirs_abc::appname
59+
* @param appauthor See platform_dirs_abc::appauthor
60+
* @param version See platform_dirs_abc::version
61+
* @param roaming See platform_dirs_abc::roaming
62+
* @param ensure_exists See platform_dirs_abc::ensure_exists
63+
* @returns config directory tied to the user
64+
*/
65+
std::string user_config_dir(const std::optional<std::string>& appname = std::nullopt, const std::variant<std::string, std::nullopt_t, bool>& appauthor = std::nullopt, const std::optional<std::string>& version = std::nullopt, bool roaming = false, bool ensure_exists = false);
66+
67+
/**
68+
* @param appname See platform_dirs_abc::appname
69+
* @param appauthor See platform_dirs_abc::appauthor
70+
* @param version See platform_dirs_abc::version
71+
* @param multipath See platform_dirs_abc::multipath
72+
* @param ensure_exists See platform_dirs_abc::ensure_exists
73+
* @returns config directory shared by users
74+
*/
75+
std::string site_config_dir(const std::optional<std::string>& appname = std::nullopt, const std::variant<std::string, std::nullopt_t, bool>& appauthor = std::nullopt, const std::optional<std::string>& version = std::nullopt, bool multipath = false, bool ensure_exists = false);
76+
77+
/**
78+
* @param appname See platform_dirs_abc::appname
79+
* @param appauthor See platform_dirs_abc::appauthor
80+
* @param version See platform_dirs_abc::version
81+
* @param roaming See platform_dirs_abc::roaming
82+
* @param ensure_exists See platform_dirs_abc::ensure_exists
83+
* @returns cache directory tied to the user
84+
*/
85+
std::string user_cache_dir(const std::optional<std::string>& appname = std::nullopt, const std::variant<std::string, std::nullopt_t, bool>& appauthor = std::nullopt, const std::optional<std::string>& version = std::nullopt, bool roaming = false, bool ensure_exists = false);
4486

45-
std::string site_data_dir();
46-
std::string site_data_dir(const std::optional<std::string>& appname);
47-
std::string site_data_dir(const std::optional<std::string>& appname, const std::variant<std::string, std::nullopt_t, bool>& appauthor);
48-
std::string site_data_dir(const std::optional<std::string>& appname, const std::variant<std::string, std::nullopt_t, bool>& appauthor, const std::optional<std::string>& version);
49-
std::string site_data_dir(const std::optional<std::string>& appname, const std::variant<std::string, std::nullopt_t, bool>& appauthor, const std::optional<std::string>& version, bool roaming);
50-
std::string site_data_dir(const std::optional<std::string>& appname, const std::variant<std::string, std::nullopt_t, bool>& appauthor, const std::optional<std::string>& version, bool roaming, bool ensure_exists);
87+
/**
88+
* @param appname See platform_dirs_abc::appname
89+
* @param appauthor See platform_dirs_abc::appauthor
90+
* @param version See platform_dirs_abc::version
91+
* @param multipath See platform_dirs_abc::multipath
92+
* @param ensure_exists See platform_dirs_abc::ensure_exists
93+
* @returns cache directory shared by users
94+
*/
95+
std::string site_cache_dir(const std::optional<std::string>& appname = std::nullopt, const std::variant<std::string, std::nullopt_t, bool>& appauthor = std::nullopt, const std::optional<std::string>& version = std::nullopt, bool multipath = false, bool ensure_exists = false);
5196

5297
std::string user_documents_dir();
5398

@@ -56,11 +101,6 @@ std::string user_downloads_dir();
56101
std::string user_pictures_dir();
57102

58103
std::filesystem::path user_data_path();
59-
std::filesystem::path user_data_path(const std::optional<std::string>& appname);
60-
std::filesystem::path user_data_path(const std::optional<std::string>& appname, const std::variant<std::string, std::nullopt_t, bool>& appauthor);
61-
std::filesystem::path user_data_path(const std::optional<std::string>& appname, const std::variant<std::string, std::nullopt_t, bool>& appauthor, const std::optional<std::string>& version);
62-
std::filesystem::path user_data_path(const std::optional<std::string>& appname, const std::variant<std::string, std::nullopt_t, bool>& appauthor, const std::optional<std::string>& version, bool roaming);
63-
std::filesystem::path user_data_path(const std::optional<std::string>& appname, const std::variant<std::string, std::nullopt_t, bool>& appauthor, const std::optional<std::string>& version, bool roaming, bool ensure_exists);
64104

65105
std::filesystem::path user_documents_path();
66106

src/platformdirs.cpp

Lines changed: 5 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,12 @@
1+
#include "platformdirs.h"
12
#include <filesystem>
23
#include <string>
34
#include <fmt/format.h>
45

5-
namespace platformdirs {
6-
7-
class platform_dirs_abc {
8-
9-
public:
10-
/** @returns data directory tied to the user */
11-
virtual std::string user_data_dir() const = 0;
12-
13-
/** @returns data directory shared by users */
14-
virtual std::string site_data_dir() const = 0;
15-
16-
/** @returns config directory tied to the user */
17-
virtual std::string user_config_dir() const = 0;
18-
19-
/** @returns config directory shared by users */
20-
virtual std::string site_config_dir() const = 0;
21-
22-
/** @returns cache directory tied to the user */
23-
virtual std::string user_cache_dir() const = 0;
24-
25-
/** @returns cache directory shared by users */
26-
virtual std::string site_cache_dir() const = 0;
27-
28-
/** @returns state directory tied to the user */
29-
virtual std::string user_state_dir() const = 0;
30-
31-
// snip
32-
33-
/** @returns data path tied to the user */
34-
std::filesystem::path user_data_path() const {
35-
return std::filesystem::path(this->user_data_dir());
36-
}
37-
38-
// snip
39-
40-
/** @returns iterator: all user and site configuration directories */
41-
std::vector<std::string> iter_config_dirs() const {
42-
return std::vector<std::string>{this->user_config_dir(), this->site_config_dir()};
43-
}
44-
45-
// snip
46-
47-
6+
std::string platformdirs::user_data_dir(const std::optional<std::string>& appname, const std::variant<std::string, std::nullopt_t, bool>& appauthor, const std::optional<std::string>& version, bool roaming, bool ensure_exists) {
7+
return platformdirs::api::platform_dirs(appname, appauthor, version, roaming, false, true, ensure_exists).user_data_dir();
488
}
499

50-
#if __COSMOPOLITAN__
51-
using platform_dirs = cosmopolitan;
52-
#endif
53-
54-
std::string user_data_dir(const std::string_view appname, const std::string_view appauthor) {
55-
10+
std::string platformdirs::site_data_dir(const std::optional<std::string>& appname, const std::variant<std::string, std::nullopt_t, bool>& appauthor, const std::optional<std::string>& version, bool multipath, bool ensure_exists) {
11+
return platformdirs::api::platform_dirs(appname, appauthor, version, false, multipath, true, ensure_exists).user_data_dir();
5612
}
57-
58-
} // namespace platformdirs

src/platformdirs.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#pragma once
2+
#include <platformdirs.h>

src/platformdirs/utils.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
#include <string>
2-
#include <algorithm>
3-
#include <cctype>
4-
#include <locale>
5-
#include <filesystem>
1+
#include "utils.h"

0 commit comments

Comments
 (0)