aboutsummaryrefslogtreecommitdiff
path: root/src/libutil/url-name.hh
blob: 3a3f88e762831bd01119abc04bd78a5fa75404bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#pragma once
///@file url-name.hh, for some hueristic-ish URL parsing.

#include <string>
#include <optional>

#include "url.hh"
#include "url-parts.hh"
#include "util.hh"
#include "split.hh"

namespace nix {

/**
 * Try to extract a reasonably unique and meaningful, human-readable
 * name of a flake output from a parsed URL.
 * When nullopt is returned, the callsite should use information available
 * to it outside of the URL to determine a useful name.
 * This is a heuristic approach intended for user interfaces.
 * @return nullopt if the extracted name is not useful to identify a
 * flake output, for example because it is empty or "default".
 * Otherwise returns the extracted name.
 */
std::optional<std::string> getNameFromURL(ParsedURL const & url);

}