mirror of
https://github.com/microsoft/terminal.git
synced 2026-04-14 10:11:00 +00:00
Compare commits
26 Commits
dev/lhecke
...
dev/migrie
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d1e080cf63 | ||
|
|
6711e4398c | ||
|
|
4a536a39e7 | ||
|
|
d4dbd530e9 | ||
|
|
b3601ab8d3 | ||
|
|
ca6a5fb537 | ||
|
|
c08889585b | ||
|
|
5939636182 | ||
|
|
f978a9c52c | ||
|
|
e1402d834f | ||
|
|
e101efd11d | ||
|
|
d08e65ce03 | ||
|
|
b4fe1bffbf | ||
|
|
0103331987 | ||
|
|
9c6eac4e86 | ||
|
|
a3faed6b7d | ||
|
|
0579b2417b | ||
|
|
590b9ff0c7 | ||
|
|
03bfc6e8a9 | ||
|
|
5cabcfb452 | ||
|
|
9a41647ffe | ||
|
|
27ace16652 | ||
|
|
36539cfa47 | ||
|
|
5a9cdc8b0b | ||
|
|
1f52d35833 | ||
|
|
3bef7bbb38 |
25
.github/actions/spell-check/advice.txt
vendored
25
.github/actions/spell-check/advice.txt
vendored
@@ -1,25 +0,0 @@
|
|||||||
<details>
|
|
||||||
<summary>
|
|
||||||
:pencil2: Contributor please read this
|
|
||||||
</summary>
|
|
||||||
|
|
||||||
By default the command suggestion will generate a file named based on your commit. That's generally ok as long as you add the file to your commit. Someone can reorganize it later.
|
|
||||||
|
|
||||||
:warning: The command is written for posix shells. You can copy the contents of each `perl` command excluding the outer `'` marks and dropping any `'"`/`"'` quotation mark pairs into a file and then run `perl file.pl` from the root of the repository to run the code. Alternatively, you can manually insert the items...
|
|
||||||
|
|
||||||
If the listed items are:
|
|
||||||
* ... **misspelled**, then please *correct* them instead of using the command.
|
|
||||||
* ... *names*, please add them to `.github/actions/spell-check/dictionary/names.txt`.
|
|
||||||
* ... APIs, you can add them to a file in `.github/actions/spell-check/dictionary/`.
|
|
||||||
* ... just things you're using, please add them to an appropriate file in `.github/actions/spell-check/expect/`.
|
|
||||||
* ... tokens you only need in one place and shouldn't *generally be used*, you can add an item in an appropriate file in `.github/actions/spell-check/patterns/`.
|
|
||||||
|
|
||||||
See the `README.md` in each directory for more information.
|
|
||||||
|
|
||||||
:microscope: You can test your commits **without** *appending* to a PR by creating a new branch with that extra change and pushing it to your fork. The [:check-spelling](https://github.com/marketplace/actions/check-spelling) action will run in response to your **push** -- it doesn't require an open pull request. By using such a branch, you can limit the number of typos your peers see you make. :wink:
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
#### :warning: Reviewers
|
|
||||||
At present, the action that triggered this message will not show its :x: in this PR unless the branch is within this repository.
|
|
||||||
Thus, you **should** make sure that this comment has been addressed before encouraging the merge bot to merge this PR.
|
|
||||||
93
.github/actions/spell-check/dictionary/apis.txt
vendored
93
.github/actions/spell-check/dictionary/apis.txt
vendored
@@ -1,93 +0,0 @@
|
|||||||
ACCEPTFILES
|
|
||||||
ACCESSDENIED
|
|
||||||
alignof
|
|
||||||
bitfield
|
|
||||||
bitfields
|
|
||||||
CLASSNOTAVAILABLE
|
|
||||||
cmdletbinding
|
|
||||||
COLORPROPERTY
|
|
||||||
CXICON
|
|
||||||
CYICON
|
|
||||||
D2DERR_SHADER_COMPILE_FAILED
|
|
||||||
DERR
|
|
||||||
environstrings
|
|
||||||
EXPCMDFLAGS
|
|
||||||
EXPCMDSTATE
|
|
||||||
frac
|
|
||||||
fullkbd
|
|
||||||
futex
|
|
||||||
GETDESKWALLPAPER
|
|
||||||
GETHIGHCONTRAST
|
|
||||||
Hashtable
|
|
||||||
HIGHCONTRASTON
|
|
||||||
HIGHCONTRASTW
|
|
||||||
href
|
|
||||||
IAsync
|
|
||||||
IBind
|
|
||||||
IBox
|
|
||||||
IClass
|
|
||||||
IComparable
|
|
||||||
ICustom
|
|
||||||
IDialog
|
|
||||||
IDirect
|
|
||||||
IExplorer
|
|
||||||
IInheritable
|
|
||||||
IMap
|
|
||||||
IObject
|
|
||||||
IStorage
|
|
||||||
ITab
|
|
||||||
ITaskbar
|
|
||||||
LCID
|
|
||||||
llabs
|
|
||||||
localtime
|
|
||||||
lround
|
|
||||||
LSHIFT
|
|
||||||
msappx
|
|
||||||
NCHITTEST
|
|
||||||
NCLBUTTONDBLCLK
|
|
||||||
NCRBUTTONDBLCLK
|
|
||||||
NOAGGREGATION
|
|
||||||
NOPROGRESS
|
|
||||||
NOREDIRECTIONBITMAP
|
|
||||||
ntprivapi
|
|
||||||
oaidl
|
|
||||||
ocidl
|
|
||||||
otms
|
|
||||||
OUTLINETEXTMETRICW
|
|
||||||
overridable
|
|
||||||
PAGESCROLL
|
|
||||||
RETURNCMD
|
|
||||||
rfind
|
|
||||||
roundf
|
|
||||||
RSHIFT
|
|
||||||
rx
|
|
||||||
schandle
|
|
||||||
semver
|
|
||||||
serializer
|
|
||||||
shobjidl
|
|
||||||
SIZENS
|
|
||||||
smoothstep
|
|
||||||
GETDESKWALLPAPER
|
|
||||||
snprintf
|
|
||||||
spsc
|
|
||||||
sregex
|
|
||||||
STDCPP
|
|
||||||
strchr
|
|
||||||
Subheader
|
|
||||||
Subpage
|
|
||||||
UPDATEINIFILE
|
|
||||||
syscall
|
|
||||||
TBPF
|
|
||||||
THEMECHANGED
|
|
||||||
tmp
|
|
||||||
tolower
|
|
||||||
tx
|
|
||||||
UPDATEINIFILE
|
|
||||||
userenv
|
|
||||||
wcsstr
|
|
||||||
wcstoui
|
|
||||||
wpc
|
|
||||||
wsregex
|
|
||||||
XDocument
|
|
||||||
XElement
|
|
||||||
XParse
|
|
||||||
782
.github/actions/spell-check/dictionary/colors.txt
vendored
782
.github/actions/spell-check/dictionary/colors.txt
vendored
@@ -1,782 +0,0 @@
|
|||||||
snow
|
|
||||||
ghost-white
|
|
||||||
ghostwhite
|
|
||||||
white-smoke
|
|
||||||
whitesmoke
|
|
||||||
gainsboro
|
|
||||||
floral-white
|
|
||||||
floralwhite
|
|
||||||
old-lace
|
|
||||||
oldlace
|
|
||||||
linen
|
|
||||||
antique-white
|
|
||||||
antiquewhite
|
|
||||||
papaya-whip
|
|
||||||
papayawhip
|
|
||||||
blanched-almond
|
|
||||||
blanchedalmond
|
|
||||||
bisque
|
|
||||||
peach-puff
|
|
||||||
peachpuff
|
|
||||||
navajo-white
|
|
||||||
navajowhite
|
|
||||||
moccasin
|
|
||||||
cornsilk
|
|
||||||
ivory
|
|
||||||
lemon-chiffon
|
|
||||||
lemonchiffon
|
|
||||||
seashell
|
|
||||||
honeydew
|
|
||||||
mint-cream
|
|
||||||
mintcream
|
|
||||||
azure
|
|
||||||
alice-blue
|
|
||||||
aliceblue
|
|
||||||
lavender
|
|
||||||
lavender-blush
|
|
||||||
lavenderblush
|
|
||||||
misty-rose
|
|
||||||
mistyrose
|
|
||||||
white
|
|
||||||
black
|
|
||||||
dark-slate-gray
|
|
||||||
darkslategray
|
|
||||||
dark-slate-grey
|
|
||||||
darkslategrey
|
|
||||||
dim-gray
|
|
||||||
dimgray
|
|
||||||
dim-grey
|
|
||||||
dimgrey
|
|
||||||
slate-gray
|
|
||||||
slategray
|
|
||||||
slate-grey
|
|
||||||
slategrey
|
|
||||||
light-slate-gray
|
|
||||||
lightslategray
|
|
||||||
light-slate-grey
|
|
||||||
lightslategrey
|
|
||||||
gray
|
|
||||||
grey
|
|
||||||
xray
|
|
||||||
x11gray
|
|
||||||
xrey
|
|
||||||
x11grey
|
|
||||||
web-gray
|
|
||||||
webgray
|
|
||||||
web-grey
|
|
||||||
webgrey
|
|
||||||
light-grey
|
|
||||||
lightgrey
|
|
||||||
light-gray
|
|
||||||
lightgray
|
|
||||||
midnight-blue
|
|
||||||
midnightblue
|
|
||||||
navy
|
|
||||||
navy-blue
|
|
||||||
navyblue
|
|
||||||
cornflower-blue
|
|
||||||
cornflowerblue
|
|
||||||
dark-slate-blue
|
|
||||||
darkslateblue
|
|
||||||
slate-blue
|
|
||||||
slateblue
|
|
||||||
medium-slate-blue
|
|
||||||
mediumslateblue
|
|
||||||
light-slate-blue
|
|
||||||
lightslateblue
|
|
||||||
medium-blue
|
|
||||||
mediumblue
|
|
||||||
royal-blue
|
|
||||||
royalblue
|
|
||||||
blue
|
|
||||||
dodger-blue
|
|
||||||
dodgerblue
|
|
||||||
deep-sky-blue
|
|
||||||
deepskyblue
|
|
||||||
sky-blue
|
|
||||||
skyblue
|
|
||||||
light-sky-blue
|
|
||||||
lightskyblue
|
|
||||||
steel-blue
|
|
||||||
steelblue
|
|
||||||
light-steel-blue
|
|
||||||
lightsteelblue
|
|
||||||
light-blue
|
|
||||||
lightblue
|
|
||||||
powder-blue
|
|
||||||
powderblue
|
|
||||||
pale-turquoise
|
|
||||||
paleturquoise
|
|
||||||
dark-turquoise
|
|
||||||
darkturquoise
|
|
||||||
medium-turquoise
|
|
||||||
mediumturquoise
|
|
||||||
turquoise
|
|
||||||
cyan
|
|
||||||
aqua
|
|
||||||
light-cyan
|
|
||||||
lightcyan
|
|
||||||
cadet-blue
|
|
||||||
cadetblue
|
|
||||||
medium-aquamarine
|
|
||||||
mediumaquamarine
|
|
||||||
aquamarine
|
|
||||||
dark-green
|
|
||||||
darkgreen
|
|
||||||
dark-olive-green
|
|
||||||
darkolivegreen
|
|
||||||
dark-sea-green
|
|
||||||
darkseagreen
|
|
||||||
sea-green
|
|
||||||
seagreen
|
|
||||||
medium-sea-green
|
|
||||||
mediumseagreen
|
|
||||||
light-sea-green
|
|
||||||
lightseagreen
|
|
||||||
pale-green
|
|
||||||
palegreen
|
|
||||||
spring-green
|
|
||||||
springgreen
|
|
||||||
lawn-green
|
|
||||||
lawngreen
|
|
||||||
green
|
|
||||||
lime
|
|
||||||
xreen
|
|
||||||
x11green
|
|
||||||
web-green
|
|
||||||
webgreen
|
|
||||||
chartreuse
|
|
||||||
medium-spring-green
|
|
||||||
mediumspringgreen
|
|
||||||
green-yellow
|
|
||||||
greenyellow
|
|
||||||
lime-green
|
|
||||||
limegreen
|
|
||||||
yellow-green
|
|
||||||
yellowgreen
|
|
||||||
forest-green
|
|
||||||
forestgreen
|
|
||||||
olive-drab
|
|
||||||
olivedrab
|
|
||||||
dark-khaki
|
|
||||||
darkkhaki
|
|
||||||
khaki
|
|
||||||
pale-goldenrod
|
|
||||||
palegoldenrod
|
|
||||||
light-goldenrod-yellow
|
|
||||||
lightgoldenrodyellow
|
|
||||||
light-yellow
|
|
||||||
lightyellow
|
|
||||||
yellow
|
|
||||||
gold
|
|
||||||
light-goldenrod
|
|
||||||
lightgoldenrod
|
|
||||||
goldenrod
|
|
||||||
dark-goldenrod
|
|
||||||
darkgoldenrod
|
|
||||||
rosy-brown
|
|
||||||
rosybrown
|
|
||||||
indian-red
|
|
||||||
indianred
|
|
||||||
saddle-brown
|
|
||||||
saddlebrown
|
|
||||||
sienna
|
|
||||||
peru
|
|
||||||
burlywood
|
|
||||||
beige
|
|
||||||
wheat
|
|
||||||
sandy-brown
|
|
||||||
sandybrown
|
|
||||||
tan
|
|
||||||
chocolate
|
|
||||||
firebrick
|
|
||||||
brown
|
|
||||||
dark-salmon
|
|
||||||
darksalmon
|
|
||||||
salmon
|
|
||||||
light-salmon
|
|
||||||
lightsalmon
|
|
||||||
orange
|
|
||||||
dark-orange
|
|
||||||
darkorange
|
|
||||||
coral
|
|
||||||
light-coral
|
|
||||||
lightcoral
|
|
||||||
tomato
|
|
||||||
orange-red
|
|
||||||
orangered
|
|
||||||
red
|
|
||||||
hot-pink
|
|
||||||
hotpink
|
|
||||||
deep-pink
|
|
||||||
deeppink
|
|
||||||
pink
|
|
||||||
light-pink
|
|
||||||
lightpink
|
|
||||||
pale-violet-red
|
|
||||||
palevioletred
|
|
||||||
maroon
|
|
||||||
xaroon
|
|
||||||
x11maroon
|
|
||||||
web-maroon
|
|
||||||
webmaroon
|
|
||||||
medium-violet-red
|
|
||||||
mediumvioletred
|
|
||||||
violet-red
|
|
||||||
violetred
|
|
||||||
magenta
|
|
||||||
fuchsia
|
|
||||||
violet
|
|
||||||
plum
|
|
||||||
orchid
|
|
||||||
medium-orchid
|
|
||||||
mediumorchid
|
|
||||||
dark-orchid
|
|
||||||
darkorchid
|
|
||||||
dark-violet
|
|
||||||
darkviolet
|
|
||||||
blue-violet
|
|
||||||
blueviolet
|
|
||||||
purple
|
|
||||||
xurple
|
|
||||||
x11purple
|
|
||||||
web-purple
|
|
||||||
webpurple
|
|
||||||
medium-purple
|
|
||||||
mediumpurple
|
|
||||||
thistle
|
|
||||||
snow1
|
|
||||||
snow2
|
|
||||||
snow3
|
|
||||||
snow4
|
|
||||||
seashell1
|
|
||||||
seashell2
|
|
||||||
seashell3
|
|
||||||
seashell4
|
|
||||||
antiquewhite1
|
|
||||||
antiquewhite2
|
|
||||||
antiquewhite3
|
|
||||||
antiquewhite4
|
|
||||||
bisque1
|
|
||||||
bisque2
|
|
||||||
bisque3
|
|
||||||
bisque4
|
|
||||||
peachpuff1
|
|
||||||
peachpuff2
|
|
||||||
peachpuff3
|
|
||||||
peachpuff4
|
|
||||||
navajowhite1
|
|
||||||
navajowhite2
|
|
||||||
navajowhite3
|
|
||||||
navajowhite4
|
|
||||||
lemonchiffon1
|
|
||||||
lemonchiffon2
|
|
||||||
lemonchiffon3
|
|
||||||
lemonchiffon4
|
|
||||||
cornsilk1
|
|
||||||
cornsilk2
|
|
||||||
cornsilk3
|
|
||||||
cornsilk4
|
|
||||||
ivory1
|
|
||||||
ivory2
|
|
||||||
ivory3
|
|
||||||
ivory4
|
|
||||||
honeydew1
|
|
||||||
honeydew2
|
|
||||||
honeydew3
|
|
||||||
honeydew4
|
|
||||||
lavenderblush1
|
|
||||||
lavenderblush2
|
|
||||||
lavenderblush3
|
|
||||||
lavenderblush4
|
|
||||||
mistyrose1
|
|
||||||
mistyrose2
|
|
||||||
mistyrose3
|
|
||||||
mistyrose4
|
|
||||||
azure1
|
|
||||||
azure2
|
|
||||||
azure3
|
|
||||||
azure4
|
|
||||||
slateblue1
|
|
||||||
slateblue2
|
|
||||||
slateblue3
|
|
||||||
slateblue4
|
|
||||||
royalblue1
|
|
||||||
royalblue2
|
|
||||||
royalblue3
|
|
||||||
royalblue4
|
|
||||||
blue1
|
|
||||||
blue2
|
|
||||||
blue3
|
|
||||||
blue4
|
|
||||||
dodgerblue1
|
|
||||||
dodgerblue2
|
|
||||||
dodgerblue3
|
|
||||||
dodgerblue4
|
|
||||||
steelblue1
|
|
||||||
steelblue2
|
|
||||||
steelblue3
|
|
||||||
steelblue4
|
|
||||||
deepskyblue1
|
|
||||||
deepskyblue2
|
|
||||||
deepskyblue3
|
|
||||||
deepskyblue4
|
|
||||||
skyblue1
|
|
||||||
skyblue2
|
|
||||||
skyblue3
|
|
||||||
skyblue4
|
|
||||||
lightskyblue1
|
|
||||||
lightskyblue2
|
|
||||||
lightskyblue3
|
|
||||||
lightskyblue4
|
|
||||||
slategray1
|
|
||||||
slategray2
|
|
||||||
slategray3
|
|
||||||
slategray4
|
|
||||||
lightsteelblue1
|
|
||||||
lightsteelblue2
|
|
||||||
lightsteelblue3
|
|
||||||
lightsteelblue4
|
|
||||||
lightblue1
|
|
||||||
lightblue2
|
|
||||||
lightblue3
|
|
||||||
lightblue4
|
|
||||||
lightcyan1
|
|
||||||
lightcyan2
|
|
||||||
lightcyan3
|
|
||||||
lightcyan4
|
|
||||||
paleturquoise1
|
|
||||||
paleturquoise2
|
|
||||||
paleturquoise3
|
|
||||||
paleturquoise4
|
|
||||||
cadetblue1
|
|
||||||
cadetblue2
|
|
||||||
cadetblue3
|
|
||||||
cadetblue4
|
|
||||||
turquoise1
|
|
||||||
turquoise2
|
|
||||||
turquoise3
|
|
||||||
turquoise4
|
|
||||||
cyan1
|
|
||||||
cyan2
|
|
||||||
cyan3
|
|
||||||
cyan4
|
|
||||||
darkslategray1
|
|
||||||
darkslategray2
|
|
||||||
darkslategray3
|
|
||||||
darkslategray4
|
|
||||||
aquamarine1
|
|
||||||
aquamarine2
|
|
||||||
aquamarine3
|
|
||||||
aquamarine4
|
|
||||||
darkseagreen1
|
|
||||||
darkseagreen2
|
|
||||||
darkseagreen3
|
|
||||||
darkseagreen4
|
|
||||||
seagreen1
|
|
||||||
seagreen2
|
|
||||||
seagreen3
|
|
||||||
seagreen4
|
|
||||||
palegreen1
|
|
||||||
palegreen2
|
|
||||||
palegreen3
|
|
||||||
palegreen4
|
|
||||||
springgreen1
|
|
||||||
springgreen2
|
|
||||||
springgreen3
|
|
||||||
springgreen4
|
|
||||||
green1
|
|
||||||
green2
|
|
||||||
green3
|
|
||||||
green4
|
|
||||||
chartreuse1
|
|
||||||
chartreuse2
|
|
||||||
chartreuse3
|
|
||||||
chartreuse4
|
|
||||||
olivedrab1
|
|
||||||
olivedrab2
|
|
||||||
olivedrab3
|
|
||||||
olivedrab4
|
|
||||||
darkolivegreen1
|
|
||||||
darkolivegreen2
|
|
||||||
darkolivegreen3
|
|
||||||
darkolivegreen4
|
|
||||||
khaki1
|
|
||||||
khaki2
|
|
||||||
khaki3
|
|
||||||
khaki4
|
|
||||||
lightgoldenrod1
|
|
||||||
lightgoldenrod2
|
|
||||||
lightgoldenrod3
|
|
||||||
lightgoldenrod4
|
|
||||||
lightyellow1
|
|
||||||
lightyellow2
|
|
||||||
lightyellow3
|
|
||||||
lightyellow4
|
|
||||||
yellow1
|
|
||||||
yellow2
|
|
||||||
yellow3
|
|
||||||
yellow4
|
|
||||||
gold1
|
|
||||||
gold2
|
|
||||||
gold3
|
|
||||||
gold4
|
|
||||||
goldenrod1
|
|
||||||
goldenrod2
|
|
||||||
goldenrod3
|
|
||||||
goldenrod4
|
|
||||||
darkgoldenrod1
|
|
||||||
darkgoldenrod2
|
|
||||||
darkgoldenrod3
|
|
||||||
darkgoldenrod4
|
|
||||||
rosybrown1
|
|
||||||
rosybrown2
|
|
||||||
rosybrown3
|
|
||||||
rosybrown4
|
|
||||||
indianred1
|
|
||||||
indianred2
|
|
||||||
indianred3
|
|
||||||
indianred4
|
|
||||||
sienna1
|
|
||||||
sienna2
|
|
||||||
sienna3
|
|
||||||
sienna4
|
|
||||||
burlywood1
|
|
||||||
burlywood2
|
|
||||||
burlywood3
|
|
||||||
burlywood4
|
|
||||||
wheat1
|
|
||||||
wheat2
|
|
||||||
wheat3
|
|
||||||
wheat4
|
|
||||||
tan1
|
|
||||||
tan2
|
|
||||||
tan3
|
|
||||||
tan4
|
|
||||||
chocolate1
|
|
||||||
chocolate2
|
|
||||||
chocolate3
|
|
||||||
chocolate4
|
|
||||||
firebrick1
|
|
||||||
firebrick2
|
|
||||||
firebrick3
|
|
||||||
firebrick4
|
|
||||||
brown1
|
|
||||||
brown2
|
|
||||||
brown3
|
|
||||||
brown4
|
|
||||||
salmon1
|
|
||||||
salmon2
|
|
||||||
salmon3
|
|
||||||
salmon4
|
|
||||||
lightsalmon1
|
|
||||||
lightsalmon2
|
|
||||||
lightsalmon3
|
|
||||||
lightsalmon4
|
|
||||||
orange1
|
|
||||||
orange2
|
|
||||||
orange3
|
|
||||||
orange4
|
|
||||||
darkorange1
|
|
||||||
darkorange2
|
|
||||||
darkorange3
|
|
||||||
darkorange4
|
|
||||||
coral1
|
|
||||||
coral2
|
|
||||||
coral3
|
|
||||||
coral4
|
|
||||||
tomato1
|
|
||||||
tomato2
|
|
||||||
tomato3
|
|
||||||
tomato4
|
|
||||||
orangered1
|
|
||||||
orangered2
|
|
||||||
orangered3
|
|
||||||
orangered4
|
|
||||||
red1
|
|
||||||
red2
|
|
||||||
red3
|
|
||||||
red4
|
|
||||||
deeppink1
|
|
||||||
deeppink2
|
|
||||||
deeppink3
|
|
||||||
deeppink4
|
|
||||||
hotpink1
|
|
||||||
hotpink2
|
|
||||||
hotpink3
|
|
||||||
hotpink4
|
|
||||||
pink1
|
|
||||||
pink2
|
|
||||||
pink3
|
|
||||||
pink4
|
|
||||||
lightpink1
|
|
||||||
lightpink2
|
|
||||||
lightpink3
|
|
||||||
lightpink4
|
|
||||||
palevioletred1
|
|
||||||
palevioletred2
|
|
||||||
palevioletred3
|
|
||||||
palevioletred4
|
|
||||||
maroon1
|
|
||||||
maroon2
|
|
||||||
maroon3
|
|
||||||
maroon4
|
|
||||||
violetred1
|
|
||||||
violetred2
|
|
||||||
violetred3
|
|
||||||
violetred4
|
|
||||||
magenta1
|
|
||||||
magenta2
|
|
||||||
magenta3
|
|
||||||
magenta4
|
|
||||||
orchid1
|
|
||||||
orchid2
|
|
||||||
orchid3
|
|
||||||
orchid4
|
|
||||||
plum1
|
|
||||||
plum2
|
|
||||||
plum3
|
|
||||||
plum4
|
|
||||||
mediumorchid1
|
|
||||||
mediumorchid2
|
|
||||||
mediumorchid3
|
|
||||||
mediumorchid4
|
|
||||||
darkorchid1
|
|
||||||
darkorchid2
|
|
||||||
darkorchid3
|
|
||||||
darkorchid4
|
|
||||||
purple1
|
|
||||||
purple2
|
|
||||||
purple3
|
|
||||||
purple4
|
|
||||||
mediumpurple1
|
|
||||||
mediumpurple2
|
|
||||||
mediumpurple3
|
|
||||||
mediumpurple4
|
|
||||||
thistle1
|
|
||||||
thistle2
|
|
||||||
thistle3
|
|
||||||
thistle4
|
|
||||||
gray0
|
|
||||||
grey0
|
|
||||||
gray1
|
|
||||||
grey1
|
|
||||||
gray2
|
|
||||||
grey2
|
|
||||||
gray3
|
|
||||||
grey3
|
|
||||||
gray4
|
|
||||||
grey4
|
|
||||||
gray5
|
|
||||||
grey5
|
|
||||||
gray6
|
|
||||||
grey6
|
|
||||||
gray7
|
|
||||||
grey7
|
|
||||||
gray8
|
|
||||||
grey8
|
|
||||||
gray9
|
|
||||||
grey9
|
|
||||||
gray10
|
|
||||||
grey10
|
|
||||||
gray11
|
|
||||||
grey11
|
|
||||||
gray12
|
|
||||||
grey12
|
|
||||||
gray13
|
|
||||||
grey13
|
|
||||||
gray14
|
|
||||||
grey14
|
|
||||||
gray15
|
|
||||||
grey15
|
|
||||||
gray16
|
|
||||||
grey16
|
|
||||||
gray17
|
|
||||||
grey17
|
|
||||||
gray18
|
|
||||||
grey18
|
|
||||||
gray19
|
|
||||||
grey19
|
|
||||||
gray20
|
|
||||||
grey20
|
|
||||||
gray21
|
|
||||||
grey21
|
|
||||||
gray22
|
|
||||||
grey22
|
|
||||||
gray23
|
|
||||||
grey23
|
|
||||||
gray24
|
|
||||||
grey24
|
|
||||||
gray25
|
|
||||||
grey25
|
|
||||||
gray26
|
|
||||||
grey26
|
|
||||||
gray27
|
|
||||||
grey27
|
|
||||||
gray28
|
|
||||||
grey28
|
|
||||||
gray29
|
|
||||||
grey29
|
|
||||||
gray30
|
|
||||||
grey30
|
|
||||||
gray31
|
|
||||||
grey31
|
|
||||||
gray32
|
|
||||||
grey32
|
|
||||||
gray33
|
|
||||||
grey33
|
|
||||||
gray34
|
|
||||||
grey34
|
|
||||||
gray35
|
|
||||||
grey35
|
|
||||||
gray36
|
|
||||||
grey36
|
|
||||||
gray37
|
|
||||||
grey37
|
|
||||||
gray38
|
|
||||||
grey38
|
|
||||||
gray39
|
|
||||||
grey39
|
|
||||||
gray40
|
|
||||||
grey40
|
|
||||||
gray41
|
|
||||||
grey41
|
|
||||||
gray42
|
|
||||||
grey42
|
|
||||||
gray43
|
|
||||||
grey43
|
|
||||||
gray44
|
|
||||||
grey44
|
|
||||||
gray45
|
|
||||||
grey45
|
|
||||||
gray46
|
|
||||||
grey46
|
|
||||||
gray47
|
|
||||||
grey47
|
|
||||||
gray48
|
|
||||||
grey48
|
|
||||||
gray49
|
|
||||||
grey49
|
|
||||||
gray50
|
|
||||||
grey50
|
|
||||||
gray51
|
|
||||||
grey51
|
|
||||||
gray52
|
|
||||||
grey52
|
|
||||||
gray53
|
|
||||||
grey53
|
|
||||||
gray54
|
|
||||||
grey54
|
|
||||||
gray55
|
|
||||||
grey55
|
|
||||||
gray56
|
|
||||||
grey56
|
|
||||||
gray57
|
|
||||||
grey57
|
|
||||||
gray58
|
|
||||||
grey58
|
|
||||||
gray59
|
|
||||||
grey59
|
|
||||||
gray60
|
|
||||||
grey60
|
|
||||||
gray61
|
|
||||||
grey61
|
|
||||||
gray62
|
|
||||||
grey62
|
|
||||||
gray63
|
|
||||||
grey63
|
|
||||||
gray64
|
|
||||||
grey64
|
|
||||||
gray65
|
|
||||||
grey65
|
|
||||||
gray66
|
|
||||||
grey66
|
|
||||||
gray67
|
|
||||||
grey67
|
|
||||||
gray68
|
|
||||||
grey68
|
|
||||||
gray69
|
|
||||||
grey69
|
|
||||||
gray70
|
|
||||||
grey70
|
|
||||||
gray71
|
|
||||||
grey71
|
|
||||||
gray72
|
|
||||||
grey72
|
|
||||||
gray73
|
|
||||||
grey73
|
|
||||||
gray74
|
|
||||||
grey74
|
|
||||||
gray75
|
|
||||||
grey75
|
|
||||||
gray76
|
|
||||||
grey76
|
|
||||||
gray77
|
|
||||||
grey77
|
|
||||||
gray78
|
|
||||||
grey78
|
|
||||||
gray79
|
|
||||||
grey79
|
|
||||||
gray80
|
|
||||||
grey80
|
|
||||||
gray81
|
|
||||||
grey81
|
|
||||||
gray82
|
|
||||||
grey82
|
|
||||||
gray83
|
|
||||||
grey83
|
|
||||||
gray84
|
|
||||||
grey84
|
|
||||||
gray85
|
|
||||||
grey85
|
|
||||||
gray86
|
|
||||||
grey86
|
|
||||||
gray87
|
|
||||||
grey87
|
|
||||||
gray88
|
|
||||||
grey88
|
|
||||||
gray89
|
|
||||||
grey89
|
|
||||||
gray90
|
|
||||||
grey90
|
|
||||||
gray91
|
|
||||||
grey91
|
|
||||||
gray92
|
|
||||||
grey92
|
|
||||||
gray93
|
|
||||||
grey93
|
|
||||||
gray94
|
|
||||||
grey94
|
|
||||||
gray95
|
|
||||||
grey95
|
|
||||||
gray96
|
|
||||||
grey96
|
|
||||||
gray97
|
|
||||||
grey97
|
|
||||||
gray98
|
|
||||||
grey98
|
|
||||||
gray99
|
|
||||||
grey99
|
|
||||||
gray100
|
|
||||||
grey100
|
|
||||||
dark-grey
|
|
||||||
darkgrey
|
|
||||||
dark-gray
|
|
||||||
darkgray
|
|
||||||
dark-blue
|
|
||||||
darkblue
|
|
||||||
dark-cyan
|
|
||||||
darkcyan
|
|
||||||
dark-magenta
|
|
||||||
darkmagenta
|
|
||||||
dark-red
|
|
||||||
darkred
|
|
||||||
light-green
|
|
||||||
lightgreen
|
|
||||||
crimson
|
|
||||||
indigo
|
|
||||||
olive
|
|
||||||
rebecca-purple
|
|
||||||
rebeccapurple
|
|
||||||
silver
|
|
||||||
teal
|
|
||||||
479840
.github/actions/spell-check/dictionary/dictionary.txt
vendored
479840
.github/actions/spell-check/dictionary/dictionary.txt
vendored
File diff suppressed because it is too large
Load Diff
@@ -1,3 +0,0 @@
|
|||||||
powf
|
|
||||||
sqrtf
|
|
||||||
isnan
|
|
||||||
65
.github/actions/spell-check/excludes.txt
vendored
65
.github/actions/spell-check/excludes.txt
vendored
@@ -1,65 +0,0 @@
|
|||||||
(?:^|/)dirs$
|
|
||||||
(?:^|/)go\.mod$
|
|
||||||
(?:^|/)go\.sum$
|
|
||||||
(?:^|/)package-lock\.json$
|
|
||||||
(?:^|/)sources(?:|\.dep)$
|
|
||||||
SUMS$
|
|
||||||
\.ai$
|
|
||||||
\.bmp$
|
|
||||||
\.cer$
|
|
||||||
\.class$
|
|
||||||
\.crl$
|
|
||||||
\.crt$
|
|
||||||
\.csr$
|
|
||||||
\.dll$
|
|
||||||
\.DS_Store$
|
|
||||||
\.eot$
|
|
||||||
\.eps$
|
|
||||||
\.exe$
|
|
||||||
\.gif$
|
|
||||||
\.graffle$
|
|
||||||
\.gz$
|
|
||||||
\.icns$
|
|
||||||
\.ico$
|
|
||||||
\.jar$
|
|
||||||
\.jpeg$
|
|
||||||
\.jpg$
|
|
||||||
\.key$
|
|
||||||
\.lib$
|
|
||||||
\.lock$
|
|
||||||
\.map$
|
|
||||||
\.min\..
|
|
||||||
\.mp3$
|
|
||||||
\.mp4$
|
|
||||||
\.otf$
|
|
||||||
\.pbxproj$
|
|
||||||
\.pdf$
|
|
||||||
\.pem$
|
|
||||||
\.png$
|
|
||||||
\.psd$
|
|
||||||
\.runsettings$
|
|
||||||
\.sig$
|
|
||||||
\.so$
|
|
||||||
\.svg$
|
|
||||||
\.svgz$
|
|
||||||
\.tar$
|
|
||||||
\.tgz$
|
|
||||||
\.ttf$
|
|
||||||
\.vsdx$
|
|
||||||
\.woff
|
|
||||||
\.xcf$
|
|
||||||
\.xls
|
|
||||||
\.xpm$
|
|
||||||
\.yml$
|
|
||||||
\.zip$
|
|
||||||
^consolegit2gitfilters\.json$
|
|
||||||
^dep/
|
|
||||||
^oss/
|
|
||||||
^doc/reference/UTF8-torture-test\.txt$
|
|
||||||
^src/interactivity/onecore/BgfxEngine\.
|
|
||||||
^src/renderer/wddmcon/WddmConRenderer\.
|
|
||||||
^src/terminal/parser/ft_fuzzer/VTCommandFuzzer\.cpp$
|
|
||||||
^src/tools/U8U16Test/(?:fr|ru|zh)\.txt$
|
|
||||||
^\.github/actions/spell-check/
|
|
||||||
^\.gitignore$
|
|
||||||
^doc/reference/master-sequence-list.csv$
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
renamer
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
autogenerated
|
|
||||||
CPPCORECHECK
|
|
||||||
Debian
|
|
||||||
filepath
|
|
||||||
inplace
|
|
||||||
KEYBDINPUT
|
|
||||||
WINVER
|
|
||||||
15
.github/actions/spell-check/expect/web.txt
vendored
15
.github/actions/spell-check/expect/web.txt
vendored
@@ -1,15 +0,0 @@
|
|||||||
http
|
|
||||||
td
|
|
||||||
www
|
|
||||||
ecma
|
|
||||||
rapidtables
|
|
||||||
WCAG
|
|
||||||
freedesktop
|
|
||||||
ycombinator
|
|
||||||
robertelder
|
|
||||||
kovidgoyal
|
|
||||||
leonerd
|
|
||||||
fixterms
|
|
||||||
uk
|
|
||||||
winui
|
|
||||||
appshellintegration
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
https://(?:(?:[-a-zA-Z0-9?&=]*\.|)microsoft\.com)/[-a-zA-Z0-9?&=_#\/.]*
|
|
||||||
https://aka\.ms/[-a-zA-Z0-9?&=\/_]*
|
|
||||||
https://www\.itscj\.ipsj\.or\.jp/iso-ir/[-0-9]+\.pdf
|
|
||||||
https://www\.vt100\.net/docs/[-a-zA-Z0-9#_\/.]*
|
|
||||||
https://www.w3.org/[-a-zA-Z0-9?&=\/_#]*
|
|
||||||
https://(?:(?:www\.|)youtube\.com|youtu.be)/[-a-zA-Z0-9?&=]*
|
|
||||||
https://[a-z-]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]*
|
|
||||||
[Pp]ublicKeyToken="?[0-9a-fA-F]{16}"?
|
|
||||||
(?:[{"]|UniqueIdentifier>)[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}(?:[}"]|</UniqueIdentifier)
|
|
||||||
(?:0[Xx]|\\x|U\+|#)[a-f0-9A-FGgRr]{2,}[Uu]?[Ll]{0,2}\b
|
|
||||||
microsoft/cascadia-code\@[0-9a-fA-F]{40}
|
|
||||||
\d+x\d+Logo
|
|
||||||
Scro\&ll
|
|
||||||
# selectionInput.cpp
|
|
||||||
:\\windows\\syste\b
|
|
||||||
TestUtils::VerifyExpectedString\(tb, L"[^"]+"
|
|
||||||
(?:hostSm|mach)\.ProcessString\(L"[^"]+"
|
|
||||||
\b([A-Za-z])\1{3,}\b
|
|
||||||
0x[0-9A-Za-z]+
|
|
||||||
Base64::s_(?:En|De)code\(L"[^"]+"
|
|
||||||
VERIFY_ARE_EQUAL\(L"[^"]+"
|
|
||||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\+/"
|
|
||||||
std::memory_order_[\w]+
|
|
||||||
15
.github/actions/spelling/README.md
vendored
Normal file
15
.github/actions/spelling/README.md
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# check-spelling/check-spelling configuration
|
||||||
|
|
||||||
|
File | Purpose | Format | Info
|
||||||
|
-|-|-|-
|
||||||
|
[allow/*.txt](allow/) | Add words to the dictionary | one word per line (only letters and `'`s allowed) | [allow](https://github.com/check-spelling/check-spelling/wiki/Configuration#allow)
|
||||||
|
[reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject)
|
||||||
|
[excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes)
|
||||||
|
[patterns/*.txt](patterns/) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
|
||||||
|
[candidate.patterns](candidate.patterns) | Patterns that might be worth adding to [patterns.txt](patterns.txt) | perl regular expression with optional comment block introductions (all matches will be suggested) | [candidates](https://github.com/check-spelling/check-spelling/wiki/Feature:-Suggest-patterns)
|
||||||
|
[line_forbidden.patterns](line_forbidden.patterns) | Patterns to flag in checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
|
||||||
|
[expect/*.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect)
|
||||||
|
[advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice)
|
||||||
|
|
||||||
|
Note: you can replace any of these files with a directory by the same name (minus the suffix)
|
||||||
|
and then include multiple files inside that directory (with that suffix) to merge multiple files together.
|
||||||
48
.github/actions/spelling/advice.md
vendored
Normal file
48
.github/actions/spelling/advice.md
vendored
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<!-- See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice --> <!-- markdownlint-disable MD033 MD041 -->
|
||||||
|
<details>
|
||||||
|
<summary>
|
||||||
|
:pencil2: Contributor please read this
|
||||||
|
</summary>
|
||||||
|
|
||||||
|
By default the command suggestion will generate a file named based on your commit. That's generally ok as long as you add the file to your commit. Someone can reorganize it later.
|
||||||
|
|
||||||
|
:warning: The command is written for posix shells. If it doesn't work for you, you can manually _add_ (one word per line) / _remove_ items to `expect.txt` and the `excludes.txt` files.
|
||||||
|
|
||||||
|
If the listed items are:
|
||||||
|
|
||||||
|
* ... **misspelled**, then please *correct* them instead of using the command.
|
||||||
|
* ... *names*, please add them to `.github/actions/spelling/allow/names.txt`.
|
||||||
|
* ... APIs, you can add them to a file in `.github/actions/spelling/allow/`.
|
||||||
|
* ... just things you're using, please add them to an appropriate file in `.github/actions/spelling/expect/`.
|
||||||
|
* ... tokens you only need in one place and shouldn't *generally be used*, you can add an item in an appropriate file in `.github/actions/spelling/patterns/`.
|
||||||
|
|
||||||
|
See the `README.md` in each directory for more information.
|
||||||
|
|
||||||
|
:microscope: You can test your commits **without** *appending* to a PR by creating a new branch with that extra change and pushing it to your fork. The [check-spelling](https://github.com/marketplace/actions/check-spelling) action will run in response to your **push** -- it doesn't require an open pull request. By using such a branch, you can limit the number of typos your peers see you make. :wink:
|
||||||
|
|
||||||
|
|
||||||
|
<details><summary>If the flagged items are :exploding_head: false positives</summary>
|
||||||
|
|
||||||
|
If items relate to a ...
|
||||||
|
* binary file (or some other file you wouldn't want to check at all).
|
||||||
|
|
||||||
|
Please add a file path to the `excludes.txt` file matching the containing file.
|
||||||
|
|
||||||
|
File paths are Perl 5 Regular Expressions - you can [test](
|
||||||
|
https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files.
|
||||||
|
|
||||||
|
`^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md](
|
||||||
|
../tree/HEAD/README.md) (on whichever branch you're using).
|
||||||
|
|
||||||
|
* well-formed pattern.
|
||||||
|
|
||||||
|
If you can write a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it,
|
||||||
|
try adding it to the `patterns.txt` file.
|
||||||
|
|
||||||
|
Patterns are Perl 5 Regular Expressions - you can [test](
|
||||||
|
https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines.
|
||||||
|
|
||||||
|
Note that patterns can't match multiline strings.
|
||||||
|
</details>
|
||||||
|
|
||||||
|
</details>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Dictionaries are lists of words to accept unconditionally
|
# Allow files are lists of words to accept unconditionally
|
||||||
|
|
||||||
While check spelling will complain about a whitelisted word
|
While check spelling will complain about an expected word
|
||||||
which is no longer present, you can include things here even if
|
which is no longer present, you can include things here even if
|
||||||
they are not otherwise present in the repository.
|
they are not otherwise present in the repository.
|
||||||
|
|
||||||
@@ -8,11 +8,11 @@ E.g., you could include a list of system APIs here, or potential
|
|||||||
contributors (so that if a future commit includes their name,
|
contributors (so that if a future commit includes their name,
|
||||||
it'll be accepted).
|
it'll be accepted).
|
||||||
|
|
||||||
### Files
|
## Files
|
||||||
|
|
||||||
| File | Description |
|
| File | Description |
|
||||||
| ---- | ----------- |
|
| ---- | ----------- |
|
||||||
| [Dictionary](dictionary.txt) | Primary US English dictionary |
|
| [Allow](allow.txt) | Supplements to the dictionary |
|
||||||
| [Chinese](chinese.txt) | Chinese words |
|
| [Chinese](chinese.txt) | Chinese words |
|
||||||
| [Japanese](japanese.txt) | Japanese words |
|
| [Japanese](japanese.txt) | Japanese words |
|
||||||
| [Microsoft](microsoft.txt) | Microsoft brand items |
|
| [Microsoft](microsoft.txt) | Microsoft brand items |
|
||||||
108
.github/actions/spelling/allow/allow.txt
vendored
Normal file
108
.github/actions/spelling/allow/allow.txt
vendored
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
admins
|
||||||
|
allcolors
|
||||||
|
Apc
|
||||||
|
apc
|
||||||
|
breadcrumb
|
||||||
|
breadcrumbs
|
||||||
|
bsd
|
||||||
|
calt
|
||||||
|
ccmp
|
||||||
|
changelog
|
||||||
|
clickable
|
||||||
|
clig
|
||||||
|
CMMI
|
||||||
|
copyable
|
||||||
|
cybersecurity
|
||||||
|
dalet
|
||||||
|
Dcs
|
||||||
|
dcs
|
||||||
|
dialytika
|
||||||
|
dje
|
||||||
|
downside
|
||||||
|
downsides
|
||||||
|
dze
|
||||||
|
dzhe
|
||||||
|
EDDB
|
||||||
|
EDDC
|
||||||
|
Enum'd
|
||||||
|
Fitt
|
||||||
|
formattings
|
||||||
|
FTCS
|
||||||
|
ftp
|
||||||
|
fvar
|
||||||
|
gantt
|
||||||
|
gcc
|
||||||
|
geeksforgeeks
|
||||||
|
ghe
|
||||||
|
github
|
||||||
|
gje
|
||||||
|
godbolt
|
||||||
|
hostname
|
||||||
|
hostnames
|
||||||
|
https
|
||||||
|
hyperlink
|
||||||
|
hyperlinking
|
||||||
|
hyperlinks
|
||||||
|
iconify
|
||||||
|
img
|
||||||
|
inlined
|
||||||
|
It'd
|
||||||
|
kje
|
||||||
|
libfuzzer
|
||||||
|
libuv
|
||||||
|
liga
|
||||||
|
lje
|
||||||
|
Llast
|
||||||
|
llvm
|
||||||
|
Lmid
|
||||||
|
locl
|
||||||
|
lol
|
||||||
|
lorem
|
||||||
|
Lorigin
|
||||||
|
maxed
|
||||||
|
minimalistic
|
||||||
|
mkmk
|
||||||
|
mnt
|
||||||
|
mru
|
||||||
|
nje
|
||||||
|
noreply
|
||||||
|
ogonek
|
||||||
|
ok'd
|
||||||
|
overlined
|
||||||
|
pipeline
|
||||||
|
postmodern
|
||||||
|
ptys
|
||||||
|
qof
|
||||||
|
qps
|
||||||
|
rclt
|
||||||
|
reimplementation
|
||||||
|
reserialization
|
||||||
|
reserialize
|
||||||
|
reserializes
|
||||||
|
rlig
|
||||||
|
runtimes
|
||||||
|
shcha
|
||||||
|
slnt
|
||||||
|
Sos
|
||||||
|
ssh
|
||||||
|
timeline
|
||||||
|
timelines
|
||||||
|
timestamped
|
||||||
|
TLDR
|
||||||
|
tokenizes
|
||||||
|
tonos
|
||||||
|
toolset
|
||||||
|
tshe
|
||||||
|
ubuntu
|
||||||
|
uiatextrange
|
||||||
|
UIs
|
||||||
|
und
|
||||||
|
unregister
|
||||||
|
versioned
|
||||||
|
vsdevcmd
|
||||||
|
We'd
|
||||||
|
wildcards
|
||||||
|
XBox
|
||||||
|
YBox
|
||||||
|
yeru
|
||||||
|
zhe
|
||||||
248
.github/actions/spelling/allow/apis.txt
vendored
Normal file
248
.github/actions/spelling/allow/apis.txt
vendored
Normal file
@@ -0,0 +1,248 @@
|
|||||||
|
ACCEPTFILES
|
||||||
|
ACCESSDENIED
|
||||||
|
acl
|
||||||
|
aclapi
|
||||||
|
alignas
|
||||||
|
alignof
|
||||||
|
APPLYTOSUBMENUS
|
||||||
|
appxrecipe
|
||||||
|
bitfield
|
||||||
|
bitfields
|
||||||
|
BUILDBRANCH
|
||||||
|
BUILDMSG
|
||||||
|
BUILDNUMBER
|
||||||
|
BYCOMMAND
|
||||||
|
BYPOSITION
|
||||||
|
charconv
|
||||||
|
CLASSNOTAVAILABLE
|
||||||
|
CLOSEAPP
|
||||||
|
cmdletbinding
|
||||||
|
COLORPROPERTY
|
||||||
|
colspan
|
||||||
|
COMDLG
|
||||||
|
commandlinetoargv
|
||||||
|
comparand
|
||||||
|
cstdint
|
||||||
|
CXICON
|
||||||
|
CYICON
|
||||||
|
Dacl
|
||||||
|
dataobject
|
||||||
|
dcomp
|
||||||
|
DERR
|
||||||
|
dlldata
|
||||||
|
DNE
|
||||||
|
DONTADDTORECENT
|
||||||
|
DWMSBT
|
||||||
|
DWMWA
|
||||||
|
DWMWA
|
||||||
|
DWORDLONG
|
||||||
|
endfor
|
||||||
|
ENDSESSION
|
||||||
|
enumset
|
||||||
|
environstrings
|
||||||
|
EXPCMDFLAGS
|
||||||
|
EXPCMDSTATE
|
||||||
|
filetime
|
||||||
|
FILTERSPEC
|
||||||
|
FORCEFILESYSTEM
|
||||||
|
FORCEMINIMIZE
|
||||||
|
frac
|
||||||
|
fullkbd
|
||||||
|
futex
|
||||||
|
GETDESKWALLPAPER
|
||||||
|
GETHIGHCONTRAST
|
||||||
|
GETMOUSEHOVERTIME
|
||||||
|
Hashtable
|
||||||
|
HIGHCONTRASTON
|
||||||
|
HIGHCONTRASTW
|
||||||
|
hotkeys
|
||||||
|
href
|
||||||
|
hrgn
|
||||||
|
HTCLOSE
|
||||||
|
hwinsta
|
||||||
|
HWINSTA
|
||||||
|
IActivation
|
||||||
|
IApp
|
||||||
|
IAppearance
|
||||||
|
IAsync
|
||||||
|
IBind
|
||||||
|
IBox
|
||||||
|
IClass
|
||||||
|
IComparable
|
||||||
|
IComparer
|
||||||
|
IConnection
|
||||||
|
ICustom
|
||||||
|
IDialog
|
||||||
|
IDirect
|
||||||
|
IExplorer
|
||||||
|
IFACEMETHOD
|
||||||
|
IFile
|
||||||
|
IGraphics
|
||||||
|
IInheritable
|
||||||
|
IMap
|
||||||
|
IMonarch
|
||||||
|
IObject
|
||||||
|
iosfwd
|
||||||
|
IPackage
|
||||||
|
IPeasant
|
||||||
|
ISetup
|
||||||
|
isspace
|
||||||
|
IStorage
|
||||||
|
istream
|
||||||
|
IStringable
|
||||||
|
ITab
|
||||||
|
ITaskbar
|
||||||
|
itow
|
||||||
|
IUri
|
||||||
|
IVirtual
|
||||||
|
KEYSELECT
|
||||||
|
LCID
|
||||||
|
llabs
|
||||||
|
llu
|
||||||
|
localtime
|
||||||
|
lround
|
||||||
|
Lsa
|
||||||
|
lsass
|
||||||
|
LSHIFT
|
||||||
|
LTGRAY
|
||||||
|
MAINWINDOW
|
||||||
|
memchr
|
||||||
|
memicmp
|
||||||
|
MENUCOMMAND
|
||||||
|
MENUDATA
|
||||||
|
MENUINFO
|
||||||
|
MENUITEMINFOW
|
||||||
|
mmeapi
|
||||||
|
MOUSELEAVE
|
||||||
|
mov
|
||||||
|
mptt
|
||||||
|
msappx
|
||||||
|
MULTIPLEUSE
|
||||||
|
NCHITTEST
|
||||||
|
NCLBUTTONDBLCLK
|
||||||
|
NCMOUSELEAVE
|
||||||
|
NCMOUSEMOVE
|
||||||
|
NCRBUTTONDBLCLK
|
||||||
|
NIF
|
||||||
|
NIN
|
||||||
|
NOAGGREGATION
|
||||||
|
NOASYNC
|
||||||
|
NOCHANGEDIR
|
||||||
|
NOPROGRESS
|
||||||
|
NOREDIRECTIONBITMAP
|
||||||
|
NOREPEAT
|
||||||
|
NOTIFYBYPOS
|
||||||
|
NOTIFYICON
|
||||||
|
NOTIFYICONDATA
|
||||||
|
ntprivapi
|
||||||
|
oaidl
|
||||||
|
ocidl
|
||||||
|
ODR
|
||||||
|
offsetof
|
||||||
|
ofstream
|
||||||
|
onefuzz
|
||||||
|
osver
|
||||||
|
OSVERSIONINFOEXW
|
||||||
|
otms
|
||||||
|
OUTLINETEXTMETRICW
|
||||||
|
overridable
|
||||||
|
PACL
|
||||||
|
PAGESCROLL
|
||||||
|
PATINVERT
|
||||||
|
PEXPLICIT
|
||||||
|
PICKFOLDERS
|
||||||
|
pmr
|
||||||
|
ptstr
|
||||||
|
QUERYENDSESSION
|
||||||
|
rcx
|
||||||
|
REGCLS
|
||||||
|
RETURNCMD
|
||||||
|
rfind
|
||||||
|
ROOTOWNER
|
||||||
|
roundf
|
||||||
|
RSHIFT
|
||||||
|
SACL
|
||||||
|
schandle
|
||||||
|
semver
|
||||||
|
serializer
|
||||||
|
SETVERSION
|
||||||
|
SHELLEXECUTEINFOW
|
||||||
|
shobjidl
|
||||||
|
SHOWHIDE
|
||||||
|
SHOWMINIMIZED
|
||||||
|
SHOWTIP
|
||||||
|
SINGLEUSE
|
||||||
|
SIZENS
|
||||||
|
smoothstep
|
||||||
|
snprintf
|
||||||
|
spsc
|
||||||
|
sregex
|
||||||
|
SRWLOC
|
||||||
|
SRWLOCK
|
||||||
|
STDCPP
|
||||||
|
STDMETHOD
|
||||||
|
strchr
|
||||||
|
strcpy
|
||||||
|
streambuf
|
||||||
|
strtoul
|
||||||
|
Stubless
|
||||||
|
Subheader
|
||||||
|
Subpage
|
||||||
|
syscall
|
||||||
|
SYSTEMBACKDROP
|
||||||
|
TABROW
|
||||||
|
TASKBARCREATED
|
||||||
|
TBPF
|
||||||
|
THEMECHANGED
|
||||||
|
tlg
|
||||||
|
TME
|
||||||
|
tmp
|
||||||
|
tmpdir
|
||||||
|
tolower
|
||||||
|
toupper
|
||||||
|
TRACKMOUSEEVENT
|
||||||
|
TTask
|
||||||
|
TVal
|
||||||
|
UChar
|
||||||
|
UFIELD
|
||||||
|
ULARGE
|
||||||
|
UOI
|
||||||
|
UPDATEINIFILE
|
||||||
|
userenv
|
||||||
|
USEROBJECTFLAGS
|
||||||
|
Viewbox
|
||||||
|
virtualalloc
|
||||||
|
wcsstr
|
||||||
|
wcstoui
|
||||||
|
winmain
|
||||||
|
winsta
|
||||||
|
winstamin
|
||||||
|
wmemcmp
|
||||||
|
wpc
|
||||||
|
WSF
|
||||||
|
wsregex
|
||||||
|
wwinmain
|
||||||
|
xchg
|
||||||
|
XDocument
|
||||||
|
XElement
|
||||||
|
xfacet
|
||||||
|
xhash
|
||||||
|
XIcon
|
||||||
|
xiosbase
|
||||||
|
xlocale
|
||||||
|
xlocbuf
|
||||||
|
xlocinfo
|
||||||
|
xlocmes
|
||||||
|
xlocmon
|
||||||
|
xlocnum
|
||||||
|
xloctime
|
||||||
|
XMax
|
||||||
|
xmemory
|
||||||
|
XParse
|
||||||
|
xpath
|
||||||
|
xstddef
|
||||||
|
xstring
|
||||||
|
xtree
|
||||||
|
xutility
|
||||||
|
YIcon
|
||||||
|
YMax
|
||||||
117
.github/actions/spelling/allow/colors.txt
vendored
Normal file
117
.github/actions/spelling/allow/colors.txt
vendored
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
alice
|
||||||
|
aliceblue
|
||||||
|
antiquewhite
|
||||||
|
blanchedalmond
|
||||||
|
blueviolet
|
||||||
|
burlywood
|
||||||
|
cadetblue
|
||||||
|
cornflowerblue
|
||||||
|
cornsilk
|
||||||
|
cyan
|
||||||
|
darkblue
|
||||||
|
darkcyan
|
||||||
|
darkgoldenrod
|
||||||
|
darkgray
|
||||||
|
darkgreen
|
||||||
|
darkgrey
|
||||||
|
darkkhaki
|
||||||
|
darkmagenta
|
||||||
|
darkolivegreen
|
||||||
|
darkorange
|
||||||
|
darkorchid
|
||||||
|
darkred
|
||||||
|
darksalmon
|
||||||
|
darkseagreen
|
||||||
|
darkslateblue
|
||||||
|
darkslategray
|
||||||
|
darkslategrey
|
||||||
|
darkturquoise
|
||||||
|
darkviolet
|
||||||
|
deeppink
|
||||||
|
deepskyblue
|
||||||
|
dimgray
|
||||||
|
dimgrey
|
||||||
|
dodgerblue
|
||||||
|
firebrick
|
||||||
|
floralwhite
|
||||||
|
forestgreen
|
||||||
|
gainsboro
|
||||||
|
ghostwhite
|
||||||
|
greenyellow
|
||||||
|
hotpink
|
||||||
|
indian
|
||||||
|
indianred
|
||||||
|
lavenderblush
|
||||||
|
lawngreen
|
||||||
|
lemonchiffon
|
||||||
|
lightblue
|
||||||
|
lightcoral
|
||||||
|
lightcyan
|
||||||
|
lightgoldenrod
|
||||||
|
lightgoldenrodyellow
|
||||||
|
lightgray
|
||||||
|
lightgreen
|
||||||
|
lightgrey
|
||||||
|
lightpink
|
||||||
|
lightsalmon
|
||||||
|
lightseagreen
|
||||||
|
lightskyblue
|
||||||
|
lightslateblue
|
||||||
|
lightslategray
|
||||||
|
lightslategrey
|
||||||
|
lightsteelblue
|
||||||
|
lightyellow
|
||||||
|
limegreen
|
||||||
|
mediumaquamarine
|
||||||
|
mediumblue
|
||||||
|
mediumorchid
|
||||||
|
mediumpurple
|
||||||
|
mediumseagreen
|
||||||
|
mediumslateblue
|
||||||
|
mediumspringgreen
|
||||||
|
mediumturquoise
|
||||||
|
mediumvioletred
|
||||||
|
midnightblue
|
||||||
|
mintcream
|
||||||
|
mistyrose
|
||||||
|
navajo
|
||||||
|
navajowhite
|
||||||
|
navyblue
|
||||||
|
oldlace
|
||||||
|
olivedrab
|
||||||
|
orangered
|
||||||
|
palegoldenrod
|
||||||
|
palegreen
|
||||||
|
paleturquoise
|
||||||
|
palevioletred
|
||||||
|
papayawhip
|
||||||
|
peachpuff
|
||||||
|
peru
|
||||||
|
powderblue
|
||||||
|
rebecca
|
||||||
|
rebeccapurple
|
||||||
|
rosybrown
|
||||||
|
royalblue
|
||||||
|
saddlebrown
|
||||||
|
sandybrown
|
||||||
|
seagreen
|
||||||
|
sienna
|
||||||
|
skyblue
|
||||||
|
slateblue
|
||||||
|
slategray
|
||||||
|
slategrey
|
||||||
|
springgreen
|
||||||
|
steelblue
|
||||||
|
violetred
|
||||||
|
webgray
|
||||||
|
webgreen
|
||||||
|
webgrey
|
||||||
|
webmaroon
|
||||||
|
webpurple
|
||||||
|
whitesmoke
|
||||||
|
xaroon
|
||||||
|
xray
|
||||||
|
xreen
|
||||||
|
xrey
|
||||||
|
xurple
|
||||||
|
yellowgreen
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
Consolas
|
Consolas
|
||||||
emoji
|
emoji
|
||||||
|
emojis
|
||||||
Extralight
|
Extralight
|
||||||
Gabriola
|
Gabriola
|
||||||
Iosevka
|
Iosevka
|
||||||
MDL
|
MDL
|
||||||
Monofur
|
Monofur
|
||||||
Segoe
|
Segoe
|
||||||
|
wght
|
||||||
11
.github/actions/spelling/allow/math.txt
vendored
Normal file
11
.github/actions/spelling/allow/math.txt
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
atan
|
||||||
|
CPrime
|
||||||
|
HBar
|
||||||
|
HPrime
|
||||||
|
isnan
|
||||||
|
LPrime
|
||||||
|
LStep
|
||||||
|
powf
|
||||||
|
RSub
|
||||||
|
sqrtf
|
||||||
|
ULP
|
||||||
@@ -1,20 +1,50 @@
|
|||||||
ACLs
|
ACLs
|
||||||
|
ADMINS
|
||||||
|
advapi
|
||||||
altform
|
altform
|
||||||
|
altforms
|
||||||
appendwttlogging
|
appendwttlogging
|
||||||
|
appx
|
||||||
|
appxbundle
|
||||||
|
appxerror
|
||||||
|
appxmanifest
|
||||||
|
ATL
|
||||||
backplating
|
backplating
|
||||||
|
bitmaps
|
||||||
|
BOMs
|
||||||
|
CPLs
|
||||||
|
cpptools
|
||||||
|
cppvsdbg
|
||||||
CPRs
|
CPRs
|
||||||
|
cryptbase
|
||||||
DACL
|
DACL
|
||||||
DACLs
|
DACLs
|
||||||
|
defaultlib
|
||||||
|
diffs
|
||||||
|
disposables
|
||||||
dotnetfeed
|
dotnetfeed
|
||||||
|
DTDs
|
||||||
DWINRT
|
DWINRT
|
||||||
enablewttlogging
|
enablewttlogging
|
||||||
|
Intelli
|
||||||
|
IVisual
|
||||||
|
libucrt
|
||||||
|
libucrtd
|
||||||
LKG
|
LKG
|
||||||
|
LOCKFILE
|
||||||
|
Lxss
|
||||||
mfcribbon
|
mfcribbon
|
||||||
microsoft
|
microsoft
|
||||||
microsoftonline
|
microsoftonline
|
||||||
|
MSAA
|
||||||
|
msixbundle
|
||||||
|
MSVC
|
||||||
|
MSVCP
|
||||||
muxc
|
muxc
|
||||||
netcore
|
netcore
|
||||||
|
Onefuzz
|
||||||
osgvsowi
|
osgvsowi
|
||||||
|
PFILETIME
|
||||||
pgc
|
pgc
|
||||||
pgo
|
pgo
|
||||||
pgosweep
|
pgosweep
|
||||||
@@ -22,20 +52,34 @@ powerrename
|
|||||||
powershell
|
powershell
|
||||||
propkey
|
propkey
|
||||||
pscustomobject
|
pscustomobject
|
||||||
|
QWORD
|
||||||
|
regedit
|
||||||
robocopy
|
robocopy
|
||||||
SACLs
|
SACLs
|
||||||
|
sdkddkver
|
||||||
Shobjidl
|
Shobjidl
|
||||||
Skype
|
Skype
|
||||||
|
SRW
|
||||||
|
sxs
|
||||||
|
Sysinternals
|
||||||
sysnative
|
sysnative
|
||||||
systemroot
|
systemroot
|
||||||
taskkill
|
taskkill
|
||||||
tasklist
|
tasklist
|
||||||
tdbuildteamid
|
tdbuildteamid
|
||||||
|
ucrt
|
||||||
|
ucrtd
|
||||||
|
unvirtualized
|
||||||
|
VCRT
|
||||||
vcruntime
|
vcruntime
|
||||||
|
Virtualization
|
||||||
visualstudio
|
visualstudio
|
||||||
|
vscode
|
||||||
VSTHRD
|
VSTHRD
|
||||||
|
winsdkver
|
||||||
wlk
|
wlk
|
||||||
wslpath
|
wslpath
|
||||||
wtl
|
wtl
|
||||||
wtt
|
wtt
|
||||||
wttlog
|
wttlog
|
||||||
|
Xamarin
|
||||||
@@ -1,24 +1,30 @@
|
|||||||
Anup
|
Anup
|
||||||
austdi
|
austdi
|
||||||
|
arkthur
|
||||||
Ballmer
|
Ballmer
|
||||||
bhoj
|
bhoj
|
||||||
Bhojwani
|
Bhojwani
|
||||||
|
Bluloco
|
||||||
carlos
|
carlos
|
||||||
dhowett
|
dhowett
|
||||||
Diviness
|
Diviness
|
||||||
dsafa
|
dsafa
|
||||||
duhowett
|
duhowett
|
||||||
|
DXP
|
||||||
ekg
|
ekg
|
||||||
|
eryksun
|
||||||
ethanschoonover
|
ethanschoonover
|
||||||
Firefox
|
Firefox
|
||||||
Gatta
|
Gatta
|
||||||
glsl
|
glsl
|
||||||
|
Gravell
|
||||||
Grie
|
Grie
|
||||||
Griese
|
Griese
|
||||||
Hernan
|
Hernan
|
||||||
Howett
|
Howett
|
||||||
Illhardt
|
Illhardt
|
||||||
iquilezles
|
iquilezles
|
||||||
|
italo
|
||||||
jantari
|
jantari
|
||||||
jerrysh
|
jerrysh
|
||||||
Kaiyu
|
Kaiyu
|
||||||
@@ -30,8 +36,11 @@ Kourosh
|
|||||||
kowalczyk
|
kowalczyk
|
||||||
leonmsft
|
leonmsft
|
||||||
Lepilleur
|
Lepilleur
|
||||||
|
lhecker
|
||||||
lukesampson
|
lukesampson
|
||||||
|
Macbook
|
||||||
Manandhar
|
Manandhar
|
||||||
|
masserano
|
||||||
mbadolato
|
mbadolato
|
||||||
Mehrain
|
Mehrain
|
||||||
menger
|
menger
|
||||||
@@ -50,6 +59,8 @@ oising
|
|||||||
oldnewthing
|
oldnewthing
|
||||||
opengl
|
opengl
|
||||||
osgwiki
|
osgwiki
|
||||||
|
pabhojwa
|
||||||
|
panos
|
||||||
paulcam
|
paulcam
|
||||||
pauldotknopf
|
pauldotknopf
|
||||||
PGP
|
PGP
|
||||||
@@ -58,17 +69,23 @@ Rincewind
|
|||||||
rprichard
|
rprichard
|
||||||
Schoonover
|
Schoonover
|
||||||
shadertoy
|
shadertoy
|
||||||
|
Shomnipotence
|
||||||
|
simioni
|
||||||
Somuah
|
Somuah
|
||||||
sonph
|
sonph
|
||||||
sonpham
|
sonpham
|
||||||
stakx
|
stakx
|
||||||
|
talo
|
||||||
|
thereses
|
||||||
Walisch
|
Walisch
|
||||||
|
WDX
|
||||||
|
Wellons
|
||||||
Wirt
|
Wirt
|
||||||
Wojciech
|
Wojciech
|
||||||
zadjii
|
zadjii
|
||||||
Zamor
|
Zamor
|
||||||
zamora
|
|
||||||
Zamora
|
Zamora
|
||||||
|
zamora
|
||||||
Zoey
|
Zoey
|
||||||
zorio
|
zorio
|
||||||
Zverovich
|
Zverovich
|
||||||
523
.github/actions/spelling/candidate.patterns
vendored
Normal file
523
.github/actions/spelling/candidate.patterns
vendored
Normal file
@@ -0,0 +1,523 @@
|
|||||||
|
# marker to ignore all code on line
|
||||||
|
^.*/\* #no-spell-check-line \*/.*$
|
||||||
|
# marker for ignoring a comment to the end of the line
|
||||||
|
// #no-spell-check.*$
|
||||||
|
|
||||||
|
# patch hunk comments
|
||||||
|
^\@\@ -\d+(?:,\d+|) \+\d+(?:,\d+|) \@\@ .*
|
||||||
|
# git index header
|
||||||
|
index [0-9a-z]{7,40}\.\.[0-9a-z]{7,40}
|
||||||
|
|
||||||
|
# cid urls
|
||||||
|
(['"])cid:.*?\g{-1}
|
||||||
|
|
||||||
|
# data url in parens
|
||||||
|
\(data:[^)]*?(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})[^)]*\)
|
||||||
|
# data url in quotes
|
||||||
|
([`'"])data:.*?(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,}).*\g{-1}
|
||||||
|
# data url
|
||||||
|
data:[-a-zA-Z=;:/0-9+]*,\S*
|
||||||
|
|
||||||
|
# mailto urls
|
||||||
|
mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
|
||||||
|
|
||||||
|
# magnet urls
|
||||||
|
magnet:[?=:\w]+
|
||||||
|
|
||||||
|
# magnet urls
|
||||||
|
"magnet:[^"]+"
|
||||||
|
|
||||||
|
# obs:
|
||||||
|
"obs:[^"]*"
|
||||||
|
|
||||||
|
# The `\b` here means a break, it's the fancy way to handle urls, but it makes things harder to read
|
||||||
|
# In this examples content, I'm using a number of different ways to match things to show various approaches
|
||||||
|
# asciinema
|
||||||
|
\basciinema\.org/a/[0-9a-zA-Z]+
|
||||||
|
|
||||||
|
# apple
|
||||||
|
\bdeveloper\.apple\.com/[-\w?=/]+
|
||||||
|
# Apple music
|
||||||
|
\bembed\.music\.apple\.com/fr/playlist/usr-share/[-\w.]+
|
||||||
|
|
||||||
|
# appveyor api
|
||||||
|
\bci\.appveyor\.com/api/projects/status/[0-9a-z]+
|
||||||
|
# appveyor project
|
||||||
|
\bci\.appveyor\.com/project/(?:[^/\s"]*/){2}builds?/\d+/job/[0-9a-z]+
|
||||||
|
|
||||||
|
# Amazon
|
||||||
|
|
||||||
|
# Amazon
|
||||||
|
\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)
|
||||||
|
# AWS S3
|
||||||
|
\b\w*\.s3[^.]*\.amazonaws\.com/[-\w/&#%_?:=]*
|
||||||
|
# AWS execute-api
|
||||||
|
\b[0-9a-z]{10}\.execute-api\.[-0-9a-z]+\.amazonaws\.com\b
|
||||||
|
# AWS ELB
|
||||||
|
\b\w+\.[-0-9a-z]+\.elb\.amazonaws\.com\b
|
||||||
|
# AWS SNS
|
||||||
|
\bsns\.[-0-9a-z]+.amazonaws\.com/[-\w/&#%_?:=]*
|
||||||
|
# AWS VPC
|
||||||
|
vpc-\w+
|
||||||
|
|
||||||
|
# While you could try to match `http://` and `https://` by using `s?` in `https?://`, sometimes there
|
||||||
|
# YouTube url
|
||||||
|
\b(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|user/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_%]*
|
||||||
|
# YouTube music
|
||||||
|
\bmusic\.youtube\.com/youtubei/v1/browse(?:[?&]\w+=[-a-zA-Z0-9?&=_]*)
|
||||||
|
# YouTube tag
|
||||||
|
<\s*youtube\s+id=['"][-a-zA-Z0-9?_]*['"]
|
||||||
|
# YouTube image
|
||||||
|
\bimg\.youtube\.com/vi/[-a-zA-Z0-9?&=_]*
|
||||||
|
# Google Accounts
|
||||||
|
\baccounts.google.com/[-_/?=.:;+%&0-9a-zA-Z]*
|
||||||
|
# Google Analytics
|
||||||
|
\bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]*
|
||||||
|
# Google APIs
|
||||||
|
\bgoogleapis\.(?:com|dev)/[a-z]+/(?:v\d+/|)[a-z]+/[-@:./?=\w+|&]+
|
||||||
|
# Google Storage
|
||||||
|
\b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|)
|
||||||
|
# Google Calendar
|
||||||
|
\bcalendar\.google\.com/calendar(?:/u/\d+|)/embed\?src=[@./?=\w&%]+
|
||||||
|
\w+\@group\.calendar\.google\.com\b
|
||||||
|
# Google DataStudio
|
||||||
|
\bdatastudio\.google\.com/(?:(?:c/|)u/\d+/|)(?:embed/|)(?:open|reporting|datasources|s)/[-0-9a-zA-Z]+(?:/page/[-0-9a-zA-Z]+|)
|
||||||
|
# The leading `/` here is as opposed to the `\b` above
|
||||||
|
# ... a short way to match `https://` or `http://` since most urls have one of those prefixes
|
||||||
|
# Google Docs
|
||||||
|
/docs\.google\.com/[a-z]+/(?:ccc\?key=\w+|(?:u/\d+|d/(?:e/|)[0-9a-zA-Z_-]+/)?(?:edit\?[-\w=#.]*|/\?[\w=&]*|))
|
||||||
|
# Google Drive
|
||||||
|
\bdrive\.google\.com/(?:file/d/|open)[-0-9a-zA-Z_?=]*
|
||||||
|
# Google Groups
|
||||||
|
\bgroups\.google\.com/(?:(?:forum/#!|d/)(?:msg|topics?|searchin)|a)/[^/\s"]+/[-a-zA-Z0-9$]+(?:/[-a-zA-Z0-9]+)*
|
||||||
|
# Google Maps
|
||||||
|
\bmaps\.google\.com/maps\?[\w&;=]*
|
||||||
|
# Google themes
|
||||||
|
themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+.
|
||||||
|
# Google CDN
|
||||||
|
\bclients2\.google(?:usercontent|)\.com[-0-9a-zA-Z/.]*
|
||||||
|
# Goo.gl
|
||||||
|
/goo\.gl/[a-zA-Z0-9]+
|
||||||
|
# Google Chrome Store
|
||||||
|
\bchrome\.google\.com/webstore/detail/[-\w]*(?:/\w*|)
|
||||||
|
# Google Books
|
||||||
|
\bgoogle\.(?:\w{2,4})/books(?:/\w+)*\?[-\w\d=&#.]*
|
||||||
|
# Google Fonts
|
||||||
|
\bfonts\.(?:googleapis|gstatic)\.com/[-/?=:;+&0-9a-zA-Z]*
|
||||||
|
# Google Forms
|
||||||
|
\bforms\.gle/\w+
|
||||||
|
# Google Scholar
|
||||||
|
\bscholar\.google\.com/citations\?user=[A-Za-z0-9_]+
|
||||||
|
# Google Colab Research Drive
|
||||||
|
\bcolab\.research\.google\.com/drive/[-0-9a-zA-Z_?=]*
|
||||||
|
|
||||||
|
# GitHub SHAs (api)
|
||||||
|
\bapi.github\.com/repos(?:/[^/\s"]+){3}/[0-9a-f]+\b
|
||||||
|
# GitHub SHAs (markdown)
|
||||||
|
(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)
|
||||||
|
# GitHub SHAs
|
||||||
|
\bgithub\.com(?:/[^/\s"]+){2}[@#][0-9a-f]+\b
|
||||||
|
# GitHub wiki
|
||||||
|
\bgithub\.com/(?:[^/]+/){2}wiki/(?:(?:[^/]+/|)_history|[^/]+(?:/_compare|)/[0-9a-f.]{40,})\b
|
||||||
|
# githubusercontent
|
||||||
|
/[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]*
|
||||||
|
# githubassets
|
||||||
|
\bgithubassets.com/[0-9a-f]+(?:[-/\w.]+)
|
||||||
|
# gist github
|
||||||
|
\bgist\.github\.com/[^/\s"]+/[0-9a-f]+
|
||||||
|
# git.io
|
||||||
|
\bgit\.io/[0-9a-zA-Z]+
|
||||||
|
# GitHub JSON
|
||||||
|
"node_id": "[-a-zA-Z=;:/0-9+]*"
|
||||||
|
# Contributor
|
||||||
|
\[[^\]]+\]\(https://github\.com/[^/\s"]+\)
|
||||||
|
# GHSA
|
||||||
|
GHSA(?:-[0-9a-z]{4}){3}
|
||||||
|
|
||||||
|
# GitLab commit
|
||||||
|
\bgitlab\.[^/\s"]*/\S+/\S+/commit/[0-9a-f]{7,16}#[0-9a-f]{40}\b
|
||||||
|
# GitLab merge requests
|
||||||
|
\bgitlab\.[^/\s"]*/\S+/\S+/-/merge_requests/\d+/diffs#[0-9a-f]{40}\b
|
||||||
|
# GitLab uploads
|
||||||
|
\bgitlab\.[^/\s"]*/uploads/[-a-zA-Z=;:/0-9+]*
|
||||||
|
# GitLab commits
|
||||||
|
\bgitlab\.[^/\s"]*/(?:[^/\s"]+/){2}commits?/[0-9a-f]+\b
|
||||||
|
|
||||||
|
# binanace
|
||||||
|
accounts.binance.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]*
|
||||||
|
|
||||||
|
# bitbucket diff
|
||||||
|
\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}diff(?:stat|)(?:/[^/\s"]+){2}:[0-9a-f]+
|
||||||
|
# bitbucket repositories commits
|
||||||
|
\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
|
||||||
|
# bitbucket commits
|
||||||
|
\bbitbucket\.org/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
|
||||||
|
|
||||||
|
# bit.ly
|
||||||
|
\bbit\.ly/\w+
|
||||||
|
|
||||||
|
# bitrise
|
||||||
|
\bapp\.bitrise\.io/app/[0-9a-f]*/[\w.?=&]*
|
||||||
|
|
||||||
|
# bootstrapcdn.com
|
||||||
|
\bbootstrapcdn\.com/[-./\w]+
|
||||||
|
|
||||||
|
# cdn.cloudflare.com
|
||||||
|
\bcdnjs\.cloudflare\.com/[./\w]+
|
||||||
|
|
||||||
|
# circleci
|
||||||
|
\bcircleci\.com/gh(?:/[^/\s"]+){1,5}.[a-z]+\?[-0-9a-zA-Z=&]+
|
||||||
|
|
||||||
|
# gitter
|
||||||
|
\bgitter\.im(?:/[^/\s"]+){2}\?at=[0-9a-f]+
|
||||||
|
|
||||||
|
# gravatar
|
||||||
|
\bgravatar\.com/avatar/[0-9a-f]+
|
||||||
|
|
||||||
|
# ibm
|
||||||
|
[a-z.]*ibm\.com/[-_#=:%!?~.\\/\d\w]*
|
||||||
|
|
||||||
|
# imgur
|
||||||
|
\bimgur\.com/[^.]+
|
||||||
|
|
||||||
|
# Internet Archive
|
||||||
|
\barchive\.org/web/\d+/(?:[-\w.?,'/\\+&%$#_:]*)
|
||||||
|
|
||||||
|
# discord
|
||||||
|
/discord(?:app\.com|\.gg)/(?:invite/)?[a-zA-Z0-9]{7,}
|
||||||
|
|
||||||
|
# Disqus
|
||||||
|
\bdisqus\.com/[-\w/%.()!?&=_]*
|
||||||
|
|
||||||
|
# medium link
|
||||||
|
\blink\.medium\.com/[a-zA-Z0-9]+
|
||||||
|
# medium
|
||||||
|
\bmedium\.com/\@?[^/\s"]+/[-\w]+
|
||||||
|
|
||||||
|
# microsoft
|
||||||
|
\b(?:https?://|)(?:(?:download\.visualstudio|docs|msdn2?|research)\.microsoft|blogs\.msdn)\.com/[-_a-zA-Z0-9()=./%]*
|
||||||
|
# powerbi
|
||||||
|
\bapp\.powerbi\.com/reportEmbed/[^"' ]*
|
||||||
|
# vs devops
|
||||||
|
\bvisualstudio.com(?::443|)/[-\w/?=%&.]*
|
||||||
|
# microsoft store
|
||||||
|
\bmicrosoft\.com/store/apps/\w+
|
||||||
|
|
||||||
|
# mvnrepository.com
|
||||||
|
\bmvnrepository\.com/[-0-9a-z./]+
|
||||||
|
|
||||||
|
# now.sh
|
||||||
|
/[0-9a-z-.]+\.now\.sh\b
|
||||||
|
|
||||||
|
# oracle
|
||||||
|
\bdocs\.oracle\.com/[-0-9a-zA-Z./_?#&=]*
|
||||||
|
|
||||||
|
# chromatic.com
|
||||||
|
/\S+.chromatic.com\S*[")]
|
||||||
|
|
||||||
|
# codacy
|
||||||
|
\bapi\.codacy\.com/project/badge/Grade/[0-9a-f]+
|
||||||
|
|
||||||
|
# compai
|
||||||
|
\bcompai\.pub/v1/png/[0-9a-f]+
|
||||||
|
|
||||||
|
# mailgun api
|
||||||
|
\.api\.mailgun\.net/v3/domains/[0-9a-z]+\.mailgun.org/messages/[0-9a-zA-Z=@]*
|
||||||
|
# mailgun
|
||||||
|
\b[0-9a-z]+.mailgun.org
|
||||||
|
|
||||||
|
# /message-id/
|
||||||
|
/message-id/[-\w@./%]+
|
||||||
|
|
||||||
|
# Reddit
|
||||||
|
\breddit\.com/r/[/\w_]*
|
||||||
|
|
||||||
|
# requestb.in
|
||||||
|
\brequestb\.in/[0-9a-z]+
|
||||||
|
|
||||||
|
# sched
|
||||||
|
\b[a-z0-9]+\.sched\.com\b
|
||||||
|
|
||||||
|
# Slack url
|
||||||
|
slack://[a-zA-Z0-9?&=]+
|
||||||
|
# Slack
|
||||||
|
\bslack\.com/[-0-9a-zA-Z/_~?&=.]*
|
||||||
|
# Slack edge
|
||||||
|
\bslack-edge\.com/[-a-zA-Z0-9?&=%./]+
|
||||||
|
# Slack images
|
||||||
|
\bslack-imgs\.com/[-a-zA-Z0-9?&=%.]+
|
||||||
|
|
||||||
|
# shields.io
|
||||||
|
\bshields\.io/[-\w/%?=&.:+;,]*
|
||||||
|
|
||||||
|
# stackexchange -- https://stackexchange.com/feeds/sites
|
||||||
|
\b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/)
|
||||||
|
|
||||||
|
# Sentry
|
||||||
|
[0-9a-f]{32}\@o\d+\.ingest\.sentry\.io\b
|
||||||
|
|
||||||
|
# Twitter markdown
|
||||||
|
\[\@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\)
|
||||||
|
# Twitter hashtag
|
||||||
|
\btwitter\.com/hashtag/[\w?_=&]*
|
||||||
|
# Twitter status
|
||||||
|
\btwitter\.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)
|
||||||
|
# Twitter profile images
|
||||||
|
\btwimg\.com/profile_images/[_\w./]*
|
||||||
|
# Twitter media
|
||||||
|
\btwimg\.com/media/[-_\w./?=]*
|
||||||
|
# Twitter link shortened
|
||||||
|
\bt\.co/\w+
|
||||||
|
|
||||||
|
# facebook
|
||||||
|
\bfburl\.com/[0-9a-z_]+
|
||||||
|
# facebook CDN
|
||||||
|
\bfbcdn\.net/[\w/.,]*
|
||||||
|
# facebook watch
|
||||||
|
\bfb\.watch/[0-9A-Za-z]+
|
||||||
|
|
||||||
|
# dropbox
|
||||||
|
\bdropbox\.com/sh?/[^/\s"]+/[-0-9A-Za-z_.%?=&;]+
|
||||||
|
|
||||||
|
# ipfs protocol
|
||||||
|
ipfs://[0-9a-z]*
|
||||||
|
# ipfs url
|
||||||
|
/ipfs/[0-9a-z]*
|
||||||
|
|
||||||
|
# w3
|
||||||
|
\bw3\.org/[-0-9a-zA-Z/#.]+
|
||||||
|
|
||||||
|
# loom
|
||||||
|
\bloom\.com/embed/[0-9a-f]+
|
||||||
|
|
||||||
|
# regex101
|
||||||
|
\bregex101\.com/r/[^/\s"]+/\d+
|
||||||
|
|
||||||
|
# figma
|
||||||
|
\bfigma\.com/file(?:/[0-9a-zA-Z]+/)+
|
||||||
|
|
||||||
|
# freecodecamp.org
|
||||||
|
\bfreecodecamp\.org/[-\w/.]+
|
||||||
|
|
||||||
|
# image.tmdb.org
|
||||||
|
\bimage\.tmdb\.org/[/\w.]+
|
||||||
|
|
||||||
|
# mermaid
|
||||||
|
\bmermaid\.ink/img/[-\w]+|\bmermaid-js\.github\.io/mermaid-live-editor/#/edit/[-\w]+
|
||||||
|
|
||||||
|
# Wikipedia
|
||||||
|
\ben\.wikipedia\.org/wiki/[-\w%.#]+
|
||||||
|
|
||||||
|
# gitweb
|
||||||
|
[^"\s]+/gitweb/\S+;h=[0-9a-f]+
|
||||||
|
|
||||||
|
# HyperKitty lists
|
||||||
|
/archives/list/[^@/]+\@[^/\s"]*/message/[^/\s"]*/
|
||||||
|
|
||||||
|
# lists
|
||||||
|
/thread\.html/[^"\s]+
|
||||||
|
|
||||||
|
# list-management
|
||||||
|
\blist-manage\.com/subscribe(?:[?&](?:u|id)=[0-9a-f]+)+
|
||||||
|
|
||||||
|
# kubectl.kubernetes.io/last-applied-configuration
|
||||||
|
"kubectl.kubernetes.io/last-applied-configuration": ".*"
|
||||||
|
|
||||||
|
# pgp
|
||||||
|
\bgnupg\.net/pks/lookup[?&=0-9a-zA-Z]*
|
||||||
|
|
||||||
|
# Spotify
|
||||||
|
\bopen\.spotify\.com/embed/playlist/\w+
|
||||||
|
|
||||||
|
# Mastodon
|
||||||
|
\bmastodon\.[-a-z.]*/(?:media/|\@)[?&=0-9a-zA-Z_]*
|
||||||
|
|
||||||
|
# scastie
|
||||||
|
\bscastie\.scala-lang\.org/[^/]+/\w+
|
||||||
|
|
||||||
|
# images.unsplash.com
|
||||||
|
\bimages\.unsplash\.com/(?:(?:flagged|reserve)/|)[-\w./%?=%&.;]+
|
||||||
|
|
||||||
|
# pastebin
|
||||||
|
\bpastebin\.com/[\w/]+
|
||||||
|
|
||||||
|
# heroku
|
||||||
|
\b\w+\.heroku\.com/source/archive/\w+
|
||||||
|
|
||||||
|
# quip
|
||||||
|
\b\w+\.quip\.com/\w+(?:(?:#|/issues/)\w+)?
|
||||||
|
|
||||||
|
# badgen.net
|
||||||
|
\bbadgen\.net/badge/[^")\]'\s]+
|
||||||
|
|
||||||
|
# statuspage.io
|
||||||
|
\w+\.statuspage\.io\b
|
||||||
|
|
||||||
|
# media.giphy.com
|
||||||
|
\bmedia\.giphy\.com/media/[^/]+/[\w.?&=]+
|
||||||
|
|
||||||
|
# tinyurl
|
||||||
|
\btinyurl\.com/\w+
|
||||||
|
|
||||||
|
# getopts
|
||||||
|
\bgetopts\s+(?:"[^"]+"|'[^']+')
|
||||||
|
|
||||||
|
# ANSI color codes
|
||||||
|
(?:\\(?:u00|x)1b|\x1b)\[\d+(?:;\d+|)m
|
||||||
|
|
||||||
|
# URL escaped characters
|
||||||
|
\%[0-9A-F][A-F]
|
||||||
|
# IPv6
|
||||||
|
\b(?:[0-9a-fA-F]{0,4}:){3,7}[0-9a-fA-F]{0,4}\b
|
||||||
|
# c99 hex digits (not the full format, just one I've seen)
|
||||||
|
0x[0-9a-fA-F](?:\.[0-9a-fA-F]*|)[pP]
|
||||||
|
# Punycode
|
||||||
|
\bxn--[-0-9a-z]+
|
||||||
|
# sha
|
||||||
|
sha\d+:[0-9]*[a-f]{3,}[0-9a-f]*
|
||||||
|
# sha-... -- uses a fancy capture
|
||||||
|
(['"]|")[0-9a-f]{40,}\g{-1}
|
||||||
|
# hex runs
|
||||||
|
\b[0-9a-fA-F]{16,}\b
|
||||||
|
# hex in url queries
|
||||||
|
=[0-9a-fA-F]*?(?:[A-F]{3,}|[a-f]{3,})[0-9a-fA-F]*?&
|
||||||
|
# ssh
|
||||||
|
(?:ssh-\S+|-nistp256) [-a-zA-Z=;:/0-9+]{12,}
|
||||||
|
|
||||||
|
# PGP
|
||||||
|
\b(?:[0-9A-F]{4} ){9}[0-9A-F]{4}\b
|
||||||
|
# GPG keys
|
||||||
|
\b(?:[0-9A-F]{4} ){5}(?: [0-9A-F]{4}){5}\b
|
||||||
|
# Well known gpg keys
|
||||||
|
.well-known/openpgpkey/[\w./]+
|
||||||
|
|
||||||
|
# uuid:
|
||||||
|
\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
|
||||||
|
# hex digits including css/html color classes:
|
||||||
|
(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|u\d+)\b
|
||||||
|
# integrity
|
||||||
|
integrity="sha\d+-[-a-zA-Z=;:/0-9+]{40,}"
|
||||||
|
|
||||||
|
# https://www.gnu.org/software/groff/manual/groff.html
|
||||||
|
# man troff content
|
||||||
|
\\f[BCIPR]
|
||||||
|
# '
|
||||||
|
\\\(aq
|
||||||
|
|
||||||
|
# .desktop mime types
|
||||||
|
^MimeTypes?=.*$
|
||||||
|
# .desktop localized entries
|
||||||
|
^[A-Z][a-z]+\[[a-z]+\]=.*$
|
||||||
|
# Localized .desktop content
|
||||||
|
Name\[[^\]]+\]=.*
|
||||||
|
|
||||||
|
# IServiceProvider
|
||||||
|
\bI(?=(?:[A-Z][a-z]{2,})+\b)
|
||||||
|
|
||||||
|
# crypt
|
||||||
|
"\$2[ayb]\$.{56}"
|
||||||
|
|
||||||
|
# scrypt / argon
|
||||||
|
\$(?:scrypt|argon\d+[di]*)\$\S+
|
||||||
|
|
||||||
|
# Input to GitHub JSON
|
||||||
|
content: "[-a-zA-Z=;:/0-9+]*="
|
||||||
|
|
||||||
|
# Python stringprefix / binaryprefix
|
||||||
|
# Note that there's a high false positive rate, remove the `?=` and search for the regex to see if the matches seem like reasonable strings
|
||||||
|
(?<!')\b(?:B|BR|Br|F|FR|Fr|R|RB|RF|Rb|Rf|U|UR|Ur|b|bR|br|f|fR|fr|r|rB|rF|rb|rf|u|uR|ur)'(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})
|
||||||
|
|
||||||
|
# Regular expressions for (P|p)assword
|
||||||
|
\([A-Z]\|[a-z]\)[a-z]+
|
||||||
|
|
||||||
|
# JavaScript regular expressions
|
||||||
|
# javascript test regex
|
||||||
|
/.*/[gim]*\.test\(
|
||||||
|
# javascript match regex
|
||||||
|
\.match\(/[^/\s"]*/[gim]*\s*
|
||||||
|
# javascript match regex
|
||||||
|
\.match\(/\\[b].*?/[gim]*\s*\)(?:;|$)
|
||||||
|
# javascript regex
|
||||||
|
^\s*/\\[b].*/[gim]*\s*(?:\)(?:;|$)|,$)
|
||||||
|
# javascript replace regex
|
||||||
|
\.replace\(/[^/\s"]*/[gim]*\s*,
|
||||||
|
|
||||||
|
# Go regular expressions
|
||||||
|
regexp?\.MustCompile\(`[^`]*`\)
|
||||||
|
|
||||||
|
# sed regular expressions
|
||||||
|
sed 's/(?:[^/]*?[a-zA-Z]{3,}[^/]*?/){2}
|
||||||
|
|
||||||
|
# go install
|
||||||
|
go install(?:\s+[a-z]+\.[-@\w/.]+)+
|
||||||
|
|
||||||
|
# kubernetes pod status lists
|
||||||
|
# https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase
|
||||||
|
\w+(?:-\w+)+\s+\d+/\d+\s+(?:Running|Pending|Succeeded|Failed|Unknown)\s+
|
||||||
|
|
||||||
|
# kubectl - pods in CrashLoopBackOff
|
||||||
|
\w+-[0-9a-f]+-\w+\s+\d+/\d+\s+CrashLoopBackOff\s+
|
||||||
|
|
||||||
|
# kubernetes object suffix
|
||||||
|
-[0-9a-f]{10}-\w{5}\s
|
||||||
|
|
||||||
|
# posthog secrets
|
||||||
|
posthog\.init\((['"])phc_[^"',]+\g{-1},
|
||||||
|
|
||||||
|
# xcode
|
||||||
|
|
||||||
|
# xcodeproject scenes
|
||||||
|
(?:Controller|ID|id)="\w{3}-\w{2}-\w{3}"
|
||||||
|
|
||||||
|
# xcode api botches
|
||||||
|
customObjectInstantitationMethod
|
||||||
|
|
||||||
|
# font awesome classes
|
||||||
|
\.fa-[-a-z0-9]+
|
||||||
|
|
||||||
|
# Update Lorem based on your content (requires `ge` and `w` from https://github.com/jsoref/spelling; and `review` from https://github.com/check-spelling/check-spelling/wiki/Looking-for-items-locally )
|
||||||
|
# grep '^[^#].*lorem' .github/actions/spelling/patterns.txt|perl -pne 's/.*i..\?://;s/\).*//' |tr '|' "\n"|sort -f |xargs -n1 ge|perl -pne 's/^[^:]*://'|sort -u|w|sed -e 's/ .*//'|w|review -
|
||||||
|
# Warning, while `(?i)` is very neat and fancy, if you have some binary files that aren't proper unicode, you might run into:
|
||||||
|
## Operation "substitution (s///)" returns its argument for non-Unicode code point 0x1C19AE (the code point will vary).
|
||||||
|
## You could manually change `(?i)X...` to use `[Xx]...`
|
||||||
|
## or you could add the files to your `excludes` file (a version after 0.0.19 should identify the file path)
|
||||||
|
# Lorem
|
||||||
|
(?:\w|\s|[,.])*\b(?i)(?:amet|consectetur|cursus|dolor|eros|ipsum|lacus|libero|ligula|lorem|magna|neque|nulla|suscipit|tempus)\b(?:\w|\s|[,.])*
|
||||||
|
|
||||||
|
# Non-English
|
||||||
|
[a-zA-Z]*[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*
|
||||||
|
|
||||||
|
# French
|
||||||
|
# This corpus only had capital letters, but you probably want lowercase ones as well.
|
||||||
|
\b[LN]'+[a-z]{2,}\b
|
||||||
|
|
||||||
|
# latex
|
||||||
|
\\(?:n(?:ew|ormal|osub)|r(?:enew)|t(?:able(?:of|)|he|itle))(?=[a-z]+)
|
||||||
|
|
||||||
|
# the negative lookahead here is to allow catching 'templatesz' as a misspelling
|
||||||
|
# but to otherwise recognize a Windows path with \templates\foo.template or similar:
|
||||||
|
\\(?:necessary|r(?:eport|esolve[dr]?|esult)|t(?:arget|emplates?))(?![a-z])
|
||||||
|
# ignore long runs of a single character:
|
||||||
|
\b([A-Za-z])\g{-1}{3,}\b
|
||||||
|
# Note that the next example is no longer necessary if you are using
|
||||||
|
# to match a string starting with a `#`, use a character-class:
|
||||||
|
[#]backwards
|
||||||
|
# version suffix <word>v#
|
||||||
|
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
|
||||||
|
# Compiler flags (Scala)
|
||||||
|
(?:^|[\t ,>"'`=(])-J-[DPWXY](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
|
||||||
|
# Compiler flags
|
||||||
|
#(?:^|[\t ,"'`=(])-[DPWXYLlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
|
||||||
|
|
||||||
|
# Compiler flags (linker)
|
||||||
|
,-B
|
||||||
|
# curl arguments
|
||||||
|
\b(?:\\n|)curl(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*
|
||||||
|
# set arguments
|
||||||
|
\bset(?:\s+-[abefimouxE]{1,2})*\s+-[abefimouxE]{3,}(?:\s+-[abefimouxE]+)*
|
||||||
|
# tar arguments
|
||||||
|
\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+
|
||||||
|
# tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long...
|
||||||
|
\btput\s+(?:(?:-[SV]|-T\s*\w+)\s+)*\w{3,5}\b
|
||||||
|
# macOS temp folders
|
||||||
|
/var/folders/\w\w/[+\w]+/(?:T|-Caches-)/
|
||||||
117
.github/actions/spelling/excludes.txt
vendored
Normal file
117
.github/actions/spelling/excludes.txt
vendored
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes
|
||||||
|
(?:(?i)\.png$)
|
||||||
|
(?:^|/)(?i)COPYRIGHT
|
||||||
|
(?:^|/)(?i)LICEN[CS]E
|
||||||
|
(?:^|/)3rdparty/
|
||||||
|
(?:^|/)dirs$
|
||||||
|
(?:^|/)go\.mod$
|
||||||
|
(?:^|/)go\.sum$
|
||||||
|
(?:^|/)package(?:-lock|)\.json$
|
||||||
|
(?:^|/)sources(?:|\.dep)$
|
||||||
|
(?:^|/)vendor/
|
||||||
|
\.a$
|
||||||
|
\.ai$
|
||||||
|
\.avi$
|
||||||
|
\.bmp$
|
||||||
|
\.bz2$
|
||||||
|
\.cer$
|
||||||
|
\.class$
|
||||||
|
\.crl$
|
||||||
|
\.crt$
|
||||||
|
\.csr$
|
||||||
|
\.dll$
|
||||||
|
\.docx?$
|
||||||
|
\.drawio$
|
||||||
|
\.DS_Store$
|
||||||
|
\.eot$
|
||||||
|
\.eps$
|
||||||
|
\.exe$
|
||||||
|
\.gif$
|
||||||
|
\.gitattributes$
|
||||||
|
\.graffle$
|
||||||
|
\.gz$
|
||||||
|
\.icns$
|
||||||
|
\.ico$
|
||||||
|
\.jar$
|
||||||
|
\.jks$
|
||||||
|
\.jpeg$
|
||||||
|
\.jpg$
|
||||||
|
\.key$
|
||||||
|
\.lib$
|
||||||
|
\.lock$
|
||||||
|
\.map$
|
||||||
|
\.min\..
|
||||||
|
\.mod$
|
||||||
|
\.mp3$
|
||||||
|
\.mp4$
|
||||||
|
\.o$
|
||||||
|
\.ocf$
|
||||||
|
\.otf$
|
||||||
|
\.pbxproj$
|
||||||
|
\.pdf$
|
||||||
|
\.pem$
|
||||||
|
\.png$
|
||||||
|
\.psd$
|
||||||
|
\.pyc$
|
||||||
|
\.runsettings$
|
||||||
|
\.s$
|
||||||
|
\.sig$
|
||||||
|
\.so$
|
||||||
|
\.svg$
|
||||||
|
\.svgz$
|
||||||
|
\.svgz?$
|
||||||
|
\.tar$
|
||||||
|
\.tgz$
|
||||||
|
\.tiff?$
|
||||||
|
\.ttf$
|
||||||
|
\.vsdx$
|
||||||
|
\.wav$
|
||||||
|
\.webm$
|
||||||
|
\.webp$
|
||||||
|
\.woff
|
||||||
|
\.woff2?$
|
||||||
|
\.xcf$
|
||||||
|
\.xls
|
||||||
|
\.xlsx?$
|
||||||
|
\.xpm$
|
||||||
|
\.yml$
|
||||||
|
\.zip$
|
||||||
|
^\.github/actions/spelling/
|
||||||
|
^\.github/fabricbot.json$
|
||||||
|
^\.gitignore$
|
||||||
|
^\Q.git-blame-ignore-revs\E$
|
||||||
|
^\Q.github/workflows/spelling.yml\E$
|
||||||
|
^\Qdoc/reference/windows-terminal-logo.ans\E$
|
||||||
|
^\Qsamples/ConPTY/EchoCon/EchoCon/EchoCon.vcxproj.filters\E$
|
||||||
|
^\Qsrc/host/exe/Host.EXE.vcxproj.filters\E$
|
||||||
|
^\Qsrc/host/ft_host/chafa.txt\E$
|
||||||
|
^\Qsrc/tools/closetest/CloseTest.vcxproj.filters\E$
|
||||||
|
^\XamlStyler.json$
|
||||||
|
^build/config/
|
||||||
|
^consolegit2gitfilters\.json$
|
||||||
|
^dep/
|
||||||
|
^doc/reference/master-sequence-list.csv$
|
||||||
|
^doc/reference/UTF8-torture-test\.txt$
|
||||||
|
^oss/
|
||||||
|
^src/host/ft_uia/run\.bat$
|
||||||
|
^src/host/runft\.bat$
|
||||||
|
^src/host/runut\.bat$
|
||||||
|
^src/interactivity/onecore/BgfxEngine\.
|
||||||
|
^src/renderer/atlas/
|
||||||
|
^src/renderer/wddmcon/WddmConRenderer\.
|
||||||
|
^src/terminal/adapter/ut_adapter/run\.bat$
|
||||||
|
^src/terminal/parser/delfuzzpayload\.bat$
|
||||||
|
^src/terminal/parser/ft_fuzzer/run\.bat$
|
||||||
|
^src/terminal/parser/ft_fuzzer/VTCommandFuzzer\.cpp$
|
||||||
|
^src/terminal/parser/ft_fuzzwrapper/run\.bat$
|
||||||
|
^src/terminal/parser/ut_parser/Base64Test.cpp$
|
||||||
|
^src/terminal/parser/ut_parser/run\.bat$
|
||||||
|
^src/tools/integrity/packageuwp/ConsoleUWP\.appxSources$
|
||||||
|
^src/tools/lnkd/lnkd\.bat$
|
||||||
|
^src/tools/pixels/pixels\.bat$
|
||||||
|
^src/tools/texttests/fira\.txt$
|
||||||
|
^src/tools/U8U16Test/(?:fr|ru|zh)\.txt$
|
||||||
|
^src/types/ut_types/UtilsTests.cpp$
|
||||||
|
^tools/ReleaseEngineering/ServicingPipeline.ps1$
|
||||||
|
ignore$
|
||||||
|
SUMS$
|
||||||
@@ -1,16 +1,23 @@
|
|||||||
|
AAAa
|
||||||
|
AAAAA
|
||||||
|
AAAAAAAAAAAAA
|
||||||
|
AAAAAABBBBBBCCC
|
||||||
|
AAAAABBBBBBCCC
|
||||||
|
abcd
|
||||||
abcd
|
abcd
|
||||||
abcde
|
|
||||||
abcdef
|
|
||||||
ABCDEFG
|
|
||||||
ABCDEFGH
|
|
||||||
ABCDEFGHIJ
|
ABCDEFGHIJ
|
||||||
abcdefghijk
|
abcdefghijk
|
||||||
|
ABCDEFGHIJKLMNO
|
||||||
abcdefghijklmnop
|
abcdefghijklmnop
|
||||||
ABCDEFGHIJKLMNOPQRST
|
ABCDEFGHIJKLMNOPQRST
|
||||||
abcdefghijklmnopqrstuvwxyz
|
ABCG
|
||||||
ABE
|
ABE
|
||||||
|
abf
|
||||||
|
BBBBB
|
||||||
|
BBBBBBBB
|
||||||
|
BBBBBCCC
|
||||||
|
BBBBCCCCC
|
||||||
BBGGRR
|
BBGGRR
|
||||||
BBBBBBBBBBBBBBDDDD
|
|
||||||
EFG
|
EFG
|
||||||
EFGh
|
EFGh
|
||||||
QQQQQQQQQQABCDEFGHIJ
|
QQQQQQQQQQABCDEFGHIJ
|
||||||
@@ -19,7 +26,6 @@ QQQQQQQQQQABCDEFGHIJKLMNOPQRSTQQQQQQQQQQ
|
|||||||
QQQQQQQQQQABCDEFGHIJPQRSTQQQQQQQQQQ
|
QQQQQQQQQQABCDEFGHIJPQRSTQQQQQQQQQQ
|
||||||
qrstuvwxyz
|
qrstuvwxyz
|
||||||
qwerty
|
qwerty
|
||||||
QWERTYUIOP
|
|
||||||
qwertyuiopasdfg
|
qwertyuiopasdfg
|
||||||
YYYYYYYDDDDDDDDDDD
|
YYYYYYYDDDDDDDDDDD
|
||||||
ZAAZZ
|
ZAAZZ
|
||||||
@@ -31,3 +37,4 @@ ZYXWVUT
|
|||||||
ZZBBZ
|
ZZBBZ
|
||||||
ZZZBB
|
ZZZBB
|
||||||
ZZZBZ
|
ZZZBZ
|
||||||
|
ZZZZZ
|
||||||
File diff suppressed because it is too large
Load Diff
6
.github/actions/spelling/expect/web.txt
vendored
Normal file
6
.github/actions/spelling/expect/web.txt
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
WCAG
|
||||||
|
winui
|
||||||
|
appshellintegration
|
||||||
|
mdtauk
|
||||||
|
gfycat
|
||||||
|
Guake
|
||||||
62
.github/actions/spelling/line_forbidden.patterns
vendored
Normal file
62
.github/actions/spelling/line_forbidden.patterns
vendored
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
# reject `m_data` as there's a certain OS which has evil defines that break things if it's used elsewhere
|
||||||
|
# \bm_data\b
|
||||||
|
|
||||||
|
# If you have a framework that uses `it()` for testing and `fit()` for debugging a specific test,
|
||||||
|
# you might not want to check in code where you were debugging w/ `fit()`, in which case, you might want
|
||||||
|
# to use this:
|
||||||
|
#\bfit\(
|
||||||
|
|
||||||
|
# s.b. GitHub
|
||||||
|
\bGithub\b
|
||||||
|
|
||||||
|
# s.b. GitLab
|
||||||
|
\bGitlab\b
|
||||||
|
|
||||||
|
# s.b. JavaScript
|
||||||
|
\bJavascript\b
|
||||||
|
|
||||||
|
# s.b. Microsoft
|
||||||
|
\bMicroSoft\b
|
||||||
|
|
||||||
|
# s.b. another
|
||||||
|
\ban[- ]other\b
|
||||||
|
|
||||||
|
# s.b. greater than
|
||||||
|
\bgreater then\b
|
||||||
|
|
||||||
|
# s.b. into
|
||||||
|
#\sin to\s
|
||||||
|
|
||||||
|
# s.b. opt-in
|
||||||
|
\sopt in\s
|
||||||
|
|
||||||
|
# s.b. less than
|
||||||
|
\bless then\b
|
||||||
|
|
||||||
|
# s.b. otherwise
|
||||||
|
\bother[- ]wise\b
|
||||||
|
|
||||||
|
# s.b. nonexistent
|
||||||
|
\bnon existing\b
|
||||||
|
\b[Nn]o[nt][- ]existent\b
|
||||||
|
|
||||||
|
# s.b. preexisting
|
||||||
|
[Pp]re[- ]existing
|
||||||
|
|
||||||
|
# s.b. preempt
|
||||||
|
[Pp]re[- ]empt\b
|
||||||
|
|
||||||
|
# s.b. preemptively
|
||||||
|
[Pp]re[- ]emptively
|
||||||
|
|
||||||
|
# s.b. reentrancy
|
||||||
|
[Rr]e[- ]entrancy
|
||||||
|
|
||||||
|
# s.b. reentrant
|
||||||
|
[Rr]e[- ]entrant
|
||||||
|
|
||||||
|
# s.b. workaround(s)
|
||||||
|
#\bwork[- ]arounds?\b
|
||||||
|
|
||||||
|
# Reject duplicate words
|
||||||
|
\s([A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})\s\g{-1}\s
|
||||||
96
.github/actions/spelling/patterns/patterns.txt
vendored
Normal file
96
.github/actions/spelling/patterns/patterns.txt
vendored
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns
|
||||||
|
|
||||||
|
https?://\S+
|
||||||
|
[Pp]ublicKeyToken="?[0-9a-fA-F]{16}"?
|
||||||
|
(?:[{"]|UniqueIdentifier>)[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}(?:[}"]|</UniqueIdentifier)
|
||||||
|
(?:0[Xx]|\\x|U\+|#)[a-f0-9A-FGgRr]{2,}[Uu]?[Ll]{0,2}\b
|
||||||
|
microsoft/cascadia-code\@[0-9a-fA-F]{40}
|
||||||
|
\d+x\d+Logo
|
||||||
|
Scro\&ll
|
||||||
|
# selectionInput.cpp
|
||||||
|
:\\windows\\syste\b
|
||||||
|
TestUtils::VerifyExpectedString\(tb, L"[^"]+"
|
||||||
|
(?:hostSm|mach)\.ProcessString\(L"[^"]+"
|
||||||
|
\b([A-Za-z])\g{-1}{3,}\b
|
||||||
|
0x[0-9A-Za-z]+
|
||||||
|
Base64::s_(?:En|De)code\(L"[^"]+"
|
||||||
|
VERIFY_ARE_EQUAL\(L"[^"]+"
|
||||||
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\+/"
|
||||||
|
std::memory_order_[\w]+
|
||||||
|
D2DERR_SHADER_COMPILE_FAILED
|
||||||
|
TIL_FEATURE_[0-9A-Z_]+
|
||||||
|
vcvars\w*
|
||||||
|
ROY\sG\.\sBIV
|
||||||
|
!(?:(?i)ESC)!\[
|
||||||
|
!(?:(?i)CSI)!(?:\d+(?:;\d+|)m|[ABCDF])
|
||||||
|
|
||||||
|
# Python stringprefix / binaryprefix
|
||||||
|
\b(?:B|BR|Br|F|FR|Fr|R|RB|RF|Rb|Rf|U|UR|Ur|b|bR|br|f|fR|fr|r|rB|rF|rb|rf|u|uR|ur)'
|
||||||
|
|
||||||
|
# Automatically suggested patterns
|
||||||
|
# hit-count: 3831 file-count: 582
|
||||||
|
# IServiceProvider
|
||||||
|
\bI(?=(?:[A-Z][a-z]{2,})+\b)
|
||||||
|
|
||||||
|
# hit-count: 71 file-count: 35
|
||||||
|
# Compiler flags
|
||||||
|
(?:^|[\t ,"'`=(])-[D](?=[A-Z]{2,}|[A-Z][a-z])
|
||||||
|
(?:^|[\t ,"'`=(])-[X](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
|
||||||
|
|
||||||
|
# hit-count: 41 file-count: 28
|
||||||
|
# version suffix <word>v#
|
||||||
|
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
|
||||||
|
|
||||||
|
# hit-count: 20 file-count: 9
|
||||||
|
# hex runs
|
||||||
|
\b[0-9a-fA-F]{16,}\b
|
||||||
|
|
||||||
|
# hit-count: 10 file-count: 7
|
||||||
|
# uuid:
|
||||||
|
\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
|
||||||
|
|
||||||
|
# hit-count: 4 file-count: 4
|
||||||
|
# mailto urls
|
||||||
|
mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
|
||||||
|
|
||||||
|
# hit-count: 4 file-count: 1
|
||||||
|
# ANSI color codes
|
||||||
|
(?:\\(?:u00|x)1b|\x1b)\[\d+(?:;\d+|)m
|
||||||
|
|
||||||
|
# hit-count: 2 file-count: 1
|
||||||
|
# latex
|
||||||
|
\\(?:n(?:ew|ormal|osub)|r(?:enew)|t(?:able(?:of|)|he|itle))(?=[a-z]+)
|
||||||
|
|
||||||
|
# hit-count: 1 file-count: 1
|
||||||
|
# hex digits including css/html color classes:
|
||||||
|
(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|u\d+)\b
|
||||||
|
|
||||||
|
# hit-count: 1 file-count: 1
|
||||||
|
# Non-English
|
||||||
|
[a-zA-Z]*[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*
|
||||||
|
|
||||||
|
# hit-count: 1 file-count: 1
|
||||||
|
# French
|
||||||
|
# This corpus only had capital letters, but you probably want lowercase ones as well.
|
||||||
|
\b[LN]'+[a-z]{2,}\b
|
||||||
|
|
||||||
|
# acceptable duplicates
|
||||||
|
# ls directory listings
|
||||||
|
[-bcdlpsw](?:[-r][-w][-sx]){3}\s+\d+\s+(\S+)\s+\g{-1}\s+\d+\s+
|
||||||
|
# C/idl types + English ...
|
||||||
|
\s(Guid|long|LONG|that) \g{-1}\s
|
||||||
|
|
||||||
|
# javadoc / .net
|
||||||
|
(?:[\\@](?:groupname|param)|(?:public|private)(?:\s+static|\s+readonly)*)\s+(\w+)\s+\g{-1}\s
|
||||||
|
|
||||||
|
# Commit message -- Signed-off-by and friends
|
||||||
|
^\s*(?:(?:Based-on-patch|Co-authored|Helped|Mentored|Reported|Reviewed|Signed-off)-by|Thanks-to): (?:[^<]*<[^>]*>|[^<]*)\s*$
|
||||||
|
|
||||||
|
# Autogenerated revert commit message
|
||||||
|
^This reverts commit [0-9a-f]{40}\.$
|
||||||
|
|
||||||
|
# vtmode
|
||||||
|
--vtmode\s+(\w+)\s+\g{-1}\s
|
||||||
|
|
||||||
|
# ignore long runs of a single character:
|
||||||
|
\b([A-Za-z])\g{-1}{3,}\b
|
||||||
12
.github/actions/spelling/reject.txt
vendored
Normal file
12
.github/actions/spelling/reject.txt
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
^attache$
|
||||||
|
^attacher$
|
||||||
|
^attachers$
|
||||||
|
benefitting
|
||||||
|
occurences?
|
||||||
|
^dependan.*
|
||||||
|
^oer$
|
||||||
|
Sorce
|
||||||
|
^[Ss]pae.*
|
||||||
|
^untill$
|
||||||
|
^untilling$
|
||||||
|
^wether.*
|
||||||
20
.github/workflows/spelling.yml
vendored
20
.github/workflows/spelling.yml
vendored
@@ -1,20 +0,0 @@
|
|||||||
name: Spell checking
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
schedule:
|
|
||||||
# * is a special character in YAML so you have to quote this string
|
|
||||||
- cron: '15 * * * *'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Spell checking
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2.0.0
|
|
||||||
with:
|
|
||||||
fetch-depth: 5
|
|
||||||
- uses: check-spelling/check-spelling@0.0.16-alpha
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
bucket: .github/actions
|
|
||||||
project: spell-check
|
|
||||||
134
.github/workflows/spelling2.yml
vendored
Normal file
134
.github/workflows/spelling2.yml
vendored
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
# spelling.yml is blocked per https://github.com/check-spelling/check-spelling/security/advisories/GHSA-g86g-chm8-7r2p
|
||||||
|
name: Spell checking
|
||||||
|
|
||||||
|
# Comment management is handled through a secondary job, for details see:
|
||||||
|
# https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions
|
||||||
|
#
|
||||||
|
# `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment
|
||||||
|
# (in odd cases, it might actually run just to collapse a commment, but that's fairly rare)
|
||||||
|
# it needs `contents: write` in order to add a comment.
|
||||||
|
#
|
||||||
|
# `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment
|
||||||
|
# or collapse a comment (in the case where it had previously made a comment and now no longer needs to show a comment)
|
||||||
|
# it needs `pull-requests: write` in order to manipulate those comments.
|
||||||
|
|
||||||
|
# Updating pull request branches is managed via comment handling.
|
||||||
|
# For details, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-expect-list
|
||||||
|
#
|
||||||
|
# These elements work together to make it happen:
|
||||||
|
#
|
||||||
|
# `on.issue_comment`
|
||||||
|
# This event listens to comments by users asking to update the metadata.
|
||||||
|
#
|
||||||
|
# `jobs.update`
|
||||||
|
# This job runs in response to an issue_comment and will push a new commit
|
||||||
|
# to update the spelling metadata.
|
||||||
|
#
|
||||||
|
# `with.experimental_apply_changes_via_bot`
|
||||||
|
# Tells the action to support and generate messages that enable it
|
||||||
|
# to make a commit to update the spelling metadata.
|
||||||
|
#
|
||||||
|
# `with.ssh_key`
|
||||||
|
# In order to trigger workflows when the commit is made, you can provide a
|
||||||
|
# secret (typically, a write-enabled github deploy key).
|
||||||
|
#
|
||||||
|
# For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "**"
|
||||||
|
tags-ignore:
|
||||||
|
- "**"
|
||||||
|
pull_request_target:
|
||||||
|
branches:
|
||||||
|
- "**"
|
||||||
|
tags-ignore:
|
||||||
|
- "**"
|
||||||
|
types:
|
||||||
|
- 'opened'
|
||||||
|
- 'reopened'
|
||||||
|
- 'synchronize'
|
||||||
|
issue_comment:
|
||||||
|
types:
|
||||||
|
- 'created'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
spelling:
|
||||||
|
name: Spell checking
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: read
|
||||||
|
actions: read
|
||||||
|
outputs:
|
||||||
|
followup: ${{ steps.spelling.outputs.followup }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: "contains(github.event_name, 'pull_request') || github.event_name == 'push'"
|
||||||
|
concurrency:
|
||||||
|
group: spelling-${{ github.event.pull_request.number || github.ref }}
|
||||||
|
# note: If you use only_check_changed_files, you do not want cancel-in-progress
|
||||||
|
cancel-in-progress: true
|
||||||
|
steps:
|
||||||
|
- name: check-spelling
|
||||||
|
id: spelling
|
||||||
|
uses: check-spelling/check-spelling@v0.0.21
|
||||||
|
with:
|
||||||
|
suppress_push_for_open_pull_request: 1
|
||||||
|
checkout: true
|
||||||
|
check_file_names: 1
|
||||||
|
spell_check_this: check-spelling/spell-check-this@prerelease
|
||||||
|
post_comment: 0
|
||||||
|
use_magic_file: 1
|
||||||
|
extra_dictionary_limit: 10
|
||||||
|
extra_dictionaries:
|
||||||
|
cspell:software-terms/src/software-terms.txt
|
||||||
|
cspell:python/src/python/python-lib.txt
|
||||||
|
cspell:node/node.txt
|
||||||
|
cspell:cpp/src/stdlib-c.txt
|
||||||
|
cspell:cpp/src/stdlib-cpp.txt
|
||||||
|
cspell:fullstack/fullstack.txt
|
||||||
|
cspell:filetypes/filetypes.txt
|
||||||
|
cspell:html/html.txt
|
||||||
|
cspell:cpp/src/compiler-msvc.txt
|
||||||
|
cspell:python/src/common/extra.txt
|
||||||
|
cspell:powershell/powershell.txt
|
||||||
|
cspell:aws/aws.txt
|
||||||
|
cspell:cpp/src/lang-keywords.txt
|
||||||
|
cspell:npm/npm.txt
|
||||||
|
cspell:dotnet/dotnet.txt
|
||||||
|
cspell:python/src/python/python.txt
|
||||||
|
cspell:css/css.txt
|
||||||
|
cspell:cpp/src/stdlib-cmath.txt
|
||||||
|
check_extra_dictionaries: ''
|
||||||
|
|
||||||
|
comment-push:
|
||||||
|
name: Report (Push)
|
||||||
|
# If your workflow isn't running on push, you can remove this job
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: spelling
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push'
|
||||||
|
steps:
|
||||||
|
- name: comment
|
||||||
|
uses: check-spelling/check-spelling@v0.0.21
|
||||||
|
with:
|
||||||
|
checkout: true
|
||||||
|
spell_check_this: check-spelling/spell-check-this@prerelease
|
||||||
|
task: ${{ needs.spelling.outputs.followup }}
|
||||||
|
|
||||||
|
comment-pr:
|
||||||
|
name: Report (PR)
|
||||||
|
# If you workflow isn't running on pull_request*, you can remove this job
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: spelling
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request')
|
||||||
|
steps:
|
||||||
|
- name: comment
|
||||||
|
uses: check-spelling/check-spelling@v0.0.21
|
||||||
|
with:
|
||||||
|
checkout: true
|
||||||
|
spell_check_this: check-spelling/spell-check-this@prerelease
|
||||||
|
task: ${{ needs.spelling.outputs.followup }}
|
||||||
133
OpenConsole.sln
133
OpenConsole.sln
@@ -171,18 +171,19 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TerminalControl", "src\casc
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WindowsTerminal", "src\cascadia\WindowsTerminal\WindowsTerminal.vcxproj", "{CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WindowsTerminal", "src\cascadia\WindowsTerminal\WindowsTerminal.vcxproj", "{CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}"
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED} = {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}
|
|
||||||
{CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32} = {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}
|
{CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32} = {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}
|
||||||
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED} = {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12} = {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}
|
{CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12} = {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}
|
||||||
{CA5CAD1A-ABCD-429C-B551-8562EC954746} = {CA5CAD1A-ABCD-429C-B551-8562EC954746}
|
{CA5CAD1A-ABCD-429C-B551-8562EC954746} = {CA5CAD1A-ABCD-429C-B551-8562EC954746}
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE} = {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}
|
||||||
{9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B} = {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}
|
{9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B} = {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TerminalApp", "src\cascadia\TerminalApp\dll\TerminalApp.vcxproj", "{CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TerminalApp", "src\cascadia\TerminalApp\dll\TerminalApp.vcxproj", "{CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}"
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{CA5CAD1A-9A12-429C-B551-8562EC954746} = {CA5CAD1A-9A12-429C-B551-8562EC954746}
|
{CA5CAD1A-9A12-429C-B551-8562EC954746} = {CA5CAD1A-9A12-429C-B551-8562EC954746}
|
||||||
{CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32} = {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}
|
|
||||||
{CA5CAD1A-082C-4476-9F33-94B339494076} = {CA5CAD1A-082C-4476-9F33-94B339494076}
|
{CA5CAD1A-082C-4476-9F33-94B339494076} = {CA5CAD1A-082C-4476-9F33-94B339494076}
|
||||||
|
{CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32} = {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}
|
||||||
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B} = {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}
|
{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B} = {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED} = {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED} = {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
@@ -231,11 +232,18 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTests_TerminalApp", "sr
|
|||||||
{CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907} = {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}
|
{CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907} = {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TerminalAppLib", "src\cascadia\TerminalApp\TerminalAppLib.vcxproj", "{CA5CAD1A-9A12-429C-B551-8562EC954746}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommandlineArgs", "src\cascadia\CommandlineArgs\CommandlineArgs.vcxproj", "{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}"
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{CA5CAD1A-082C-4476-9F33-94B339494076} = {CA5CAD1A-082C-4476-9F33-94B339494076}
|
{CA5CAD1A-082C-4476-9F33-94B339494076} = {CA5CAD1A-082C-4476-9F33-94B339494076}
|
||||||
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED} = {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED} = {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TerminalAppLib", "src\cascadia\TerminalApp\TerminalAppLib.vcxproj", "{CA5CAD1A-9A12-429C-B551-8562EC954746}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
{CA5CAD1A-082C-4476-9F33-94B339494076} = {CA5CAD1A-082C-4476-9F33-94B339494076}
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA} = {2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}
|
||||||
{CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32} = {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}
|
{CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32} = {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}
|
||||||
|
{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED} = {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LocalTests_TerminalApp", "src\cascadia\LocalTests_TerminalApp\TerminalApp.LocalTests.vcxproj", "{CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LocalTests_TerminalApp", "src\cascadia\LocalTests_TerminalApp\TerminalApp.LocalTests.vcxproj", "{CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}"
|
||||||
@@ -341,6 +349,19 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LocalTests_SettingsModel",
|
|||||||
{CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907} = {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}
|
{CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907} = {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Terminal.Remoting.Lib", "src\cascadia\Remoting\Microsoft.Terminal.RemotingLib.vcxproj", "{43CE4CE5-0010-4B99-9569-672670D26E26}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Terminal.Remoting", "src\cascadia\Remoting\dll\Microsoft.Terminal.Remoting.vcxproj", "{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26} = {43CE4CE5-0010-4B99-9569-672670D26E26}
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTests_Remoting", "src\cascadia\UnitTests_Remoting\Remoting.UnitTests.vcxproj", "{68A10CD3-AA64-465B-AF5F-ED4E9700543C}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26} = {43CE4CE5-0010-4B99-9569-672670D26E26}
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE} = {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
AuditMode|Any CPU = AuditMode|Any CPU
|
AuditMode|Any CPU = AuditMode|Any CPU
|
||||||
@@ -1593,6 +1614,30 @@ Global
|
|||||||
{CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Release|x64.Build.0 = Release|x64
|
{CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Release|x64.Build.0 = Release|x64
|
||||||
{CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Release|x86.ActiveCfg = Release|Win32
|
{CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Release|x86.ActiveCfg = Release|Win32
|
||||||
{CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Release|x86.Build.0 = Release|Win32
|
{CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.AuditMode|DotNet_x64Test.ActiveCfg = AuditMode|Win32
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.AuditMode|DotNet_x86Test.ActiveCfg = AuditMode|Win32
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.AuditMode|x64.ActiveCfg = AuditMode|x64
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.AuditMode|x86.ActiveCfg = AuditMode|Win32
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Debug|DotNet_x64Test.ActiveCfg = Debug|Win32
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Debug|DotNet_x86Test.ActiveCfg = Debug|Win32
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Release|DotNet_x64Test.ActiveCfg = Release|Win32
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Release|DotNet_x86Test.ActiveCfg = Release|Win32
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Release|x64.Build.0 = Release|x64
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA}.Release|x86.Build.0 = Release|Win32
|
||||||
{CA5CAD1A-9A12-429C-B551-8562EC954746}.AuditMode|Any CPU.ActiveCfg = Debug|Win32
|
{CA5CAD1A-9A12-429C-B551-8562EC954746}.AuditMode|Any CPU.ActiveCfg = Debug|Win32
|
||||||
{CA5CAD1A-9A12-429C-B551-8562EC954746}.AuditMode|ARM64.ActiveCfg = Release|ARM64
|
{CA5CAD1A-9A12-429C-B551-8562EC954746}.AuditMode|ARM64.ActiveCfg = Release|ARM64
|
||||||
{CA5CAD1A-9A12-429C-B551-8562EC954746}.AuditMode|DotNet_x64Test.ActiveCfg = Debug|Win32
|
{CA5CAD1A-9A12-429C-B551-8562EC954746}.AuditMode|DotNet_x64Test.ActiveCfg = Debug|Win32
|
||||||
@@ -2137,6 +2182,84 @@ Global
|
|||||||
{CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Release|x64.Build.0 = Release|x64
|
{CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Release|x64.Build.0 = Release|x64
|
||||||
{CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Release|x86.ActiveCfg = Release|Win32
|
{CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Release|x86.ActiveCfg = Release|Win32
|
||||||
{CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Release|x86.Build.0 = Release|Win32
|
{CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|ARM64.Build.0 = AuditMode|ARM64
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|DotNet_x64Test.ActiveCfg = AuditMode|Win32
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|DotNet_x86Test.ActiveCfg = AuditMode|Win32
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|x64.ActiveCfg = Release|x64
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|x86.ActiveCfg = AuditMode|Win32
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|x86.Build.0 = AuditMode|Win32
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|DotNet_x64Test.ActiveCfg = Debug|Win32
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|DotNet_x86Test.ActiveCfg = Debug|Win32
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Release|DotNet_x64Test.ActiveCfg = Release|Win32
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Release|DotNet_x86Test.ActiveCfg = Release|Win32
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Release|x64.Build.0 = Release|x64
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.AuditMode|ARM64.Build.0 = AuditMode|ARM64
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.AuditMode|DotNet_x64Test.ActiveCfg = AuditMode|Win32
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.AuditMode|DotNet_x86Test.ActiveCfg = AuditMode|Win32
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.AuditMode|x64.ActiveCfg = Release|x64
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.AuditMode|x86.ActiveCfg = AuditMode|Win32
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.AuditMode|x86.Build.0 = AuditMode|Win32
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|DotNet_x64Test.ActiveCfg = Debug|Win32
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|DotNet_x86Test.ActiveCfg = Debug|Win32
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|DotNet_x64Test.ActiveCfg = Release|Win32
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|DotNet_x86Test.ActiveCfg = Release|Win32
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|x64.Build.0 = Release|x64
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.AuditMode|ARM64.Build.0 = AuditMode|ARM64
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.AuditMode|DotNet_x64Test.ActiveCfg = AuditMode|Win32
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.AuditMode|DotNet_x86Test.ActiveCfg = AuditMode|Win32
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.AuditMode|x64.ActiveCfg = AuditMode|x64
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.AuditMode|x86.ActiveCfg = AuditMode|Win32
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.AuditMode|x86.Build.0 = AuditMode|Win32
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|DotNet_x64Test.ActiveCfg = Debug|Win32
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|DotNet_x86Test.ActiveCfg = Debug|Win32
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|DotNet_x64Test.ActiveCfg = Release|Win32
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|DotNet_x86Test.ActiveCfg = Release|Win32
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|x64.Build.0 = Release|x64
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|x86.Build.0 = Release|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
@@ -2197,6 +2320,7 @@ Global
|
|||||||
{84848BFA-931D-42CE-9ADF-01EE54DE7890} = {59840756-302F-44DF-AA47-441A9D673202}
|
{84848BFA-931D-42CE-9ADF-01EE54DE7890} = {59840756-302F-44DF-AA47-441A9D673202}
|
||||||
{376FE273-6B84-4EB5-8B30-8DE9D21B022C} = {59840756-302F-44DF-AA47-441A9D673202}
|
{376FE273-6B84-4EB5-8B30-8DE9D21B022C} = {59840756-302F-44DF-AA47-441A9D673202}
|
||||||
{CA5CAD1A-9333-4D05-B12A-1905CBF112F9} = {BDB237B6-1D1D-400F-84CC-40A58FA59C8E}
|
{CA5CAD1A-9333-4D05-B12A-1905CBF112F9} = {BDB237B6-1D1D-400F-84CC-40A58FA59C8E}
|
||||||
|
{2658E9B0-BD84-48B7-BB5E-3D18F4DF07BA} = {59840756-302F-44DF-AA47-441A9D673202}
|
||||||
{CA5CAD1A-9A12-429C-B551-8562EC954746} = {59840756-302F-44DF-AA47-441A9D673202}
|
{CA5CAD1A-9A12-429C-B551-8562EC954746} = {59840756-302F-44DF-AA47-441A9D673202}
|
||||||
{CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506} = {BDB237B6-1D1D-400F-84CC-40A58FA59C8E}
|
{CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506} = {BDB237B6-1D1D-400F-84CC-40A58FA59C8E}
|
||||||
{48D21369-3D7B-4431-9967-24E81292CF63} = {05500DEF-2294-41E3-AF9A-24E580B82836}
|
{48D21369-3D7B-4431-9967-24E81292CF63} = {05500DEF-2294-41E3-AF9A-24E580B82836}
|
||||||
@@ -2221,6 +2345,9 @@ Global
|
|||||||
{CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907} = {59840756-302F-44DF-AA47-441A9D673202}
|
{CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907} = {59840756-302F-44DF-AA47-441A9D673202}
|
||||||
{CA5CAD1A-082C-4476-9F33-94B339494076} = {59840756-302F-44DF-AA47-441A9D673202}
|
{CA5CAD1A-082C-4476-9F33-94B339494076} = {59840756-302F-44DF-AA47-441A9D673202}
|
||||||
{CA5CAD1A-9B68-456A-B13E-C8218070DC42} = {BDB237B6-1D1D-400F-84CC-40A58FA59C8E}
|
{CA5CAD1A-9B68-456A-B13E-C8218070DC42} = {BDB237B6-1D1D-400F-84CC-40A58FA59C8E}
|
||||||
|
{43CE4CE5-0010-4B99-9569-672670D26E26} = {59840756-302F-44DF-AA47-441A9D673202}
|
||||||
|
{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE} = {59840756-302F-44DF-AA47-441A9D673202}
|
||||||
|
{68A10CD3-AA64-465B-AF5F-ED4E9700543C} = {BDB237B6-1D1D-400F-84CC-40A58FA59C8E}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {3140B1B7-C8EE-43D1-A772-D82A7061A271}
|
SolutionGuid = {3140B1B7-C8EE-43D1-A772-D82A7061A271}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ FOR %%A IN (TestHostApp.exe,te.exe,te.processhost.exe,conhost.exe,OpenConsole.ex
|
|||||||
|
|
||||||
echo %TIME%
|
echo %TIME%
|
||||||
|
|
||||||
:: kill dhandler, which is a tool designed to handle unexpected windows appearing. But since our tests are
|
:: kill dhandler, which is a tool designed to handle unexpected windows appearing. But since our tests are
|
||||||
:: expected to show UI we don't want it running.
|
:: expected to show UI we don't want it running.
|
||||||
taskkill -f -im dhandler.exe
|
taskkill -f -im dhandler.exe
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ echo %TIME%
|
|||||||
powershell -ExecutionPolicy Bypass .\InstallTestAppDependencies.ps1
|
powershell -ExecutionPolicy Bypass .\InstallTestAppDependencies.ps1
|
||||||
echo %TIME%
|
echo %TIME%
|
||||||
|
|
||||||
set testBinaryCandidates=TerminalApp.LocalTests.dll Conhost.UIA.Tests.dll
|
set testBinaryCandidates=TerminalApp.LocalTests.dll SettingsModel.LocalTests.dll Conhost.UIA.Tests.dll
|
||||||
set testBinaries=
|
set testBinaries=
|
||||||
for %%B in (%testBinaryCandidates%) do (
|
for %%B in (%testBinaryCandidates%) do (
|
||||||
if exist %%B (
|
if exist %%B (
|
||||||
@@ -103,4 +103,4 @@ copy /y *_subresults.json %HELIX_WORKITEM_UPLOAD_ROOT%
|
|||||||
|
|
||||||
type testResults.xml
|
type testResults.xml
|
||||||
|
|
||||||
echo %TIME%
|
echo %TIME%
|
||||||
|
|||||||
@@ -5,14 +5,14 @@ parameters:
|
|||||||
testSuite: ''
|
testSuite: ''
|
||||||
# If a Pipeline runs this template more than once, this parameter should be unique per build flavor to differentiate the
|
# If a Pipeline runs this template more than once, this parameter should be unique per build flavor to differentiate the
|
||||||
# the different test runs:
|
# the different test runs:
|
||||||
helixType: 'test/devtest'
|
helixType: 'test/devtest'
|
||||||
artifactName: 'drop'
|
artifactName: 'drop'
|
||||||
maxParallel: 4
|
maxParallel: 4
|
||||||
rerunPassesRequiredToAvoidFailure: 5
|
rerunPassesRequiredToAvoidFailure: 5
|
||||||
taefQuery: ''
|
taefQuery: ''
|
||||||
# if 'useBuildOutputFromBuildId' is set, we will default to using a build from this pipeline:
|
# if 'useBuildOutputFromBuildId' is set, we will default to using a build from this pipeline:
|
||||||
useBuildOutputFromPipeline: $(System.DefinitionId)
|
useBuildOutputFromPipeline: $(System.DefinitionId)
|
||||||
matrix:
|
matrix:
|
||||||
# Release_x86:
|
# Release_x86:
|
||||||
# buildPlatform: 'x86'
|
# buildPlatform: 'x86'
|
||||||
# buildConfiguration: 'release'
|
# buildConfiguration: 'release'
|
||||||
@@ -39,13 +39,13 @@ jobs:
|
|||||||
taefPath: $(Build.SourcesDirectory)\build\Helix\packages\taef.redist.wlk.10.57.200731005-develop\build\Binaries\$(buildPlatform)
|
taefPath: $(Build.SourcesDirectory)\build\Helix\packages\taef.redist.wlk.10.57.200731005-develop\build\Binaries\$(buildPlatform)
|
||||||
helixCommonArgs: '/binaryLogger:$(Build.SourcesDirectory)/${{parameters.name}}.$(buildPlatform).$(buildConfiguration).binlog /p:HelixBuild=$(Build.BuildId).$(buildPlatform).$(buildConfiguration) /p:Platform=$(buildPlatform) /p:Configuration=$(buildConfiguration) /p:HelixType=${{parameters.helixType}} /p:TestSuite=${{parameters.testSuite}} /p:ProjFilesPath=$(Build.ArtifactStagingDirectory) /p:rerunPassesRequiredToAvoidFailure=${{parameters.rerunPassesRequiredToAvoidFailure}}'
|
helixCommonArgs: '/binaryLogger:$(Build.SourcesDirectory)/${{parameters.name}}.$(buildPlatform).$(buildConfiguration).binlog /p:HelixBuild=$(Build.BuildId).$(buildPlatform).$(buildConfiguration) /p:Platform=$(buildPlatform) /p:Configuration=$(buildConfiguration) /p:HelixType=${{parameters.helixType}} /p:TestSuite=${{parameters.testSuite}} /p:ProjFilesPath=$(Build.ArtifactStagingDirectory) /p:rerunPassesRequiredToAvoidFailure=${{parameters.rerunPassesRequiredToAvoidFailure}}'
|
||||||
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- task: CmdLine@1
|
- task: CmdLine@1
|
||||||
displayName: 'Display build machine environment variables'
|
displayName: 'Display build machine environment variables'
|
||||||
inputs:
|
inputs:
|
||||||
filename: 'set'
|
filename: 'set'
|
||||||
|
|
||||||
- task: NuGetToolInstaller@0
|
- task: NuGetToolInstaller@0
|
||||||
displayName: 'Use NuGet 5.2.0'
|
displayName: 'Use NuGet 5.2.0'
|
||||||
inputs:
|
inputs:
|
||||||
@@ -59,23 +59,23 @@ jobs:
|
|||||||
nugetConfigPath: nuget.config
|
nugetConfigPath: nuget.config
|
||||||
restoreDirectory: packages
|
restoreDirectory: packages
|
||||||
|
|
||||||
- task: DownloadBuildArtifacts@0
|
- task: DownloadBuildArtifacts@0
|
||||||
condition:
|
condition:
|
||||||
and(succeeded(),eq(variables['useBuildOutputFromBuildId'],''))
|
and(succeeded(),eq(variables['useBuildOutputFromBuildId'],''))
|
||||||
inputs:
|
inputs:
|
||||||
artifactName: ${{ parameters.artifactName }}
|
artifactName: ${{ parameters.artifactName }}
|
||||||
downloadPath: '$(artifactsDir)'
|
downloadPath: '$(artifactsDir)'
|
||||||
|
|
||||||
- task: DownloadBuildArtifacts@0
|
- task: DownloadBuildArtifacts@0
|
||||||
condition:
|
condition:
|
||||||
and(succeeded(),ne(variables['useBuildOutputFromBuildId'],''))
|
and(succeeded(),ne(variables['useBuildOutputFromBuildId'],''))
|
||||||
inputs:
|
inputs:
|
||||||
buildType: specific
|
buildType: specific
|
||||||
buildVersionToDownload: specific
|
buildVersionToDownload: specific
|
||||||
project: $(System.TeamProjectId)
|
project: $(System.TeamProjectId)
|
||||||
pipeline: ${{ parameters.useBuildOutputFromPipeline }}
|
pipeline: ${{ parameters.useBuildOutputFromPipeline }}
|
||||||
buildId: $(useBuildOutputFromBuildId)
|
buildId: $(useBuildOutputFromBuildId)
|
||||||
artifactName: ${{ parameters.artifactName }}
|
artifactName: ${{ parameters.artifactName }}
|
||||||
downloadPath: '$(artifactsDir)'
|
downloadPath: '$(artifactsDir)'
|
||||||
|
|
||||||
- task: CmdLine@1
|
- task: CmdLine@1
|
||||||
@@ -90,7 +90,7 @@ jobs:
|
|||||||
targetType: filePath
|
targetType: filePath
|
||||||
filePath: build\Helix\PrepareHelixPayload.ps1
|
filePath: build\Helix\PrepareHelixPayload.ps1
|
||||||
arguments: -Platform '$(buildPlatform)' -Configuration '$(buildConfiguration)' -ArtifactName '${{ parameters.artifactName }}'
|
arguments: -Platform '$(buildPlatform)' -Configuration '$(buildConfiguration)' -ArtifactName '${{ parameters.artifactName }}'
|
||||||
|
|
||||||
- task: CmdLine@1
|
- task: CmdLine@1
|
||||||
displayName: 'Display Helix payload contents'
|
displayName: 'Display Helix payload contents'
|
||||||
inputs:
|
inputs:
|
||||||
@@ -104,7 +104,16 @@ jobs:
|
|||||||
outputProjFileName: 'RunTestsInHelix-TerminalAppLocalTests.proj'
|
outputProjFileName: 'RunTestsInHelix-TerminalAppLocalTests.proj'
|
||||||
testSuite: '${{ parameters.testSuite }}'
|
testSuite: '${{ parameters.testSuite }}'
|
||||||
taefQuery: ${{ parameters.taefQuery }}
|
taefQuery: ${{ parameters.taefQuery }}
|
||||||
|
|
||||||
|
- template: helix-createprojfile-steps.yml
|
||||||
|
parameters:
|
||||||
|
condition: and(succeeded(),ne('${{ parameters.testSuite }}','NugetTestSuite'))
|
||||||
|
testFilePath: '$(artifactsDir)\${{ parameters.artifactName }}\$(buildConfiguration)\$(buildPlatform)\Test\SettingsModel.LocalTests.dll'
|
||||||
|
outputProjFileName: 'RunTestsInHelix-SettingsModelLocalTests.proj'
|
||||||
|
testSuite: '${{ parameters.testSuite }}'
|
||||||
|
taefQuery: ${{ parameters.taefQuery }}
|
||||||
|
|
||||||
|
|
||||||
- template: helix-createprojfile-steps.yml
|
- template: helix-createprojfile-steps.yml
|
||||||
parameters:
|
parameters:
|
||||||
condition: and(succeeded(),ne('${{ parameters.testSuite }}','NugetTestSuite'))
|
condition: and(succeeded(),ne('${{ parameters.testSuite }}','NugetTestSuite'))
|
||||||
@@ -118,7 +127,7 @@ jobs:
|
|||||||
inputs:
|
inputs:
|
||||||
PathtoPublish: $(Build.ArtifactStagingDirectory)
|
PathtoPublish: $(Build.ArtifactStagingDirectory)
|
||||||
artifactName: ${{ parameters.artifactName }}
|
artifactName: ${{ parameters.artifactName }}
|
||||||
|
|
||||||
- task: DotNetCoreCLI@2
|
- task: DotNetCoreCLI@2
|
||||||
displayName: 'Run tests in Helix (open queues)'
|
displayName: 'Run tests in Helix (open queues)'
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -2,14 +2,12 @@
|
|||||||
// Licensed under the MIT license.
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "AppLogic.h"
|
|
||||||
#include "AppCommandlineArgs.h"
|
#include "AppCommandlineArgs.h"
|
||||||
#include "../types/inc/utils.hpp"
|
#include "../types/inc/utils.hpp"
|
||||||
#include <LibraryResources.h>
|
#include <LibraryResources.h>
|
||||||
|
|
||||||
using namespace winrt::TerminalApp;
|
|
||||||
using namespace winrt::Microsoft::Terminal::Settings::Model;
|
using namespace winrt::Microsoft::Terminal::Settings::Model;
|
||||||
using namespace TerminalApp;
|
using namespace CommandlineArgs;
|
||||||
|
|
||||||
// Either a ; at the start of a line, or a ; preceded by any non-\ char.
|
// Either a ; at the start of a line, or a ; preceded by any non-\ char.
|
||||||
const std::wregex AppCommandlineArgs::_commandDelimiterRegex{ LR"(^;|[^\\];)" };
|
const std::wregex AppCommandlineArgs::_commandDelimiterRegex{ LR"(^;|[^\\];)" };
|
||||||
@@ -687,7 +685,7 @@ std::optional<winrt::Microsoft::Terminal::Settings::Model::LaunchMode> AppComman
|
|||||||
// - 0 if the commandline was successfully parsed
|
// - 0 if the commandline was successfully parsed
|
||||||
int AppCommandlineArgs::ParseArgs(winrt::array_view<const winrt::hstring>& args)
|
int AppCommandlineArgs::ParseArgs(winrt::array_view<const winrt::hstring>& args)
|
||||||
{
|
{
|
||||||
auto commands = ::TerminalApp::AppCommandlineArgs::BuildCommands(args);
|
auto commands = ::CommandlineArgs::AppCommandlineArgs::BuildCommands(args);
|
||||||
|
|
||||||
for (auto& cmdBlob : commands)
|
for (auto& cmdBlob : commands)
|
||||||
{
|
{
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
// Licensed under the MIT license.
|
// Licensed under the MIT license.
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <CLI11/CLI11.hpp>
|
||||||
#include "Commandline.h"
|
#include "Commandline.h"
|
||||||
|
|
||||||
#ifdef UNIT_TESTING
|
#ifdef UNIT_TESTING
|
||||||
@@ -12,12 +13,12 @@ namespace TerminalAppLocalTests
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace TerminalApp
|
namespace CommandlineArgs
|
||||||
{
|
{
|
||||||
class AppCommandlineArgs;
|
class AppCommandlineArgs;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TerminalApp::AppCommandlineArgs final
|
class CommandlineArgs::AppCommandlineArgs final
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static constexpr std::string_view NixHelpFlag{ "-?" };
|
static constexpr std::string_view NixHelpFlag{ "-?" };
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "Commandline.h"
|
#include "Commandline.h"
|
||||||
|
|
||||||
using namespace TerminalApp;
|
using namespace CommandlineArgs;
|
||||||
|
|
||||||
size_t Commandline::Argc() const
|
size_t Commandline::Argc() const
|
||||||
{
|
{
|
||||||
@@ -23,12 +23,12 @@ namespace TerminalAppLocalTests
|
|||||||
{
|
{
|
||||||
class CommandlineTest;
|
class CommandlineTest;
|
||||||
};
|
};
|
||||||
namespace TerminalApp
|
namespace CommandlineArgs
|
||||||
{
|
{
|
||||||
class Commandline;
|
class Commandline;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TerminalApp::Commandline
|
class CommandlineArgs::Commandline
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static constexpr std::wstring_view Delimiter{ L";" };
|
static constexpr std::wstring_view Delimiter{ L";" };
|
||||||
119
src/cascadia/CommandlineArgs/CommandlineArgs.vcxproj
Normal file
119
src/cascadia/CommandlineArgs/CommandlineArgs.vcxproj
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{2658e9b0-bd84-48b7-bb5e-3d18f4df07ba}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>Microsoft.Terminal.CommandlineArgs</RootNamespace>
|
||||||
|
<ProjectName>CommandlineArgs</ProjectName>
|
||||||
|
<TargetName>CommandlineArgs</TargetName>
|
||||||
|
<WindowsTargetPlatformMinVersion>10.0.17763.0</WindowsTargetPlatformMinVersion>
|
||||||
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<OpenConsoleUniversalApp>true</OpenConsoleUniversalApp>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="..\..\..\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
|
||||||
|
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.pre.props" />
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
|
||||||
|
<ClCompile>
|
||||||
|
<!-- For CLI11: It uses dynamic_cast to cast types around, which depends
|
||||||
|
on being compiled with RTTI (/GR). -->
|
||||||
|
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
|
||||||
|
<!-- ========================= Headers ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="AppCommandlineArgs.h" />
|
||||||
|
<ClInclude Include="Commandline.h" />
|
||||||
|
<ClInclude Include="pch.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<!-- ========================= Cpp Files ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="AppCommandlineArgs.cpp" />
|
||||||
|
<ClCompile Include="Commandline.cpp" />
|
||||||
|
<ClCompile Include="pch.cpp">
|
||||||
|
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<!-- ========================= idl Files ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<!-- ========================= Misc Files ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<!-- ========================= Project References ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<!--
|
||||||
|
the packaging project won't recurse through our dependencies, you have to
|
||||||
|
make sure that if you add a cppwinrt dependency to any of these projects,
|
||||||
|
you also update all the consumers
|
||||||
|
-->
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\types\lib\types.vcxproj" />
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\WinRTUtils\WinRTUtils.vcxproj">
|
||||||
|
<Project>{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}</Project>
|
||||||
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||||
|
</ProjectReference>
|
||||||
|
<!-- For whatever reason, we can't include the TerminalControl and
|
||||||
|
TerminalSettings projects' winmds via project references. So we'll have to
|
||||||
|
manually include the winmds as References below -->
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<!-- This is a hack to get the ARM64 CI build working. See
|
||||||
|
https://github.com/Microsoft/msbuild/issues/3746 - it looks like MsBuild
|
||||||
|
just has a bug in it.-->
|
||||||
|
<ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>Warning</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<!-- Manually add references to each of our dependent winmds. Mark them as
|
||||||
|
private=false and CopyLocalSatelliteAssemblies=false, so that we don't
|
||||||
|
propagate them upwards (which can make referencing this project result in
|
||||||
|
duplicate type definitions)-->
|
||||||
|
|
||||||
|
<!-- Despite this lib only _really_ depending on the settings model, we need
|
||||||
|
to reference Connection, Control, and MUX here, because they have types that
|
||||||
|
TSM depends on, and the midl compiler will be mad if it can't find them. -->
|
||||||
|
|
||||||
|
<Reference Include="Microsoft.Terminal.TerminalConnection">
|
||||||
|
<HintPath>$(OpenConsoleCommonOutDir)TerminalConnection\Microsoft.Terminal.TerminalConnection.winmd</HintPath>
|
||||||
|
<IsWinMDFile>true</IsWinMDFile>
|
||||||
|
<Private>false</Private>
|
||||||
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Terminal.TerminalControl">
|
||||||
|
<HintPath>$(OpenConsoleCommonOutDir)TerminalControl\Microsoft.Terminal.TerminalControl.winmd</HintPath>
|
||||||
|
<IsWinMDFile>true</IsWinMDFile>
|
||||||
|
<Private>false</Private>
|
||||||
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Terminal.Settings.Model">
|
||||||
|
<HintPath>$(OpenConsoleCommonOutDir)Microsoft.Terminal.Settings.Model\Microsoft.Terminal.Settings.Model.winmd</HintPath>
|
||||||
|
<IsWinMDFile>true</IsWinMDFile>
|
||||||
|
<Private>false</Private>
|
||||||
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
||||||
|
</Reference>
|
||||||
|
</ItemGroup>
|
||||||
|
<!-- ====================== Compiler & Linker Flags ===================== -->
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
|
<AdditionalIncludeDirectories>..;%(AdditionalIncludeDirectories);</AdditionalIncludeDirectories>
|
||||||
|
<!-- Manually disable unreachable code warning, because jconcpp has a ton of that. -->
|
||||||
|
<DisableSpecificWarnings>4702;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>WindowsApp.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<!-- ========================= Globals ======================== -->
|
||||||
|
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.post.props" />
|
||||||
|
<Import Project="..\..\..\packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets" Condition="Exists('..\..\..\packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets')" />
|
||||||
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Error Condition="!Exists('$(OpenConsoleDir)\packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(OpenConsoleDir)\packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets'))" />
|
||||||
|
</Target>
|
||||||
|
<!-- <Import Project="$(SolutionDir)build\rules\CollectWildcardResources.targets" /> -->
|
||||||
|
</Project>
|
||||||
4
src/cascadia/CommandlineArgs/pch.cpp
Normal file
4
src/cascadia/CommandlineArgs/pch.cpp
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
// Copyright (c) Microsoft Corporation.
|
||||||
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
|
#include "pch.h"
|
||||||
53
src/cascadia/CommandlineArgs/pch.h
Normal file
53
src/cascadia/CommandlineArgs/pch.h
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
// Copyright (c) Microsoft Corporation.
|
||||||
|
// Licensed under the MIT license.
|
||||||
|
//
|
||||||
|
// pch.h
|
||||||
|
// Header for platform projection include files
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#define NOMCX
|
||||||
|
#define NOHELP
|
||||||
|
#define NOCOMM
|
||||||
|
|
||||||
|
// Manually include til after we include Windows.Foundation to give it winrt superpowers
|
||||||
|
#define BLOCK_TIL
|
||||||
|
#include <LibraryIncludes.h>
|
||||||
|
// This is inexplicable, but for whatever reason, cppwinrt conflicts with the
|
||||||
|
// SDK definition of this function, so the only fix is to undef it.
|
||||||
|
// from WinBase.h
|
||||||
|
// Windows::UI::Xaml::Media::Animation::IStoryboard::GetCurrentTime
|
||||||
|
#ifdef GetCurrentTime
|
||||||
|
#undef GetCurrentTime
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <wil/cppwinrt.h>
|
||||||
|
|
||||||
|
#include <unknwn.h>
|
||||||
|
|
||||||
|
#include <hstring.h>
|
||||||
|
|
||||||
|
#include <winrt/Windows.Foundation.h>
|
||||||
|
#include <winrt/Windows.Foundation.Collections.h>
|
||||||
|
// You might think "we're not doing any UI in this lib", and you'd be right.
|
||||||
|
// However, we need this for Windows.UI.Color
|
||||||
|
#include <winrt/windows.ui.h>
|
||||||
|
|
||||||
|
// Including TraceLogging essentials for the binary
|
||||||
|
#include <TraceLoggingProvider.h>
|
||||||
|
#include <winmeta.h>
|
||||||
|
TRACELOGGING_DECLARE_PROVIDER(g_hTerminalAppProvider);
|
||||||
|
#include <telemetry/ProjectTelemetry.h>
|
||||||
|
#include <TraceLoggingActivity.h>
|
||||||
|
|
||||||
|
#include <shellapi.h>
|
||||||
|
#include <shobjidl_core.h>
|
||||||
|
|
||||||
|
#include <winrt/Microsoft.Terminal.Settings.Model.h>
|
||||||
|
|
||||||
|
#include <CLI11/CLI11.hpp>
|
||||||
|
|
||||||
|
// Manually include til after we include Windows.Foundation to give it winrt superpowers
|
||||||
|
#include "til.h"
|
||||||
25
src/cascadia/Remoting/CommandlineArgs.cpp
Normal file
25
src/cascadia/Remoting/CommandlineArgs.cpp
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#include "pch.h"
|
||||||
|
|
||||||
|
#include "CommandlineArgs.h"
|
||||||
|
#include "CommandlineArgs.g.cpp"
|
||||||
|
using namespace winrt;
|
||||||
|
using namespace winrt::Microsoft::Terminal;
|
||||||
|
using namespace winrt::Windows::Foundation;
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||||
|
{
|
||||||
|
// LOAD BEARING CODE
|
||||||
|
// If you try to move this into the header, you will experience P A I N
|
||||||
|
// It must be defined after CommandlineArgs.g.cpp, otherwise the compiler
|
||||||
|
// will give you just the most impossible template errors to try and
|
||||||
|
// decipher.
|
||||||
|
void CommandlineArgs::Args(winrt::array_view<const winrt::hstring> const& value)
|
||||||
|
{
|
||||||
|
_args = { value.begin(), value.end() };
|
||||||
|
}
|
||||||
|
|
||||||
|
winrt::com_array<winrt::hstring> CommandlineArgs::Args()
|
||||||
|
{
|
||||||
|
return winrt::com_array<winrt::hstring>{ _args.begin(), _args.end() };
|
||||||
|
}
|
||||||
|
}
|
||||||
39
src/cascadia/Remoting/CommandlineArgs.h
Normal file
39
src/cascadia/Remoting/CommandlineArgs.h
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CommandlineArgs.g.h"
|
||||||
|
#include "../cascadia/inc/cppwinrt_utils.h"
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||||
|
{
|
||||||
|
struct CommandlineArgs : public CommandlineArgsT<CommandlineArgs>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CommandlineArgs() :
|
||||||
|
_args{},
|
||||||
|
_cwd{ L"" }
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
CommandlineArgs(const winrt::array_view<const winrt::hstring>& args,
|
||||||
|
winrt::hstring currentDirectory) :
|
||||||
|
_args{ args.begin(), args.end() },
|
||||||
|
_cwd{ currentDirectory }
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
winrt::hstring CurrentDirectory() { return _cwd; };
|
||||||
|
|
||||||
|
void Args(winrt::array_view<const winrt::hstring> const& value);
|
||||||
|
winrt::com_array<winrt::hstring> Args();
|
||||||
|
|
||||||
|
private:
|
||||||
|
winrt::com_array<winrt::hstring> _args;
|
||||||
|
winrt::hstring _cwd;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::Remoting::factory_implementation
|
||||||
|
{
|
||||||
|
BASIC_FACTORY(CommandlineArgs);
|
||||||
|
}
|
||||||
144
src/cascadia/Remoting/Microsoft.Terminal.RemotingLib.vcxproj
Normal file
144
src/cascadia/Remoting/Microsoft.Terminal.RemotingLib.vcxproj
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{43ce4ce5-0010-4b99-9569-672670d26e26}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<ProjectName>Microsoft.Terminal.Remoting.Lib</ProjectName>
|
||||||
|
<RootNamespace>Microsoft.Terminal.Remoting</RootNamespace>
|
||||||
|
<TargetName>Microsoft.Terminal.Remoting.Lib</TargetName>
|
||||||
|
<WindowsTargetPlatformMinVersion>10.0.17763.0</WindowsTargetPlatformMinVersion>
|
||||||
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<OpenConsoleUniversalApp>true</OpenConsoleUniversalApp>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="..\..\..\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
|
||||||
|
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.pre.props" />
|
||||||
|
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
|
||||||
|
<ClCompile>
|
||||||
|
<!-- For CLI11: It uses dynamic_cast to cast types around, which depends
|
||||||
|
on being compiled with RTTI (/GR). We need this in this project, because
|
||||||
|
we're including the CLI11 header via the CommandlineArgs project. -->
|
||||||
|
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
|
||||||
|
<!-- ========================= Headers ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="Monarch.h">
|
||||||
|
<DependentUpon>Monarch.idl</DependentUpon>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="pch.h" />
|
||||||
|
<ClInclude Include="MonarchFactory.h" />
|
||||||
|
<ClInclude Include="Peasant.h">
|
||||||
|
<DependentUpon>Peasant.idl</DependentUpon>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="WindowManager.h">
|
||||||
|
<DependentUpon>WindowManager.idl</DependentUpon>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="CommandlineArgs.h">
|
||||||
|
<DependentUpon>Peasant.idl</DependentUpon>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
<!-- ========================= Cpp Files ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="Monarch.cpp">
|
||||||
|
<DependentUpon>Monarch.idl</DependentUpon>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="pch.cpp">
|
||||||
|
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Peasant.cpp">
|
||||||
|
<DependentUpon>Peasant.idl</DependentUpon>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="WindowManager.cpp">
|
||||||
|
<DependentUpon>WindowManager.idl</DependentUpon>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="CommandlineArgs.cpp">
|
||||||
|
<DependentUpon>Peasant.idl</DependentUpon>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="$(GeneratedFilesDir)module.g.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<!-- ========================= idl Files ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<Midl Include="Monarch.idl" />
|
||||||
|
<Midl Include="Peasant.idl" />
|
||||||
|
<Midl Include="WindowManager.idl" />
|
||||||
|
</ItemGroup>
|
||||||
|
<!-- ========================= Misc Files ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<PRIResource Include="Resources\en-US\Resources.resw" />
|
||||||
|
<OCResourceDirectory Include="Resources" />
|
||||||
|
<None Include="packages.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<!-- ========================= Project References ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<!--
|
||||||
|
the packaging project won't recurse through our dependencies, you have to
|
||||||
|
make sure that if you add a cppwinrt dependency to any of these projects,
|
||||||
|
you also update all the consumers
|
||||||
|
-->
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\types\lib\types.vcxproj" />
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\WinRTUtils\WinRTUtils.vcxproj">
|
||||||
|
<Project>{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}</Project>
|
||||||
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||||
|
</ProjectReference>
|
||||||
|
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\CommandlineArgs\CommandlineArgs.vcxproj" >
|
||||||
|
<Private>true</Private>
|
||||||
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
||||||
|
<!-- Make sure to set ReferenceOutputAssembly=false, or we'll try and
|
||||||
|
MDMERGE with MUX from the CommandlineArgs output, and get duplicate type
|
||||||
|
errors everywhere. -->
|
||||||
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||||
|
|
||||||
|
<!-- This is going to turn into a disaster. We still need to reference MUX
|
||||||
|
to get mdmerge happy, but we can't roll that up without rolling up the DLL
|
||||||
|
and now we'll get duplicate types in WT.vcxproj. GAH. We'll need to have
|
||||||
|
Remoting accept a callback to say "I encountered a commandline, someone,
|
||||||
|
deal with it?", then have apphost register for that callback. So the flow
|
||||||
|
is monarch->AppHost->AppLogic -->
|
||||||
|
|
||||||
|
</ProjectReference>
|
||||||
|
<!-- For whatever reason, we can't include the TerminalControl and
|
||||||
|
TerminalSettings projects' winmds via project references. So we'll have to
|
||||||
|
manually include the winmds as References below -->
|
||||||
|
|
||||||
|
|
||||||
|
<Reference Include="Microsoft.Terminal.TerminalConnection">
|
||||||
|
<HintPath>$(OpenConsoleCommonOutDir)TerminalConnection\Microsoft.Terminal.TerminalConnection.winmd</HintPath>
|
||||||
|
<IsWinMDFile>true</IsWinMDFile>
|
||||||
|
<Private>false</Private>
|
||||||
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Terminal.TerminalControl">
|
||||||
|
<HintPath>$(OpenConsoleCommonOutDir)TerminalControl\Microsoft.Terminal.TerminalControl.winmd</HintPath>
|
||||||
|
<IsWinMDFile>true</IsWinMDFile>
|
||||||
|
<Private>false</Private>
|
||||||
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Terminal.Settings.Model">
|
||||||
|
<HintPath>$(OpenConsoleCommonOutDir)Microsoft.Terminal.Settings.Model\Microsoft.Terminal.Settings.Model.winmd</HintPath>
|
||||||
|
<IsWinMDFile>true</IsWinMDFile>
|
||||||
|
<Private>false</Private>
|
||||||
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
||||||
|
</Reference>
|
||||||
|
</ItemGroup>
|
||||||
|
<!-- ====================== Compiler & Linker Flags ===================== -->
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>WindowsApp.lib;user32.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
<Reference>
|
||||||
|
<Private>false</Private>
|
||||||
|
</Reference>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<!-- ========================= Globals ======================== -->
|
||||||
|
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.post.props" />
|
||||||
|
|
||||||
|
<Import Project="$(SolutionDir)build\rules\CollectWildcardResources.targets" />
|
||||||
|
</Project>
|
||||||
149
src/cascadia/Remoting/Monarch.cpp
Normal file
149
src/cascadia/Remoting/Monarch.cpp
Normal file
@@ -0,0 +1,149 @@
|
|||||||
|
#include "pch.h"
|
||||||
|
#include "Monarch.h"
|
||||||
|
#include "CommandlineArgs.h"
|
||||||
|
#include "../CommandlineArgs/AppCommandlineArgs.h"
|
||||||
|
|
||||||
|
#include "Monarch.g.cpp"
|
||||||
|
#include "../../types/inc/utils.hpp"
|
||||||
|
|
||||||
|
using namespace winrt;
|
||||||
|
using namespace winrt::Microsoft::Terminal;
|
||||||
|
using namespace winrt::Windows::Foundation;
|
||||||
|
using namespace ::Microsoft::Console;
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||||
|
{
|
||||||
|
Monarch::Monarch() :
|
||||||
|
_ourPID{ GetCurrentProcessId() }
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is a private constructor to be used in unit tests, where we don't
|
||||||
|
// want each Monarch to necessarily use the current PID.
|
||||||
|
Monarch::Monarch(const uint64_t testPID) :
|
||||||
|
_ourPID{ testPID }
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
Monarch::~Monarch()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t Monarch::GetPID()
|
||||||
|
{
|
||||||
|
return _ourPID;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Method Description:
|
||||||
|
// - Add the given peasant to the list of peasants we're tracking. This Peasant may have already been assigned an ID. If it hasn't, then give it an ID.
|
||||||
|
// Arguments:
|
||||||
|
// - peasant: the new Peasant to track.
|
||||||
|
// Return Value:
|
||||||
|
// - the ID assigned to the peasant.
|
||||||
|
uint64_t Monarch::AddPeasant(Remoting::IPeasant peasant)
|
||||||
|
{
|
||||||
|
// TODO:projects/5 This is terrible. There's gotta be a better way
|
||||||
|
// of finding the first opening in a non-consecutive map of int->object
|
||||||
|
auto providedID = peasant.GetID();
|
||||||
|
|
||||||
|
if (providedID == 0)
|
||||||
|
{
|
||||||
|
// Peasant doesn't currently have an ID. Assign it a new one.
|
||||||
|
peasant.AssignID(_nextPeasantID++);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Peasant already had an ID (from an older monarch). Leave that one
|
||||||
|
// be. Make sure that the next peasant's ID is higher than it.
|
||||||
|
_nextPeasantID = providedID >= _nextPeasantID ? providedID + 1 : _nextPeasantID;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto newPeasantsId = peasant.GetID();
|
||||||
|
_peasants[newPeasantsId] = peasant;
|
||||||
|
|
||||||
|
// Add an event listener to the peasant's WindowActivated event.
|
||||||
|
peasant.WindowActivated({ this, &Monarch::_peasantWindowActivated });
|
||||||
|
|
||||||
|
return newPeasantsId;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Method Description:
|
||||||
|
// - Event handler for the Peasant::WindowActivated event. Used as an
|
||||||
|
// opportunity for us to update our internal stack of the "most recent
|
||||||
|
// window".
|
||||||
|
// Arguments:
|
||||||
|
// - sender: the Peasant that raised this event. This might be out-of-proc!
|
||||||
|
// Return Value:
|
||||||
|
// - <none>
|
||||||
|
void Monarch::_peasantWindowActivated(const winrt::Windows::Foundation::IInspectable& sender,
|
||||||
|
const winrt::Windows::Foundation::IInspectable& /*args*/)
|
||||||
|
{
|
||||||
|
// TODO:projects/5 Pass the desktop and timestamp of when the window was
|
||||||
|
// activated in `args`.
|
||||||
|
|
||||||
|
if (auto peasant{ sender.try_as<Remoting::Peasant>() })
|
||||||
|
{
|
||||||
|
auto theirID = peasant.GetID();
|
||||||
|
_setMostRecentPeasant(theirID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Method Description:
|
||||||
|
// - Lookup a peasant by its ID.
|
||||||
|
// Arguments:
|
||||||
|
// - peasantID: The ID Of the peasant to find
|
||||||
|
// Return Value:
|
||||||
|
// - the peasant if it exists in our map, otherwise null
|
||||||
|
Remoting::IPeasant Monarch::_getPeasant(uint64_t peasantID)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
auto peasantSearch = _peasants.find(peasantID);
|
||||||
|
auto maybeThePeasant = peasantSearch == _peasants.end() ? nullptr : peasantSearch->second;
|
||||||
|
if (maybeThePeasant)
|
||||||
|
{
|
||||||
|
maybeThePeasant.GetPID();
|
||||||
|
}
|
||||||
|
return maybeThePeasant;
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
LOG_CAUGHT_EXCEPTION();
|
||||||
|
// Remove the peasant from the list of peasants
|
||||||
|
_peasants.erase(peasantID);
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Monarch::_setMostRecentPeasant(const uint64_t peasantID)
|
||||||
|
{
|
||||||
|
// TODO:projects/5 Use a heap/priority queue per-desktop to track which
|
||||||
|
// peasant was the most recent per-desktop. When we want to get the most
|
||||||
|
// recent of all desktops (WindowingBehavior::UseExisting), then use the
|
||||||
|
// most recent of all desktops.
|
||||||
|
_mostRecentPeasant = peasantID;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Method Description:
|
||||||
|
// - Try to handle a commandline from a new WT invocation. We might need to
|
||||||
|
// hand the commandline to an existing window, or we might need to tell
|
||||||
|
// the caller that they need to become a new window to handle it themselves.
|
||||||
|
// Arguments:
|
||||||
|
// - <none>
|
||||||
|
// Return Value:
|
||||||
|
// - <none>
|
||||||
|
bool Monarch::ProposeCommandline(const Remoting::CommandlineArgs& /*args*/)
|
||||||
|
{
|
||||||
|
// TODO:projects/5
|
||||||
|
// The branch dev/migrie/f/remote-commandlines has a more complete
|
||||||
|
// version of this function, with a naive implementation. For now, we
|
||||||
|
// always want to create a new window, so we'll just return true. This
|
||||||
|
// will tell the caller that we didn't handle the commandline, and they
|
||||||
|
// should open a new window to deal with it themselves.
|
||||||
|
|
||||||
|
CommandlineArgs::AppCommandlineArgs argParser;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
62
src/cascadia/Remoting/Monarch.h
Normal file
62
src/cascadia/Remoting/Monarch.h
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Monarch.g.h"
|
||||||
|
#include "Peasant.h"
|
||||||
|
#include "../cascadia/inc/cppwinrt_utils.h"
|
||||||
|
|
||||||
|
// {06171993-7eb1-4f3e-85f5-8bdd7386cce3}
|
||||||
|
constexpr GUID Monarch_clsid{
|
||||||
|
0x06171993,
|
||||||
|
0x7eb1,
|
||||||
|
0x4f3e,
|
||||||
|
{ 0x85, 0xf5, 0x8b, 0xdd, 0x73, 0x86, 0xcc, 0xe3 }
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class WindowingBehavior : uint64_t
|
||||||
|
{
|
||||||
|
UseNew = 0,
|
||||||
|
UseExisting = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace RemotingUnitTests
|
||||||
|
{
|
||||||
|
class RemotingTests;
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||||
|
{
|
||||||
|
struct Monarch : public MonarchT<Monarch>
|
||||||
|
{
|
||||||
|
Monarch();
|
||||||
|
~Monarch();
|
||||||
|
|
||||||
|
uint64_t GetPID();
|
||||||
|
|
||||||
|
uint64_t AddPeasant(winrt::Microsoft::Terminal::Remoting::IPeasant peasant);
|
||||||
|
|
||||||
|
bool ProposeCommandline(const winrt::Microsoft::Terminal::Remoting::CommandlineArgs& args);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Monarch(const uint64_t testPID);
|
||||||
|
uint64_t _ourPID;
|
||||||
|
|
||||||
|
uint64_t _nextPeasantID{ 1 };
|
||||||
|
uint64_t _thisPeasantID{ 0 };
|
||||||
|
uint64_t _mostRecentPeasant{ 0 };
|
||||||
|
WindowingBehavior _windowingBehavior{ WindowingBehavior::UseNew };
|
||||||
|
std::unordered_map<uint64_t, winrt::Microsoft::Terminal::Remoting::IPeasant> _peasants;
|
||||||
|
|
||||||
|
winrt::Microsoft::Terminal::Remoting::IPeasant _getPeasant(uint64_t peasantID);
|
||||||
|
void _setMostRecentPeasant(const uint64_t peasantID);
|
||||||
|
|
||||||
|
void _peasantWindowActivated(const winrt::Windows::Foundation::IInspectable& sender,
|
||||||
|
const winrt::Windows::Foundation::IInspectable& args);
|
||||||
|
|
||||||
|
friend class RemotingUnitTests::RemotingTests;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::Remoting::factory_implementation
|
||||||
|
{
|
||||||
|
BASIC_FACTORY(Monarch);
|
||||||
|
}
|
||||||
12
src/cascadia/Remoting/Monarch.idl
Normal file
12
src/cascadia/Remoting/Monarch.idl
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import "Peasant.idl";
|
||||||
|
|
||||||
|
namespace Microsoft.Terminal.Remoting
|
||||||
|
{
|
||||||
|
[default_interface] runtimeclass Monarch {
|
||||||
|
Monarch();
|
||||||
|
|
||||||
|
UInt64 GetPID();
|
||||||
|
UInt64 AddPeasant(IPeasant peasant);
|
||||||
|
Boolean ProposeCommandline(CommandlineArgs args);
|
||||||
|
};
|
||||||
|
}
|
||||||
49
src/cascadia/Remoting/MonarchFactory.h
Normal file
49
src/cascadia/Remoting/MonarchFactory.h
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
#include "pch.h"
|
||||||
|
|
||||||
|
#include "Monarch.h"
|
||||||
|
|
||||||
|
// This seems like a hack, but it works.
|
||||||
|
//
|
||||||
|
// This class factory works so that there's only ever one instance of a Monarch
|
||||||
|
// per-process. Once the first monarch is created, we'll stash it in g_weak.
|
||||||
|
// Future callers who try to instantiate a Monarch will get the one that's
|
||||||
|
// already been made.
|
||||||
|
//
|
||||||
|
// I'm sure there's a better way to do this with WRL, but I'm not familiar
|
||||||
|
// enough with WRL to know for sure.
|
||||||
|
|
||||||
|
winrt::weak_ref<winrt::Microsoft::Terminal::Remoting::implementation::Monarch> g_weak{ nullptr };
|
||||||
|
|
||||||
|
struct MonarchFactory : winrt::implements<MonarchFactory, ::IClassFactory>
|
||||||
|
{
|
||||||
|
MonarchFactory() = default;
|
||||||
|
|
||||||
|
HRESULT __stdcall CreateInstance(IUnknown* outer, GUID const& iid, void** result) noexcept
|
||||||
|
{
|
||||||
|
*result = nullptr;
|
||||||
|
if (outer)
|
||||||
|
{
|
||||||
|
return CLASS_E_NOAGGREGATION;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!g_weak)
|
||||||
|
{
|
||||||
|
// Create a new Monarch instance
|
||||||
|
auto strong = winrt::make_self<winrt::Microsoft::Terminal::Remoting::implementation::Monarch>();
|
||||||
|
|
||||||
|
g_weak = (*strong).get_weak();
|
||||||
|
return strong.as(iid, result);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// We already instantiated one Monarch, let's just return that one!
|
||||||
|
auto strong = g_weak.get();
|
||||||
|
return strong.as(iid, result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __stdcall LockServer(BOOL) noexcept
|
||||||
|
{
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
};
|
||||||
63
src/cascadia/Remoting/Peasant.cpp
Normal file
63
src/cascadia/Remoting/Peasant.cpp
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
#include "pch.h"
|
||||||
|
#include "Peasant.h"
|
||||||
|
#include "CommandlineArgs.h"
|
||||||
|
#include "Peasant.g.cpp"
|
||||||
|
#include "../../types/inc/utils.hpp"
|
||||||
|
|
||||||
|
using namespace winrt;
|
||||||
|
using namespace winrt::Microsoft::Terminal;
|
||||||
|
using namespace winrt::Windows::Foundation;
|
||||||
|
using namespace ::Microsoft::Console;
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||||
|
{
|
||||||
|
Peasant::Peasant() :
|
||||||
|
_ourPID{ GetCurrentProcessId() }
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is a private constructor to be used in unit tests, where we don't
|
||||||
|
// want each Peasant to necessarily use the current PID.
|
||||||
|
Peasant::Peasant(const uint64_t testPID) :
|
||||||
|
_ourPID{ testPID }
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Peasant::AssignID(uint64_t id)
|
||||||
|
{
|
||||||
|
_id = id;
|
||||||
|
}
|
||||||
|
uint64_t Peasant::GetID()
|
||||||
|
{
|
||||||
|
return _id;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t Peasant::GetPID()
|
||||||
|
{
|
||||||
|
return _ourPID;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Peasant::ExecuteCommandline(const Remoting::CommandlineArgs& args)
|
||||||
|
{
|
||||||
|
// If this is the first set of args we were ever told about, stash them
|
||||||
|
// away. We'll need to get at them later, when we setup the startup
|
||||||
|
// actions for the window.
|
||||||
|
if (_initialArgs == nullptr)
|
||||||
|
{
|
||||||
|
_initialArgs = args;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Raise an event with these args. The AppHost will listen for this
|
||||||
|
// event to know when to take these args and dispatch them to a
|
||||||
|
// currently-running window.
|
||||||
|
_ExecuteCommandlineRequestedHandlers(*this, args);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Remoting::CommandlineArgs Peasant::InitialArgs()
|
||||||
|
{
|
||||||
|
return _initialArgs;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
41
src/cascadia/Remoting/Peasant.h
Normal file
41
src/cascadia/Remoting/Peasant.h
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Peasant.g.h"
|
||||||
|
#include "../cascadia/inc/cppwinrt_utils.h"
|
||||||
|
|
||||||
|
namespace RemotingUnitTests
|
||||||
|
{
|
||||||
|
class RemotingTests;
|
||||||
|
};
|
||||||
|
namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||||
|
{
|
||||||
|
struct Peasant : public PeasantT<Peasant>
|
||||||
|
{
|
||||||
|
Peasant();
|
||||||
|
|
||||||
|
void AssignID(uint64_t id);
|
||||||
|
uint64_t GetID();
|
||||||
|
uint64_t GetPID();
|
||||||
|
|
||||||
|
bool ExecuteCommandline(const winrt::Microsoft::Terminal::Remoting::CommandlineArgs& args);
|
||||||
|
|
||||||
|
winrt::Microsoft::Terminal::Remoting::CommandlineArgs InitialArgs();
|
||||||
|
TYPED_EVENT(WindowActivated, winrt::Windows::Foundation::IInspectable, winrt::Windows::Foundation::IInspectable);
|
||||||
|
TYPED_EVENT(ExecuteCommandlineRequested, winrt::Windows::Foundation::IInspectable, winrt::Microsoft::Terminal::Remoting::CommandlineArgs);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Peasant(const uint64_t testPID);
|
||||||
|
uint64_t _ourPID;
|
||||||
|
|
||||||
|
uint64_t _id{ 0 };
|
||||||
|
|
||||||
|
winrt::Microsoft::Terminal::Remoting::CommandlineArgs _initialArgs{ nullptr };
|
||||||
|
|
||||||
|
friend class RemotingUnitTests::RemotingTests;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::Remoting::factory_implementation
|
||||||
|
{
|
||||||
|
BASIC_FACTORY(Peasant);
|
||||||
|
}
|
||||||
31
src/cascadia/Remoting/Peasant.idl
Normal file
31
src/cascadia/Remoting/Peasant.idl
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
|
||||||
|
namespace Microsoft.Terminal.Remoting
|
||||||
|
{
|
||||||
|
|
||||||
|
runtimeclass CommandlineArgs
|
||||||
|
{
|
||||||
|
CommandlineArgs();
|
||||||
|
CommandlineArgs(String[] args, String cwd);
|
||||||
|
|
||||||
|
String[] Args { get; set; };
|
||||||
|
String CurrentDirectory();
|
||||||
|
};
|
||||||
|
|
||||||
|
interface IPeasant
|
||||||
|
{
|
||||||
|
CommandlineArgs InitialArgs { get; };
|
||||||
|
|
||||||
|
void AssignID(UInt64 id);
|
||||||
|
UInt64 GetID();
|
||||||
|
UInt64 GetPID();
|
||||||
|
Boolean ExecuteCommandline(CommandlineArgs args);
|
||||||
|
event Windows.Foundation.TypedEventHandler<Object, Object> WindowActivated;
|
||||||
|
event Windows.Foundation.TypedEventHandler<Object, CommandlineArgs> ExecuteCommandlineRequested;
|
||||||
|
};
|
||||||
|
|
||||||
|
[default_interface] runtimeclass Peasant : IPeasant
|
||||||
|
{
|
||||||
|
Peasant();
|
||||||
|
};
|
||||||
|
}
|
||||||
120
src/cascadia/Remoting/Resources/en-US/Resources.resw
Normal file
120
src/cascadia/Remoting/Resources/en-US/Resources.resw
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
213
src/cascadia/Remoting/WindowManager.cpp
Normal file
213
src/cascadia/Remoting/WindowManager.cpp
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
#include "pch.h"
|
||||||
|
#include "WindowManager.h"
|
||||||
|
#include "MonarchFactory.h"
|
||||||
|
#include "CommandlineArgs.h"
|
||||||
|
|
||||||
|
#include "WindowManager.g.cpp"
|
||||||
|
#include "../../types/inc/utils.hpp"
|
||||||
|
|
||||||
|
using namespace winrt;
|
||||||
|
using namespace winrt::Microsoft::Terminal;
|
||||||
|
using namespace winrt::Windows::Foundation;
|
||||||
|
using namespace ::Microsoft::Console;
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||||
|
{
|
||||||
|
WindowManager::WindowManager()
|
||||||
|
{
|
||||||
|
_monarchWaitInterrupt.create();
|
||||||
|
|
||||||
|
// Register with COM as a server for the Monarch class
|
||||||
|
_registerAsMonarch();
|
||||||
|
// Instantiate an instance of the Monarch. This may or may not be in-proc!
|
||||||
|
_createMonarchAndCallbacks();
|
||||||
|
}
|
||||||
|
|
||||||
|
WindowManager::~WindowManager()
|
||||||
|
{
|
||||||
|
// IMPORTANT! Tear down the registration as soon as we exit. If we're not a
|
||||||
|
// real peasant window (the monarch passed our commandline to someone else),
|
||||||
|
// then the monarch dies, we don't want our registration becoming the active
|
||||||
|
// monarch!
|
||||||
|
CoRevokeClassObject(_registrationHostClass);
|
||||||
|
_registrationHostClass = 0;
|
||||||
|
_monarchWaitInterrupt.SetEvent();
|
||||||
|
|
||||||
|
if (_electionThread.joinable())
|
||||||
|
{
|
||||||
|
_electionThread.join();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void WindowManager::ProposeCommandline(const Remoting::CommandlineArgs& args)
|
||||||
|
{
|
||||||
|
const bool isKing = _areWeTheKing();
|
||||||
|
// If we're the king, we _definitely_ want to process the arguments, we were
|
||||||
|
// launched with them!
|
||||||
|
//
|
||||||
|
// Otherwise, the King will tell us if we should make a new window
|
||||||
|
_shouldCreateWindow = isKing ||
|
||||||
|
_monarch.ProposeCommandline(args);
|
||||||
|
|
||||||
|
if (_shouldCreateWindow)
|
||||||
|
{
|
||||||
|
// If we should create a new window, then instantiate our Peasant
|
||||||
|
// instance, and tell that peasant to handle that commandline.
|
||||||
|
_createOurPeasant();
|
||||||
|
|
||||||
|
// TODO:MG Spawn a thread to wait on the monarch, and handle the election
|
||||||
|
if (!isKing)
|
||||||
|
{
|
||||||
|
_createPeasantThread();
|
||||||
|
}
|
||||||
|
|
||||||
|
_peasant.ExecuteCommandline(args);
|
||||||
|
}
|
||||||
|
// Otherwise, we'll do _nothing_.
|
||||||
|
}
|
||||||
|
|
||||||
|
bool WindowManager::ShouldCreateWindow()
|
||||||
|
{
|
||||||
|
return _shouldCreateWindow;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WindowManager::_registerAsMonarch()
|
||||||
|
{
|
||||||
|
winrt::check_hresult(CoRegisterClassObject(Monarch_clsid,
|
||||||
|
winrt::make<::MonarchFactory>().get(),
|
||||||
|
CLSCTX_LOCAL_SERVER,
|
||||||
|
REGCLS_MULTIPLEUSE,
|
||||||
|
&_registrationHostClass));
|
||||||
|
}
|
||||||
|
|
||||||
|
void WindowManager::_createMonarch()
|
||||||
|
{
|
||||||
|
// Heads up! This only works because we're using
|
||||||
|
// "metadata-based-marshalling" for our WinRT types. THat means the OS is
|
||||||
|
// using the .winmd file we generate to figure out the proxy/stub
|
||||||
|
// definitions for our types automatically. This only works in the following
|
||||||
|
// cases:
|
||||||
|
//
|
||||||
|
// * If we're running unpackaged: the .winmd must be a sibling of the .exe
|
||||||
|
// * If we're running packaged: the .winmd must be in the package root
|
||||||
|
_monarch = create_instance<Remoting::Monarch>(Monarch_clsid,
|
||||||
|
CLSCTX_LOCAL_SERVER);
|
||||||
|
}
|
||||||
|
|
||||||
|
void WindowManager::_createMonarchAndCallbacks()
|
||||||
|
{
|
||||||
|
_createMonarch();
|
||||||
|
const auto isKing = _areWeTheKing();
|
||||||
|
if (!isKing)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Here, we're the king!
|
||||||
|
|
||||||
|
// Wait, don't. Let's just have the monarch try/catch any accesses to
|
||||||
|
// peasants. If the peasant dies, then it can't get the peasant's
|
||||||
|
// anything. In that case, _remove it_.
|
||||||
|
}
|
||||||
|
|
||||||
|
bool WindowManager::_areWeTheKing()
|
||||||
|
{
|
||||||
|
auto kingPID = _monarch.GetPID();
|
||||||
|
auto ourPID = GetCurrentProcessId();
|
||||||
|
return (ourPID == kingPID);
|
||||||
|
}
|
||||||
|
|
||||||
|
Remoting::IPeasant WindowManager::_createOurPeasant()
|
||||||
|
{
|
||||||
|
auto p = winrt::make_self<Remoting::implementation::Peasant>();
|
||||||
|
_peasant = *p;
|
||||||
|
_monarch.AddPeasant(_peasant);
|
||||||
|
|
||||||
|
return _peasant;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool WindowManager::_electionNight2020()
|
||||||
|
{
|
||||||
|
_createMonarchAndCallbacks();
|
||||||
|
|
||||||
|
// Tell the new monarch who we are. We might be that monarch!
|
||||||
|
_monarch.AddPeasant(_peasant);
|
||||||
|
|
||||||
|
if (_areWeTheKing())
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WindowManager::_createPeasantThread()
|
||||||
|
{
|
||||||
|
// If we catch an exception trying to get at the monarch ever, we can
|
||||||
|
// set the _monarchWaitInterrupt, and use that to trigger a new
|
||||||
|
// election. Though, we wouldn't be able to retry the function that
|
||||||
|
// caused the exception in the first place...
|
||||||
|
|
||||||
|
_electionThread = std::thread([this] {
|
||||||
|
_waitOnMonarchThread();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void WindowManager::_waitOnMonarchThread()
|
||||||
|
{
|
||||||
|
HANDLE waits[2];
|
||||||
|
waits[1] = _monarchWaitInterrupt.get();
|
||||||
|
|
||||||
|
bool exitRequested = false;
|
||||||
|
while (!exitRequested)
|
||||||
|
{
|
||||||
|
wil::unique_handle hMonarch{ OpenProcess(PROCESS_ALL_ACCESS,
|
||||||
|
FALSE,
|
||||||
|
static_cast<DWORD>(_monarch.GetPID())) };
|
||||||
|
// TODO:MG If we fail to open the monarch, then they don't exist
|
||||||
|
// anymore! Go straight to an election.
|
||||||
|
//
|
||||||
|
// TODO:MG At any point in all this, the current monarch might die.
|
||||||
|
// We go straight to a new election, right? Worst case, eventually,
|
||||||
|
// we'll become the new monarch.
|
||||||
|
//
|
||||||
|
// if (hMonarch.get() == nullptr)
|
||||||
|
// {
|
||||||
|
// const auto gle = GetLastError();
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
waits[0] = hMonarch.get();
|
||||||
|
auto waitResult = WaitForMultipleObjects(2, waits, FALSE, INFINITE);
|
||||||
|
|
||||||
|
switch (waitResult)
|
||||||
|
{
|
||||||
|
case WAIT_OBJECT_0 + 0: // waits[0] was signaled
|
||||||
|
// Connect to the new monarch, which might be us!
|
||||||
|
// If we become the monarch, then we'll return true and exit this thread.
|
||||||
|
exitRequested = _electionNight2020();
|
||||||
|
break;
|
||||||
|
case WAIT_OBJECT_0 + 1: // waits[1] was signaled
|
||||||
|
exitRequested = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WAIT_TIMEOUT:
|
||||||
|
printf("Wait timed out. This should be impossible.\n");
|
||||||
|
exitRequested = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Return value is invalid.
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
auto gle = GetLastError();
|
||||||
|
printf("WaitForMultipleObjects returned: %d\n", waitResult);
|
||||||
|
printf("Wait error: %d\n", gle);
|
||||||
|
ExitProcess(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Remoting::Peasant WindowManager::CurrentWindow()
|
||||||
|
{
|
||||||
|
return _peasant;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
45
src/cascadia/Remoting/WindowManager.h
Normal file
45
src/cascadia/Remoting/WindowManager.h
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "WindowManager.g.h"
|
||||||
|
#include "Peasant.h"
|
||||||
|
#include "Monarch.h"
|
||||||
|
#include "../cascadia/inc/cppwinrt_utils.h"
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||||
|
{
|
||||||
|
struct WindowManager final : public WindowManagerT<WindowManager>
|
||||||
|
{
|
||||||
|
WindowManager();
|
||||||
|
~WindowManager();
|
||||||
|
|
||||||
|
void ProposeCommandline(const winrt::Microsoft::Terminal::Remoting::CommandlineArgs& args);
|
||||||
|
bool ShouldCreateWindow();
|
||||||
|
|
||||||
|
winrt::Microsoft::Terminal::Remoting::Peasant CurrentWindow();
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool _shouldCreateWindow{ false };
|
||||||
|
DWORD _registrationHostClass{ 0 };
|
||||||
|
winrt::Microsoft::Terminal::Remoting::Monarch _monarch{ nullptr };
|
||||||
|
winrt::Microsoft::Terminal::Remoting::Peasant _peasant{ nullptr };
|
||||||
|
|
||||||
|
wil::unique_event _monarchWaitInterrupt;
|
||||||
|
|
||||||
|
std::thread _electionThread;
|
||||||
|
|
||||||
|
void _registerAsMonarch();
|
||||||
|
void _createMonarch();
|
||||||
|
void _createMonarchAndCallbacks();
|
||||||
|
bool _areWeTheKing();
|
||||||
|
winrt::Microsoft::Terminal::Remoting::IPeasant _createOurPeasant();
|
||||||
|
|
||||||
|
bool _electionNight2020();
|
||||||
|
void _createPeasantThread();
|
||||||
|
void _waitOnMonarchThread();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::Remoting::factory_implementation
|
||||||
|
{
|
||||||
|
BASIC_FACTORY(WindowManager);
|
||||||
|
}
|
||||||
13
src/cascadia/Remoting/WindowManager.idl
Normal file
13
src/cascadia/Remoting/WindowManager.idl
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import "Peasant.idl";
|
||||||
|
|
||||||
|
|
||||||
|
namespace Microsoft.Terminal.Remoting
|
||||||
|
{
|
||||||
|
[default_interface] runtimeclass WindowManager
|
||||||
|
{
|
||||||
|
WindowManager();
|
||||||
|
void ProposeCommandline(CommandlineArgs args);
|
||||||
|
Boolean ShouldCreateWindow { get; };
|
||||||
|
IPeasant CurrentWindow();
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
EXPORTS
|
||||||
|
DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE
|
||||||
|
DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{27b5aaeb-a548-44cf-9777-f8baa32af7ae}</ProjectGuid>
|
||||||
|
<ProjectName>Microsoft.Terminal.Remoting</ProjectName>
|
||||||
|
<RootNamespace>Microsoft.Terminal.Remoting</RootNamespace>
|
||||||
|
<!-- cppwinrt.build.pre.props depends on these settings: -->
|
||||||
|
<!-- build a dll, not exe (Application) -->
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<!-- sets a bunch of Windows Universal properties -->
|
||||||
|
<OpenConsoleUniversalApp>true</OpenConsoleUniversalApp>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="..\..\..\..\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
|
||||||
|
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.pre.props" />
|
||||||
|
<!-- ========================= XAML files ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<!-- DON'T PUT XAML FILES HERE! Put them in TerminalAppLib.vcxproj -->
|
||||||
|
</ItemGroup>
|
||||||
|
<!-- ========================= Headers ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<!-- Only put headers for winrt types in here. Don't put other header files
|
||||||
|
in here - put them in the lib's vcxproj instead! -->
|
||||||
|
<ClInclude Include="../Monarch.h" />
|
||||||
|
<ClInclude Include="../Peasant.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<!-- ========================= Cpp Files ======================== -->
|
||||||
|
<!-- Don't put source files in here - put them in the lib's vcxproj instead! -->
|
||||||
|
<!-- ========================= idl Files ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<!-- DON'T PUT IDL FILES HERE! Put them in the lib's vcxproj -->
|
||||||
|
</ItemGroup>
|
||||||
|
<!-- ========================= Misc Files ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<None Include="Microsoft.Terminal.Remoting.def" />
|
||||||
|
</ItemGroup>
|
||||||
|
<!-- ========================= Project References ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<!--
|
||||||
|
the packaging project won't recurse through our dependencies, you have to
|
||||||
|
make sure that if you add a cppwinrt dependency to any of these projects,
|
||||||
|
you also update all the consumers
|
||||||
|
-->
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\types\lib\types.vcxproj">
|
||||||
|
<Project>{18D09A24-8240-42D6-8CB6-236EEE820263}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<!-- Reference Microsoft.Terminal.RemotingLib here, so we can use it's winmd as
|
||||||
|
our winmd. This didn't work correctly in VS2017, you'd need to
|
||||||
|
manually reference the lib -->
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\Remoting\Microsoft.Terminal.RemotingLib.vcxproj">
|
||||||
|
<Private>true</Private>
|
||||||
|
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<ClCompile>
|
||||||
|
<AdditionalIncludeDirectories>$(OpenConsoleDir)\dep\jsoncpp\json;%(AdditionalIncludeDirectories);</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>User32.lib;WindowsApp.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<!-- TSM Lib contains a DllMain that we need to force the use of. -->
|
||||||
|
<AdditionalOptions Condition="'$(Platform)'=='Win32'">/INCLUDE:_DllMain@12</AdditionalOptions>
|
||||||
|
<AdditionalOptions Condition="'$(Platform)'!='Win32'">/INCLUDE:DllMain</AdditionalOptions>
|
||||||
|
</Link>
|
||||||
|
<Reference>
|
||||||
|
<!-- Do not propagate microsoft.ui.xaml upwards as a private dependency. -->
|
||||||
|
<Private>false</Private>
|
||||||
|
</Reference>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.post.props" />
|
||||||
|
</Project>
|
||||||
4
src/cascadia/Remoting/packages.config
Normal file
4
src/cascadia/Remoting/packages.config
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Microsoft.Windows.CppWinRT" version="2.0.201017.1" targetFramework="native" />
|
||||||
|
</packages>
|
||||||
4
src/cascadia/Remoting/pch.cpp
Normal file
4
src/cascadia/Remoting/pch.cpp
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
// Copyright (c) Microsoft Corporation.
|
||||||
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
|
#include "pch.h"
|
||||||
50
src/cascadia/Remoting/pch.h
Normal file
50
src/cascadia/Remoting/pch.h
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
// Copyright (c) Microsoft Corporation.
|
||||||
|
// Licensed under the MIT license.
|
||||||
|
//
|
||||||
|
// pch.h
|
||||||
|
// Header for platform projection include files
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#define NOMCX
|
||||||
|
#define NOHELP
|
||||||
|
#define NOCOMM
|
||||||
|
|
||||||
|
// Manually include til after we include Windows.Foundation to give it winrt superpowers
|
||||||
|
#define BLOCK_TIL
|
||||||
|
#include <LibraryIncludes.h>
|
||||||
|
// This is inexplicable, but for whatever reason, cppwinrt conflicts with the
|
||||||
|
// SDK definition of this function, so the only fix is to undef it.
|
||||||
|
// from WinBase.h
|
||||||
|
// Windows::UI::Xaml::Media::Animation::IStoryboard::GetCurrentTime
|
||||||
|
#ifdef GetCurrentTime
|
||||||
|
#undef GetCurrentTime
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <wil/cppwinrt.h>
|
||||||
|
|
||||||
|
#include <unknwn.h>
|
||||||
|
|
||||||
|
#include <hstring.h>
|
||||||
|
|
||||||
|
#include <winrt/Windows.ApplicationModel.h>
|
||||||
|
#include <winrt/Windows.Foundation.h>
|
||||||
|
#include <winrt/Windows.Foundation.Collections.h>
|
||||||
|
|
||||||
|
#include <winrt/Windows.System.h>
|
||||||
|
|
||||||
|
// Including TraceLogging essentials for the binary
|
||||||
|
#include <TraceLoggingProvider.h>
|
||||||
|
#include <winmeta.h>
|
||||||
|
TRACELOGGING_DECLARE_PROVIDER(g_hSettingsModelProvider);
|
||||||
|
#include <telemetry/ProjectTelemetry.h>
|
||||||
|
#include <TraceLoggingActivity.h>
|
||||||
|
|
||||||
|
#include <shellapi.h>
|
||||||
|
|
||||||
|
#include <winrt/Microsoft.Terminal.Settings.Model.h>
|
||||||
|
|
||||||
|
// Manually include til after we include Windows.Foundation to give it winrt superpowers
|
||||||
|
#include "til.h"
|
||||||
@@ -17,7 +17,6 @@ using namespace winrt::Microsoft::Terminal;
|
|||||||
using namespace winrt::Microsoft::Terminal::Settings::Model;
|
using namespace winrt::Microsoft::Terminal::Settings::Model;
|
||||||
using namespace winrt::Microsoft::Terminal::TerminalControl;
|
using namespace winrt::Microsoft::Terminal::TerminalControl;
|
||||||
using namespace winrt::Microsoft::Terminal::TerminalConnection;
|
using namespace winrt::Microsoft::Terminal::TerminalConnection;
|
||||||
using namespace ::TerminalApp;
|
|
||||||
|
|
||||||
namespace winrt
|
namespace winrt
|
||||||
{
|
{
|
||||||
@@ -453,7 +452,7 @@ namespace winrt::TerminalApp::implementation
|
|||||||
if (_startupActions.Size() != 0)
|
if (_startupActions.Size() != 0)
|
||||||
{
|
{
|
||||||
actionArgs.Handled(true);
|
actionArgs.Handled(true);
|
||||||
_ProcessStartupActions(actions, false);
|
ProcessStartupActions(actions, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ using namespace winrt::Windows::System;
|
|||||||
using namespace winrt::Microsoft::Terminal;
|
using namespace winrt::Microsoft::Terminal;
|
||||||
using namespace winrt::Microsoft::Terminal::TerminalControl;
|
using namespace winrt::Microsoft::Terminal::TerminalControl;
|
||||||
using namespace winrt::Microsoft::Terminal::Settings::Model;
|
using namespace winrt::Microsoft::Terminal::Settings::Model;
|
||||||
using namespace ::TerminalApp;
|
using namespace ::CommandlineArgs;
|
||||||
|
|
||||||
namespace winrt
|
namespace winrt
|
||||||
{
|
{
|
||||||
@@ -1111,6 +1111,19 @@ namespace winrt::TerminalApp::implementation
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t AppLogic::ExecuteCommandline(array_view<const winrt::hstring> args)
|
||||||
|
{
|
||||||
|
::CommandlineArgs::AppCommandlineArgs appArgs;
|
||||||
|
auto result = appArgs.ParseArgs(args);
|
||||||
|
if (result == 0)
|
||||||
|
{
|
||||||
|
auto actions = winrt::single_threaded_vector<ActionAndArgs>(std::move(appArgs.GetStartupActions()));
|
||||||
|
_root->ProcessStartupActions(actions, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result; // TODO:MG does a return value make sense
|
||||||
|
}
|
||||||
|
|
||||||
// Method Description:
|
// Method Description:
|
||||||
// - If there were any errors parsing the commandline that was used to
|
// - If there were any errors parsing the commandline that was used to
|
||||||
// initialize the terminal, this will return a string containing that
|
// initialize the terminal, this will return a string containing that
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ namespace winrt::TerminalApp::implementation
|
|||||||
[[nodiscard]] Microsoft::Terminal::Settings::Model::CascadiaSettings GetSettings() const noexcept;
|
[[nodiscard]] Microsoft::Terminal::Settings::Model::CascadiaSettings GetSettings() const noexcept;
|
||||||
|
|
||||||
int32_t SetStartupCommandline(array_view<const winrt::hstring> actions);
|
int32_t SetStartupCommandline(array_view<const winrt::hstring> actions);
|
||||||
|
int32_t ExecuteCommandline(array_view<const winrt::hstring> actions);
|
||||||
winrt::hstring ParseCommandlineMessage();
|
winrt::hstring ParseCommandlineMessage();
|
||||||
bool ShouldExitEarly();
|
bool ShouldExitEarly();
|
||||||
|
|
||||||
@@ -84,7 +85,7 @@ namespace winrt::TerminalApp::implementation
|
|||||||
|
|
||||||
std::atomic<bool> _settingsReloadQueued{ false };
|
std::atomic<bool> _settingsReloadQueued{ false };
|
||||||
|
|
||||||
::TerminalApp::AppCommandlineArgs _appArgs;
|
::CommandlineArgs::AppCommandlineArgs _appArgs;
|
||||||
int _ParseArgs(winrt::array_view<const hstring>& args);
|
int _ParseArgs(winrt::array_view<const hstring>& args);
|
||||||
|
|
||||||
void _ShowLoadErrorsDialog(const winrt::hstring& titleKey, const winrt::hstring& contentKey, HRESULT settingsLoadedResult);
|
void _ShowLoadErrorsDialog(const winrt::hstring& titleKey, const winrt::hstring& contentKey, HRESULT settingsLoadedResult);
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ namespace TerminalApp
|
|||||||
Boolean IsElevated();
|
Boolean IsElevated();
|
||||||
|
|
||||||
Int32 SetStartupCommandline(String[] commands);
|
Int32 SetStartupCommandline(String[] commands);
|
||||||
|
Int32 ExecuteCommandline(String[] commands);
|
||||||
String ParseCommandlineMessage { get; };
|
String ParseCommandlineMessage { get; };
|
||||||
Boolean ShouldExitEarly { get; };
|
Boolean ShouldExitEarly { get; };
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
#include "FilteredCommand.h"
|
#include "FilteredCommand.h"
|
||||||
#include "CommandPalette.g.h"
|
#include "CommandPalette.g.h"
|
||||||
#include "AppCommandlineArgs.h"
|
#include "../CommandlineArgs/AppCommandlineArgs.h"
|
||||||
#include "../../cascadia/inc/cppwinrt_utils.h"
|
#include "../../cascadia/inc/cppwinrt_utils.h"
|
||||||
|
|
||||||
// fwdecl unittest classes
|
// fwdecl unittest classes
|
||||||
@@ -130,7 +130,7 @@ namespace winrt::TerminalApp::implementation
|
|||||||
|
|
||||||
static constexpr int CommandLineHistoryLength = 10;
|
static constexpr int CommandLineHistoryLength = 10;
|
||||||
Windows::Foundation::Collections::IVector<winrt::TerminalApp::FilteredCommand> _commandLineHistory{ nullptr };
|
Windows::Foundation::Collections::IVector<winrt::TerminalApp::FilteredCommand> _commandLineHistory{ nullptr };
|
||||||
::TerminalApp::AppCommandlineArgs _appArgs;
|
::CommandlineArgs::AppCommandlineArgs _appArgs;
|
||||||
|
|
||||||
friend class TerminalAppLocalTests::TabTests;
|
friend class TerminalAppLocalTests::TabTests;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ using namespace winrt::Microsoft::Terminal::Settings::Model;
|
|||||||
using namespace winrt::Microsoft::Terminal::TerminalControl;
|
using namespace winrt::Microsoft::Terminal::TerminalControl;
|
||||||
using namespace winrt::Microsoft::Terminal::TerminalConnection;
|
using namespace winrt::Microsoft::Terminal::TerminalConnection;
|
||||||
using namespace winrt::TerminalApp;
|
using namespace winrt::TerminalApp;
|
||||||
using namespace TerminalApp;
|
|
||||||
|
|
||||||
static const int PaneBorderSize = 2;
|
static const int PaneBorderSize = 2;
|
||||||
static const int CombinedPaneBorderSize = 2 * PaneBorderSize;
|
static const int CombinedPaneBorderSize = 2 * PaneBorderSize;
|
||||||
|
|||||||
@@ -25,7 +25,8 @@
|
|||||||
|
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<!-- For CLI11: It uses dynamic_cast to cast types around, which depends
|
<!-- For CLI11: It uses dynamic_cast to cast types around, which depends
|
||||||
on being compiled with RTTI (/GR). -->
|
on being compiled with RTTI (/GR). We need this in this project, because
|
||||||
|
we're including the CLI11 header via the CommandlineArgs project. -->
|
||||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
@@ -71,8 +72,6 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="ActionPaletteItem.h" />
|
<ClInclude Include="ActionPaletteItem.h" />
|
||||||
<ClInclude Include="App.base.h" />
|
<ClInclude Include="App.base.h" />
|
||||||
<ClInclude Include="AppCommandlineArgs.h" />
|
|
||||||
<ClInclude Include="Commandline.h" />
|
|
||||||
<ClInclude Include="CommandLinePaletteItem.h" />
|
<ClInclude Include="CommandLinePaletteItem.h" />
|
||||||
<ClInclude Include="Jumplist.h" />
|
<ClInclude Include="Jumplist.h" />
|
||||||
<ClInclude Include="MinMaxCloseControl.h">
|
<ClInclude Include="MinMaxCloseControl.h">
|
||||||
@@ -144,8 +143,6 @@
|
|||||||
<ClCompile Include="ActionPaletteItem.cpp" />
|
<ClCompile Include="ActionPaletteItem.cpp" />
|
||||||
<ClCompile Include="CommandLinePaletteItem.cpp" />
|
<ClCompile Include="CommandLinePaletteItem.cpp" />
|
||||||
<ClCompile Include="init.cpp" />
|
<ClCompile Include="init.cpp" />
|
||||||
<ClCompile Include="AppCommandlineArgs.cpp" />
|
|
||||||
<ClCompile Include="Commandline.cpp" />
|
|
||||||
<ClCompile Include="Jumplist.cpp" />
|
<ClCompile Include="Jumplist.cpp" />
|
||||||
<ClCompile Include="MinMaxCloseControl.cpp">
|
<ClCompile Include="MinMaxCloseControl.cpp">
|
||||||
<DependentUpon>MinMaxCloseControl.xaml</DependentUpon>
|
<DependentUpon>MinMaxCloseControl.xaml</DependentUpon>
|
||||||
@@ -288,6 +285,14 @@
|
|||||||
you also update all the consumers
|
you also update all the consumers
|
||||||
-->
|
-->
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\types\lib\types.vcxproj" />
|
<ProjectReference Include="$(OpenConsoleDir)src\types\lib\types.vcxproj" />
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\CommandlineArgs\CommandlineArgs.vcxproj" >
|
||||||
|
<Private>true</Private>
|
||||||
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
||||||
|
<!-- Make sure to set ReferenceOutputAssembly=false, or we'll try and
|
||||||
|
MDMERGE with MUX from the CommandlineArgs output, and get duplicate type
|
||||||
|
errors everywhere. -->
|
||||||
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\WinRTUtils\WinRTUtils.vcxproj">
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\WinRTUtils\WinRTUtils.vcxproj">
|
||||||
<Project>{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}</Project>
|
<Project>{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}</Project>
|
||||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||||
|
|||||||
@@ -331,7 +331,7 @@ namespace winrt::TerminalApp::implementation
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_ProcessStartupActions(_startupActions, true);
|
ProcessStartupActions(_startupActions, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -347,8 +347,8 @@ namespace winrt::TerminalApp::implementation
|
|||||||
// should fire an Initialized event.
|
// should fire an Initialized event.
|
||||||
// Return Value:
|
// Return Value:
|
||||||
// - <none>
|
// - <none>
|
||||||
winrt::fire_and_forget TerminalPage::_ProcessStartupActions(Windows::Foundation::Collections::IVector<ActionAndArgs> actions,
|
winrt::fire_and_forget TerminalPage::ProcessStartupActions(Windows::Foundation::Collections::IVector<ActionAndArgs> actions,
|
||||||
const bool initial)
|
const bool initial)
|
||||||
{
|
{
|
||||||
// If there are no actions left, do nothing.
|
// If there are no actions left, do nothing.
|
||||||
if (actions.Size() == 0)
|
if (actions.Size() == 0)
|
||||||
@@ -2698,7 +2698,7 @@ namespace winrt::TerminalApp::implementation
|
|||||||
// - an empty list if we failed to parse, otherwise a list of actions to execute.
|
// - an empty list if we failed to parse, otherwise a list of actions to execute.
|
||||||
std::vector<ActionAndArgs> TerminalPage::ConvertExecuteCommandlineToActions(const ExecuteCommandlineArgs& args)
|
std::vector<ActionAndArgs> TerminalPage::ConvertExecuteCommandlineToActions(const ExecuteCommandlineArgs& args)
|
||||||
{
|
{
|
||||||
::TerminalApp::AppCommandlineArgs appArgs;
|
::CommandlineArgs::AppCommandlineArgs appArgs;
|
||||||
if (appArgs.ParseArgs(args) == 0)
|
if (appArgs.ParseArgs(args) == 0)
|
||||||
{
|
{
|
||||||
return appArgs.GetStartupActions();
|
return appArgs.GetStartupActions();
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#include <winrt/Microsoft.Terminal.TerminalControl.h>
|
#include <winrt/Microsoft.Terminal.TerminalControl.h>
|
||||||
|
|
||||||
#include "AppCommandlineArgs.h"
|
#include "../CommandlineArgs/AppCommandlineArgs.h"
|
||||||
|
|
||||||
static constexpr uint32_t DefaultRowsToScroll{ 3 };
|
static constexpr uint32_t DefaultRowsToScroll{ 3 };
|
||||||
static constexpr std::wstring_view TabletInputServiceKey{ L"TabletInputService" };
|
static constexpr std::wstring_view TabletInputServiceKey{ L"TabletInputService" };
|
||||||
@@ -81,6 +81,8 @@ namespace winrt::TerminalApp::implementation
|
|||||||
void ShowKeyboardServiceWarning();
|
void ShowKeyboardServiceWarning();
|
||||||
winrt::hstring KeyboardServiceDisabledText();
|
winrt::hstring KeyboardServiceDisabledText();
|
||||||
|
|
||||||
|
winrt::fire_and_forget ProcessStartupActions(Windows::Foundation::Collections::IVector<Microsoft::Terminal::Settings::Model::ActionAndArgs> actions, const bool initial);
|
||||||
|
|
||||||
// -------------------------------- WinRT Events ---------------------------------
|
// -------------------------------- WinRT Events ---------------------------------
|
||||||
DECLARE_EVENT_WITH_TYPED_EVENT_HANDLER(TitleChanged, _titleChangeHandlers, winrt::Windows::Foundation::IInspectable, winrt::hstring);
|
DECLARE_EVENT_WITH_TYPED_EVENT_HANDLER(TitleChanged, _titleChangeHandlers, winrt::Windows::Foundation::IInspectable, winrt::hstring);
|
||||||
DECLARE_EVENT_WITH_TYPED_EVENT_HANDLER(LastTabClosed, _lastTabClosedHandlers, winrt::Windows::Foundation::IInspectable, winrt::TerminalApp::LastTabClosedEventArgs);
|
DECLARE_EVENT_WITH_TYPED_EVENT_HANDLER(LastTabClosed, _lastTabClosedHandlers, winrt::Windows::Foundation::IInspectable, winrt::TerminalApp::LastTabClosedEventArgs);
|
||||||
@@ -137,7 +139,6 @@ namespace winrt::TerminalApp::implementation
|
|||||||
StartupState _startupState{ StartupState::NotInitialized };
|
StartupState _startupState{ StartupState::NotInitialized };
|
||||||
|
|
||||||
Windows::Foundation::Collections::IVector<Microsoft::Terminal::Settings::Model::ActionAndArgs> _startupActions;
|
Windows::Foundation::Collections::IVector<Microsoft::Terminal::Settings::Model::ActionAndArgs> _startupActions;
|
||||||
winrt::fire_and_forget _ProcessStartupActions(Windows::Foundation::Collections::IVector<Microsoft::Terminal::Settings::Model::ActionAndArgs> actions, const bool initial);
|
|
||||||
|
|
||||||
void _ShowAboutDialog();
|
void _ShowAboutDialog();
|
||||||
winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::UI::Xaml::Controls::ContentDialogResult> _ShowCloseWarningDialog();
|
winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::UI::Xaml::Controls::ContentDialogResult> _ShowCloseWarningDialog();
|
||||||
|
|||||||
@@ -76,7 +76,5 @@ TRACELOGGING_DECLARE_PROVIDER(g_hTerminalAppProvider);
|
|||||||
|
|
||||||
#include <winrt/Windows.UI.Popups.h>
|
#include <winrt/Windows.UI.Popups.h>
|
||||||
|
|
||||||
#include <CLI11/CLI11.hpp>
|
|
||||||
|
|
||||||
// Manually include til after we include Windows.Foundation to give it winrt superpowers
|
// Manually include til after we include Windows.Foundation to give it winrt superpowers
|
||||||
#include "til.h"
|
#include "til.h"
|
||||||
|
|||||||
78
src/cascadia/UnitTests_Remoting/Remoting.UnitTests.vcxproj
Normal file
78
src/cascadia/UnitTests_Remoting/Remoting.UnitTests.vcxproj
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
|
||||||
|
<!-- A note about this project: We're building the test code dll from this
|
||||||
|
project, but it _MUST_ be run in conjunction with the TestHostApp project.
|
||||||
|
TestHostApp actually will build a TestHost executable and packaging bits
|
||||||
|
that we can use to run our tests. We need TestHostApp so that our
|
||||||
|
dependencies, like MUX, can be aggregated correctly, and resources properly
|
||||||
|
combined into a resources.pri file.
|
||||||
|
|
||||||
|
TestHostApp will manually copy the output of this project into it's own
|
||||||
|
OutDir, so we can run the tests from there. -->
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectGuid>{68a10cd3-aa64-465b-af5f-ed4e9700543c}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>RemotingUnitTests</RootNamespace>
|
||||||
|
<ProjectName>UnitTests_Remoting</ProjectName>
|
||||||
|
<TargetName>Remoting.UnitTests</TargetName>
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<WindowsTargetPlatformMinVersion>10.0.18362.0</WindowsTargetPlatformMinVersion>
|
||||||
|
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
|
||||||
|
<OpenConsoleCppWinRTProject>true</OpenConsoleCppWinRTProject>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<Import Project="$(SolutionDir)\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
|
||||||
|
<Import Project="$(OpenConsoleDir)\src\cppwinrt.build.pre.props" />
|
||||||
|
|
||||||
|
<!-- ========================= Headers ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="pch.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<!-- ========================= Cpp Files ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="RemotingTests.cpp" />
|
||||||
|
<ClCompile Include="pch.cpp">
|
||||||
|
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<!-- ========================= Project References ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)\src\cascadia\Remoting\Microsoft.Terminal.RemotingLib.vcxproj" />
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)\src\types\lib\types.vcxproj" />
|
||||||
|
|
||||||
|
<!-- If you don't reference these projects here, the
|
||||||
|
_ConsoleGenerateAdditionalWinmdManifests step won't gather the winmd's -->
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)\src\cascadia\Remoting\dll\Microsoft.Terminal.Remoting.vcxproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<!-- ========================= Globals ======================== -->
|
||||||
|
|
||||||
|
<!-- ====================== Compiler & Linker Flags ===================== -->
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<ClCompile>
|
||||||
|
<AdditionalIncludeDirectories>..;$(OpenConsoleDir)\dep;$(OpenConsoleDir)\dep\jsoncpp\json;$(OpenConsoleDir)src\inc;$(OpenConsoleDir)src\inc\test;$(WinRT_IncludePath)\..\cppwinrt\winrt;"$(OpenConsoleDir)\src\cascadia\Remoting\Generated Files";%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
|
|
||||||
|
<!-- Manually disable unreachable code warning, because jconcpp has a ton of that. -->
|
||||||
|
<DisableSpecificWarnings>4702;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>onecoreuap.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<GenerateManifest>true</GenerateManifest>
|
||||||
|
<EmbedManifest>true</EmbedManifest>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<!-- Careful reordering these. Some default props (contained in these files) are order sensitive. -->
|
||||||
|
<Import Project="$(OpenConsoleDir)src\common.build.post.props" />
|
||||||
|
<Import Project="$(OpenConsoleDir)src\common.build.tests.props" />
|
||||||
|
|
||||||
|
|
||||||
|
</Project>
|
||||||
295
src/cascadia/UnitTests_Remoting/RemotingTests.cpp
Normal file
295
src/cascadia/UnitTests_Remoting/RemotingTests.cpp
Normal file
@@ -0,0 +1,295 @@
|
|||||||
|
// Copyright (c) Microsoft Corporation.
|
||||||
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
|
#include "pch.h"
|
||||||
|
#include "../Remoting/Monarch.h"
|
||||||
|
|
||||||
|
using namespace Microsoft::Console;
|
||||||
|
using namespace WEX::Logging;
|
||||||
|
using namespace WEX::TestExecution;
|
||||||
|
using namespace WEX::Common;
|
||||||
|
|
||||||
|
using namespace winrt;
|
||||||
|
using namespace winrt::Microsoft::Terminal;
|
||||||
|
|
||||||
|
// These are some gross macros that let us call a private ctor for
|
||||||
|
// Monarch/Peasant. We can't just use make_self, because that doesn't let us
|
||||||
|
// call a private ctor. We can use com_ptr::attach, but since we're allocating
|
||||||
|
// the thing on the stack, we need to make sure to call detach before the object
|
||||||
|
// is destructed.
|
||||||
|
|
||||||
|
#define MAKE_MONARCH(name, pid) \
|
||||||
|
Remoting::implementation::Monarch _local_##name##{ pid }; \
|
||||||
|
com_ptr<Remoting::implementation::Monarch> name; \
|
||||||
|
name.attach(&_local_##name##); \
|
||||||
|
auto cleanup_##name## = wil::scope_exit([&]() { name.detach(); });
|
||||||
|
|
||||||
|
#define MAKE_PEASANT(name, pid) \
|
||||||
|
Remoting::implementation::Peasant _local_##name##{ pid }; \
|
||||||
|
com_ptr<Remoting::implementation::Peasant> name; \
|
||||||
|
name.attach(&_local_##name##); \
|
||||||
|
auto cleanup_##name## = wil::scope_exit([&]() { name.detach(); });
|
||||||
|
|
||||||
|
namespace RemotingUnitTests
|
||||||
|
{
|
||||||
|
// This is a silly helper struct.
|
||||||
|
// It will always throw an hresult_error on any of it's methods.
|
||||||
|
// In the tests, it's hard to emulate a peasant process being totally dead once the Monarch has captured a reference to it. Since everything's in-proc in the tests, we can't decrement the refcount in such a way that the monarch's reference will throw a catchable exception.
|
||||||
|
// Instead, this class can be used to replace a peasant inside a Monarch, to emulate that peasant process dying. Any time the monarch tries to do something to this peasant, it'll throw an exception.
|
||||||
|
struct DeadPeasant : implements<DeadPeasant, winrt::Microsoft::Terminal::Remoting::IPeasant>
|
||||||
|
{
|
||||||
|
DeadPeasant() = default;
|
||||||
|
void AssignID(uint64_t /*id*/) { throw winrt::hresult_error{}; };
|
||||||
|
uint64_t GetID() { throw winrt::hresult_error{}; };
|
||||||
|
uint64_t GetPID() { throw winrt::hresult_error{}; };
|
||||||
|
bool ExecuteCommandline(const winrt::Microsoft::Terminal::Remoting::CommandlineArgs& /*args*/) { throw winrt::hresult_error{}; }
|
||||||
|
winrt::Microsoft::Terminal::Remoting::CommandlineArgs InitialArgs() { throw winrt::hresult_error{}; }
|
||||||
|
TYPED_EVENT(WindowActivated, winrt::Windows::Foundation::IInspectable, winrt::Windows::Foundation::IInspectable);
|
||||||
|
TYPED_EVENT(ExecuteCommandlineRequested, winrt::Windows::Foundation::IInspectable, winrt::Microsoft::Terminal::Remoting::CommandlineArgs);
|
||||||
|
};
|
||||||
|
|
||||||
|
class RemotingTests
|
||||||
|
{
|
||||||
|
BEGIN_TEST_CLASS(RemotingTests)
|
||||||
|
END_TEST_CLASS()
|
||||||
|
|
||||||
|
TEST_METHOD(CreateMonarch);
|
||||||
|
TEST_METHOD(CreatePeasant);
|
||||||
|
TEST_METHOD(CreatePeasantWithNew);
|
||||||
|
TEST_METHOD(AddPeasants);
|
||||||
|
TEST_METHOD(GetPeasantsByID);
|
||||||
|
TEST_METHOD(AddPeasantsToNewMonarch);
|
||||||
|
TEST_METHOD(RemovePeasantFromMonarchWhenFreed);
|
||||||
|
|
||||||
|
TEST_CLASS_SETUP(ClassSetup)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void _killPeasant(const com_ptr<Remoting::implementation::Monarch>& m,
|
||||||
|
const uint64_t peasantID);
|
||||||
|
};
|
||||||
|
|
||||||
|
void RemotingTests::_killPeasant(const com_ptr<Remoting::implementation::Monarch>& m,
|
||||||
|
const uint64_t peasantID)
|
||||||
|
{
|
||||||
|
if (peasantID <= 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
com_ptr<DeadPeasant> tombstone;
|
||||||
|
tombstone.attach(new DeadPeasant());
|
||||||
|
m->_peasants[peasantID] = *tombstone;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemotingTests::CreateMonarch()
|
||||||
|
{
|
||||||
|
auto m1 = winrt::make_self<Remoting::implementation::Monarch>();
|
||||||
|
VERIFY_IS_NOT_NULL(m1);
|
||||||
|
VERIFY_ARE_EQUAL(GetCurrentProcessId(),
|
||||||
|
m1->GetPID(),
|
||||||
|
L"A Monarch without an explicit PID should use the current PID");
|
||||||
|
|
||||||
|
Log::Comment(L"That's what we need for window process management, but for tests, it'll be more useful to fake the PIDs.");
|
||||||
|
|
||||||
|
auto expectedFakePID = 1234u;
|
||||||
|
MAKE_MONARCH(m2, expectedFakePID);
|
||||||
|
|
||||||
|
VERIFY_IS_NOT_NULL(m2);
|
||||||
|
VERIFY_ARE_EQUAL(expectedFakePID,
|
||||||
|
m2->GetPID(),
|
||||||
|
L"A Monarch with an explicit PID should use the one we provided");
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemotingTests::CreatePeasant()
|
||||||
|
{
|
||||||
|
auto p1 = winrt::make_self<Remoting::implementation::Peasant>();
|
||||||
|
VERIFY_IS_NOT_NULL(p1);
|
||||||
|
VERIFY_ARE_EQUAL(GetCurrentProcessId(),
|
||||||
|
p1->GetPID(),
|
||||||
|
L"A Peasant without an explicit PID should use the current PID");
|
||||||
|
|
||||||
|
Log::Comment(L"That's what we need for window process management, but for tests, it'll be more useful to fake the PIDs.");
|
||||||
|
|
||||||
|
auto expectedFakePID = 2345u;
|
||||||
|
MAKE_PEASANT(p2, expectedFakePID);
|
||||||
|
|
||||||
|
VERIFY_IS_NOT_NULL(p2);
|
||||||
|
VERIFY_ARE_EQUAL(expectedFakePID,
|
||||||
|
p2->GetPID(),
|
||||||
|
L"A Peasant with an explicit PID should use the one we provided");
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemotingTests::CreatePeasantWithNew()
|
||||||
|
{
|
||||||
|
Log::Comment(L"The same thing as the above test, but with `new` instead of insanity on the stack");
|
||||||
|
|
||||||
|
auto p1 = winrt::make_self<Remoting::implementation::Peasant>();
|
||||||
|
VERIFY_IS_NOT_NULL(p1);
|
||||||
|
VERIFY_ARE_EQUAL(GetCurrentProcessId(),
|
||||||
|
p1->GetPID(),
|
||||||
|
L"A Peasant without an explicit PID should use the current PID");
|
||||||
|
|
||||||
|
auto expectedFakePID = 2345u;
|
||||||
|
|
||||||
|
com_ptr<Remoting::implementation::Peasant> p2;
|
||||||
|
VERIFY_IS_NULL(p2);
|
||||||
|
p2.attach(new Remoting::implementation::Peasant(expectedFakePID));
|
||||||
|
|
||||||
|
VERIFY_IS_NOT_NULL(p2);
|
||||||
|
VERIFY_ARE_EQUAL(expectedFakePID,
|
||||||
|
p2->GetPID(),
|
||||||
|
L"A Peasant with an explicit PID should use the one we provided");
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemotingTests::AddPeasants()
|
||||||
|
{
|
||||||
|
const auto monarch0PID = 12345u;
|
||||||
|
const auto peasant1PID = 23456u;
|
||||||
|
const auto peasant2PID = 34567u;
|
||||||
|
|
||||||
|
com_ptr<Remoting::implementation::Monarch> m0;
|
||||||
|
m0.attach(new Remoting::implementation::Monarch(monarch0PID));
|
||||||
|
|
||||||
|
com_ptr<Remoting::implementation::Peasant> p1;
|
||||||
|
p1.attach(new Remoting::implementation::Peasant(peasant1PID));
|
||||||
|
|
||||||
|
com_ptr<Remoting::implementation::Peasant> p2;
|
||||||
|
p2.attach(new Remoting::implementation::Peasant(peasant2PID));
|
||||||
|
|
||||||
|
VERIFY_IS_NOT_NULL(m0);
|
||||||
|
VERIFY_IS_NOT_NULL(p1);
|
||||||
|
VERIFY_IS_NOT_NULL(p2);
|
||||||
|
|
||||||
|
VERIFY_ARE_EQUAL(0, p1->GetID());
|
||||||
|
VERIFY_ARE_EQUAL(0, p2->GetID());
|
||||||
|
|
||||||
|
m0->AddPeasant(*p1);
|
||||||
|
m0->AddPeasant(*p2);
|
||||||
|
|
||||||
|
VERIFY_ARE_EQUAL(1, p1->GetID());
|
||||||
|
VERIFY_ARE_EQUAL(2, p2->GetID());
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemotingTests::GetPeasantsByID()
|
||||||
|
{
|
||||||
|
const auto monarch0PID = 12345u;
|
||||||
|
const auto peasant1PID = 23456u;
|
||||||
|
const auto peasant2PID = 34567u;
|
||||||
|
|
||||||
|
com_ptr<Remoting::implementation::Monarch> m0;
|
||||||
|
m0.attach(new Remoting::implementation::Monarch(monarch0PID));
|
||||||
|
|
||||||
|
com_ptr<Remoting::implementation::Peasant> p1;
|
||||||
|
p1.attach(new Remoting::implementation::Peasant(peasant1PID));
|
||||||
|
|
||||||
|
com_ptr<Remoting::implementation::Peasant> p2;
|
||||||
|
p2.attach(new Remoting::implementation::Peasant(peasant2PID));
|
||||||
|
|
||||||
|
VERIFY_IS_NOT_NULL(m0);
|
||||||
|
VERIFY_IS_NOT_NULL(p1);
|
||||||
|
VERIFY_IS_NOT_NULL(p2);
|
||||||
|
|
||||||
|
VERIFY_ARE_EQUAL(0, p1->GetID());
|
||||||
|
VERIFY_ARE_EQUAL(0, p2->GetID());
|
||||||
|
|
||||||
|
m0->AddPeasant(*p1);
|
||||||
|
m0->AddPeasant(*p2);
|
||||||
|
|
||||||
|
VERIFY_ARE_EQUAL(1, p1->GetID());
|
||||||
|
VERIFY_ARE_EQUAL(2, p2->GetID());
|
||||||
|
|
||||||
|
auto maybeP1 = m0->_getPeasant(1);
|
||||||
|
VERIFY_IS_NOT_NULL(maybeP1);
|
||||||
|
VERIFY_ARE_EQUAL(peasant1PID, maybeP1.GetPID());
|
||||||
|
|
||||||
|
auto maybeP2 = m0->_getPeasant(2);
|
||||||
|
VERIFY_IS_NOT_NULL(maybeP2);
|
||||||
|
VERIFY_ARE_EQUAL(peasant2PID, maybeP2.GetPID());
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemotingTests::AddPeasantsToNewMonarch()
|
||||||
|
{
|
||||||
|
const auto monarch0PID = 12345u;
|
||||||
|
const auto peasant1PID = 23456u;
|
||||||
|
const auto peasant2PID = 34567u;
|
||||||
|
const auto monarch3PID = 45678u;
|
||||||
|
|
||||||
|
com_ptr<Remoting::implementation::Monarch> m0;
|
||||||
|
m0.attach(new Remoting::implementation::Monarch(monarch0PID));
|
||||||
|
|
||||||
|
com_ptr<Remoting::implementation::Peasant> p1;
|
||||||
|
p1.attach(new Remoting::implementation::Peasant(peasant1PID));
|
||||||
|
|
||||||
|
com_ptr<Remoting::implementation::Peasant> p2;
|
||||||
|
p2.attach(new Remoting::implementation::Peasant(peasant2PID));
|
||||||
|
|
||||||
|
com_ptr<Remoting::implementation::Monarch> m3;
|
||||||
|
m3.attach(new Remoting::implementation::Monarch(monarch3PID));
|
||||||
|
|
||||||
|
VERIFY_IS_NOT_NULL(m0);
|
||||||
|
VERIFY_IS_NOT_NULL(p1);
|
||||||
|
VERIFY_IS_NOT_NULL(p2);
|
||||||
|
VERIFY_IS_NOT_NULL(m3);
|
||||||
|
|
||||||
|
VERIFY_ARE_EQUAL(0, p1->GetID());
|
||||||
|
VERIFY_ARE_EQUAL(0, p2->GetID());
|
||||||
|
|
||||||
|
m0->AddPeasant(*p1);
|
||||||
|
m0->AddPeasant(*p2);
|
||||||
|
|
||||||
|
VERIFY_ARE_EQUAL(1, p1->GetID());
|
||||||
|
VERIFY_ARE_EQUAL(2, p2->GetID());
|
||||||
|
|
||||||
|
m3->AddPeasant(*p1);
|
||||||
|
m3->AddPeasant(*p2);
|
||||||
|
|
||||||
|
VERIFY_ARE_EQUAL(1, p1->GetID());
|
||||||
|
VERIFY_ARE_EQUAL(2, p2->GetID());
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemotingTests::RemovePeasantFromMonarchWhenFreed()
|
||||||
|
{
|
||||||
|
const auto monarch0PID = 12345u;
|
||||||
|
const auto peasant1PID = 23456u;
|
||||||
|
const auto peasant2PID = 34567u;
|
||||||
|
|
||||||
|
com_ptr<Remoting::implementation::Monarch> m0;
|
||||||
|
m0.attach(new Remoting::implementation::Monarch(monarch0PID));
|
||||||
|
|
||||||
|
com_ptr<Remoting::implementation::Peasant> p1;
|
||||||
|
p1.attach(new Remoting::implementation::Peasant(peasant1PID));
|
||||||
|
|
||||||
|
com_ptr<Remoting::implementation::Peasant> p2;
|
||||||
|
p2.attach(new Remoting::implementation::Peasant(peasant2PID));
|
||||||
|
|
||||||
|
VERIFY_IS_NOT_NULL(m0);
|
||||||
|
VERIFY_IS_NOT_NULL(p1);
|
||||||
|
VERIFY_IS_NOT_NULL(p2);
|
||||||
|
|
||||||
|
VERIFY_ARE_EQUAL(0, p1->GetID());
|
||||||
|
VERIFY_ARE_EQUAL(0, p2->GetID());
|
||||||
|
|
||||||
|
m0->AddPeasant(*p1);
|
||||||
|
m0->AddPeasant(*p2);
|
||||||
|
|
||||||
|
VERIFY_ARE_EQUAL(1, p1->GetID());
|
||||||
|
VERIFY_ARE_EQUAL(2, p2->GetID());
|
||||||
|
|
||||||
|
VERIFY_ARE_EQUAL(2u, m0->_peasants.size());
|
||||||
|
|
||||||
|
Log::Comment(L"Kill peasant 1. Make sure that it gets removed from the monarch.");
|
||||||
|
RemotingTests::_killPeasant(m0, p1->GetID());
|
||||||
|
|
||||||
|
auto maybeP2 = m0->_getPeasant(2);
|
||||||
|
VERIFY_IS_NOT_NULL(maybeP2);
|
||||||
|
VERIFY_ARE_EQUAL(peasant2PID, maybeP2.GetPID());
|
||||||
|
|
||||||
|
auto maybeP1 = m0->_getPeasant(1);
|
||||||
|
VERIFY_IS_NULL(maybeP1);
|
||||||
|
|
||||||
|
VERIFY_ARE_EQUAL(1u, m0->_peasants.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
3
src/cascadia/UnitTests_Remoting/UnitTests_Remoting.def
Normal file
3
src/cascadia/UnitTests_Remoting/UnitTests_Remoting.def
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
EXPORTS
|
||||||
|
DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE
|
||||||
|
DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE
|
||||||
4
src/cascadia/UnitTests_Remoting/pch.cpp
Normal file
4
src/cascadia/UnitTests_Remoting/pch.cpp
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
// Copyright (c) Microsoft Corporation.
|
||||||
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
|
#include "pch.h"
|
||||||
39
src/cascadia/UnitTests_Remoting/pch.h
Normal file
39
src/cascadia/UnitTests_Remoting/pch.h
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/*++
|
||||||
|
Copyright (c) Microsoft Corporation
|
||||||
|
Licensed under the MIT license.
|
||||||
|
--*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// Manually include til after we include Windows.Foundation to give it winrt superpowers
|
||||||
|
#define BLOCK_TIL
|
||||||
|
// This includes support libraries from the CRT, STL, WIL, and GSL
|
||||||
|
#include "LibraryIncludes.h"
|
||||||
|
// This is inexplicable, but for whatever reason, cppwinrt conflicts with the
|
||||||
|
// SDK definition of this function, so the only fix is to undef it.
|
||||||
|
// from WinBase.h
|
||||||
|
// Windows::UI::Xaml::Media::Animation::IStoryboard::GetCurrentTime
|
||||||
|
#ifdef GetCurrentTime
|
||||||
|
#undef GetCurrentTime
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <wil/cppwinrt.h>
|
||||||
|
#include <unknwn.h>
|
||||||
|
#include <hstring.h>
|
||||||
|
|
||||||
|
#include <WexTestClass.h>
|
||||||
|
#include "consoletaeftemplates.hpp"
|
||||||
|
|
||||||
|
#include <winrt/Windows.ApplicationModel.Resources.Core.h>
|
||||||
|
#include <winrt/Windows.system.h>
|
||||||
|
#include <winrt/Windows.Foundation.h>
|
||||||
|
#include <winrt/Windows.Foundation.Collections.h>
|
||||||
|
|
||||||
|
// Manually include til after we include Windows.Foundation to give it winrt superpowers
|
||||||
|
#include "til.h"
|
||||||
|
|
||||||
|
// Common includes for most tests:
|
||||||
|
#include "../../inc/argb.h"
|
||||||
|
#include "../../inc/conattrs.hpp"
|
||||||
|
#include "../../types/inc/utils.hpp"
|
||||||
|
#include "../../inc/DefaultSettings.h"
|
||||||
@@ -8,13 +8,12 @@
|
|||||||
#include "../types/inc/User32Utils.hpp"
|
#include "../types/inc/User32Utils.hpp"
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
|
||||||
#include <winrt/Microsoft.Terminal.TerminalControl.h>
|
|
||||||
|
|
||||||
using namespace winrt::Windows::UI;
|
using namespace winrt::Windows::UI;
|
||||||
using namespace winrt::Windows::UI::Composition;
|
using namespace winrt::Windows::UI::Composition;
|
||||||
using namespace winrt::Windows::UI::Xaml;
|
using namespace winrt::Windows::UI::Xaml;
|
||||||
using namespace winrt::Windows::UI::Xaml::Hosting;
|
using namespace winrt::Windows::UI::Xaml::Hosting;
|
||||||
using namespace winrt::Windows::Foundation::Numerics;
|
using namespace winrt::Windows::Foundation::Numerics;
|
||||||
|
using namespace winrt::Microsoft::Terminal;
|
||||||
using namespace winrt::Microsoft::Terminal::Settings::Model;
|
using namespace winrt::Microsoft::Terminal::Settings::Model;
|
||||||
using namespace ::Microsoft::Console;
|
using namespace ::Microsoft::Console;
|
||||||
using namespace ::Microsoft::Console::Types;
|
using namespace ::Microsoft::Console::Types;
|
||||||
@@ -25,17 +24,24 @@ static constexpr short KeyPressed{ gsl::narrow_cast<short>(0x8000) };
|
|||||||
|
|
||||||
AppHost::AppHost() noexcept :
|
AppHost::AppHost() noexcept :
|
||||||
_app{},
|
_app{},
|
||||||
|
_windowManager{},
|
||||||
_logic{ nullptr }, // don't make one, we're going to take a ref on app's
|
_logic{ nullptr }, // don't make one, we're going to take a ref on app's
|
||||||
_window{ nullptr }
|
_window{ nullptr }
|
||||||
{
|
{
|
||||||
_logic = _app.Logic(); // get a ref to app's logic
|
_logic = _app.Logic(); // get a ref to app's logic
|
||||||
|
|
||||||
_useNonClientArea = _logic.GetShowTabsInTitlebar();
|
|
||||||
|
|
||||||
// If there were commandline args to our process, try and process them here.
|
// If there were commandline args to our process, try and process them here.
|
||||||
// Do this before AppLogic::Create, otherwise this will have no effect
|
// Do this before AppLogic::Create, otherwise this will have no effect.
|
||||||
|
//
|
||||||
|
// This will send our commandline to the Monarch, to ask if we should make a
|
||||||
|
// new window or not. If not, exit immediately.
|
||||||
_HandleCommandlineArgs();
|
_HandleCommandlineArgs();
|
||||||
|
if (!_shouldCreateWindow)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_useNonClientArea = _logic.GetShowTabsInTitlebar();
|
||||||
if (_useNonClientArea)
|
if (_useNonClientArea)
|
||||||
{
|
{
|
||||||
_window = std::make_unique<NonClientIslandWindow>(_logic.GetRequestedTheme());
|
_window = std::make_unique<NonClientIslandWindow>(_logic.GetRequestedTheme());
|
||||||
@@ -65,6 +71,7 @@ AppHost::AppHost() noexcept :
|
|||||||
AppHost::~AppHost()
|
AppHost::~AppHost()
|
||||||
{
|
{
|
||||||
// destruction order is important for proper teardown here
|
// destruction order is important for proper teardown here
|
||||||
|
|
||||||
_window = nullptr;
|
_window = nullptr;
|
||||||
_app.Close();
|
_app.Close();
|
||||||
_app = nullptr;
|
_app = nullptr;
|
||||||
@@ -96,9 +103,35 @@ void AppHost::SetTaskbarProgress(const winrt::Windows::Foundation::IInspectable&
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _buildArgsFromCommandline(std::vector<winrt::hstring>& args)
|
||||||
|
{
|
||||||
|
if (auto commandline{ GetCommandLineW() })
|
||||||
|
{
|
||||||
|
int argc = 0;
|
||||||
|
|
||||||
|
// Get the argv, and turn them into a hstring array to pass to the app.
|
||||||
|
wil::unique_any<LPWSTR*, decltype(&::LocalFree), ::LocalFree> argv{ CommandLineToArgvW(commandline, &argc) };
|
||||||
|
if (argv)
|
||||||
|
{
|
||||||
|
for (auto& elem : wil::make_range(argv.get(), argc))
|
||||||
|
{
|
||||||
|
args.emplace_back(elem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (args.empty())
|
||||||
|
{
|
||||||
|
args.emplace_back(L"wt.exe");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Method Description:
|
// Method Description:
|
||||||
// - Retrieve any commandline args passed on the commandline, and pass them to
|
// - Retrieve any commandline args passed on the commandline, and pass them to
|
||||||
// the app logic for processing.
|
// the WindowManager, to ask if we should become a window process.
|
||||||
|
// - If we should create a window, then pass the arguments to the app logic for
|
||||||
|
// processing.
|
||||||
|
// - If we shouldn't become a window, set _shouldCreateWindow to false and exit
|
||||||
|
// immediately.
|
||||||
// - If the logic determined there's an error while processing that commandline,
|
// - If the logic determined there's an error while processing that commandline,
|
||||||
// display a message box to the user with the text of the error, and exit.
|
// display a message box to the user with the text of the error, and exit.
|
||||||
// * We display a message box because we're a Win32 application (not a
|
// * We display a message box because we're a Win32 application (not a
|
||||||
@@ -111,21 +144,24 @@ void AppHost::SetTaskbarProgress(const winrt::Windows::Foundation::IInspectable&
|
|||||||
// - <none>
|
// - <none>
|
||||||
void AppHost::_HandleCommandlineArgs()
|
void AppHost::_HandleCommandlineArgs()
|
||||||
{
|
{
|
||||||
if (auto commandline{ GetCommandLineW() })
|
std::vector<winrt::hstring> args;
|
||||||
|
_buildArgsFromCommandline(args);
|
||||||
|
std::wstring cwd{ wil::GetCurrentDirectoryW<std::wstring>() };
|
||||||
|
|
||||||
|
Remoting::CommandlineArgs eventArgs{ { args }, { cwd } };
|
||||||
|
_windowManager.ProposeCommandline(eventArgs);
|
||||||
|
|
||||||
|
_shouldCreateWindow = _windowManager.ShouldCreateWindow();
|
||||||
|
if (!_shouldCreateWindow)
|
||||||
{
|
{
|
||||||
int argc = 0;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Get the argv, and turn them into a hstring array to pass to the app.
|
if (auto peasant{ _windowManager.CurrentWindow() })
|
||||||
wil::unique_any<LPWSTR*, decltype(&::LocalFree), ::LocalFree> argv{ CommandLineToArgvW(commandline, &argc) };
|
{
|
||||||
if (argv)
|
if (auto args{ peasant.InitialArgs() })
|
||||||
{
|
{
|
||||||
std::vector<winrt::hstring> args;
|
const auto result = _logic.SetStartupCommandline(args.Args());
|
||||||
for (auto& elem : wil::make_range(argv.get(), argc))
|
|
||||||
{
|
|
||||||
args.emplace_back(elem);
|
|
||||||
}
|
|
||||||
|
|
||||||
const auto result = _logic.SetStartupCommandline({ args });
|
|
||||||
const auto message = _logic.ParseCommandlineMessage();
|
const auto message = _logic.ParseCommandlineMessage();
|
||||||
if (!message.empty())
|
if (!message.empty())
|
||||||
{
|
{
|
||||||
@@ -145,7 +181,19 @@ void AppHost::_HandleCommandlineArgs()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// After handling the initial args, hookup the callback for handling
|
||||||
|
// future commandline invocations. When our peasant is told to execute a
|
||||||
|
// commandline (in the future), it'll trigger this callback, that we'll
|
||||||
|
// use to send the actions to the app.
|
||||||
|
peasant.ExecuteCommandlineRequested({ this, &AppHost::_DispatchCommandline });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO:projects/5 if we end up not creating a new window, we crash. I'm
|
||||||
|
// thinking this is because the XAML host is not happy about being torn
|
||||||
|
// down before it has a chance to do really anything. Is there some way
|
||||||
|
// to get the app logic without instantiating the entire app? or at
|
||||||
|
// least the parts we'll need for remoting?
|
||||||
}
|
}
|
||||||
|
|
||||||
// Method Description:
|
// Method Description:
|
||||||
@@ -462,3 +510,14 @@ void AppHost::_WindowMouseWheeled(const til::point coord, const int32_t delta)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AppHost::HasWindow()
|
||||||
|
{
|
||||||
|
return _shouldCreateWindow;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppHost::_DispatchCommandline(winrt::Windows::Foundation::IInspectable /*sender*/,
|
||||||
|
winrt::Microsoft::Terminal::Remoting::CommandlineArgs args)
|
||||||
|
{
|
||||||
|
_logic.ExecuteCommandline(args.Args());
|
||||||
|
}
|
||||||
|
|||||||
@@ -3,9 +3,6 @@
|
|||||||
|
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
|
|
||||||
#include <winrt/TerminalApp.h>
|
|
||||||
#include <winrt/Microsoft.Terminal.Settings.Model.h>
|
|
||||||
|
|
||||||
#include "NonClientIslandWindow.h"
|
#include "NonClientIslandWindow.h"
|
||||||
|
|
||||||
class AppHost
|
class AppHost
|
||||||
@@ -20,12 +17,16 @@ public:
|
|||||||
bool OnDirectKeyEvent(const uint32_t vkey, const uint8_t scanCode, const bool down);
|
bool OnDirectKeyEvent(const uint32_t vkey, const uint8_t scanCode, const bool down);
|
||||||
void SetTaskbarProgress(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::Foundation::IInspectable& args);
|
void SetTaskbarProgress(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::Foundation::IInspectable& args);
|
||||||
|
|
||||||
|
bool HasWindow();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool _useNonClientArea;
|
bool _useNonClientArea;
|
||||||
|
|
||||||
std::unique_ptr<IslandWindow> _window;
|
std::unique_ptr<IslandWindow> _window;
|
||||||
winrt::TerminalApp::App _app;
|
winrt::TerminalApp::App _app;
|
||||||
winrt::TerminalApp::AppLogic _logic;
|
winrt::TerminalApp::AppLogic _logic;
|
||||||
|
bool _shouldCreateWindow{ false };
|
||||||
|
winrt::Microsoft::Terminal::Remoting::WindowManager _windowManager{ nullptr };
|
||||||
|
|
||||||
void _HandleCommandlineArgs();
|
void _HandleCommandlineArgs();
|
||||||
|
|
||||||
@@ -43,4 +44,7 @@ private:
|
|||||||
void _RaiseVisualBell(const winrt::Windows::Foundation::IInspectable& sender,
|
void _RaiseVisualBell(const winrt::Windows::Foundation::IInspectable& sender,
|
||||||
const winrt::Windows::Foundation::IInspectable& arg);
|
const winrt::Windows::Foundation::IInspectable& arg);
|
||||||
void _WindowMouseWheeled(const til::point coord, const int32_t delta);
|
void _WindowMouseWheeled(const til::point coord, const int32_t delta);
|
||||||
|
|
||||||
|
void _DispatchCommandline(winrt::Windows::Foundation::IInspectable sender,
|
||||||
|
winrt::Microsoft::Terminal::Remoting::CommandlineArgs args);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -77,6 +77,7 @@
|
|||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalSettingsModel\dll\Microsoft.Terminal.Settings.Model.vcxproj" />
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalSettingsModel\dll\Microsoft.Terminal.Settings.Model.vcxproj" />
|
||||||
|
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalApp\dll\TerminalApp.vcxproj" />
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalApp\dll\TerminalApp.vcxproj" />
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\Remoting\dll\Microsoft.Terminal.Remoting.vcxproj" />
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalSettingsEditor\Microsoft.Terminal.Settings.Editor.vcxproj" />
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalSettingsEditor\Microsoft.Terminal.Settings.Editor.vcxproj" />
|
||||||
|
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\types\lib\types.vcxproj" />
|
<ProjectReference Include="$(OpenConsoleDir)src\types\lib\types.vcxproj" />
|
||||||
@@ -98,7 +99,7 @@
|
|||||||
|
|
||||||
<Import Project="..\..\..\packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets" Condition="Exists('..\..\..\packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets')" />
|
<Import Project="..\..\..\packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets" Condition="Exists('..\..\..\packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets')" />
|
||||||
<Import Project="..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.2\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.targets" Condition="Exists('..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.2\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.targets')" />
|
<Import Project="..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.2\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.targets" Condition="Exists('..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.2\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.targets')" />
|
||||||
<Import Project="..\..\..\packages\Microsoft.VCRTForwarders.140.1.0.4\build\native\Microsoft.VCRTForwarders.140.targets" Condition="Exists('..\..\..\packages\Microsoft.VCRTForwarders.140.1.0.4\build\native\Microsoft.VCRTForwarders.140.targets')" />
|
<Import Project="..\..\..\packages\Microsoft.VCRTForwarders.140.1.0.4\build\native\Microsoft.VCRTForwarders.140.targets" Condition="Exists('..\..\..\packages\Microsoft.VCRTForwarders.140.1.0.4\build\native\Microsoft.VCRTForwarders.140.targets')" />
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
@@ -106,7 +107,7 @@
|
|||||||
<Error Condition="!Exists('..\..\..\packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets'))" />
|
<Error Condition="!Exists('..\..\..\packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets'))" />
|
||||||
<Error Condition="!Exists('..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.2\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.2\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.props'))" />
|
<Error Condition="!Exists('..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.2\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.2\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.props'))" />
|
||||||
<Error Condition="!Exists('..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.2\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.2\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.targets'))" />
|
<Error Condition="!Exists('..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.2\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.2\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.targets'))" />
|
||||||
<Error Condition="!Exists('..\..\..\packages\Microsoft.VCRTForwarders.140.1.0.4\build\native\Microsoft.VCRTForwarders.140.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.VCRTForwarders.140.1.0.4\build\native\Microsoft.VCRTForwarders.140.targets'))" />
|
<Error Condition="!Exists('..\..\..\packages\Microsoft.VCRTForwarders.140.1.0.4\build\native\Microsoft.VCRTForwarders.140.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.VCRTForwarders.140.1.0.4\build\native\Microsoft.VCRTForwarders.140.targets'))" />
|
||||||
<Error Condition="!Exists('..\..\..\packages\Terminal.ThemeHelpers.0.2.200324001\build\native\Terminal.ThemeHelpers.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Terminal.ThemeHelpers.0.2.200324001\build\native\Terminal.ThemeHelpers.targets'))" />
|
<Error Condition="!Exists('..\..\..\packages\Terminal.ThemeHelpers.0.2.200324001\build\native\Terminal.ThemeHelpers.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Terminal.ThemeHelpers.0.2.200324001\build\native\Terminal.ThemeHelpers.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
|
|||||||
@@ -124,6 +124,10 @@ int __stdcall wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int)
|
|||||||
// Terminal App. This MUST BE constructed before the Xaml manager as TermApp
|
// Terminal App. This MUST BE constructed before the Xaml manager as TermApp
|
||||||
// provides an implementation of Windows.UI.Xaml.Application.
|
// provides an implementation of Windows.UI.Xaml.Application.
|
||||||
AppHost host;
|
AppHost host;
|
||||||
|
if (!host.HasWindow())
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize the xaml content. This must be called AFTER the
|
// Initialize the xaml content. This must be called AFTER the
|
||||||
// WindowsXamlManager is initialized.
|
// WindowsXamlManager is initialized.
|
||||||
|
|||||||
@@ -61,6 +61,11 @@ Abstract:
|
|||||||
#include <winrt/Windows.UI.Xaml.Controls.h>
|
#include <winrt/Windows.UI.Xaml.Controls.h>
|
||||||
#include <winrt/Windows.ui.xaml.media.h>
|
#include <winrt/Windows.ui.xaml.media.h>
|
||||||
|
|
||||||
|
#include <winrt/TerminalApp.h>
|
||||||
|
#include <winrt/Microsoft.Terminal.Settings.Model.h>
|
||||||
|
#include <winrt/Microsoft.Terminal.Remoting.h>
|
||||||
|
#include <winrt/Microsoft.Terminal.TerminalControl.h>
|
||||||
|
|
||||||
#include <wil/resource.h>
|
#include <wil/resource.h>
|
||||||
#include <wil/win32_helpers.h>
|
#include <wil/win32_helpers.h>
|
||||||
|
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ function Invoke-OpenConsoleTests()
|
|||||||
[switch]$FTOnly,
|
[switch]$FTOnly,
|
||||||
|
|
||||||
[parameter(Mandatory=$false)]
|
[parameter(Mandatory=$false)]
|
||||||
[ValidateSet('host', 'interactivityWin32', 'terminal', 'adapter', 'feature', 'uia', 'textbuffer', 'til', 'types', 'terminalCore', 'terminalApp', 'localTerminalApp')]
|
[ValidateSet('host', 'interactivityWin32', 'terminal', 'adapter', 'feature', 'uia', 'textbuffer', 'til', 'types', 'terminalCore', 'terminalApp', 'localTerminalApp', 'localSettingsModel', 'unitRemoting')]
|
||||||
[string]$Test,
|
[string]$Test,
|
||||||
|
|
||||||
[parameter(Mandatory=$false)]
|
[parameter(Mandatory=$false)]
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ call %TAEF% ^
|
|||||||
%OPENCON%\bin\%PLATFORM%\%_LAST_BUILD_CONF%\Types.Unit.Tests.dll ^
|
%OPENCON%\bin\%PLATFORM%\%_LAST_BUILD_CONF%\Types.Unit.Tests.dll ^
|
||||||
%OPENCON%\bin\%PLATFORM%\%_LAST_BUILD_CONF%\til.unit.tests.dll ^
|
%OPENCON%\bin\%PLATFORM%\%_LAST_BUILD_CONF%\til.unit.tests.dll ^
|
||||||
%OPENCON%\bin\%PLATFORM%\%_LAST_BUILD_CONF%\UnitTests_TerminalApp\Terminal.App.Unit.Tests.dll ^
|
%OPENCON%\bin\%PLATFORM%\%_LAST_BUILD_CONF%\UnitTests_TerminalApp\Terminal.App.Unit.Tests.dll ^
|
||||||
|
%OPENCON%\bin\%PLATFORM%\%_LAST_BUILD_CONF%\UnitTests_Remoting\Remoting.UnitTests.dll ^
|
||||||
%_TestHostAppPath%\TerminalApp.LocalTests.dll ^
|
%_TestHostAppPath%\TerminalApp.LocalTests.dll ^
|
||||||
|
%_TestHostAppPath%\SettingsModel.LocalTests.dll ^
|
||||||
%*
|
%*
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
<test name="terminalCore" type="unit" binary="Terminal.Core.Unit.Tests.dll" />
|
<test name="terminalCore" type="unit" binary="Terminal.Core.Unit.Tests.dll" />
|
||||||
<test name="terminalApp" type="unit" binary="UnitTests_TerminalApp\Terminal.App.Unit.Tests.dll" />
|
<test name="terminalApp" type="unit" binary="UnitTests_TerminalApp\Terminal.App.Unit.Tests.dll" />
|
||||||
<test name="localTerminalApp" type="unit" runInHostApp="true" binary="TerminalApp.LocalTests.dll" />
|
<test name="localTerminalApp" type="unit" runInHostApp="true" binary="TerminalApp.LocalTests.dll" />
|
||||||
|
<test name="localSettingsModel" type="unit" runInHostApp="true" binary="SettingsModel.LocalTests.dll" />
|
||||||
|
<test name="unitRemoting" type="unit" binary="Remoting.UnitTests.dll" />
|
||||||
<test name="interactivityWin32" type="unit" binary="Conhost.Interactivity.Win32.Unit.Tests.dll" />
|
<test name="interactivityWin32" type="unit" binary="Conhost.Interactivity.Win32.Unit.Tests.dll" />
|
||||||
<test name="terminal" type="unit" binary="ConParser.Unit.Tests.dll" />
|
<test name="terminal" type="unit" binary="ConParser.Unit.Tests.dll" />
|
||||||
<test name="adapter" type="unit" binary="ConAdapter.Unit.Tests.dll" />
|
<test name="adapter" type="unit" binary="ConAdapter.Unit.Tests.dll" />
|
||||||
|
|||||||
Reference in New Issue
Block a user