1 /**
2 Types for project descriptions (dub describe).
3
4 Copyright: © 2015 rejectedsoftware e.K.
5 License: Subject to the terms of the MIT license, as written in the included LICENSE.txt file.
6 Authors: Sönke Ludwig
7 */
8 module dub.description;
9
10 import dub.compilers.buildsettings;
11 import dub.dependency;
12 import dub.internal.vibecompat.data.serialization;
13
14
15 /**
16 Describes a complete project for use in IDEs or build tools.
17
18 The build settings will be specific to the compiler, platform
19 and configuration that has been selected.
20 */
21 struct ProjectDescription {
22 string rootPackage;
23 alias mainPackage = rootPackage; /// Compatibility alias
24 string configuration;
25 string buildType;
26 string compiler;
27 string[] architecture;
28 string[] platform;
29 PackageDescription[] packages; /// All packages in the dependency tree
30 TargetDescription[] targets; /// Build targets
31 @ignore TargetDescription[string] targetLookup; /// Targets by name
32 }
33
34
35 /**
36 Build settings and meta data of a single package.
37 */
38 struct PackageDescription {
39 string path;
40 string name;
41 Version version_;
42 string description;
43 string homepage;
44 string[] authors;
45 string copyright;
46 string license;
47 string[] dependencies;
48
49 @byName TargetType targetType;
50 string targetPath;
51 string targetName;
52 string targetFileName;
53 string workingDirectory;
54 string mainSourceFile;
55 string[] dflags;
56 string[] lflags;
57 string[] libs;
58 string[] copyFiles;
59 string[] versions;
60 string[] debugVersions;
61 string[] importPaths;
62 string[] stringImportPaths;
63 string[] preGenerateCommands;
64 string[] postGenerateCommands;
65 string[] preBuildCommands;
66 string[] postBuildCommands;
67 @byName BuildRequirement[] buildRequirements;
68 @byName BuildOption[] options;
69 SourceFileDescription[] files;
70 }
71
72 struct TargetDescription {
73 string rootPackage;
74 string[] packages;
75 string rootConfiguration;
76 BuildSettings buildSettings;
77 string[] dependencies;
78 string[] linkDependencies;
79 }
80
81 /**
82 Description for a single source file.
83 */
84 struct SourceFileDescription {
85 @byName SourceFileRole role;
86 alias type = role; /// Compatibility alias
87 string path;
88 }
89
90 /**
91 Determines
92 */
93 enum SourceFileRole {
94 unusedStringImport,
95 unusedImport,
96 unusedSource,
97 stringImport,
98 import_,
99 source
100 }