blob: 890979285c9378c4fcf8ba18c8f7098e0fa40534 (
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
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
|
/*
* Mini version of cargo
*
* main.cpp
* - Entrypoint
*/
struct ProgramOptions
{
const char* directory = nullptr;
const char* outfile = nullptr;
// Directory containing build script outputs
const char* override_directory = nullptr;
const char* output_directory = nullptr;
int parse(int argc, const char* argv[]);
};
int main(int argc, const char* argv[])
{
ProgramOptions opts;
if( opts.parse(argc, argv) ) {
return 1;
}
// 1. Load the Cargo.toml file from the passed directory
// 2. Recursively load dependency manifests
// 3. Generate makefile for all dependencies
return 0;
}
int ProgramOptions::parse(int argc, const char* argv[])
{
bool all_free = false;
for(int i = 1; i < argc; i++)
{
const char* arg = argv[i];
if( arg[0] != '-' || all_free )
{
// Free arguments
if( !this->directory ) {
this->directory = arg;
}
else if( !this->outfile ) {
this->outfile = arg;
}
else {
}
}
else if( argv[1] != '-' )
{
// Short arguments
}
else if( argv[1] == '\0' )
{
all_free = true;
}
else
{
// Long arguments
if( ::std::strcmp(arg, "--script-overrides") == 0 ) {
if(i+1 == argc) {
::std::cerr << "Flag " << arg << " takes an argument" << ::std::endl;
return 1;
}
//this->build_script_override_dir = argv[++i];
}
else {
::std::cerr << "Unknown flag " << arg << ::std::endl;
}
}
}
if( !this->directory || !this->outfile )
{
usage();
exit(1);
}
return 0;
}
|