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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
// file : bpkg/fetch.hxx -*- C++ -*-
// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
// license : MIT; see accompanying LICENSE file
#ifndef BPKG_FETCH_HXX
#define BPKG_FETCH_HXX
#include <ctime> // time_t
#include <libbutl/process.mxx>
#include <libbpkg/manifest.hxx>
#include <bpkg/types.hxx>
#include <bpkg/utility.hxx>
#include <bpkg/common-options.hxx>
namespace bpkg
{
// Repository type pkg (fetch-pkg.cxx).
//
pkg_repository_manifests
pkg_fetch_repositories (const dir_path&, bool ignore_unknown);
pair<pkg_repository_manifests, string /* checksum */>
pkg_fetch_repositories (const common_options&,
const repository_location&,
bool ignore_unknown);
pkg_package_manifests
pkg_fetch_packages (const dir_path&, bool ignore_unknown);
pair<pkg_package_manifests, string /* checksum */>
pkg_fetch_packages (const common_options&,
const repository_location&,
bool ignore_unknown);
signature_manifest
pkg_fetch_signature (const common_options&,
const repository_location&,
bool ignore_unknown);
void
pkg_fetch_archive (const common_options&,
const repository_location&,
const path& archive,
const path& dest);
// Repository type git (fetch-git.cxx).
//
// Create a git repository in the specified directory and prepare it for
// fetching from the specified repository location. Note that the repository
// URL fragment is neither used nor validated.
//
void
git_init (const common_options&,
const repository_location&,
const dir_path&);
// Fetch a git repository in the specifid directory (previously created by
// git_init() for the references obtained with the repository URL fragment
// filters, returning commit ids these references resolve to in the earliest
// to latest order. Update the remote repository URL, if changed. After
// fetching the repository working tree state is unspecified (see
// git_checkout()).
//
// Note that submodules are not fetched.
//
struct git_fragment
{
// User-friendly fragment name is either a ref (tags/v1.2.3, heads/master,
// HEAD) or an abbreviated commit id (0123456789ab).
//
string commit;
std::time_t timestamp;
string friendly_name;
};
vector<git_fragment>
git_fetch (const common_options&,
const repository_location&,
const dir_path&);
// Checkout the specified commit previously fetched by git_fetch().
//
// Note that submodules are not checked out.
//
void
git_checkout (const common_options&,
const dir_path&,
const string& commit);
// Fetch (if necessary) and checkout submodules, recursively, in a working
// tree previously checked out by git_checkout(). Update the remote
// repository URL, if changed.
//
void
git_checkout_submodules (const common_options&,
const repository_location&,
const dir_path&);
// Low-level fetch API (fetch.cxx).
//
// Start the process of fetching the specified URL. If out is empty, then
// fetch to stdout. In this case also don't show any progress unless we are
// running verbose.
//
butl::process
start_fetch (const common_options& o,
const string& url,
const path& out = path ());
}
#endif // BPKG_FETCH_HXX
|