FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
SharedSource-Build/BuildScript.Nuke/ProjectBuilder.cs at develop · re-motion/SharedSource-Build · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
re-motion
/
SharedSource-Build
Public
Notifications
You must be signed in to change notification settings
Fork
2
Star
0
Code
Pull requests
1
Actions
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Security and quality
Insights
Expand file tree
Breadcrumbs
SharedSource-Build
/
BuildScript.Nuke
/
ProjectBuilder.cs
Copy path
More file actions
More file actions
Latest commit
History
History
History
94 lines (79 loc) · 2.74 KB
Breadcrumbs
SharedSource-Build
/
BuildScript.Nuke
/
ProjectBuilder.cs
Copy path
File metadata and controls
94 lines (79 loc) · 2.74 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
// Copyright (c) rubicon IT GmbH, www.rubicon.eu
//
// See the NOTICE file distributed with this work for additional information
// regarding copyright ownership. rubicon licenses this file to you under
// the Apache License, Version 2.0 (the "License"); you may not use this
// file except in compliance with the License. You may obtain a copy of the
// License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations
// under the License.
using
System
;
using
System
.
Collections
.
Immutable
;
using
System
.
Diagnostics
.
CodeAnalysis
;
using
Microsoft
.
Build
.
Evaluation
;
using
Nuke
.
Common
.
IO
;
namespace
Remotion
.
BuildScript
;
public
class
ProjectBuilder
{
public
string
Name
{
get
;
}
public
AbsolutePath
Path
{
get
;
}
public
Project
MsBuildProject
{
get
;
}
public
ImmutableDictionary
<
string
,
object
>
.
Builder
Metadata
{
get
;
}
=
ImmutableDictionary
.
CreateBuilder
<
string
,
object
>
(
)
;
public
ProjectBuilder
(
string
name
,
AbsolutePath
path
,
Project
msBuildProject
)
{
Name
=
name
;
Path
=
path
;
MsBuildProject
=
msBuildProject
;
}
public
T
GetMetadata
<
T
>
(
ProjectMetadataProperty
<
T
>
property
)
{
return
TryGetMetadata
(
property
,
out
var
result
)
?
result
:
property
.
HasDefaultValue
?
property
.
DefaultValue
!
:
throw
new
InvalidOperationException
(
$
"Cannot find the specified project metadata '
{
property
}
' on project '
{
Name
}
'."
)
;
}
public
T
?
GetMetadataOrDefault
<
T
>
(
ProjectMetadataProperty
<
T
>
property
)
{
return
TryGetMetadata
(
property
,
out
var
result
)
?
result
:
property
.
HasDefaultValue
?
property
.
DefaultValue
:
default
;
}
public
bool
TryGetMetadata
<
T
>
(
ProjectMetadataProperty
<
T
>
property
,
[
NotNullWhen
(
true
)
]
out
T
?
result
)
{
if
(
Metadata
.
TryGetValue
(
property
.
Name
,
out
var
rawResult
)
)
{
result
=
(
T
)
rawResult
;
return
true
;
}
result
=
default
;
return
false
;
}
public
ProjectBuilder
AddMetadata
<
T
>
(
ProjectMetadataProperty
<
ImmutableArray
<
T
>
>
property
,
T
value
)
{
var
newValues
=
TryGetMetadata
(
property
,
out
var
existingValues
)
?
existingValues
.
Add
(
value
)
:
[
value
]
;
return
SetMetadata
(
property
,
newValues
)
;
}
public
ProjectBuilder
SetMetadata
<
T
>
(
ProjectMetadataProperty
<
T
>
property
,
T
value
)
{
Metadata
[
property
.
Name
]
=
value
!
;
return
this
;
}
public
ProjectMetadata
Build
(
)
{
return
new
ProjectMetadata
(
Name
,
Path
,
Metadata
.
ToImmutableDictionary
(
)
)
;
}
}
Back
|
FazBrowse Home
|
New Git URL