mirror of
https://github.com/grafana/grafana.git
synced 2025-12-22 20:54:34 +08:00
Compare commits
508 Commits
zoltan/pos
...
v10.4.19
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5e7a8b1652 | ||
|
|
626f72f5f4 | ||
|
|
3578bab394 | ||
|
|
f8dafd73eb | ||
|
|
2480f4b3d7 | ||
|
|
9e2415fba1 | ||
|
|
d71908a5f7 | ||
|
|
a0ec5fbcdf | ||
|
|
244cc05748 | ||
|
|
9d370f4ec6 | ||
|
|
f469da060c | ||
|
|
595e9bbb17 | ||
|
|
a359ffa756 | ||
|
|
56894bf6a1 | ||
|
|
681ca29b1a | ||
|
|
b35efcee39 | ||
|
|
8c2f42e7fd | ||
|
|
a5d0ed1dc3 | ||
|
|
86cbbaf6c1 | ||
|
|
9150818fbc | ||
|
|
fcd8ab5250 | ||
|
|
b60b75987e | ||
|
|
768beb745a | ||
|
|
a95875bb5b | ||
|
|
c0c7990dcb | ||
|
|
76f2cf0dff | ||
|
|
ff07ebf090 | ||
|
|
750b094dda | ||
|
|
ee117f713e | ||
|
|
ad990cf8e1 | ||
|
|
c3b1d0bdef | ||
|
|
f42d5fc14e | ||
|
|
2326b2c3e7 | ||
|
|
1933affd8b | ||
|
|
8739e5bae3 | ||
|
|
947520c430 | ||
|
|
d6e7605148 | ||
|
|
2fb1e0d107 | ||
|
|
d56fe271bb | ||
|
|
37f3d3f211 | ||
|
|
39622f11c0 | ||
|
|
276163e02b | ||
|
|
3c2e2d73d1 | ||
|
|
781510cd88 | ||
|
|
1215a28817 | ||
|
|
d45208e5b3 | ||
|
|
d089e963bb | ||
|
|
4b81497056 | ||
|
|
2f7ce5067d | ||
|
|
9f4ef23c33 | ||
|
|
bc0852b1f1 | ||
|
|
d8ad06fa5c | ||
|
|
d62f22b6d7 | ||
|
|
22298956ad | ||
|
|
f38a4f5d0b | ||
|
|
272405d0ca | ||
|
|
291257175f | ||
|
|
8ebb2f7759 | ||
|
|
f79cd5f834 | ||
|
|
b76e6b5a28 | ||
|
|
9c72ab5823 | ||
|
|
64f8360ed1 | ||
|
|
e6ddee76d3 | ||
|
|
5ccce33e72 | ||
|
|
41b41f7486 | ||
|
|
6ed231c72d | ||
|
|
e85d79b034 | ||
|
|
1f17f33ddc | ||
|
|
fef68321bf | ||
|
|
d96b2041df | ||
|
|
4103881b78 | ||
|
|
8b29af01c8 | ||
|
|
30f1b22bcd | ||
|
|
f1d4437205 | ||
|
|
5e170ddd24 | ||
|
|
c25720db30 | ||
|
|
e4963e3309 | ||
|
|
c2c9cd2b18 | ||
|
|
8aa7c30f63 | ||
|
|
7ebac9f289 | ||
|
|
6bbc7591f9 | ||
|
|
71c0e09758 | ||
|
|
349e558be0 | ||
|
|
01c88d3114 | ||
|
|
6d1801bab6 | ||
|
|
4efbbfb09c | ||
|
|
ad123f0087 | ||
|
|
ca2286b50b | ||
|
|
87912cd918 | ||
|
|
5e34be80a8 | ||
|
|
9bbed3484a | ||
|
|
1d6e3faa46 | ||
|
|
95eda3f56a | ||
|
|
73f75b7034 | ||
|
|
40213a06b3 | ||
|
|
e1572e3fdc | ||
|
|
5a1f35f3b8 | ||
|
|
ae50f0195d | ||
|
|
0746eae720 | ||
|
|
e9e0c1f110 | ||
|
|
00e001d3b8 | ||
|
|
1a6874b18d | ||
|
|
eb23cde635 | ||
|
|
37889a4462 | ||
|
|
1913b18d46 | ||
|
|
a875535761 | ||
|
|
ea2ce68a3c | ||
|
|
fd6c603cd8 | ||
|
|
785d38d622 | ||
|
|
1feb505d7b | ||
|
|
56319b1501 | ||
|
|
007a5adc9e | ||
|
|
880e33216b | ||
|
|
b29276dc4a | ||
|
|
37a679ff27 | ||
|
|
9a280fa660 | ||
|
|
3d989a2833 | ||
|
|
941acb30b6 | ||
|
|
e03d197d59 | ||
|
|
06fe9931a8 | ||
|
|
36a8bd19e9 | ||
|
|
11bde52118 | ||
|
|
029b212512 | ||
|
|
4e756fe2db | ||
|
|
a40fee9162 | ||
|
|
7cfb3ec25a | ||
|
|
6aa75962da | ||
|
|
c66109b725 | ||
|
|
26f770c44a | ||
|
|
92628e5c16 | ||
|
|
69eeb5705c | ||
|
|
5acb0e05ed | ||
|
|
70ce6cba9c | ||
|
|
e8b2507d97 | ||
|
|
8db7d753cb | ||
|
|
963a12f8f1 | ||
|
|
db1c94f950 | ||
|
|
db82bf363c | ||
|
|
9facf85d70 | ||
|
|
bee1c139cc | ||
|
|
fa58bd62bb | ||
|
|
6b9a02165c | ||
|
|
3a902f8569 | ||
|
|
8c0fda37ae | ||
|
|
8ac8442e8b | ||
|
|
655b4fd499 | ||
|
|
13d9ccca99 | ||
|
|
9b929ab7cd | ||
|
|
1d552f25ae | ||
|
|
2b7cdc8ff9 | ||
|
|
a8215d10df | ||
|
|
79a9941056 | ||
|
|
1c902eeed2 | ||
|
|
478bd662ae | ||
|
|
c89543df2f | ||
|
|
fbb0ce8beb | ||
|
|
5143815ffd | ||
|
|
eba254cc31 | ||
|
|
18e500bfbe | ||
|
|
5de3f27ca5 | ||
|
|
f6530f62c2 | ||
|
|
11d5696ed0 | ||
|
|
596e03f56e | ||
|
|
a87fb21be0 | ||
|
|
8525525115 | ||
|
|
6f76c8dff8 | ||
|
|
8c384b71bd | ||
|
|
6b79e50585 | ||
|
|
7a08b0bae7 | ||
|
|
8ea727bb4f | ||
|
|
b5dce4670d | ||
|
|
32fe385aed | ||
|
|
f2f6eabd21 | ||
|
|
7198ba3d33 | ||
|
|
9878342d54 | ||
|
|
429079711a | ||
|
|
79c0be876f | ||
|
|
257f46b2e4 | ||
|
|
dcce9bdbd2 | ||
|
|
dc9b660a0f | ||
|
|
a02075b7be | ||
|
|
dd51b79600 | ||
|
|
5da383d5b8 | ||
|
|
46bcb54d61 | ||
|
|
769114b1d7 | ||
|
|
da7dea8759 | ||
|
|
89761efb75 | ||
|
|
82d719d8b3 | ||
|
|
0829e07098 | ||
|
|
b3fcff79da | ||
|
|
9da678809b | ||
|
|
d59331a168 | ||
|
|
a97d3c0d43 | ||
|
|
ab54645c93 | ||
|
|
fc4453e872 | ||
|
|
272cf8b0a2 | ||
|
|
87b80011bf | ||
|
|
e1bd1f43da | ||
|
|
a71d083205 | ||
|
|
2c780cef83 | ||
|
|
882042cdff | ||
|
|
30cf62234c | ||
|
|
70190aa1e6 | ||
|
|
0f672869ca | ||
|
|
97c2a1747d | ||
|
|
fd6bd298c2 | ||
|
|
007a8bd2a9 | ||
|
|
e9c7ba1cd6 | ||
|
|
bbe655c172 | ||
|
|
fcb1abde3c | ||
|
|
8586ffe34c | ||
|
|
9c9d47e99e | ||
|
|
6f64c51675 | ||
|
|
eaa3292d72 | ||
|
|
bbd4b2ceb5 | ||
|
|
4f8c7e23b5 | ||
|
|
466e2573c1 | ||
|
|
5330f1f23c | ||
|
|
638ee558e7 | ||
|
|
d08c574c7e | ||
|
|
4a5745080e | ||
|
|
1ba236b146 | ||
|
|
ffdb7d44f8 | ||
|
|
8ee4dd1527 | ||
|
|
3fadbc527b | ||
|
|
f47875ea51 | ||
|
|
606664d2fa | ||
|
|
02d78c3c53 | ||
|
|
7c66cceb96 | ||
|
|
38763f2378 | ||
|
|
50ef5bf048 | ||
|
|
faef7f4c47 | ||
|
|
b037f37bfe | ||
|
|
8e9aa45716 | ||
|
|
e95b1e838c | ||
|
|
4e8032b846 | ||
|
|
17cbd4277d | ||
|
|
fec5b421a9 | ||
|
|
1491c9adc3 | ||
|
|
b4a1af52f4 | ||
|
|
4313c396ec | ||
|
|
833a7bb07a | ||
|
|
dbb0125c6a | ||
|
|
7619cf69c2 | ||
|
|
66e10baeca | ||
|
|
c72d75e1f2 | ||
|
|
98b44044ee | ||
|
|
7b0f62330c | ||
|
|
245297028e | ||
|
|
d6cc55b487 | ||
|
|
fe84edad52 | ||
|
|
c9e26654c6 | ||
|
|
6a66878377 | ||
|
|
58481df86e | ||
|
|
54a3ccf2a2 | ||
|
|
3f351af597 | ||
|
|
4a20bb264a | ||
|
|
56a4af87d7 | ||
|
|
cc3d582b46 | ||
|
|
4a29d54f06 | ||
|
|
32f04b3d31 | ||
|
|
c40b6d1228 | ||
|
|
f4d7a1e68e | ||
|
|
a9af777eda | ||
|
|
ebfd9487f3 | ||
|
|
45e837a908 | ||
|
|
e57a2bd156 | ||
|
|
dec99e6c47 | ||
|
|
c6d889a063 | ||
|
|
ceb2132029 | ||
|
|
30447a4aee | ||
|
|
edecfc5093 | ||
|
|
9d34224c13 | ||
|
|
25206430e0 | ||
|
|
1aae7a417b | ||
|
|
f78ef067e1 | ||
|
|
121af0bcba | ||
|
|
0a4f814f69 | ||
|
|
9e9f48db95 | ||
|
|
4047431e4c | ||
|
|
565368e39d | ||
|
|
819b5291af | ||
|
|
ed451d6e55 | ||
|
|
1141f3bb9d | ||
|
|
f063ee874e | ||
|
|
8791093f6e | ||
|
|
b980721bbc | ||
|
|
bba00fe1fb | ||
|
|
ec4ab90270 | ||
|
|
7f116201ad | ||
|
|
26dc471d57 | ||
|
|
9bec9705e8 | ||
|
|
fade57d78e | ||
|
|
56fd4fa858 | ||
|
|
3f26eefdb2 | ||
|
|
0bfd547800 | ||
|
|
21a4a6e1d4 | ||
|
|
57f0aa72fe | ||
|
|
a0f7ac82fb | ||
|
|
6f088607c5 | ||
|
|
aa3d2684f4 | ||
|
|
6c740f014e | ||
|
|
2fd873886a | ||
|
|
3724a83786 | ||
|
|
6e6fbf6a34 | ||
|
|
4d4cc11452 | ||
|
|
b49ed3d4c4 | ||
|
|
cbbd6b1f7f | ||
|
|
654db2500a | ||
|
|
46ed4f787f | ||
|
|
d05e50ee42 | ||
|
|
2fcd898227 | ||
|
|
1e0db5c631 | ||
|
|
803f7dd285 | ||
|
|
5435a8983b | ||
|
|
cc9b0fc049 | ||
|
|
98b2b9fc32 | ||
|
|
c4ab8b95d3 | ||
|
|
e2eae9bbff | ||
|
|
523131f0e4 | ||
|
|
18b2d1e63e | ||
|
|
5dfc92cdec | ||
|
|
edde0fa815 | ||
|
|
8e9b524b55 | ||
|
|
367051d038 | ||
|
|
3075d2d9a6 | ||
|
|
88930e7dee | ||
|
|
de23625b5d | ||
|
|
74c506771c | ||
|
|
28ce8360ab | ||
|
|
361bffd0fd | ||
|
|
892da04fd1 | ||
|
|
d35aec7beb | ||
|
|
e9c8f1186d | ||
|
|
849e1ef338 | ||
|
|
5685650754 | ||
|
|
cf070edc6c | ||
|
|
f5b545bf28 | ||
|
|
4b6b5a92ed | ||
|
|
58b3dd2fe7 | ||
|
|
7922b180fa | ||
|
|
879edcbc32 | ||
|
|
0ed766d9a1 | ||
|
|
26048baa0b | ||
|
|
6da802c275 | ||
|
|
2602409a3b | ||
|
|
f00fa30661 | ||
|
|
aefbefe524 | ||
|
|
d316bde11d | ||
|
|
8d43195b13 | ||
|
|
ffe9a5a0ae | ||
|
|
6d0b46f7d8 | ||
|
|
648b4a445e | ||
|
|
2619d47e9a | ||
|
|
da8b84dc28 | ||
|
|
2c66783f98 | ||
|
|
2530844825 | ||
|
|
6663747180 | ||
|
|
f4e1c28d9d | ||
|
|
3dc3cecc40 | ||
|
|
557b1f4ab9 | ||
|
|
e409b3c1d7 | ||
|
|
7499870cdd | ||
|
|
a7ce497ec2 | ||
|
|
7ebbf46399 | ||
|
|
7b49041a46 | ||
|
|
f5b230d995 | ||
|
|
701c851be7 | ||
|
|
d922afa346 | ||
|
|
dbac966482 | ||
|
|
22809dea50 | ||
|
|
7ceb112f37 | ||
|
|
f97672fc23 | ||
|
|
87f391e6b3 | ||
|
|
acb8d033ed | ||
|
|
5591796ba8 | ||
|
|
2c9344abfc | ||
|
|
46f63365c8 | ||
|
|
f7070df4d3 | ||
|
|
125ec4bdbb | ||
|
|
8358e3db22 | ||
|
|
1eab6e50c6 | ||
|
|
71bee5716b | ||
|
|
af94019e2a | ||
|
|
6b124e2031 | ||
|
|
8da97103ad | ||
|
|
d5e252f8e0 | ||
|
|
78e07dc609 | ||
|
|
726f38967c | ||
|
|
1565cc3ebd | ||
|
|
df08b7960a | ||
|
|
30100b2a46 | ||
|
|
0f779159c5 | ||
|
|
fe626877c7 | ||
|
|
5430b1412f | ||
|
|
eaf0dbe50d | ||
|
|
c5e9aa0b59 | ||
|
|
fef4ca3def | ||
|
|
e743c4a88d | ||
|
|
b1e4fc13aa | ||
|
|
d26a1454c8 | ||
|
|
b560729873 | ||
|
|
41d516639d | ||
|
|
3328ac8206 | ||
|
|
e1fc1e9a13 | ||
|
|
6a8944a76e | ||
|
|
01395e3291 | ||
|
|
6c09bfa2a0 | ||
|
|
a678a464be | ||
|
|
f04c5d39f5 | ||
|
|
75f5cee757 | ||
|
|
554cca4604 | ||
|
|
95604c1355 | ||
|
|
1aea2dd159 | ||
|
|
e9ea783846 | ||
|
|
00477e356b | ||
|
|
d94d597d84 | ||
|
|
04f6c66e91 | ||
|
|
d3ce857c0e | ||
|
|
d486fa87ab | ||
|
|
c17383d40b | ||
|
|
80ac64c540 | ||
|
|
d8c0674865 | ||
|
|
1e4235c106 | ||
|
|
591cb82b90 | ||
|
|
de5b771270 | ||
|
|
2fb6deb115 | ||
|
|
035e271bbf | ||
|
|
e258f2e4e1 | ||
|
|
7db05f5d38 | ||
|
|
0f1651658b | ||
|
|
17ab162a11 | ||
|
|
4b0a5f022f | ||
|
|
b946bcad5b | ||
|
|
54d6cb7e96 | ||
|
|
1cca6538b7 | ||
|
|
3f596e8e8c | ||
|
|
335aa31bde | ||
|
|
f4a9aa1171 | ||
|
|
1d73820ac7 | ||
|
|
45e78b36bf | ||
|
|
af6316a8f6 | ||
|
|
27107326d5 | ||
|
|
e865301665 | ||
|
|
0b50a9bfe3 | ||
|
|
1d582410ab | ||
|
|
0a0e9f70cd | ||
|
|
9bbd9cf4ca | ||
|
|
e430baa819 | ||
|
|
1b43fc90d4 | ||
|
|
ab89de7e85 | ||
|
|
5d46a9ca18 | ||
|
|
32e7839cb8 | ||
|
|
7f48c3168b | ||
|
|
980352f073 | ||
|
|
595d967d60 | ||
|
|
b30b93df2c | ||
|
|
5c2b7e5c62 | ||
|
|
ee475ad250 | ||
|
|
b78ecddf56 | ||
|
|
b48e2102b3 | ||
|
|
303a80cdb5 | ||
|
|
b379816be6 | ||
|
|
391a24025f | ||
|
|
fbd2400e4a | ||
|
|
f5271952d0 | ||
|
|
90b9cefd4b | ||
|
|
2c3f9581cf | ||
|
|
4d40128896 | ||
|
|
23320f3cab | ||
|
|
9dcf8e650f | ||
|
|
fa8a096438 | ||
|
|
3171158e44 | ||
|
|
906490eeac | ||
|
|
f2333ae807 | ||
|
|
deec5361b7 | ||
|
|
1c79d8e0c0 | ||
|
|
dcec8aafb7 | ||
|
|
c0da5fd7a5 | ||
|
|
d308b47e97 | ||
|
|
676fd4c08e | ||
|
|
6263884192 | ||
|
|
14982f1095 | ||
|
|
e31e447c5e | ||
|
|
e74ffd5817 | ||
|
|
cc010b657a | ||
|
|
a8ef92b04c | ||
|
|
f30ffd85fb | ||
|
|
01d742fd88 | ||
|
|
ceb30ce23c | ||
|
|
ff860eb5d0 | ||
|
|
8290d41f4b | ||
|
|
09663d856d | ||
|
|
58d6e0b3d2 | ||
|
|
dadc81b0e9 | ||
|
|
deb12d4e94 | ||
|
|
a0c2fb1b8c | ||
|
|
fed9e2f361 | ||
|
|
e229eef365 | ||
|
|
272ca9a46b | ||
|
|
13e7099cc3 | ||
|
|
e3d8fca42a | ||
|
|
fedf3e2e6e | ||
|
|
2fbc070fd1 | ||
|
|
6e7ba7c593 | ||
|
|
f6ab4e1323 | ||
|
|
8e9fb37451 | ||
|
|
e52118c7d1 |
@@ -4570,11 +4570,10 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "2"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "2"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "3"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "3"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "4"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "4"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "5"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "5"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "6"],
|
[0, 0, 0, "Do not use any type assertions.", "6"]
|
||||||
[0, 0, 0, "Do not use any type assertions.", "7"]
|
|
||||||
],
|
],
|
||||||
"public/app/features/visualization/data-hover/DataHoverRows.tsx:5381": [
|
"public/app/features/visualization/data-hover/DataHoverRows.tsx:5381": [
|
||||||
[0, 0, 0, "Styles should be written using objects.", "0"]
|
[0, 0, 0, "Styles should be written using objects.", "0"]
|
||||||
@@ -4683,6 +4682,9 @@ exports[`better eslint`] = {
|
|||||||
"public/app/plugins/datasource/cloudwatch/utils/logsRetry.ts:5381": [
|
"public/app/plugins/datasource/cloudwatch/utils/logsRetry.ts:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
||||||
],
|
],
|
||||||
|
"public/app/plugins/datasource/dashboard/datasource.ts:5381": [
|
||||||
|
[0, 0, 0, "Do not use any type assertions.", "0"]
|
||||||
|
],
|
||||||
"public/app/plugins/datasource/dashboard/runSharedRequest.ts:5381": [
|
"public/app/plugins/datasource/dashboard/runSharedRequest.ts:5381": [
|
||||||
[0, 0, 0, "Do not use any type assertions.", "0"],
|
[0, 0, 0, "Do not use any type assertions.", "0"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "1"]
|
[0, 0, 0, "Do not use any type assertions.", "1"]
|
||||||
|
|||||||
@@ -1028,12 +1028,6 @@
|
|||||||
"count": 5
|
"count": 5
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/packages/grafana-ui/src/components/Splitter/Splitter.tsx": [
|
|
||||||
{
|
|
||||||
"message": "Do not use any type assertions.",
|
|
||||||
"count": 1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"/packages/grafana-ui/src/components/StatsPicker/StatsPicker.story.tsx": [
|
"/packages/grafana-ui/src/components/StatsPicker/StatsPicker.story.tsx": [
|
||||||
{
|
{
|
||||||
"message": "Unexpected any. Specify a different type.",
|
"message": "Unexpected any. Specify a different type.",
|
||||||
@@ -1564,12 +1558,6 @@
|
|||||||
"count": 1
|
"count": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/core/specs/time_series.test.ts": [
|
|
||||||
{
|
|
||||||
"message": "Unexpected any. Specify a different type.",
|
|
||||||
"count": 1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"/public/app/core/time_series2.ts": [
|
"/public/app/core/time_series2.ts": [
|
||||||
{
|
{
|
||||||
"message": "Unexpected any. Specify a different type.",
|
"message": "Unexpected any. Specify a different type.",
|
||||||
@@ -1790,12 +1778,6 @@
|
|||||||
"count": 1
|
"count": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/features/alerting/unified/AlertsFolderView.test.tsx": [
|
|
||||||
{
|
|
||||||
"message": "Unexpected any. Specify a different type.",
|
|
||||||
"count": 1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"/public/app/features/alerting/unified/AlertsFolderView.tsx": [
|
"/public/app/features/alerting/unified/AlertsFolderView.tsx": [
|
||||||
{
|
{
|
||||||
"message": "Styles should be written using objects.",
|
"message": "Styles should be written using objects.",
|
||||||
@@ -2930,12 +2912,6 @@
|
|||||||
"count": 1
|
"count": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/features/dashboard-scene/panel-edit/VizPanelManager.test.tsx": [
|
|
||||||
{
|
|
||||||
"message": "Unexpected any. Specify a different type.",
|
|
||||||
"count": 1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"/public/app/features/dashboard-scene/saving/SaveDashboardForm.tsx": [
|
"/public/app/features/dashboard-scene/saving/SaveDashboardForm.tsx": [
|
||||||
{
|
{
|
||||||
"message": "Use data-testid for E2E selectors instead of aria-label",
|
"message": "Use data-testid for E2E selectors instead of aria-label",
|
||||||
@@ -2954,12 +2930,6 @@
|
|||||||
"count": 1
|
"count": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/features/dashboard-scene/scene/DashboardScene.test.tsx": [
|
|
||||||
{
|
|
||||||
"message": "Unexpected any. Specify a different type.",
|
|
||||||
"count": 1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx": [
|
"/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx": [
|
||||||
{
|
{
|
||||||
"message": "Unexpected any. Specify a different type.",
|
"message": "Unexpected any. Specify a different type.",
|
||||||
@@ -2970,18 +2940,6 @@
|
|||||||
"count": 1
|
"count": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/features/dashboard-scene/scene/setDashboardPanelContext.test.ts": [
|
|
||||||
{
|
|
||||||
"message": "Unexpected any. Specify a different type.",
|
|
||||||
"count": 1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"/public/app/features/dashboard-scene/serialization/angularMigration.test.ts": [
|
|
||||||
{
|
|
||||||
"message": "Unexpected any. Specify a different type.",
|
|
||||||
"count": 2
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.test.ts": [
|
"/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.test.ts": [
|
||||||
{
|
{
|
||||||
"message": "Unexpected any. Specify a different type.",
|
"message": "Unexpected any. Specify a different type.",
|
||||||
@@ -3055,7 +3013,7 @@
|
|||||||
"/public/app/features/dashboard/components/DashExportModal/DashboardExporter.test.ts": [
|
"/public/app/features/dashboard/components/DashExportModal/DashboardExporter.test.ts": [
|
||||||
{
|
{
|
||||||
"message": "Unexpected any. Specify a different type.",
|
"message": "Unexpected any. Specify a different type.",
|
||||||
"count": 21
|
"count": 6
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/features/dashboard/components/DashExportModal/DashboardExporter.ts": [
|
"/public/app/features/dashboard/components/DashExportModal/DashboardExporter.ts": [
|
||||||
@@ -3441,7 +3399,7 @@
|
|||||||
"/public/app/features/dashboard/state/DashboardMigrator.test.ts": [
|
"/public/app/features/dashboard/state/DashboardMigrator.test.ts": [
|
||||||
{
|
{
|
||||||
"message": "Unexpected any. Specify a different type.",
|
"message": "Unexpected any. Specify a different type.",
|
||||||
"count": 19
|
"count": 12
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/features/dashboard/state/DashboardMigrator.ts": [
|
"/public/app/features/dashboard/state/DashboardMigrator.ts": [
|
||||||
@@ -3457,7 +3415,7 @@
|
|||||||
"/public/app/features/dashboard/state/DashboardModel.repeat.test.ts": [
|
"/public/app/features/dashboard/state/DashboardModel.repeat.test.ts": [
|
||||||
{
|
{
|
||||||
"message": "Unexpected any. Specify a different type.",
|
"message": "Unexpected any. Specify a different type.",
|
||||||
"count": 7
|
"count": 4
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/features/dashboard/state/DashboardModel.test.ts": [
|
"/public/app/features/dashboard/state/DashboardModel.test.ts": [
|
||||||
@@ -3507,7 +3465,7 @@
|
|||||||
"/public/app/features/dashboard/state/initDashboard.test.ts": [
|
"/public/app/features/dashboard/state/initDashboard.test.ts": [
|
||||||
{
|
{
|
||||||
"message": "Unexpected any. Specify a different type.",
|
"message": "Unexpected any. Specify a different type.",
|
||||||
"count": 2
|
"count": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/features/dashboard/utils/getPanelMenu.test.ts": [
|
"/public/app/features/dashboard/utils/getPanelMenu.test.ts": [
|
||||||
@@ -4643,7 +4601,7 @@
|
|||||||
"/public/app/features/plugins/tests/datasource_srv.test.ts": [
|
"/public/app/features/plugins/tests/datasource_srv.test.ts": [
|
||||||
{
|
{
|
||||||
"message": "Unexpected any. Specify a different type.",
|
"message": "Unexpected any. Specify a different type.",
|
||||||
"count": 4
|
"count": 3
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/features/plugins/utils.ts": [
|
"/public/app/features/plugins/utils.ts": [
|
||||||
@@ -4743,7 +4701,7 @@
|
|||||||
"/public/app/features/query/state/updateQueries.test.ts": [
|
"/public/app/features/query/state/updateQueries.test.ts": [
|
||||||
{
|
{
|
||||||
"message": "Unexpected any. Specify a different type.",
|
"message": "Unexpected any. Specify a different type.",
|
||||||
"count": 12
|
"count": 11
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/features/search/page/components/ActionRow.tsx": [
|
"/public/app/features/search/page/components/ActionRow.tsx": [
|
||||||
@@ -5103,7 +5061,7 @@
|
|||||||
"/public/app/features/transformers/prepareTimeSeries/prepareTimeSeries.test.ts": [
|
"/public/app/features/transformers/prepareTimeSeries/prepareTimeSeries.test.ts": [
|
||||||
{
|
{
|
||||||
"message": "Unexpected any. Specify a different type.",
|
"message": "Unexpected any. Specify a different type.",
|
||||||
"count": 2
|
"count": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/features/transformers/prepareTimeSeries/prepareTimeSeries.ts": [
|
"/public/app/features/transformers/prepareTimeSeries/prepareTimeSeries.ts": [
|
||||||
@@ -5266,12 +5224,6 @@
|
|||||||
"count": 1
|
"count": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/features/variables/query/QueryVariableEditor.test.tsx": [
|
|
||||||
{
|
|
||||||
"message": "Unexpected any. Specify a different type.",
|
|
||||||
"count": 1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"/public/app/features/variables/query/QueryVariableEditor.tsx": [
|
"/public/app/features/variables/query/QueryVariableEditor.tsx": [
|
||||||
{
|
{
|
||||||
"message": "Unexpected any. Specify a different type.",
|
"message": "Unexpected any. Specify a different type.",
|
||||||
@@ -5309,7 +5261,7 @@
|
|||||||
"/public/app/features/variables/query/queryRunners.test.ts": [
|
"/public/app/features/variables/query/queryRunners.test.ts": [
|
||||||
{
|
{
|
||||||
"message": "Unexpected any. Specify a different type.",
|
"message": "Unexpected any. Specify a different type.",
|
||||||
"count": 7
|
"count": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/features/variables/query/queryRunners.ts": [
|
"/public/app/features/variables/query/queryRunners.ts": [
|
||||||
@@ -5405,7 +5357,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"message": "Do not use any type assertions.",
|
"message": "Do not use any type assertions.",
|
||||||
"count": 2
|
"count": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/features/visualization/data-hover/DataHoverRows.tsx": [
|
"/public/app/features/visualization/data-hover/DataHoverRows.tsx": [
|
||||||
@@ -5590,6 +5542,12 @@
|
|||||||
"count": 1
|
"count": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"/public/app/plugins/datasource/dashboard/datasource.ts": [
|
||||||
|
{
|
||||||
|
"message": "Do not use any type assertions.",
|
||||||
|
"count": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
"/public/app/plugins/datasource/dashboard/runSharedRequest.ts": [
|
"/public/app/plugins/datasource/dashboard/runSharedRequest.ts": [
|
||||||
{
|
{
|
||||||
"message": "Do not use any type assertions.",
|
"message": "Do not use any type assertions.",
|
||||||
@@ -7104,46 +7062,6 @@
|
|||||||
"count": 2
|
"count": 2
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/public/app/plugins/panel/table-old/column_options.ts": [
|
|
||||||
{
|
|
||||||
"message": "Unexpected any. Specify a different type.",
|
|
||||||
"count": 22
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"/public/app/plugins/panel/table-old/editor.ts": [
|
|
||||||
{
|
|
||||||
"message": "Unexpected any. Specify a different type.",
|
|
||||||
"count": 9
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"/public/app/plugins/panel/table-old/module.ts": [
|
|
||||||
{
|
|
||||||
"message": "Unexpected any. Specify a different type.",
|
|
||||||
"count": 12
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"/public/app/plugins/panel/table-old/renderer.ts": [
|
|
||||||
{
|
|
||||||
"message": "Unexpected any. Specify a different type.",
|
|
||||||
"count": 12
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"message": "Do not use any type assertions.",
|
|
||||||
"count": 1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"/public/app/plugins/panel/table-old/transformers.ts": [
|
|
||||||
{
|
|
||||||
"message": "Unexpected any. Specify a different type.",
|
|
||||||
"count": 9
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"/public/app/plugins/panel/table-old/types.ts": [
|
|
||||||
{
|
|
||||||
"message": "Unexpected any. Specify a different type.",
|
|
||||||
"count": 13
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"/public/app/plugins/panel/table/TablePanel.tsx": [
|
"/public/app/plugins/panel/table/TablePanel.tsx": [
|
||||||
{
|
{
|
||||||
"message": "Styles should be written using objects.",
|
"message": "Styles should be written using objects.",
|
||||||
|
|||||||
@@ -1,13 +1,8 @@
|
|||||||
# Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.8. DO NOT EDIT.
|
# Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.9. DO NOT EDIT.
|
||||||
# All tools are designed to be build inside $GOBIN.
|
# All tools are designed to be build inside $GOBIN.
|
||||||
BINGO_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
|
BINGO_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
|
||||||
GOPATH ?= $(shell go env GOPATH)
|
GOPATH ?= $(shell go env GOPATH)
|
||||||
ifeq ($(OS),Windows_NT)
|
GOBIN ?= $(firstword $(subst :, ,${GOPATH}))/bin
|
||||||
PATHSEP := $(if $(COMSPEC),;,:)
|
|
||||||
GOBIN ?= $(firstword $(subst $(PATHSEP), ,$(subst \,/,${GOPATH})))/bin
|
|
||||||
else
|
|
||||||
GOBIN ?= $(firstword $(subst :, ,${GOPATH}))/bin
|
|
||||||
endif
|
|
||||||
GO ?= $(shell which go)
|
GO ?= $(shell which go)
|
||||||
|
|
||||||
# Below generated variables ensure that every time a tool under each variable is invoked, the correct version
|
# Below generated variables ensure that every time a tool under each variable is invoked, the correct version
|
||||||
@@ -40,11 +35,11 @@ $(DRONE): $(BINGO_DIR)/drone.mod
|
|||||||
@echo "(re)installing $(GOBIN)/drone-v1.5.0"
|
@echo "(re)installing $(GOBIN)/drone-v1.5.0"
|
||||||
@cd $(BINGO_DIR) && GOWORK=off CGO_ENABLED=0 $(GO) build -mod=mod -modfile=drone.mod -o=$(GOBIN)/drone-v1.5.0 "github.com/drone/drone-cli/drone"
|
@cd $(BINGO_DIR) && GOWORK=off CGO_ENABLED=0 $(GO) build -mod=mod -modfile=drone.mod -o=$(GOBIN)/drone-v1.5.0 "github.com/drone/drone-cli/drone"
|
||||||
|
|
||||||
GOLANGCI_LINT := $(GOBIN)/golangci-lint-v1.53.3
|
GOLANGCI_LINT := $(GOBIN)/golangci-lint-v1.64.2
|
||||||
$(GOLANGCI_LINT): $(BINGO_DIR)/golangci-lint.mod
|
$(GOLANGCI_LINT): $(BINGO_DIR)/golangci-lint.mod
|
||||||
@# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies.
|
@# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies.
|
||||||
@echo "(re)installing $(GOBIN)/golangci-lint-v1.53.3"
|
@echo "(re)installing $(GOBIN)/golangci-lint-v1.64.2"
|
||||||
@cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=golangci-lint.mod -o=$(GOBIN)/golangci-lint-v1.53.3 "github.com/golangci/golangci-lint/cmd/golangci-lint"
|
@cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=golangci-lint.mod -o=$(GOBIN)/golangci-lint-v1.64.2 "github.com/golangci/golangci-lint/cmd/golangci-lint"
|
||||||
|
|
||||||
JB := $(GOBIN)/jb-v0.5.1
|
JB := $(GOBIN)/jb-v0.5.1
|
||||||
$(JB): $(BINGO_DIR)/jb.mod
|
$(JB): $(BINGO_DIR)/jb.mod
|
||||||
@@ -58,15 +53,15 @@ $(LEFTHOOK): $(BINGO_DIR)/lefthook.mod
|
|||||||
@echo "(re)installing $(GOBIN)/lefthook-v1.4.8"
|
@echo "(re)installing $(GOBIN)/lefthook-v1.4.8"
|
||||||
@cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=lefthook.mod -o=$(GOBIN)/lefthook-v1.4.8 "github.com/evilmartians/lefthook"
|
@cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=lefthook.mod -o=$(GOBIN)/lefthook-v1.4.8 "github.com/evilmartians/lefthook"
|
||||||
|
|
||||||
SWAGGER := $(GOBIN)/swagger-v0.30.2
|
SWAGGER := $(GOBIN)/swagger-v0.30.6-0.20240310114303-db51e79a0e37
|
||||||
$(SWAGGER): $(BINGO_DIR)/swagger.mod
|
$(SWAGGER): $(BINGO_DIR)/swagger.mod
|
||||||
@# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies.
|
@# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies.
|
||||||
@echo "(re)installing $(GOBIN)/swagger-v0.30.2"
|
@echo "(re)installing $(GOBIN)/swagger-v0.30.6-0.20240310114303-db51e79a0e37"
|
||||||
@cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=swagger.mod -o=$(GOBIN)/swagger-v0.30.2 "github.com/go-swagger/go-swagger/cmd/swagger"
|
@cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=swagger.mod -o=$(GOBIN)/swagger-v0.30.6-0.20240310114303-db51e79a0e37 "github.com/go-swagger/go-swagger/cmd/swagger"
|
||||||
|
|
||||||
WIRE := $(GOBIN)/wire-v0.5.0
|
WIRE := $(GOBIN)/wire-v0.6.0
|
||||||
$(WIRE): $(BINGO_DIR)/wire.mod
|
$(WIRE): $(BINGO_DIR)/wire.mod
|
||||||
@# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies.
|
@# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies.
|
||||||
@echo "(re)installing $(GOBIN)/wire-v0.5.0"
|
@echo "(re)installing $(GOBIN)/wire-v0.6.0"
|
||||||
@cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=wire.mod -o=$(GOBIN)/wire-v0.5.0 "github.com/google/wire/cmd/wire"
|
@cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=wire.mod -o=$(GOBIN)/wire-v0.6.0 "github.com/google/wire/cmd/wire"
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT
|
module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT
|
||||||
|
|
||||||
go 1.20
|
go 1.24.3
|
||||||
|
|
||||||
require github.com/golangci/golangci-lint v1.53.3 // cmd/golangci-lint
|
require github.com/golangci/golangci-lint v1.64.2 // cmd/golangci-lint
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs=
|
4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs=
|
||||||
4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc=
|
4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc=
|
||||||
4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU=
|
4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU=
|
||||||
|
4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU=
|
||||||
|
4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0=
|
||||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
|
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
|
||||||
@@ -42,38 +44,84 @@ cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3f
|
|||||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||||
github.com/4meepo/tagalign v1.2.2 h1:kQeUTkFTaBRtd/7jm8OKJl9iHk0gAO+TDFPHGSna0aw=
|
github.com/4meepo/tagalign v1.2.2 h1:kQeUTkFTaBRtd/7jm8OKJl9iHk0gAO+TDFPHGSna0aw=
|
||||||
github.com/4meepo/tagalign v1.2.2/go.mod h1:Q9c1rYMZJc9dPRkbQPpcBNCLEmY2njbAsXhQOZFE2dE=
|
github.com/4meepo/tagalign v1.2.2/go.mod h1:Q9c1rYMZJc9dPRkbQPpcBNCLEmY2njbAsXhQOZFE2dE=
|
||||||
|
github.com/4meepo/tagalign v1.3.4 h1:P51VcvBnf04YkHzjfclN6BbsopfJR5rxs1n+5zHt+w8=
|
||||||
|
github.com/4meepo/tagalign v1.3.4/go.mod h1:M+pnkHH2vG8+qhE5bVc/zeP7HS/j910Fwa9TUSyZVI0=
|
||||||
|
github.com/4meepo/tagalign v1.4.1 h1:GYTu2FaPGOGb/xJalcqHeD4il5BiCywyEYZOA55P6J4=
|
||||||
|
github.com/4meepo/tagalign v1.4.1/go.mod h1:2H9Yu6sZ67hmuraFgfZkNcg5Py9Ch/Om9l2K/2W1qS4=
|
||||||
github.com/Abirdcfly/dupword v0.0.9 h1:MxprGjKq3yDBICXDgEEsyGirIXfMYXkLNT/agPsE1tk=
|
github.com/Abirdcfly/dupword v0.0.9 h1:MxprGjKq3yDBICXDgEEsyGirIXfMYXkLNT/agPsE1tk=
|
||||||
github.com/Abirdcfly/dupword v0.0.9/go.mod h1:PzmHVLLZ27MvHSzV7eFmMXSFArWXZPZmfuuziuUrf2g=
|
github.com/Abirdcfly/dupword v0.0.9/go.mod h1:PzmHVLLZ27MvHSzV7eFmMXSFArWXZPZmfuuziuUrf2g=
|
||||||
github.com/Abirdcfly/dupword v0.0.11 h1:z6v8rMETchZXUIuHxYNmlUAuKuB21PeaSymTed16wgU=
|
github.com/Abirdcfly/dupword v0.0.11 h1:z6v8rMETchZXUIuHxYNmlUAuKuB21PeaSymTed16wgU=
|
||||||
github.com/Abirdcfly/dupword v0.0.11/go.mod h1:wH8mVGuf3CP5fsBTkfWwwwKTjDnVVCxtU8d8rgeVYXA=
|
github.com/Abirdcfly/dupword v0.0.11/go.mod h1:wH8mVGuf3CP5fsBTkfWwwwKTjDnVVCxtU8d8rgeVYXA=
|
||||||
|
github.com/Abirdcfly/dupword v0.0.14 h1:3U4ulkc8EUo+CaT105/GJ1BQwtgyj6+VaBVbAX11Ba8=
|
||||||
|
github.com/Abirdcfly/dupword v0.0.14/go.mod h1:VKDAbxdY8YbKUByLGg8EETzYSuC4crm9WwI6Y3S0cLI=
|
||||||
|
github.com/Abirdcfly/dupword v0.1.3 h1:9Pa1NuAsZvpFPi9Pqkd93I7LIYRURj+A//dFd5tgBeE=
|
||||||
|
github.com/Abirdcfly/dupword v0.1.3/go.mod h1:8VbB2t7e10KRNdwTVoxdBaxla6avbhGzb8sCTygUMhw=
|
||||||
github.com/Antonboom/errname v0.1.7 h1:mBBDKvEYwPl4WFFNwec1CZO096G6vzK9vvDQzAwkako=
|
github.com/Antonboom/errname v0.1.7 h1:mBBDKvEYwPl4WFFNwec1CZO096G6vzK9vvDQzAwkako=
|
||||||
github.com/Antonboom/errname v0.1.7/go.mod h1:g0ONh16msHIPgJSGsecu1G/dcF2hlYR/0SddnIAGavU=
|
github.com/Antonboom/errname v0.1.7/go.mod h1:g0ONh16msHIPgJSGsecu1G/dcF2hlYR/0SddnIAGavU=
|
||||||
github.com/Antonboom/errname v0.1.9 h1:BZDX4r3l4TBZxZ2o2LNrlGxSHran4d1u4veZdoORTT4=
|
github.com/Antonboom/errname v0.1.9 h1:BZDX4r3l4TBZxZ2o2LNrlGxSHran4d1u4veZdoORTT4=
|
||||||
github.com/Antonboom/errname v0.1.9/go.mod h1:nLTcJzevREuAsgTbG85UsuiWpMpAqbKD1HNZ29OzE58=
|
github.com/Antonboom/errname v0.1.9/go.mod h1:nLTcJzevREuAsgTbG85UsuiWpMpAqbKD1HNZ29OzE58=
|
||||||
github.com/Antonboom/errname v0.1.10 h1:RZ7cYo/GuZqjr1nuJLNe8ZH+a+Jd9DaZzttWzak9Bls=
|
github.com/Antonboom/errname v0.1.10 h1:RZ7cYo/GuZqjr1nuJLNe8ZH+a+Jd9DaZzttWzak9Bls=
|
||||||
github.com/Antonboom/errname v0.1.10/go.mod h1:xLeiCIrvVNpUtsN0wxAh05bNIZpqE22/qDMnTBTttiA=
|
github.com/Antonboom/errname v0.1.10/go.mod h1:xLeiCIrvVNpUtsN0wxAh05bNIZpqE22/qDMnTBTttiA=
|
||||||
|
github.com/Antonboom/errname v0.1.13 h1:JHICqsewj/fNckzrfVSe+T33svwQxmjC+1ntDsHOVvM=
|
||||||
|
github.com/Antonboom/errname v0.1.13/go.mod h1:uWyefRYRN54lBg6HseYCFhs6Qjcy41Y3Jl/dVhA87Ns=
|
||||||
|
github.com/Antonboom/errname v1.0.0 h1:oJOOWR07vS1kRusl6YRSlat7HFnb3mSfMl6sDMRoTBA=
|
||||||
|
github.com/Antonboom/errname v1.0.0/go.mod h1:gMOBFzK/vrTiXN9Oh+HFs+e6Ndl0eTFbtsRTSRdXyGI=
|
||||||
github.com/Antonboom/nilnil v0.1.1 h1:PHhrh5ANKFWRBh7TdYmyyq2gyT2lotnvFvvFbylF81Q=
|
github.com/Antonboom/nilnil v0.1.1 h1:PHhrh5ANKFWRBh7TdYmyyq2gyT2lotnvFvvFbylF81Q=
|
||||||
github.com/Antonboom/nilnil v0.1.1/go.mod h1:L1jBqoWM7AOeTD+tSquifKSesRHs4ZdaxvZR+xdJEaI=
|
github.com/Antonboom/nilnil v0.1.1/go.mod h1:L1jBqoWM7AOeTD+tSquifKSesRHs4ZdaxvZR+xdJEaI=
|
||||||
github.com/Antonboom/nilnil v0.1.3 h1:6RTbx3d2mcEu3Zwq9TowQpQMVpP75zugwOtqY1RTtcE=
|
github.com/Antonboom/nilnil v0.1.3 h1:6RTbx3d2mcEu3Zwq9TowQpQMVpP75zugwOtqY1RTtcE=
|
||||||
github.com/Antonboom/nilnil v0.1.3/go.mod h1:iOov/7gRcXkeEU+EMGpBu2ORih3iyVEiWjeste1SJm8=
|
github.com/Antonboom/nilnil v0.1.3/go.mod h1:iOov/7gRcXkeEU+EMGpBu2ORih3iyVEiWjeste1SJm8=
|
||||||
github.com/Antonboom/nilnil v0.1.5 h1:X2JAdEVcbPaOom2TUa1FxZ3uyuUlex0XMLGYMemu6l0=
|
github.com/Antonboom/nilnil v0.1.5 h1:X2JAdEVcbPaOom2TUa1FxZ3uyuUlex0XMLGYMemu6l0=
|
||||||
github.com/Antonboom/nilnil v0.1.5/go.mod h1:I24toVuBKhfP5teihGWctrRiPbRKHwZIFOvc6v3HZXk=
|
github.com/Antonboom/nilnil v0.1.5/go.mod h1:I24toVuBKhfP5teihGWctrRiPbRKHwZIFOvc6v3HZXk=
|
||||||
|
github.com/Antonboom/nilnil v0.1.9 h1:eKFMejSxPSA9eLSensFmjW2XTgTwJMjZ8hUHtV4s/SQ=
|
||||||
|
github.com/Antonboom/nilnil v0.1.9/go.mod h1:iGe2rYwCq5/Me1khrysB4nwI7swQvjclR8/YRPl5ihQ=
|
||||||
|
github.com/Antonboom/nilnil v1.0.1 h1:C3Tkm0KUxgfO4Duk3PM+ztPncTFlOf0b2qadmS0s4xs=
|
||||||
|
github.com/Antonboom/nilnil v1.0.1/go.mod h1:CH7pW2JsRNFgEh8B2UaPZTEPhCMuFowP/e8Udp9Nnb0=
|
||||||
|
github.com/Antonboom/testifylint v1.3.1 h1:Uam4q1Q+2b6H7gvk9RQFw6jyVDdpzIirFOOrbs14eG4=
|
||||||
|
github.com/Antonboom/testifylint v1.3.1/go.mod h1:NV0hTlteCkViPW9mSR4wEMfwp+Hs1T3dY60bkvSfhpM=
|
||||||
|
github.com/Antonboom/testifylint v1.4.3 h1:ohMt6AHuHgttaQ1xb6SSnxCeK4/rnK7KKzbvs7DmEck=
|
||||||
|
github.com/Antonboom/testifylint v1.4.3/go.mod h1:+8Q9+AOLsz5ZiQiiYujJKs9mNz398+M6UgslP4qgJLA=
|
||||||
|
github.com/Antonboom/testifylint v1.5.2 h1:4s3Xhuv5AvdIgbd8wOOEeo0uZG7PbDKQyKY5lGoQazk=
|
||||||
|
github.com/Antonboom/testifylint v1.5.2/go.mod h1:vxy8VJ0bc6NavlYqjZfmp6EfqXMtBgQ4+mhCojwC1P8=
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
|
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
|
||||||
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||||
github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
|
github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
|
||||||
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||||
|
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
|
||||||
|
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
||||||
|
github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs=
|
||||||
|
github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
||||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||||
|
github.com/Crocmagnon/fatcontext v0.2.2 h1:OrFlsDdOj9hW/oBEJBNSuH7QWf+E9WPVHw+x52bXVbk=
|
||||||
|
github.com/Crocmagnon/fatcontext v0.2.2/go.mod h1:WSn/c/+MMNiD8Pri0ahRj0o9jVpeowzavOQplBJw6u0=
|
||||||
|
github.com/Crocmagnon/fatcontext v0.4.0 h1:4ykozu23YHA0JB6+thiuEv7iT6xq995qS1vcuWZq0tg=
|
||||||
|
github.com/Crocmagnon/fatcontext v0.4.0/go.mod h1:ZtWrXkgyfsYPzS6K3O88va6t2GEglG93vnII/F94WC0=
|
||||||
|
github.com/Crocmagnon/fatcontext v0.7.1 h1:SC/VIbRRZQeQWj/TcQBS6JmrXcfA+BU4OGSVUt54PjM=
|
||||||
|
github.com/Crocmagnon/fatcontext v0.7.1/go.mod h1:1wMvv3NXEBJucFGfwOJBxSVWcoIO6emV215SMkW9MFU=
|
||||||
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM=
|
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM=
|
||||||
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs=
|
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs=
|
||||||
github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 h1:+r1rSv4gvYn0wmRjC8X7IAzX8QezqtFV9m0MUHFJgts=
|
github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 h1:+r1rSv4gvYn0wmRjC8X7IAzX8QezqtFV9m0MUHFJgts=
|
||||||
github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0/go.mod h1:b3g59n2Y+T5xmcxJL+UEG2f8cQploZm1mR/v6BW0mU0=
|
github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0/go.mod h1:b3g59n2Y+T5xmcxJL+UEG2f8cQploZm1mR/v6BW0mU0=
|
||||||
|
github.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0 h1:sATXp1x6/axKxz2Gjxv8MALP0bXaNRfQinEwyfMcx8c=
|
||||||
|
github.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0/go.mod h1:Nl76DrGNJTA1KJ0LePKBw/vznBX1EHbAZX8mwjR82nI=
|
||||||
|
github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 h1:/fTUt5vmbkAcMBt4YQiuC23cV0kEsN1MVMNqeOW43cU=
|
||||||
|
github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0/go.mod h1:ONJg5sxcbsdQQ4pOW8TGdTidT2TMAUy/2Xhr8mrYaao=
|
||||||
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
|
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
|
||||||
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
|
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
|
||||||
|
github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0=
|
||||||
|
github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
|
||||||
|
github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0=
|
||||||
|
github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
|
||||||
github.com/OpenPeeDeeP/depguard v1.1.1 h1:TSUznLjvp/4IUP+OQ0t/4jF4QUyxIcVX8YnghZdunyA=
|
github.com/OpenPeeDeeP/depguard v1.1.1 h1:TSUznLjvp/4IUP+OQ0t/4jF4QUyxIcVX8YnghZdunyA=
|
||||||
github.com/OpenPeeDeeP/depguard v1.1.1/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc=
|
github.com/OpenPeeDeeP/depguard v1.1.1/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc=
|
||||||
github.com/OpenPeeDeeP/depguard/v2 v2.1.0 h1:aQl70G173h/GZYhWf36aE5H0KaujXfVMnn/f1kSDVYY=
|
github.com/OpenPeeDeeP/depguard/v2 v2.1.0 h1:aQl70G173h/GZYhWf36aE5H0KaujXfVMnn/f1kSDVYY=
|
||||||
github.com/OpenPeeDeeP/depguard/v2 v2.1.0/go.mod h1:PUBgk35fX4i7JDmwzlJwJ+GMe6NfO1723wmJMgPThNQ=
|
github.com/OpenPeeDeeP/depguard/v2 v2.1.0/go.mod h1:PUBgk35fX4i7JDmwzlJwJ+GMe6NfO1723wmJMgPThNQ=
|
||||||
|
github.com/OpenPeeDeeP/depguard/v2 v2.2.0 h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJPdp74zmpA=
|
||||||
|
github.com/OpenPeeDeeP/depguard/v2 v2.2.0/go.mod h1:CIzddKRvLBC4Au5aYP/i3nyaWQ+ClszLIuVocRiCYFQ=
|
||||||
|
github.com/alecthomas/go-check-sumtype v0.1.4 h1:WCvlB3l5Vq5dZQTFmodqL2g68uHiSwwlWcT5a2FGK0c=
|
||||||
|
github.com/alecthomas/go-check-sumtype v0.1.4/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ=
|
||||||
|
github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU=
|
||||||
|
github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E=
|
||||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||||
@@ -81,18 +129,28 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF
|
|||||||
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
|
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
|
||||||
github.com/alexkohler/nakedret/v2 v2.0.2 h1:qnXuZNvv3/AxkAb22q/sEsEpcA99YxLFACDtEw9TPxE=
|
github.com/alexkohler/nakedret/v2 v2.0.2 h1:qnXuZNvv3/AxkAb22q/sEsEpcA99YxLFACDtEw9TPxE=
|
||||||
github.com/alexkohler/nakedret/v2 v2.0.2/go.mod h1:2b8Gkk0GsOrqQv/gPWjNLDSKwG8I5moSXG1K4VIBcTQ=
|
github.com/alexkohler/nakedret/v2 v2.0.2/go.mod h1:2b8Gkk0GsOrqQv/gPWjNLDSKwG8I5moSXG1K4VIBcTQ=
|
||||||
|
github.com/alexkohler/nakedret/v2 v2.0.4 h1:yZuKmjqGi0pSmjGpOC016LtPJysIL0WEUiaXW5SUnNg=
|
||||||
|
github.com/alexkohler/nakedret/v2 v2.0.4/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU=
|
||||||
|
github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU=
|
||||||
|
github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU=
|
||||||
github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw=
|
github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw=
|
||||||
github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE=
|
github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE=
|
||||||
github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw=
|
github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw=
|
||||||
github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I=
|
github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I=
|
||||||
|
github.com/alingse/nilnesserr v0.1.2 h1:Yf8Iwm3z2hUUrP4muWfW83DF4nE3r1xZ26fGWUKCZlo=
|
||||||
|
github.com/alingse/nilnesserr v0.1.2/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg=
|
||||||
github.com/ashanbrown/forbidigo v1.4.0 h1:spdPbupaSqtWORq1Q4eHBoPBmHtwVyLKwaedbSLc5Sw=
|
github.com/ashanbrown/forbidigo v1.4.0 h1:spdPbupaSqtWORq1Q4eHBoPBmHtwVyLKwaedbSLc5Sw=
|
||||||
github.com/ashanbrown/forbidigo v1.4.0/go.mod h1:IvgwB5Y4fzqSAj/WVXKWigoTkB0dzI2FBbpKWuh7ph8=
|
github.com/ashanbrown/forbidigo v1.4.0/go.mod h1:IvgwB5Y4fzqSAj/WVXKWigoTkB0dzI2FBbpKWuh7ph8=
|
||||||
github.com/ashanbrown/forbidigo v1.5.1 h1:WXhzLjOlnuDYPYQo/eFlcFMi8X/kLfvWLYu6CSoebis=
|
github.com/ashanbrown/forbidigo v1.5.1 h1:WXhzLjOlnuDYPYQo/eFlcFMi8X/kLfvWLYu6CSoebis=
|
||||||
github.com/ashanbrown/forbidigo v1.5.1/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU=
|
github.com/ashanbrown/forbidigo v1.5.1/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU=
|
||||||
github.com/ashanbrown/forbidigo v1.5.3 h1:jfg+fkm/snMx+V9FBwsl1d340BV/99kZGv5jN9hBoXk=
|
github.com/ashanbrown/forbidigo v1.5.3 h1:jfg+fkm/snMx+V9FBwsl1d340BV/99kZGv5jN9hBoXk=
|
||||||
github.com/ashanbrown/forbidigo v1.5.3/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU=
|
github.com/ashanbrown/forbidigo v1.5.3/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU=
|
||||||
|
github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY=
|
||||||
|
github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU=
|
||||||
github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s=
|
github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s=
|
||||||
github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI=
|
github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI=
|
||||||
|
github.com/ashanbrown/makezero v1.2.0 h1:/2Lp1bypdmK9wDIq7uWBlDF1iMUpIIS4A+pF6C9IEUU=
|
||||||
|
github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8euNO0qjQMtGY4=
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||||
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||||
@@ -101,28 +159,60 @@ github.com/bkielbasa/cyclop v1.2.0 h1:7Jmnh0yL2DjKfw28p86YTd/B4lRGcNuu12sKE35sM7
|
|||||||
github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI=
|
github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI=
|
||||||
github.com/bkielbasa/cyclop v1.2.1 h1:AeF71HZDob1P2/pRm1so9cd1alZnrpyc4q2uP2l0gJY=
|
github.com/bkielbasa/cyclop v1.2.1 h1:AeF71HZDob1P2/pRm1so9cd1alZnrpyc4q2uP2l0gJY=
|
||||||
github.com/bkielbasa/cyclop v1.2.1/go.mod h1:K/dT/M0FPAiYjBgQGau7tz+3TMh4FWAEqlMhzFWCrgM=
|
github.com/bkielbasa/cyclop v1.2.1/go.mod h1:K/dT/M0FPAiYjBgQGau7tz+3TMh4FWAEqlMhzFWCrgM=
|
||||||
|
github.com/bkielbasa/cyclop v1.2.3 h1:faIVMIGDIANuGPWH031CZJTi2ymOQBULs9H21HSMa5w=
|
||||||
|
github.com/bkielbasa/cyclop v1.2.3/go.mod h1:kHTwA9Q0uZqOADdupvcFJQtp/ksSnytRMe8ztxG8Fuo=
|
||||||
github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M=
|
github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M=
|
||||||
github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k=
|
github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k=
|
||||||
github.com/bombsimon/wsl/v3 v3.4.0 h1:RkSxjT3tmlptwfgEgTgU+KYKLI35p/tviNXNXiL2aNU=
|
github.com/bombsimon/wsl/v3 v3.4.0 h1:RkSxjT3tmlptwfgEgTgU+KYKLI35p/tviNXNXiL2aNU=
|
||||||
github.com/bombsimon/wsl/v3 v3.4.0/go.mod h1:KkIB+TXkqy6MvK9BDZVbZxKNYsE1/oLRJbIFtf14qqo=
|
github.com/bombsimon/wsl/v3 v3.4.0/go.mod h1:KkIB+TXkqy6MvK9BDZVbZxKNYsE1/oLRJbIFtf14qqo=
|
||||||
|
github.com/bombsimon/wsl/v4 v4.2.1 h1:Cxg6u+XDWff75SIFFmNsqnIOgob+Q9hG6y/ioKbRFiM=
|
||||||
|
github.com/bombsimon/wsl/v4 v4.2.1/go.mod h1:Xu/kDxGZTofQcDGCtQe9KCzhHphIe0fDuyWTxER9Feo=
|
||||||
|
github.com/bombsimon/wsl/v4 v4.4.1 h1:jfUaCkN+aUpobrMO24zwyAMwMAV5eSziCkOKEauOLdw=
|
||||||
|
github.com/bombsimon/wsl/v4 v4.4.1/go.mod h1:Xu/kDxGZTofQcDGCtQe9KCzhHphIe0fDuyWTxER9Feo=
|
||||||
|
github.com/bombsimon/wsl/v4 v4.5.0 h1:iZRsEvDdyhd2La0FVi5k6tYehpOR/R7qIUjmKk7N74A=
|
||||||
|
github.com/bombsimon/wsl/v4 v4.5.0/go.mod h1:NOQ3aLF4nD7N5YPXMruR6ZXDOAqLoM0GEpLwTdvmOSc=
|
||||||
github.com/breml/bidichk v0.2.3 h1:qe6ggxpTfA8E75hdjWPZ581sY3a2lnl0IRxLQFelECI=
|
github.com/breml/bidichk v0.2.3 h1:qe6ggxpTfA8E75hdjWPZ581sY3a2lnl0IRxLQFelECI=
|
||||||
github.com/breml/bidichk v0.2.3/go.mod h1:8u2C6DnAy0g2cEq+k/A2+tr9O1s+vHGxWn0LTc70T2A=
|
github.com/breml/bidichk v0.2.3/go.mod h1:8u2C6DnAy0g2cEq+k/A2+tr9O1s+vHGxWn0LTc70T2A=
|
||||||
github.com/breml/bidichk v0.2.4 h1:i3yedFWWQ7YzjdZJHnPo9d/xURinSq3OM+gyM43K4/8=
|
github.com/breml/bidichk v0.2.4 h1:i3yedFWWQ7YzjdZJHnPo9d/xURinSq3OM+gyM43K4/8=
|
||||||
github.com/breml/bidichk v0.2.4/go.mod h1:7Zk0kRFt1LIZxtQdl9W9JwGAcLTTkOs+tN7wuEYGJ3s=
|
github.com/breml/bidichk v0.2.4/go.mod h1:7Zk0kRFt1LIZxtQdl9W9JwGAcLTTkOs+tN7wuEYGJ3s=
|
||||||
|
github.com/breml/bidichk v0.2.7 h1:dAkKQPLl/Qrk7hnP6P+E0xOodrq8Us7+U0o4UBOAlQY=
|
||||||
|
github.com/breml/bidichk v0.2.7/go.mod h1:YodjipAGI9fGcYM7II6wFvGhdMYsC5pHDlGzqvEW3tQ=
|
||||||
|
github.com/breml/bidichk v0.3.2 h1:xV4flJ9V5xWTqxL+/PMFF6dtJPvZLPsyixAoPe8BGJs=
|
||||||
|
github.com/breml/bidichk v0.3.2/go.mod h1:VzFLBxuYtT23z5+iVkamXO386OB+/sVwZOpIj6zXGos=
|
||||||
github.com/breml/errchkjson v0.3.0 h1:YdDqhfqMT+I1vIxPSas44P+9Z9HzJwCeAzjB8PxP1xw=
|
github.com/breml/errchkjson v0.3.0 h1:YdDqhfqMT+I1vIxPSas44P+9Z9HzJwCeAzjB8PxP1xw=
|
||||||
github.com/breml/errchkjson v0.3.0/go.mod h1:9Cogkyv9gcT8HREpzi3TiqBxCqDzo8awa92zSDFcofU=
|
github.com/breml/errchkjson v0.3.0/go.mod h1:9Cogkyv9gcT8HREpzi3TiqBxCqDzo8awa92zSDFcofU=
|
||||||
github.com/breml/errchkjson v0.3.1 h1:hlIeXuspTyt8Y/UmP5qy1JocGNR00KQHgfaNtRAjoxQ=
|
github.com/breml/errchkjson v0.3.1 h1:hlIeXuspTyt8Y/UmP5qy1JocGNR00KQHgfaNtRAjoxQ=
|
||||||
github.com/breml/errchkjson v0.3.1/go.mod h1:XroxrzKjdiutFyW3nWhw34VGg7kiMsDQox73yWCGI2U=
|
github.com/breml/errchkjson v0.3.1/go.mod h1:XroxrzKjdiutFyW3nWhw34VGg7kiMsDQox73yWCGI2U=
|
||||||
|
github.com/breml/errchkjson v0.3.6 h1:VLhVkqSBH96AvXEyclMR37rZslRrY2kcyq+31HCsVrA=
|
||||||
|
github.com/breml/errchkjson v0.3.6/go.mod h1:jhSDoFheAF2RSDOlCfhHO9KqhZgAYLyvHe7bRCX8f/U=
|
||||||
|
github.com/breml/errchkjson v0.4.0 h1:gftf6uWZMtIa/Is3XJgibewBm2ksAQSY/kABDNFTAdk=
|
||||||
|
github.com/breml/errchkjson v0.4.0/go.mod h1:AuBOSTHyLSaaAFlWsRSuRBIroCh3eh7ZHh5YeelDIk8=
|
||||||
github.com/butuzov/ireturn v0.1.1 h1:QvrO2QF2+/Cx1WA/vETCIYBKtRjc30vesdoPUNo1EbY=
|
github.com/butuzov/ireturn v0.1.1 h1:QvrO2QF2+/Cx1WA/vETCIYBKtRjc30vesdoPUNo1EbY=
|
||||||
github.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc=
|
github.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc=
|
||||||
github.com/butuzov/ireturn v0.2.0 h1:kCHi+YzC150GE98WFuZQu9yrTn6GEydO2AuPLbTgnO4=
|
github.com/butuzov/ireturn v0.2.0 h1:kCHi+YzC150GE98WFuZQu9yrTn6GEydO2AuPLbTgnO4=
|
||||||
github.com/butuzov/ireturn v0.2.0/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc=
|
github.com/butuzov/ireturn v0.2.0/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc=
|
||||||
|
github.com/butuzov/ireturn v0.3.0 h1:hTjMqWw3y5JC3kpnC5vXmFJAWI/m31jaCYQqzkS6PL0=
|
||||||
|
github.com/butuzov/ireturn v0.3.0/go.mod h1:A09nIiwiqzN/IoVo9ogpa0Hzi9fex1kd9PSD6edP5ZA=
|
||||||
|
github.com/butuzov/ireturn v0.3.1 h1:mFgbEI6m+9W8oP/oDdfA34dLisRFCj2G6o/yiI1yZrY=
|
||||||
|
github.com/butuzov/ireturn v0.3.1/go.mod h1:ZfRp+E7eJLC0NQmk1Nrm1LOrn/gQlOykv+cVPdiXH5M=
|
||||||
github.com/butuzov/mirror v1.1.0 h1:ZqX54gBVMXu78QLoiqdwpl2mgmoOJTk7s4p4o+0avZI=
|
github.com/butuzov/mirror v1.1.0 h1:ZqX54gBVMXu78QLoiqdwpl2mgmoOJTk7s4p4o+0avZI=
|
||||||
github.com/butuzov/mirror v1.1.0/go.mod h1:8Q0BdQU6rC6WILDiBM60DBfvV78OLJmMmixe7GF45AE=
|
github.com/butuzov/mirror v1.1.0/go.mod h1:8Q0BdQU6rC6WILDiBM60DBfvV78OLJmMmixe7GF45AE=
|
||||||
|
github.com/butuzov/mirror v1.2.0 h1:9YVK1qIjNspaqWutSv8gsge2e/Xpq1eqEkslEUHy5cs=
|
||||||
|
github.com/butuzov/mirror v1.2.0/go.mod h1:DqZZDtzm42wIAIyHXeN8W/qb1EPlb9Qn/if9icBOpdQ=
|
||||||
|
github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc=
|
||||||
|
github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI=
|
||||||
|
github.com/catenacyber/perfsprint v0.7.1 h1:PGW5G/Kxn+YrN04cRAZKC+ZuvlVwolYMrIyyTJ/rMmc=
|
||||||
|
github.com/catenacyber/perfsprint v0.7.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50=
|
||||||
|
github.com/catenacyber/perfsprint v0.8.1 h1:bGOHuzHe0IkoGeY831RW4aSlt1lPRd3WRAScSWOaV7E=
|
||||||
|
github.com/catenacyber/perfsprint v0.8.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50=
|
||||||
|
github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg=
|
||||||
|
github.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60=
|
||||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||||
github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
|
github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
|
||||||
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||||
|
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
||||||
|
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||||
github.com/charithe/durationcheck v0.0.9 h1:mPP4ucLrf/rKZiIG/a9IPXHGlh8p4CzgpyTy6EEutYk=
|
github.com/charithe/durationcheck v0.0.9 h1:mPP4ucLrf/rKZiIG/a9IPXHGlh8p4CzgpyTy6EEutYk=
|
||||||
github.com/charithe/durationcheck v0.0.9/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg=
|
github.com/charithe/durationcheck v0.0.9/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg=
|
||||||
github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4=
|
github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4=
|
||||||
@@ -131,25 +221,40 @@ github.com/chavacava/garif v0.0.0-20221024190013-b3ef35877348 h1:cy5GCEZLUCshCGC
|
|||||||
github.com/chavacava/garif v0.0.0-20221024190013-b3ef35877348/go.mod h1:f/miWtG3SSuTxKsNK3o58H1xl+XV6ZIfbC6p7lPPB8U=
|
github.com/chavacava/garif v0.0.0-20221024190013-b3ef35877348/go.mod h1:f/miWtG3SSuTxKsNK3o58H1xl+XV6ZIfbC6p7lPPB8U=
|
||||||
github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8 h1:W9o46d2kbNL06lq7UNDPV0zYLzkrde/bjIqO02eoll0=
|
github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8 h1:W9o46d2kbNL06lq7UNDPV0zYLzkrde/bjIqO02eoll0=
|
||||||
github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8/go.mod h1:gakxgyXaaPkxvLw1XQxNGK4I37ys9iBRzNUx/B7pUCo=
|
github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8/go.mod h1:gakxgyXaaPkxvLw1XQxNGK4I37ys9iBRzNUx/B7pUCo=
|
||||||
|
github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc=
|
||||||
|
github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww=
|
||||||
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
||||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||||
|
github.com/ckaznocha/intrange v0.1.2 h1:3Y4JAxcMntgb/wABQ6e8Q8leMd26JbX2790lIss9MTI=
|
||||||
|
github.com/ckaznocha/intrange v0.1.2/go.mod h1:RWffCw/vKBwHeOEwWdCikAtY0q4gGt8VhJZEEA5n+RE=
|
||||||
|
github.com/ckaznocha/intrange v0.3.0 h1:VqnxtK32pxgkhJgYQEeOArVidIPg+ahLP7WBOXZd5ZY=
|
||||||
|
github.com/ckaznocha/intrange v0.3.0/go.mod h1:+I/o2d2A1FBHgGELbGxzIcyd3/9l9DuwjM8FsbSS3Lo=
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||||
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||||
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||||
github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo=
|
github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo=
|
||||||
github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc=
|
github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc=
|
||||||
|
github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs=
|
||||||
|
github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88=
|
||||||
github.com/daixiang0/gci v0.9.1 h1:jBrwBmBZTDsGsXiaCTLIe9diotp1X4X64zodFrh7l+c=
|
github.com/daixiang0/gci v0.9.1 h1:jBrwBmBZTDsGsXiaCTLIe9diotp1X4X64zodFrh7l+c=
|
||||||
github.com/daixiang0/gci v0.9.1/go.mod h1:EpVfrztufwVgQRXjnX4zuNinEpLj5OmMjtu/+MB0V0c=
|
github.com/daixiang0/gci v0.9.1/go.mod h1:EpVfrztufwVgQRXjnX4zuNinEpLj5OmMjtu/+MB0V0c=
|
||||||
github.com/daixiang0/gci v0.10.1 h1:eheNA3ljF6SxnPD/vE4lCBusVHmV3Rs3dkKvFrJ7MR0=
|
github.com/daixiang0/gci v0.10.1 h1:eheNA3ljF6SxnPD/vE4lCBusVHmV3Rs3dkKvFrJ7MR0=
|
||||||
github.com/daixiang0/gci v0.10.1/go.mod h1:xtHP9N7AHdNvtRNfcx9gwTDfw7FRJx4bZUsiEfiNNAI=
|
github.com/daixiang0/gci v0.10.1/go.mod h1:xtHP9N7AHdNvtRNfcx9gwTDfw7FRJx4bZUsiEfiNNAI=
|
||||||
|
github.com/daixiang0/gci v0.13.4 h1:61UGkmpoAcxHM2hhNkZEf5SzwQtWJXTSws7jaPyqwlw=
|
||||||
|
github.com/daixiang0/gci v0.13.4/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk=
|
||||||
|
github.com/daixiang0/gci v0.13.5 h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c=
|
||||||
|
github.com/daixiang0/gci v0.13.5/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/denis-tingaikin/go-header v0.4.3 h1:tEaZKAlqql6SKCY++utLmkPLd6K8IBM20Ha7UVm+mtU=
|
github.com/denis-tingaikin/go-header v0.4.3 h1:tEaZKAlqql6SKCY++utLmkPLd6K8IBM20Ha7UVm+mtU=
|
||||||
github.com/denis-tingaikin/go-header v0.4.3/go.mod h1:0wOCWuN71D5qIgE2nz9KrKmuYBAC2Mra5RassOIQ2/c=
|
github.com/denis-tingaikin/go-header v0.4.3/go.mod h1:0wOCWuN71D5qIgE2nz9KrKmuYBAC2Mra5RassOIQ2/c=
|
||||||
|
github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8=
|
||||||
|
github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||||
@@ -160,24 +265,40 @@ github.com/esimonov/ifshort v1.0.4 h1:6SID4yGWfRae/M7hkVDVVyppy8q/v9OuxNdmjLQStB
|
|||||||
github.com/esimonov/ifshort v1.0.4/go.mod h1:Pe8zjlRrJ80+q2CxHLfEOfTwxCZ4O+MuhcHcfgNWTk0=
|
github.com/esimonov/ifshort v1.0.4/go.mod h1:Pe8zjlRrJ80+q2CxHLfEOfTwxCZ4O+MuhcHcfgNWTk0=
|
||||||
github.com/ettle/strcase v0.1.1 h1:htFueZyVeE1XNnMEfbqp5r67qAN/4r6ya1ysq8Q+Zcw=
|
github.com/ettle/strcase v0.1.1 h1:htFueZyVeE1XNnMEfbqp5r67qAN/4r6ya1ysq8Q+Zcw=
|
||||||
github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY=
|
github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY=
|
||||||
|
github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q=
|
||||||
|
github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A=
|
||||||
github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w=
|
github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w=
|
||||||
github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg=
|
github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg=
|
||||||
github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs=
|
github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs=
|
||||||
github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
|
github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
|
||||||
|
github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
|
||||||
|
github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
|
||||||
|
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
|
||||||
|
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
|
||||||
github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
|
github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
|
||||||
github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
|
github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
|
||||||
github.com/firefart/nonamedreturns v1.0.4 h1:abzI1p7mAEPYuR4A+VLKn4eNDOycjYo2phmY9sfv40Y=
|
github.com/firefart/nonamedreturns v1.0.4 h1:abzI1p7mAEPYuR4A+VLKn4eNDOycjYo2phmY9sfv40Y=
|
||||||
github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI=
|
github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI=
|
||||||
|
github.com/firefart/nonamedreturns v1.0.5 h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6tUTYIdRA=
|
||||||
|
github.com/firefart/nonamedreturns v1.0.5/go.mod h1:gHJjDqhGM4WyPt639SOZs+G89Ko7QKH5R5BhnO6xJhw=
|
||||||
github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI=
|
github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI=
|
||||||
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
|
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
|
||||||
github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo=
|
github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo=
|
||||||
github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA=
|
github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA=
|
||||||
|
github.com/ghostiam/protogetter v0.3.6 h1:R7qEWaSgFCsy20yYHNIJsU9ZOb8TziSRRxuAOTVKeOk=
|
||||||
|
github.com/ghostiam/protogetter v0.3.6/go.mod h1:7lpeDnEJ1ZjL/YtyoN99ljO4z0pd3H0d18/t2dPBxHw=
|
||||||
|
github.com/ghostiam/protogetter v0.3.9 h1:j+zlLLWzqLay22Cz/aYwTHKQ88GE2DQ6GkWSYFOI4lQ=
|
||||||
|
github.com/ghostiam/protogetter v0.3.9/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA=
|
||||||
github.com/go-critic/go-critic v0.6.7 h1:1evPrElnLQ2LZtJfmNDzlieDhjnq36SLgNzisx06oPM=
|
github.com/go-critic/go-critic v0.6.7 h1:1evPrElnLQ2LZtJfmNDzlieDhjnq36SLgNzisx06oPM=
|
||||||
github.com/go-critic/go-critic v0.6.7/go.mod h1:fYZUijFdcnxgx6wPjQA2QEjIRaNCT0gO8bhexy6/QmE=
|
github.com/go-critic/go-critic v0.6.7/go.mod h1:fYZUijFdcnxgx6wPjQA2QEjIRaNCT0gO8bhexy6/QmE=
|
||||||
github.com/go-critic/go-critic v0.7.0 h1:tqbKzB8pqi0NsRZ+1pyU4aweAF7A7QN0Pi4Q02+rYnQ=
|
github.com/go-critic/go-critic v0.7.0 h1:tqbKzB8pqi0NsRZ+1pyU4aweAF7A7QN0Pi4Q02+rYnQ=
|
||||||
github.com/go-critic/go-critic v0.7.0/go.mod h1:moYzd7GdVXE2C2hYTwd7h0CPcqlUeclsyBRwMa38v64=
|
github.com/go-critic/go-critic v0.7.0/go.mod h1:moYzd7GdVXE2C2hYTwd7h0CPcqlUeclsyBRwMa38v64=
|
||||||
github.com/go-critic/go-critic v0.8.1 h1:16omCF1gN3gTzt4j4J6fKI/HnRojhEp+Eks6EuKw3vw=
|
github.com/go-critic/go-critic v0.8.1 h1:16omCF1gN3gTzt4j4J6fKI/HnRojhEp+Eks6EuKw3vw=
|
||||||
github.com/go-critic/go-critic v0.8.1/go.mod h1:kpzXl09SIJX1cr9TB/g/sAG+eFEl7ZS9f9cqvZtyNl0=
|
github.com/go-critic/go-critic v0.8.1/go.mod h1:kpzXl09SIJX1cr9TB/g/sAG+eFEl7ZS9f9cqvZtyNl0=
|
||||||
|
github.com/go-critic/go-critic v0.11.4 h1:O7kGOCx0NDIni4czrkRIXTnit0mkyKOCePh3My6OyEU=
|
||||||
|
github.com/go-critic/go-critic v0.11.4/go.mod h1:2QAdo4iuLik5S9YG0rT4wcZ8QxwHYkrr6/2MWAiv/vc=
|
||||||
|
github.com/go-critic/go-critic v0.11.5 h1:TkDTOn5v7EEngMxu8KbuFqFR43USaaH8XRJLz1jhVYA=
|
||||||
|
github.com/go-critic/go-critic v0.11.5/go.mod h1:wu6U7ny9PiaHaZHcvMDmdysMqvDem162Rh3zWTrqk8M=
|
||||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
@@ -198,6 +319,8 @@ github.com/go-toolsmith/astequal v1.0.2/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/
|
|||||||
github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4=
|
github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4=
|
||||||
github.com/go-toolsmith/astequal v1.1.0 h1:kHKm1AWqClYn15R0K1KKE4RG614D46n+nqUQ06E1dTw=
|
github.com/go-toolsmith/astequal v1.1.0 h1:kHKm1AWqClYn15R0K1KKE4RG614D46n+nqUQ06E1dTw=
|
||||||
github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ=
|
github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ=
|
||||||
|
github.com/go-toolsmith/astequal v1.2.0 h1:3Fs3CYZ1k9Vo4FzFhwwewC3CHISHDnVUPC4x0bI2+Cw=
|
||||||
|
github.com/go-toolsmith/astequal v1.2.0/go.mod h1:c8NZ3+kSFtFY/8lPso4v8LuJjdJiUFVnSuU3s0qrrDY=
|
||||||
github.com/go-toolsmith/astfmt v1.1.0 h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco=
|
github.com/go-toolsmith/astfmt v1.1.0 h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco=
|
||||||
github.com/go-toolsmith/astfmt v1.1.0/go.mod h1:OrcLlRwu0CuiIBp/8b5PYF9ktGVZUjlNMV634mhwuQ4=
|
github.com/go-toolsmith/astfmt v1.1.0/go.mod h1:OrcLlRwu0CuiIBp/8b5PYF9ktGVZUjlNMV634mhwuQ4=
|
||||||
github.com/go-toolsmith/astp v1.1.0 h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA=
|
github.com/go-toolsmith/astp v1.1.0 h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA=
|
||||||
@@ -207,12 +330,20 @@ github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQi
|
|||||||
github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ=
|
github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ=
|
||||||
github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus=
|
github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus=
|
||||||
github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig=
|
github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig=
|
||||||
|
github.com/go-viper/mapstructure/v2 v2.0.0 h1:dhn8MZ1gZ0mzeodTG3jt5Vj/o87xZKuNAprG2mQfMfc=
|
||||||
|
github.com/go-viper/mapstructure/v2 v2.0.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
|
||||||
|
github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss=
|
||||||
|
github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
|
||||||
github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U=
|
github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U=
|
||||||
github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM=
|
github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM=
|
||||||
|
github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY=
|
||||||
|
github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM=
|
||||||
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
|
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
|
||||||
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
|
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
|
||||||
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
|
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
|
||||||
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
|
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
|
||||||
|
github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E=
|
||||||
|
github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0=
|
||||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
@@ -242,30 +373,56 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw
|
|||||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||||
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
|
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
|
||||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||||
|
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
|
||||||
|
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||||
github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5DB4XJkc6BU31uODLD1o1gKvZmD0=
|
github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5DB4XJkc6BU31uODLD1o1gKvZmD0=
|
||||||
github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4=
|
github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4=
|
||||||
github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM=
|
github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM=
|
||||||
github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk=
|
github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk=
|
||||||
github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6J5HIP8ZtyMdiDscjMLfRBSPuzVVeo=
|
github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6J5HIP8ZtyMdiDscjMLfRBSPuzVVeo=
|
||||||
github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ=
|
github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ=
|
||||||
|
github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUPPyAKJuzv8pEJU=
|
||||||
|
github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s=
|
||||||
github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 h1:amWTbTGqOZ71ruzrdA+Nx5WA3tV1N0goTspwmKCQvBY=
|
github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 h1:amWTbTGqOZ71ruzrdA+Nx5WA3tV1N0goTspwmKCQvBY=
|
||||||
github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2/go.mod h1:9wOXstvyDRshQ9LggQuzBCGysxs3b6Uo/1MvYCR2NMs=
|
github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2/go.mod h1:9wOXstvyDRshQ9LggQuzBCGysxs3b6Uo/1MvYCR2NMs=
|
||||||
|
github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e h1:ULcKCDV1LOZPFxGZaA6TlQbiM3J2GCPnkx/bGF6sX/g=
|
||||||
|
github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e/go.mod h1:Pm5KhLPA8gSnQwrQ6ukebRcapGb/BG9iUkdaiCcGHJM=
|
||||||
|
github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE=
|
||||||
|
github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY=
|
||||||
github.com/golangci/golangci-lint v1.51.2 h1:yIcsT1X9ZYHdSpeWXRT1ORC/FPGSqDHbHsu9uk4FK7M=
|
github.com/golangci/golangci-lint v1.51.2 h1:yIcsT1X9ZYHdSpeWXRT1ORC/FPGSqDHbHsu9uk4FK7M=
|
||||||
github.com/golangci/golangci-lint v1.51.2/go.mod h1:KH9Q7/3glwpYSknxUgUyLlAv46A8fsSKo1hH2wDvkr8=
|
github.com/golangci/golangci-lint v1.51.2/go.mod h1:KH9Q7/3glwpYSknxUgUyLlAv46A8fsSKo1hH2wDvkr8=
|
||||||
github.com/golangci/golangci-lint v1.52.2 h1:FrPElUUI5rrHXg1mQ7KxI1MXPAw5lBVskiz7U7a8a1A=
|
github.com/golangci/golangci-lint v1.52.2 h1:FrPElUUI5rrHXg1mQ7KxI1MXPAw5lBVskiz7U7a8a1A=
|
||||||
github.com/golangci/golangci-lint v1.52.2/go.mod h1:S5fhC5sHM5kE22/HcATKd1XLWQxX+y7mHj8B5H91Q/0=
|
github.com/golangci/golangci-lint v1.52.2/go.mod h1:S5fhC5sHM5kE22/HcATKd1XLWQxX+y7mHj8B5H91Q/0=
|
||||||
github.com/golangci/golangci-lint v1.53.3 h1:CUcRafczT4t1F+mvdkUm6KuOpxUZTl0yWN/rSU6sSMo=
|
github.com/golangci/golangci-lint v1.53.3 h1:CUcRafczT4t1F+mvdkUm6KuOpxUZTl0yWN/rSU6sSMo=
|
||||||
github.com/golangci/golangci-lint v1.53.3/go.mod h1:W4Gg3ONq6p3Jl+0s/h9Gr0j7yEgHJWWZO2bHl2tBUXM=
|
github.com/golangci/golangci-lint v1.53.3/go.mod h1:W4Gg3ONq6p3Jl+0s/h9Gr0j7yEgHJWWZO2bHl2tBUXM=
|
||||||
|
github.com/golangci/golangci-lint v1.59.1 h1:CRRLu1JbhK5avLABFJ/OHVSQ0Ie5c4ulsOId1h3TTks=
|
||||||
|
github.com/golangci/golangci-lint v1.59.1/go.mod h1:jX5Oif4C7P0j9++YB2MMJmoNrb01NJ8ITqKWNLewThg=
|
||||||
|
github.com/golangci/golangci-lint v1.60.1 h1:DRKNqNTQRLBJZ1il5u4fvgLQCjQc7QFs0DbhksJtVJE=
|
||||||
|
github.com/golangci/golangci-lint v1.60.1/go.mod h1:jDIPN1rYaIA+ijp9OZcUmUCoQOtZ76pOlFbi15FlLJY=
|
||||||
|
github.com/golangci/golangci-lint v1.64.2 h1:+os/Y7xzFKmVfYRzYayEpVItp/8eTR4VDODaCgcGOHA=
|
||||||
|
github.com/golangci/golangci-lint v1.64.2/go.mod h1:NTiG5Pmn7rkG6TuTPLcyT18Qbfijzcwir4NRiOoVcpw=
|
||||||
github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA=
|
github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA=
|
||||||
github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg=
|
github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg=
|
||||||
github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA=
|
github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA=
|
||||||
github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o=
|
github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o=
|
||||||
github.com/golangci/misspell v0.4.0 h1:KtVB/hTK4bbL/S6bs64rYyk8adjmh1BygbBiaAiX+a0=
|
github.com/golangci/misspell v0.4.0 h1:KtVB/hTK4bbL/S6bs64rYyk8adjmh1BygbBiaAiX+a0=
|
||||||
github.com/golangci/misspell v0.4.0/go.mod h1:W6O/bwV6lGDxUCChm2ykw9NQdd5bYd1Xkjo88UcWyJc=
|
github.com/golangci/misspell v0.4.0/go.mod h1:W6O/bwV6lGDxUCChm2ykw9NQdd5bYd1Xkjo88UcWyJc=
|
||||||
|
github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs=
|
||||||
|
github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo=
|
||||||
|
github.com/golangci/modinfo v0.3.4 h1:oU5huX3fbxqQXdfspamej74DFX0kyGLkw1ppvXoJ8GA=
|
||||||
|
github.com/golangci/modinfo v0.3.4/go.mod h1:wytF1M5xl9u0ij8YSvhkEVPP3M5Mc7XLl1pxH3B2aUM=
|
||||||
|
github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c=
|
||||||
|
github.com/golangci/plugin-module-register v0.1.1/go.mod h1:TTpqoB6KkwOJMV8u7+NyXMrkwwESJLOkfl9TxR1DGFc=
|
||||||
github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 h1:DIPQnGy2Gv2FSA4B/hh8Q7xx3B7AIDk3DAMeHclH1vQ=
|
github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 h1:DIPQnGy2Gv2FSA4B/hh8Q7xx3B7AIDk3DAMeHclH1vQ=
|
||||||
github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6/go.mod h1:0AKcRCkMoKvUvlf89F6O7H2LYdhr1zBh736mBItOdRs=
|
github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6/go.mod h1:0AKcRCkMoKvUvlf89F6O7H2LYdhr1zBh736mBItOdRs=
|
||||||
|
github.com/golangci/revgrep v0.5.3 h1:3tL7c1XBMtWHHqVpS5ChmiAAoe4PF/d5+ULzV9sLAzs=
|
||||||
|
github.com/golangci/revgrep v0.5.3/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k=
|
||||||
|
github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s=
|
||||||
|
github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k=
|
||||||
github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys=
|
github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys=
|
||||||
github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ=
|
github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ=
|
||||||
|
github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs=
|
||||||
|
github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed/go.mod h1:XLXN8bNw4CGRPaqgl3bv/lhz7bsGPh4/xSaMTbo2vkQ=
|
||||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||||
@@ -282,6 +439,8 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
|||||||
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
|
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||||
|
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||||
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
|
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
|
||||||
@@ -305,6 +464,8 @@ github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 h1:9alfqbr
|
|||||||
github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=
|
github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=
|
||||||
github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601 h1:mrEEilTAUmaAORhssPPkxj84TsHrPMLBGW2Z4SoTxm8=
|
github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601 h1:mrEEilTAUmaAORhssPPkxj84TsHrPMLBGW2Z4SoTxm8=
|
||||||
github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=
|
github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=
|
||||||
|
github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s=
|
||||||
|
github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=
|
||||||
github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE=
|
github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE=
|
||||||
github.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw=
|
github.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw=
|
||||||
github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk=
|
github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk=
|
||||||
@@ -320,13 +481,19 @@ github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW
|
|||||||
github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M=
|
github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M=
|
||||||
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
|
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
|
||||||
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||||
|
github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo=
|
||||||
|
github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw=
|
||||||
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
|
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
|
||||||
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
|
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
|
||||||
github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||||
github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
|
github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
|
||||||
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||||
|
github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
|
||||||
|
github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
|
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
|
||||||
|
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
|
||||||
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
||||||
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
||||||
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
|
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
|
||||||
@@ -339,10 +506,18 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2
|
|||||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||||
github.com/jgautheron/goconst v1.5.1 h1:HxVbL1MhydKs8R8n/HE5NPvzfaYmQJA3o879lE4+WcM=
|
github.com/jgautheron/goconst v1.5.1 h1:HxVbL1MhydKs8R8n/HE5NPvzfaYmQJA3o879lE4+WcM=
|
||||||
github.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4=
|
github.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4=
|
||||||
|
github.com/jgautheron/goconst v1.7.1 h1:VpdAG7Ca7yvvJk5n8dMwQhfEZJh95kl/Hl9S1OI5Jkk=
|
||||||
|
github.com/jgautheron/goconst v1.7.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4=
|
||||||
github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs=
|
github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs=
|
||||||
github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c=
|
github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c=
|
||||||
github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48=
|
github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48=
|
||||||
github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0=
|
github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0=
|
||||||
|
github.com/jjti/go-spancheck v0.6.1 h1:ZK/wE5Kyi1VX3PJpUO2oEgeoI4FWOUm7Shb2Gbv5obI=
|
||||||
|
github.com/jjti/go-spancheck v0.6.1/go.mod h1:vF1QkOO159prdo6mHRxak2CpzDpHAfKiPUDP/NeRnX8=
|
||||||
|
github.com/jjti/go-spancheck v0.6.2 h1:iYtoxqPMzHUPp7St+5yA8+cONdyXD3ug6KK15n7Pklk=
|
||||||
|
github.com/jjti/go-spancheck v0.6.2/go.mod h1:+X7lvIrR5ZdUTkxFYqzJ0abr8Sb5LOo80uOhWNqIrYA=
|
||||||
|
github.com/jjti/go-spancheck v0.6.4 h1:Tl7gQpYf4/TMU7AT84MN83/6PutY21Nb9fuQjFTpRRc=
|
||||||
|
github.com/jjti/go-spancheck v0.6.4/go.mod h1:yAEYdKJ2lRkDA8g7X+oKUHXOWVAXSBJRv04OhF+QUjk=
|
||||||
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
|
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
|
||||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||||
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||||
@@ -354,18 +529,30 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V
|
|||||||
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
|
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
|
||||||
github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY=
|
github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY=
|
||||||
github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0=
|
github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0=
|
||||||
|
github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ=
|
||||||
|
github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY=
|
||||||
github.com/junk1tm/musttag v0.4.5 h1:d+mpJ1vn6WFEVKHwkgJiIedis1u/EawKOuUTygAUtCo=
|
github.com/junk1tm/musttag v0.4.5 h1:d+mpJ1vn6WFEVKHwkgJiIedis1u/EawKOuUTygAUtCo=
|
||||||
github.com/junk1tm/musttag v0.4.5/go.mod h1:XkcL/9O6RmD88JBXb+I15nYRl9W4ExhgQeCBEhfMC8U=
|
github.com/junk1tm/musttag v0.4.5/go.mod h1:XkcL/9O6RmD88JBXb+I15nYRl9W4ExhgQeCBEhfMC8U=
|
||||||
github.com/junk1tm/musttag v0.5.0 h1:bV1DTdi38Hi4pG4OVWa7Kap0hi0o7EczuK6wQt9zPOM=
|
github.com/junk1tm/musttag v0.5.0 h1:bV1DTdi38Hi4pG4OVWa7Kap0hi0o7EczuK6wQt9zPOM=
|
||||||
github.com/junk1tm/musttag v0.5.0/go.mod h1:PcR7BA+oREQYvHwgjIDmw3exJeds5JzRcvEJTfjrA0M=
|
github.com/junk1tm/musttag v0.5.0/go.mod h1:PcR7BA+oREQYvHwgjIDmw3exJeds5JzRcvEJTfjrA0M=
|
||||||
|
github.com/karamaru-alpha/copyloopvar v1.1.0 h1:x7gNyKcC2vRBO1H2Mks5u1VxQtYvFiym7fCjIP8RPos=
|
||||||
|
github.com/karamaru-alpha/copyloopvar v1.1.0/go.mod h1:u7CIfztblY0jZLOQZgH3oYsJzpC2A7S6u/lfgSXHy0k=
|
||||||
|
github.com/karamaru-alpha/copyloopvar v1.2.1 h1:wmZaZYIjnJ0b5UoKDjUHrikcV0zuPyyxI4SVplLd2CI=
|
||||||
|
github.com/karamaru-alpha/copyloopvar v1.2.1/go.mod h1:nFmMlFNlClC2BPvNaHMdkirmTJxVCY0lhxBtlfOypMM=
|
||||||
github.com/kisielk/errcheck v1.6.3 h1:dEKh+GLHcWm2oN34nMvDzn1sqI0i0WxPvrgiJA5JuM8=
|
github.com/kisielk/errcheck v1.6.3 h1:dEKh+GLHcWm2oN34nMvDzn1sqI0i0WxPvrgiJA5JuM8=
|
||||||
github.com/kisielk/errcheck v1.6.3/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw=
|
github.com/kisielk/errcheck v1.6.3/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw=
|
||||||
|
github.com/kisielk/errcheck v1.7.0 h1:+SbscKmWJ5mOK/bO1zS60F5I9WwZDWOfRsC4RwfwRV0=
|
||||||
|
github.com/kisielk/errcheck v1.7.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ=
|
||||||
|
github.com/kisielk/errcheck v1.8.0 h1:ZX/URYa7ilESY19ik/vBmCn6zdGQLxACwjAcWbHlYlg=
|
||||||
|
github.com/kisielk/errcheck v1.8.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ=
|
||||||
github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
|
github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
|
||||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||||
github.com/kkHAIKE/contextcheck v1.1.3 h1:l4pNvrb8JSwRd51ojtcOxOeHJzHek+MtOyXbaR0uvmw=
|
github.com/kkHAIKE/contextcheck v1.1.3 h1:l4pNvrb8JSwRd51ojtcOxOeHJzHek+MtOyXbaR0uvmw=
|
||||||
github.com/kkHAIKE/contextcheck v1.1.3/go.mod h1:PG/cwd6c0705/LM0KTr1acO2gORUxkSVWyLJOFW5qoo=
|
github.com/kkHAIKE/contextcheck v1.1.3/go.mod h1:PG/cwd6c0705/LM0KTr1acO2gORUxkSVWyLJOFW5qoo=
|
||||||
github.com/kkHAIKE/contextcheck v1.1.4 h1:B6zAaLhOEEcjvUgIYEqystmnFk1Oemn8bvJhbt0GMb8=
|
github.com/kkHAIKE/contextcheck v1.1.4 h1:B6zAaLhOEEcjvUgIYEqystmnFk1Oemn8bvJhbt0GMb8=
|
||||||
github.com/kkHAIKE/contextcheck v1.1.4/go.mod h1:1+i/gWqokIa+dm31mqGLZhZJ7Uh44DJGZVmr6QRBNJg=
|
github.com/kkHAIKE/contextcheck v1.1.4/go.mod h1:1+i/gWqokIa+dm31mqGLZhZJ7Uh44DJGZVmr6QRBNJg=
|
||||||
|
github.com/kkHAIKE/contextcheck v1.1.5 h1:CdnJh63tcDe53vG+RebdpdXJTc9atMgGqdx8LXxiilg=
|
||||||
|
github.com/kkHAIKE/contextcheck v1.1.5/go.mod h1:O930cpht4xb1YQpK+1+AgoM3mFsvxr7uyFptcnWTYUA=
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||||
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
||||||
@@ -379,18 +566,40 @@ github.com/kunwardeep/paralleltest v1.0.6 h1:FCKYMF1OF2+RveWlABsdnmsvJrei5aoyZoa
|
|||||||
github.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes=
|
github.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes=
|
||||||
github.com/kunwardeep/paralleltest v1.0.7 h1:2uCk94js0+nVNQoHZNLBkAR1DQJrVzw6T0RMzJn55dQ=
|
github.com/kunwardeep/paralleltest v1.0.7 h1:2uCk94js0+nVNQoHZNLBkAR1DQJrVzw6T0RMzJn55dQ=
|
||||||
github.com/kunwardeep/paralleltest v1.0.7/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY=
|
github.com/kunwardeep/paralleltest v1.0.7/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY=
|
||||||
|
github.com/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCTdvWJ/lDDs=
|
||||||
|
github.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY=
|
||||||
github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ=
|
github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ=
|
||||||
github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA=
|
github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA=
|
||||||
|
github.com/lasiar/canonicalheader v1.1.1 h1:wC+dY9ZfiqiPwAexUApFush/csSPXeIi4QqyxXmng8I=
|
||||||
|
github.com/lasiar/canonicalheader v1.1.1/go.mod h1:cXkb3Dlk6XXy+8MVQnF23CYKWlyA7kfQhSw2CcZtZb0=
|
||||||
|
github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4=
|
||||||
|
github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI=
|
||||||
|
github.com/ldez/exptostd v0.4.1 h1:DIollgQ3LWZMp3HJbSXsdE2giJxMfjyHj3eX4oiD6JU=
|
||||||
|
github.com/ldez/exptostd v0.4.1/go.mod h1:iZBRYaUmcW5jwCR3KROEZ1KivQQp6PHXbDPk9hqJKCQ=
|
||||||
github.com/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA=
|
github.com/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA=
|
||||||
github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0=
|
github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0=
|
||||||
|
github.com/ldez/gomoddirectives v0.2.4 h1:j3YjBIjEBbqZ0NKtBNzr8rtMHTOrLPeiwTkfUJZ3alg=
|
||||||
|
github.com/ldez/gomoddirectives v0.2.4/go.mod h1:oWu9i62VcQDYp9EQ0ONTfqLNh+mDLWWDO+SO0qSQw5g=
|
||||||
|
github.com/ldez/gomoddirectives v0.6.1 h1:Z+PxGAY+217f/bSGjNZr/b2KTXcyYLgiWI6geMBN2Qc=
|
||||||
|
github.com/ldez/gomoddirectives v0.6.1/go.mod h1:cVBiu3AHR9V31em9u2kwfMKD43ayN5/XDgr+cdaFaKs=
|
||||||
|
github.com/ldez/grignotin v0.9.0 h1:MgOEmjZIVNn6p5wPaGp/0OKWyvq42KnzAt/DAb8O4Ow=
|
||||||
|
github.com/ldez/grignotin v0.9.0/go.mod h1:uaVTr0SoZ1KBii33c47O1M8Jp3OP3YDwhZCmzT9GHEk=
|
||||||
github.com/ldez/tagliatelle v0.4.0 h1:sylp7d9kh6AdXN2DpVGHBRb5guTVAgOxqNGhbqc4b1c=
|
github.com/ldez/tagliatelle v0.4.0 h1:sylp7d9kh6AdXN2DpVGHBRb5guTVAgOxqNGhbqc4b1c=
|
||||||
github.com/ldez/tagliatelle v0.4.0/go.mod h1:mNtTfrHy2haaBAw+VT7IBV6VXBThS7TCreYWbBcJ87I=
|
github.com/ldez/tagliatelle v0.4.0/go.mod h1:mNtTfrHy2haaBAw+VT7IBV6VXBThS7TCreYWbBcJ87I=
|
||||||
github.com/ldez/tagliatelle v0.5.0 h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo=
|
github.com/ldez/tagliatelle v0.5.0 h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo=
|
||||||
github.com/ldez/tagliatelle v0.5.0/go.mod h1:rj1HmWiL1MiKQuOONhd09iySTEkUuE/8+5jtPYz9xa4=
|
github.com/ldez/tagliatelle v0.5.0/go.mod h1:rj1HmWiL1MiKQuOONhd09iySTEkUuE/8+5jtPYz9xa4=
|
||||||
|
github.com/ldez/tagliatelle v0.7.1 h1:bTgKjjc2sQcsgPiT902+aadvMjCeMHrY7ly2XKFORIk=
|
||||||
|
github.com/ldez/tagliatelle v0.7.1/go.mod h1:3zjxUpsNB2aEZScWiZTHrAXOl1x25t3cRmzfK1mlo2I=
|
||||||
|
github.com/ldez/usetesting v0.4.2 h1:J2WwbrFGk3wx4cZwSMiCQQ00kjGR0+tuuyW0Lqm4lwA=
|
||||||
|
github.com/ldez/usetesting v0.4.2/go.mod h1:eEs46T3PpQ+9RgN9VjpY6qWdiw2/QmfiDeWmdZdrjIQ=
|
||||||
github.com/leonklingele/grouper v1.1.1 h1:suWXRU57D4/Enn6pXR0QVqqWWrnJ9Osrz+5rjt8ivzU=
|
github.com/leonklingele/grouper v1.1.1 h1:suWXRU57D4/Enn6pXR0QVqqWWrnJ9Osrz+5rjt8ivzU=
|
||||||
github.com/leonklingele/grouper v1.1.1/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY=
|
github.com/leonklingele/grouper v1.1.1/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY=
|
||||||
|
github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY=
|
||||||
|
github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA=
|
||||||
github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM=
|
github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM=
|
||||||
github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM=
|
github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM=
|
||||||
|
github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk=
|
||||||
|
github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I=
|
||||||
github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
|
github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
|
||||||
github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
|
github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
|
||||||
github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI=
|
github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI=
|
||||||
@@ -403,14 +612,22 @@ github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 h1:pWxk9e//NbPwfxat7
|
|||||||
github.com/matoous/godox v0.0.0-20210227103229-6504466cf951/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s=
|
github.com/matoous/godox v0.0.0-20210227103229-6504466cf951/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s=
|
||||||
github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 h1:gWg6ZQ4JhDfJPqlo2srm/LN17lpybq15AryXIRcWYLE=
|
github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 h1:gWg6ZQ4JhDfJPqlo2srm/LN17lpybq15AryXIRcWYLE=
|
||||||
github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s=
|
github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s=
|
||||||
|
github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4=
|
||||||
|
github.com/matoous/godox v1.1.0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs=
|
||||||
github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU=
|
github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU=
|
||||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||||
|
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
|
||||||
|
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
|
||||||
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||||
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
|
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
|
||||||
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||||
|
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||||
|
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
|
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
|
||||||
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||||
|
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
|
||||||
|
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||||
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
|
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
|
||||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||||
github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo=
|
github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo=
|
||||||
@@ -421,6 +638,12 @@ github.com/mgechev/revive v1.3.1 h1:OlQkcH40IB2cGuprTPcjB0iIUddgVZgGmDX3IAMR8D4=
|
|||||||
github.com/mgechev/revive v1.3.1/go.mod h1:YlD6TTWl2B8A103R9KWJSPVI9DrEf+oqr15q21Ld+5I=
|
github.com/mgechev/revive v1.3.1/go.mod h1:YlD6TTWl2B8A103R9KWJSPVI9DrEf+oqr15q21Ld+5I=
|
||||||
github.com/mgechev/revive v1.3.2 h1:Wb8NQKBaALBJ3xrrj4zpwJwqwNA6nDpyJSEQWcCka6U=
|
github.com/mgechev/revive v1.3.2 h1:Wb8NQKBaALBJ3xrrj4zpwJwqwNA6nDpyJSEQWcCka6U=
|
||||||
github.com/mgechev/revive v1.3.2/go.mod h1:UCLtc7o5vg5aXCwdUTU1kEBQ1v+YXPAkYDIDXbrs5I0=
|
github.com/mgechev/revive v1.3.2/go.mod h1:UCLtc7o5vg5aXCwdUTU1kEBQ1v+YXPAkYDIDXbrs5I0=
|
||||||
|
github.com/mgechev/revive v1.3.7 h1:502QY0vQGe9KtYJ9FpxMz9rL+Fc/P13CI5POL4uHCcE=
|
||||||
|
github.com/mgechev/revive v1.3.7/go.mod h1:RJ16jUbF0OWC3co/+XTxmFNgEpUPwnnA0BRllX2aDNA=
|
||||||
|
github.com/mgechev/revive v1.3.9 h1:18Y3R4a2USSBF+QZKFQwVkBROUda7uoBlkEuBD+YD1A=
|
||||||
|
github.com/mgechev/revive v1.3.9/go.mod h1:+uxEIr5UH0TjXWHTno3xh4u7eg6jDpXKzQccA9UGhHU=
|
||||||
|
github.com/mgechev/revive v1.6.0 h1:NsdaDzYcWZd3ikrWbdbFsvk+DvEAmP6A21LAdZEomZg=
|
||||||
|
github.com/mgechev/revive v1.6.0/go.mod h1:YpafN9JKjfKxG/UDGUHU1kPJKalHx7fHIgclT04SjBs=
|
||||||
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
||||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||||
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
|
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
|
||||||
@@ -434,6 +657,8 @@ github.com/moricho/tparallel v0.2.1 h1:95FytivzT6rYzdJLdtfn6m1bfFJylOJK41+lgv/EH
|
|||||||
github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k=
|
github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k=
|
||||||
github.com/moricho/tparallel v0.3.1 h1:fQKD4U1wRMAYNngDonW5XupoB/ZGJHdpzrWqgyg9krA=
|
github.com/moricho/tparallel v0.3.1 h1:fQKD4U1wRMAYNngDonW5XupoB/ZGJHdpzrWqgyg9krA=
|
||||||
github.com/moricho/tparallel v0.3.1/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI=
|
github.com/moricho/tparallel v0.3.1/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI=
|
||||||
|
github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI=
|
||||||
|
github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U=
|
||||||
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||||
github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U=
|
github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U=
|
||||||
@@ -444,6 +669,8 @@ github.com/nishanths/exhaustive v0.9.5 h1:TzssWan6orBiLYVqewCG8faud9qlFntJE30ACp
|
|||||||
github.com/nishanths/exhaustive v0.9.5/go.mod h1:IbwrGdVMizvDcIxPYGVdQn5BqWJaOwpCvg4RGb8r/TA=
|
github.com/nishanths/exhaustive v0.9.5/go.mod h1:IbwrGdVMizvDcIxPYGVdQn5BqWJaOwpCvg4RGb8r/TA=
|
||||||
github.com/nishanths/exhaustive v0.11.0 h1:T3I8nUGhl/Cwu5Z2hfc92l0e04D2GEW6e0l8pzda2l0=
|
github.com/nishanths/exhaustive v0.11.0 h1:T3I8nUGhl/Cwu5Z2hfc92l0e04D2GEW6e0l8pzda2l0=
|
||||||
github.com/nishanths/exhaustive v0.11.0/go.mod h1:RqwDsZ1xY0dNdqHho2z6X+bgzizwbLYOWnZbbl2wLB4=
|
github.com/nishanths/exhaustive v0.11.0/go.mod h1:RqwDsZ1xY0dNdqHho2z6X+bgzizwbLYOWnZbbl2wLB4=
|
||||||
|
github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhKRf3Swg=
|
||||||
|
github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs=
|
||||||
github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk=
|
github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk=
|
||||||
github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c=
|
github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c=
|
||||||
github.com/nunnatsa/ginkgolinter v0.8.1 h1:/y4o/0hV+ruUHj4xXh89xlFjoaitnI4LnkpuYs02q1c=
|
github.com/nunnatsa/ginkgolinter v0.8.1 h1:/y4o/0hV+ruUHj4xXh89xlFjoaitnI4LnkpuYs02q1c=
|
||||||
@@ -452,6 +679,10 @@ github.com/nunnatsa/ginkgolinter v0.9.0 h1:Sm0zX5QfjJzkeCjEp+t6d3Ha0jwvoDjleP9XC
|
|||||||
github.com/nunnatsa/ginkgolinter v0.9.0/go.mod h1:FHaMLURXP7qImeH6bvxWJUpyH+2tuqe5j4rW1gxJRmI=
|
github.com/nunnatsa/ginkgolinter v0.9.0/go.mod h1:FHaMLURXP7qImeH6bvxWJUpyH+2tuqe5j4rW1gxJRmI=
|
||||||
github.com/nunnatsa/ginkgolinter v0.12.1 h1:vwOqb5Nu05OikTXqhvLdHCGcx5uthIYIl0t79UVrERQ=
|
github.com/nunnatsa/ginkgolinter v0.12.1 h1:vwOqb5Nu05OikTXqhvLdHCGcx5uthIYIl0t79UVrERQ=
|
||||||
github.com/nunnatsa/ginkgolinter v0.12.1/go.mod h1:AK8Ab1PypVrcGUusuKD8RDcl2KgsIwvNaaxAlyHSzso=
|
github.com/nunnatsa/ginkgolinter v0.12.1/go.mod h1:AK8Ab1PypVrcGUusuKD8RDcl2KgsIwvNaaxAlyHSzso=
|
||||||
|
github.com/nunnatsa/ginkgolinter v0.16.2 h1:8iLqHIZvN4fTLDC0Ke9tbSZVcyVHoBs0HIbnVSxfHJk=
|
||||||
|
github.com/nunnatsa/ginkgolinter v0.16.2/go.mod h1:4tWRinDN1FeJgU+iJANW/kz7xKN5nYRAOfJDQUS9dOQ=
|
||||||
|
github.com/nunnatsa/ginkgolinter v0.18.4 h1:zmX4KUR+6fk/vhUFt8DOP6KwznekhkmVSzzVJve2vyM=
|
||||||
|
github.com/nunnatsa/ginkgolinter v0.18.4/go.mod h1:AMEane4QQ6JwFz5GgjI5xLUM9S/CylO+UyM97fN2iBI=
|
||||||
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
|
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
|
||||||
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
|
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
|
||||||
github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw=
|
github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw=
|
||||||
@@ -463,6 +694,10 @@ github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3v
|
|||||||
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
|
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
|
||||||
github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg=
|
github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg=
|
||||||
github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas=
|
github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
|
||||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
@@ -476,6 +711,12 @@ github.com/polyfloyd/go-errorlint v1.4.0 h1:b+sQ5HibPIAjEZwtuwU8Wz/u0dMZ7YL+bk+9
|
|||||||
github.com/polyfloyd/go-errorlint v1.4.0/go.mod h1:qJCkPeBn+0EXkdKTrUCcuFStM2xrDKfxI3MGLXPexUs=
|
github.com/polyfloyd/go-errorlint v1.4.0/go.mod h1:qJCkPeBn+0EXkdKTrUCcuFStM2xrDKfxI3MGLXPexUs=
|
||||||
github.com/polyfloyd/go-errorlint v1.4.2 h1:CU+O4181IxFDdPH6t/HT7IiDj1I7zxNi1RIUxYwn8d0=
|
github.com/polyfloyd/go-errorlint v1.4.2 h1:CU+O4181IxFDdPH6t/HT7IiDj1I7zxNi1RIUxYwn8d0=
|
||||||
github.com/polyfloyd/go-errorlint v1.4.2/go.mod h1:k6fU/+fQe38ednoZS51T7gSIGQW1y94d6TkSr35OzH8=
|
github.com/polyfloyd/go-errorlint v1.4.2/go.mod h1:k6fU/+fQe38ednoZS51T7gSIGQW1y94d6TkSr35OzH8=
|
||||||
|
github.com/polyfloyd/go-errorlint v1.5.2 h1:SJhVik3Umsjh7mte1vE0fVZ5T1gznasQG3PV7U5xFdA=
|
||||||
|
github.com/polyfloyd/go-errorlint v1.5.2/go.mod h1:sH1QC1pxxi0fFecsVIzBmxtrgd9IF/SkJpA6wqyKAJs=
|
||||||
|
github.com/polyfloyd/go-errorlint v1.6.0 h1:tftWV9DE7txiFzPpztTAwyoRLKNj9gpVm2cg8/OwcYY=
|
||||||
|
github.com/polyfloyd/go-errorlint v1.6.0/go.mod h1:HR7u8wuP1kb1NeN1zqTd1ZMlqUKPPHF+Id4vIPvDqVw=
|
||||||
|
github.com/polyfloyd/go-errorlint v1.7.1 h1:RyLVXIbosq1gBdk/pChWA8zWYLsq9UEw7a1L5TVMCnA=
|
||||||
|
github.com/polyfloyd/go-errorlint v1.7.1/go.mod h1:aXjNb1x2TNhoLsk26iv1yl7a+zTnXPhwEMtEXukiLR8=
|
||||||
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
|
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
|
||||||
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
|
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
|
||||||
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
|
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
|
||||||
@@ -500,6 +741,12 @@ github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0
|
|||||||
github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
|
github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
|
||||||
github.com/quasilyte/go-ruleguard v0.3.19 h1:tfMnabXle/HzOb5Xe9CUZYWXKfkS1KwRmZyPmD9nVcc=
|
github.com/quasilyte/go-ruleguard v0.3.19 h1:tfMnabXle/HzOb5Xe9CUZYWXKfkS1KwRmZyPmD9nVcc=
|
||||||
github.com/quasilyte/go-ruleguard v0.3.19/go.mod h1:lHSn69Scl48I7Gt9cX3VrbsZYvYiBYszZOZW4A+oTEw=
|
github.com/quasilyte/go-ruleguard v0.3.19/go.mod h1:lHSn69Scl48I7Gt9cX3VrbsZYvYiBYszZOZW4A+oTEw=
|
||||||
|
github.com/quasilyte/go-ruleguard v0.4.2 h1:htXcXDK6/rO12kiTHKfHuqR4kr3Y4M0J0rOL6CH/BYs=
|
||||||
|
github.com/quasilyte/go-ruleguard v0.4.2/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI=
|
||||||
|
github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo=
|
||||||
|
github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI=
|
||||||
|
github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE=
|
||||||
|
github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=
|
||||||
github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo=
|
github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo=
|
||||||
github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng=
|
github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng=
|
||||||
github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 h1:L8QM9bvf68pVdQ3bCFZMDmnt9yqcMBro1pC7F+IPYMY=
|
github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 h1:L8QM9bvf68pVdQ3bCFZMDmnt9yqcMBro1pC7F+IPYMY=
|
||||||
@@ -508,22 +755,52 @@ github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl
|
|||||||
github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0=
|
github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0=
|
||||||
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs=
|
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs=
|
||||||
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ=
|
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ=
|
||||||
|
github.com/raeperd/recvcheck v0.2.0 h1:GnU+NsbiCqdC2XX5+vMZzP+jAJC5fht7rcVTAhX74UI=
|
||||||
|
github.com/raeperd/recvcheck v0.2.0/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU=
|
||||||
|
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
|
||||||
|
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
||||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
|
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
|
||||||
|
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
|
||||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
github.com/ryancurrah/gomodguard v1.3.0 h1:q15RT/pd6UggBXVBuLps8BXRvl5GPBcwVA7BJHMLuTw=
|
github.com/ryancurrah/gomodguard v1.3.0 h1:q15RT/pd6UggBXVBuLps8BXRvl5GPBcwVA7BJHMLuTw=
|
||||||
github.com/ryancurrah/gomodguard v1.3.0/go.mod h1:ggBxb3luypPEzqVtq33ee7YSN35V28XeGnid8dnni50=
|
github.com/ryancurrah/gomodguard v1.3.0/go.mod h1:ggBxb3luypPEzqVtq33ee7YSN35V28XeGnid8dnni50=
|
||||||
|
github.com/ryancurrah/gomodguard v1.3.2 h1:CuG27ulzEB1Gu5Dk5gP8PFxSOZ3ptSdP5iI/3IXxM18=
|
||||||
|
github.com/ryancurrah/gomodguard v1.3.2/go.mod h1:LqdemiFomEjcxOqirbQCb3JFvSxH2JUYMerTFd3sF2o=
|
||||||
|
github.com/ryancurrah/gomodguard v1.3.3 h1:eiSQdJVNr9KTNxY2Niij8UReSwR8Xrte3exBrAZfqpg=
|
||||||
|
github.com/ryancurrah/gomodguard v1.3.3/go.mod h1:rsKQjj4l3LXe8N344Ow7agAy5p9yjsWOtRzUMYmA0QY=
|
||||||
|
github.com/ryancurrah/gomodguard v1.3.5 h1:cShyguSwUEeC0jS7ylOiG/idnd1TpJ1LfHGpV3oJmPU=
|
||||||
|
github.com/ryancurrah/gomodguard v1.3.5/go.mod h1:MXlEPQRxgfPQa62O8wzK3Ozbkv9Rkqr+wKjSxTdsNJE=
|
||||||
github.com/ryanrolds/sqlclosecheck v0.4.0 h1:i8SX60Rppc1wRuyQjMciLqIzV3xnoHB7/tXbr6RGYNI=
|
github.com/ryanrolds/sqlclosecheck v0.4.0 h1:i8SX60Rppc1wRuyQjMciLqIzV3xnoHB7/tXbr6RGYNI=
|
||||||
github.com/ryanrolds/sqlclosecheck v0.4.0/go.mod h1:TBRRjzL31JONc9i4XMinicuo+s+E8yKZ5FN8X3G6CKQ=
|
github.com/ryanrolds/sqlclosecheck v0.4.0/go.mod h1:TBRRjzL31JONc9i4XMinicuo+s+E8yKZ5FN8X3G6CKQ=
|
||||||
|
github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU=
|
||||||
|
github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ=
|
||||||
github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc=
|
github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc=
|
||||||
github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI=
|
github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI=
|
||||||
|
github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0=
|
||||||
|
github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4=
|
||||||
|
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4=
|
||||||
|
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY=
|
||||||
|
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw=
|
||||||
|
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU=
|
||||||
github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw=
|
github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw=
|
||||||
github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ=
|
github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ=
|
||||||
github.com/sashamelentyev/usestdlibvars v1.23.0 h1:01h+/2Kd+NblNItNeux0veSL5cBF1jbEOPrEhDzGYq0=
|
github.com/sashamelentyev/usestdlibvars v1.23.0 h1:01h+/2Kd+NblNItNeux0veSL5cBF1jbEOPrEhDzGYq0=
|
||||||
github.com/sashamelentyev/usestdlibvars v1.23.0/go.mod h1:YPwr/Y1LATzHI93CqoPUN/2BzGQ/6N/cl/KwgR0B/aU=
|
github.com/sashamelentyev/usestdlibvars v1.23.0/go.mod h1:YPwr/Y1LATzHI93CqoPUN/2BzGQ/6N/cl/KwgR0B/aU=
|
||||||
|
github.com/sashamelentyev/usestdlibvars v1.26.0 h1:LONR2hNVKxRmzIrZR0PhSF3mhCAzvnr+DcUiHgREfXE=
|
||||||
|
github.com/sashamelentyev/usestdlibvars v1.26.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8=
|
||||||
|
github.com/sashamelentyev/usestdlibvars v1.27.0 h1:t/3jZpSXtRPRf2xr0m63i32ZrusyurIGT9E5wAvXQnI=
|
||||||
|
github.com/sashamelentyev/usestdlibvars v1.27.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8=
|
||||||
|
github.com/sashamelentyev/usestdlibvars v1.28.0 h1:jZnudE2zKCtYlGzLVreNp5pmCdOxXUzwsMDBkR21cyQ=
|
||||||
|
github.com/sashamelentyev/usestdlibvars v1.28.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8=
|
||||||
github.com/securego/gosec/v2 v2.15.0 h1:v4Ym7FF58/jlykYmmhZ7mTm7FQvN/setNm++0fgIAtw=
|
github.com/securego/gosec/v2 v2.15.0 h1:v4Ym7FF58/jlykYmmhZ7mTm7FQvN/setNm++0fgIAtw=
|
||||||
github.com/securego/gosec/v2 v2.15.0/go.mod h1:VOjTrZOkUtSDt2QLSJmQBMWnvwiQPEjg0l+5juIqGk8=
|
github.com/securego/gosec/v2 v2.15.0/go.mod h1:VOjTrZOkUtSDt2QLSJmQBMWnvwiQPEjg0l+5juIqGk8=
|
||||||
github.com/securego/gosec/v2 v2.16.0 h1:Pi0JKoasQQ3NnoRao/ww/N/XdynIB9NRYYZT5CyOs5U=
|
github.com/securego/gosec/v2 v2.16.0 h1:Pi0JKoasQQ3NnoRao/ww/N/XdynIB9NRYYZT5CyOs5U=
|
||||||
github.com/securego/gosec/v2 v2.16.0/go.mod h1:xvLcVZqUfo4aAQu56TNv7/Ltz6emAOQAEsrZrt7uGlI=
|
github.com/securego/gosec/v2 v2.16.0/go.mod h1:xvLcVZqUfo4aAQu56TNv7/Ltz6emAOQAEsrZrt7uGlI=
|
||||||
|
github.com/securego/gosec/v2 v2.20.1-0.20240525090044-5f0084eb01a9 h1:rnO6Zp1YMQwv8AyxzuwsVohljJgp4L0ZqiCgtACsPsc=
|
||||||
|
github.com/securego/gosec/v2 v2.20.1-0.20240525090044-5f0084eb01a9/go.mod h1:dg7lPlu/xK/Ut9SedURCoZbVCR4yC7fM65DtH9/CDHs=
|
||||||
|
github.com/securego/gosec/v2 v2.22.0 h1:bV/Ii5YSQtbobXuIFBXrfr91l5N4qslEdFHE9E0I/10=
|
||||||
|
github.com/securego/gosec/v2 v2.22.0/go.mod h1:sR5n3LzZ/52rn4xxRBJk38iPe/hjiA0CkVcyiAHNCrM=
|
||||||
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU=
|
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU=
|
||||||
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs=
|
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs=
|
||||||
github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
|
github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
|
||||||
@@ -543,35 +820,53 @@ github.com/sivchari/nosnakecase v1.7.0 h1:7QkpWIRMe8x25gckkFd2A5Pi6Ymo0qgr4JrhGt
|
|||||||
github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY=
|
github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY=
|
||||||
github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak=
|
github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak=
|
||||||
github.com/sivchari/tenv v1.7.1/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg=
|
github.com/sivchari/tenv v1.7.1/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg=
|
||||||
|
github.com/sivchari/tenv v1.10.0 h1:g/hzMA+dBCKqGXgW8AV/1xIWhAvDrx0zFKNR48NFMg0=
|
||||||
|
github.com/sivchari/tenv v1.10.0/go.mod h1:tdY24masnVoZFxYrHv/nD6Tc8FbkEtAQEEziXpyMgqY=
|
||||||
|
github.com/sivchari/tenv v1.12.1 h1:+E0QzjktdnExv/wwsnnyk4oqZBUfuh89YMQT1cyuvSY=
|
||||||
|
github.com/sivchari/tenv v1.12.1/go.mod h1:1LjSOUCc25snIr5n3DtGGrENhX3LuWefcplwVGC24mw=
|
||||||
github.com/sonatard/noctx v0.0.1 h1:VC1Qhl6Oxx9vvWo3UDgrGXYCeKCe3Wbw7qAWL6FrmTY=
|
github.com/sonatard/noctx v0.0.1 h1:VC1Qhl6Oxx9vvWo3UDgrGXYCeKCe3Wbw7qAWL6FrmTY=
|
||||||
github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI=
|
github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI=
|
||||||
github.com/sonatard/noctx v0.0.2 h1:L7Dz4De2zDQhW8S0t+KUjY0MAQJd6SgVwhzNIc4ok00=
|
github.com/sonatard/noctx v0.0.2 h1:L7Dz4De2zDQhW8S0t+KUjY0MAQJd6SgVwhzNIc4ok00=
|
||||||
github.com/sonatard/noctx v0.0.2/go.mod h1:kzFz+CzWSjQ2OzIm46uJZoXuBpa2+0y3T36U18dWqIo=
|
github.com/sonatard/noctx v0.0.2/go.mod h1:kzFz+CzWSjQ2OzIm46uJZoXuBpa2+0y3T36U18dWqIo=
|
||||||
|
github.com/sonatard/noctx v0.1.0 h1:JjqOc2WN16ISWAjAk8M5ej0RfExEXtkEyExl2hLW+OM=
|
||||||
|
github.com/sonatard/noctx v0.1.0/go.mod h1:0RvBxqY8D4j9cTTTWE8ylt2vqj2EPI8fHmrxHdsaZ2c=
|
||||||
github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0=
|
github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0=
|
||||||
github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
|
github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
|
||||||
github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=
|
github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=
|
||||||
github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=
|
github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=
|
||||||
|
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
|
||||||
|
github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
|
||||||
|
github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs=
|
||||||
|
github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4=
|
||||||
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
|
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
|
||||||
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
|
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
|
||||||
github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA=
|
github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA=
|
||||||
github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY=
|
github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY=
|
||||||
github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
|
github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
|
||||||
github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
|
github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
|
||||||
|
github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
|
||||||
|
github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
|
||||||
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
|
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
|
||||||
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
|
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
|
||||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
|
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
|
||||||
|
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ=
|
github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ=
|
||||||
github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI=
|
github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI=
|
||||||
github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0=
|
github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0=
|
||||||
github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I=
|
github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I=
|
||||||
github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc=
|
github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc=
|
||||||
github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I=
|
github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I=
|
||||||
|
github.com/stbenjam/no-sprintf-host-port v0.2.0 h1:i8pxvGrt1+4G0czLr/WnmyH7zbZ8Bg8etvARQ1rpyl4=
|
||||||
|
github.com/stbenjam/no-sprintf-host-port v0.2.0/go.mod h1:eL0bQ9PasS0hsyTyfTjjG+E80QIyPnBVQbYZyv20Jfk=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
|
github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
|
||||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
|
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
|
||||||
|
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
||||||
github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
@@ -586,6 +881,10 @@ github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ
|
|||||||
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
|
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||||
|
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
|
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
||||||
|
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs=
|
github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs=
|
||||||
github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
|
github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
|
||||||
github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c h1:+aPplBwWcHBo6q9xrfWdMrT9o4kltkmmvpemgIjep/8=
|
github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c h1:+aPplBwWcHBo6q9xrfWdMrT9o4kltkmmvpemgIjep/8=
|
||||||
@@ -594,38 +893,74 @@ github.com/tdakkota/asciicheck v0.1.1 h1:PKzG7JUTUmVspQTDqtkX9eSiLGossXTybutHwTX
|
|||||||
github.com/tdakkota/asciicheck v0.1.1/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM=
|
github.com/tdakkota/asciicheck v0.1.1/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM=
|
||||||
github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM=
|
github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM=
|
||||||
github.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg=
|
github.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg=
|
||||||
|
github.com/tdakkota/asciicheck v0.3.0 h1:LqDGgZdholxZMaJgpM6b0U9CFIjDCbFdUF00bDnBKOQ=
|
||||||
|
github.com/tdakkota/asciicheck v0.3.0/go.mod h1:KoJKXuX/Z/lt6XzLo8WMBfQGzak0SrAKZlvRr4tg8Ac=
|
||||||
github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0=
|
github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0=
|
||||||
github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY=
|
github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY=
|
||||||
github.com/tetafro/godot v1.4.11 h1:BVoBIqAf/2QdbFmSwAWnaIqDivZdOV0ZRwEm6jivLKw=
|
github.com/tetafro/godot v1.4.11 h1:BVoBIqAf/2QdbFmSwAWnaIqDivZdOV0ZRwEm6jivLKw=
|
||||||
github.com/tetafro/godot v1.4.11/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8=
|
github.com/tetafro/godot v1.4.11/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8=
|
||||||
|
github.com/tetafro/godot v1.4.16 h1:4ChfhveiNLk4NveAZ9Pu2AN8QZ2nkUGFuadM9lrr5D0=
|
||||||
|
github.com/tetafro/godot v1.4.16/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio=
|
||||||
|
github.com/tetafro/godot v1.4.20 h1:z/p8Ek55UdNvzt4TFn2zx2KscpW4rWqcnUrdmvWJj7E=
|
||||||
|
github.com/tetafro/godot v1.4.20/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio=
|
||||||
github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e h1:MV6KaVu/hzByHP0UvJ4HcMGE/8a6A4Rggc/0wx2AvJo=
|
github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e h1:MV6KaVu/hzByHP0UvJ4HcMGE/8a6A4Rggc/0wx2AvJo=
|
||||||
github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ=
|
github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ=
|
||||||
github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M=
|
github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M=
|
||||||
github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ=
|
github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ=
|
||||||
|
github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 h1:y4mJRFlM6fUyPhoXuFg/Yu02fg/nIPFMOY8tOqppoFg=
|
||||||
|
github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460=
|
||||||
github.com/timonwong/loggercheck v0.9.3 h1:ecACo9fNiHxX4/Bc02rW2+kaJIAMAes7qJ7JKxt0EZI=
|
github.com/timonwong/loggercheck v0.9.3 h1:ecACo9fNiHxX4/Bc02rW2+kaJIAMAes7qJ7JKxt0EZI=
|
||||||
github.com/timonwong/loggercheck v0.9.3/go.mod h1:wUqnk9yAOIKtGA39l1KLE9Iz0QiTocu/YZoOf+OzFdw=
|
github.com/timonwong/loggercheck v0.9.3/go.mod h1:wUqnk9yAOIKtGA39l1KLE9Iz0QiTocu/YZoOf+OzFdw=
|
||||||
github.com/timonwong/loggercheck v0.9.4 h1:HKKhqrjcVj8sxL7K77beXh0adEm6DLjV/QOGeMXEVi4=
|
github.com/timonwong/loggercheck v0.9.4 h1:HKKhqrjcVj8sxL7K77beXh0adEm6DLjV/QOGeMXEVi4=
|
||||||
github.com/timonwong/loggercheck v0.9.4/go.mod h1:caz4zlPcgvpEkXgVnAJGowHAMW2NwHaNlpS8xDbVhTg=
|
github.com/timonwong/loggercheck v0.9.4/go.mod h1:caz4zlPcgvpEkXgVnAJGowHAMW2NwHaNlpS8xDbVhTg=
|
||||||
|
github.com/timonwong/loggercheck v0.10.1 h1:uVZYClxQFpw55eh+PIoqM7uAOHMrhVcDoWDery9R8Lg=
|
||||||
|
github.com/timonwong/loggercheck v0.10.1/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8=
|
||||||
github.com/tomarrell/wrapcheck/v2 v2.8.0 h1:qDzbir0xmoE+aNxGCPrn+rUSxAX+nG6vREgbbXAR81I=
|
github.com/tomarrell/wrapcheck/v2 v2.8.0 h1:qDzbir0xmoE+aNxGCPrn+rUSxAX+nG6vREgbbXAR81I=
|
||||||
github.com/tomarrell/wrapcheck/v2 v2.8.0/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg=
|
github.com/tomarrell/wrapcheck/v2 v2.8.0/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg=
|
||||||
github.com/tomarrell/wrapcheck/v2 v2.8.1 h1:HxSqDSN0sAt0yJYsrcYVoEeyM4aI9yAm3KQpIXDJRhQ=
|
github.com/tomarrell/wrapcheck/v2 v2.8.1 h1:HxSqDSN0sAt0yJYsrcYVoEeyM4aI9yAm3KQpIXDJRhQ=
|
||||||
github.com/tomarrell/wrapcheck/v2 v2.8.1/go.mod h1:/n2Q3NZ4XFT50ho6Hbxg+RV1uyo2Uow/Vdm9NQcl5SE=
|
github.com/tomarrell/wrapcheck/v2 v2.8.1/go.mod h1:/n2Q3NZ4XFT50ho6Hbxg+RV1uyo2Uow/Vdm9NQcl5SE=
|
||||||
|
github.com/tomarrell/wrapcheck/v2 v2.8.3 h1:5ov+Cbhlgi7s/a42BprYoxsr73CbdMUTzE3bRDFASUs=
|
||||||
|
github.com/tomarrell/wrapcheck/v2 v2.8.3/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo=
|
||||||
|
github.com/tomarrell/wrapcheck/v2 v2.10.0 h1:SzRCryzy4IrAH7bVGG4cK40tNUhmVmMDuJujy4XwYDg=
|
||||||
|
github.com/tomarrell/wrapcheck/v2 v2.10.0/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo=
|
||||||
github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw=
|
github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw=
|
||||||
github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw=
|
github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw=
|
||||||
github.com/ultraware/funlen v0.0.3 h1:5ylVWm8wsNwH5aWo9438pwvsK0QiqVuUrt9bn7S/iLA=
|
github.com/ultraware/funlen v0.0.3 h1:5ylVWm8wsNwH5aWo9438pwvsK0QiqVuUrt9bn7S/iLA=
|
||||||
github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA=
|
github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA=
|
||||||
|
github.com/ultraware/funlen v0.1.0 h1:BuqclbkY6pO+cvxoq7OsktIXZpgBSkYTQtmwhAK81vI=
|
||||||
|
github.com/ultraware/funlen v0.1.0/go.mod h1:XJqmOQja6DpxarLj6Jj1U7JuoS8PvL4nEqDaQhy22p4=
|
||||||
|
github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI=
|
||||||
|
github.com/ultraware/funlen v0.2.0/go.mod h1:ZE0q4TsJ8T1SQcjmkhN/w+MceuatI6pBFSxxyteHIJA=
|
||||||
github.com/ultraware/whitespace v0.0.5 h1:hh+/cpIcopyMYbZNVov9iSxvJU3OYQg78Sfaqzi/CzI=
|
github.com/ultraware/whitespace v0.0.5 h1:hh+/cpIcopyMYbZNVov9iSxvJU3OYQg78Sfaqzi/CzI=
|
||||||
github.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA=
|
github.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA=
|
||||||
|
github.com/ultraware/whitespace v0.1.1 h1:bTPOGejYFulW3PkcrqkeQwOd6NKOOXvmGD9bo/Gk8VQ=
|
||||||
|
github.com/ultraware/whitespace v0.1.1/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8=
|
||||||
|
github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSWoFa+g=
|
||||||
|
github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8=
|
||||||
github.com/uudashr/gocognit v1.0.6 h1:2Cgi6MweCsdB6kpcVQp7EW4U23iBFQWfTXiWlyp842Y=
|
github.com/uudashr/gocognit v1.0.6 h1:2Cgi6MweCsdB6kpcVQp7EW4U23iBFQWfTXiWlyp842Y=
|
||||||
github.com/uudashr/gocognit v1.0.6/go.mod h1:nAIUuVBnYU7pcninia3BHOvQkpQCeO76Uscky5BOwcY=
|
github.com/uudashr/gocognit v1.0.6/go.mod h1:nAIUuVBnYU7pcninia3BHOvQkpQCeO76Uscky5BOwcY=
|
||||||
|
github.com/uudashr/gocognit v1.1.2 h1:l6BAEKJqQH2UpKAPKdMfZf5kE4W/2xk8pfU1OVLvniI=
|
||||||
|
github.com/uudashr/gocognit v1.1.2/go.mod h1:aAVdLURqcanke8h3vg35BC++eseDm66Z7KmchI5et4k=
|
||||||
|
github.com/uudashr/gocognit v1.1.3 h1:l+a111VcDbKfynh+airAy/DJQKaXh2m9vkoysMPSZyM=
|
||||||
|
github.com/uudashr/gocognit v1.1.3/go.mod h1:aKH8/e8xbTRBwjbCkwZ8qt4l2EpKXl31KMHgSS+lZ2U=
|
||||||
|
github.com/uudashr/gocognit v1.2.0 h1:3BU9aMr1xbhPlvJLSydKwdLN3tEUUrzPSSM8S4hDYRA=
|
||||||
|
github.com/uudashr/gocognit v1.2.0/go.mod h1:k/DdKPI6XBZO1q7HgoV2juESI2/Ofj9AcHPZhBBdrTU=
|
||||||
|
github.com/uudashr/iface v1.3.1 h1:bA51vmVx1UIhiIsQFSNq6GZ6VPTk3WNMZgRiCe9R29U=
|
||||||
|
github.com/uudashr/iface v1.3.1/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg=
|
||||||
github.com/xen0n/gosmopolitan v1.2.1 h1:3pttnTuFumELBRSh+KQs1zcz4fN6Zy7aB0xlnQSn1Iw=
|
github.com/xen0n/gosmopolitan v1.2.1 h1:3pttnTuFumELBRSh+KQs1zcz4fN6Zy7aB0xlnQSn1Iw=
|
||||||
github.com/xen0n/gosmopolitan v1.2.1/go.mod h1:JsHq/Brs1o050OOdmzHeOr0N7OtlnKRAGAsElF8xBQA=
|
github.com/xen0n/gosmopolitan v1.2.1/go.mod h1:JsHq/Brs1o050OOdmzHeOr0N7OtlnKRAGAsElF8xBQA=
|
||||||
|
github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU=
|
||||||
|
github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg=
|
||||||
github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM=
|
github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM=
|
||||||
github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk=
|
github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk=
|
||||||
github.com/yeya24/promlinter v0.2.0 h1:xFKDQ82orCU5jQujdaD8stOHiv8UN68BSdn2a8u8Y3o=
|
github.com/yeya24/promlinter v0.2.0 h1:xFKDQ82orCU5jQujdaD8stOHiv8UN68BSdn2a8u8Y3o=
|
||||||
github.com/yeya24/promlinter v0.2.0/go.mod h1:u54lkmBOZrpEbQQ6gox2zWKKLKu2SGe+2KOiextY+IA=
|
github.com/yeya24/promlinter v0.2.0/go.mod h1:u54lkmBOZrpEbQQ6gox2zWKKLKu2SGe+2KOiextY+IA=
|
||||||
|
github.com/yeya24/promlinter v0.3.0 h1:JVDbMp08lVCP7Y6NP3qHroGAO6z2yGKQtS5JsjqtoFs=
|
||||||
|
github.com/yeya24/promlinter v0.3.0/go.mod h1:cDfJQQYv9uYciW60QT0eeHlFodotkYZlL+YcPQN+mW4=
|
||||||
github.com/ykadowak/zerologlint v0.1.2 h1:Um4P5RMmelfjQqQJKtE8ZW+dLZrXrENeIzWWKw800U4=
|
github.com/ykadowak/zerologlint v0.1.2 h1:Um4P5RMmelfjQqQJKtE8ZW+dLZrXrENeIzWWKw800U4=
|
||||||
github.com/ykadowak/zerologlint v0.1.2/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2/K1U4pmIELKg=
|
github.com/ykadowak/zerologlint v0.1.2/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2/K1U4pmIELKg=
|
||||||
|
github.com/ykadowak/zerologlint v0.1.5 h1:Gy/fMz1dFQN9JZTPjv1hxEk+sRWm05row04Yoolgdiw=
|
||||||
|
github.com/ykadowak/zerologlint v0.1.5/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2/K1U4pmIELKg=
|
||||||
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
@@ -635,6 +970,18 @@ github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1
|
|||||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
gitlab.com/bosi/decorder v0.2.3 h1:gX4/RgK16ijY8V+BRQHAySfQAb354T7/xQpDB2n10P0=
|
gitlab.com/bosi/decorder v0.2.3 h1:gX4/RgK16ijY8V+BRQHAySfQAb354T7/xQpDB2n10P0=
|
||||||
gitlab.com/bosi/decorder v0.2.3/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzChSdGE=
|
gitlab.com/bosi/decorder v0.2.3/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzChSdGE=
|
||||||
|
gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo=
|
||||||
|
gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8=
|
||||||
|
go-simpler.org/musttag v0.12.2 h1:J7lRc2ysXOq7eM8rwaTYnNrHd5JwjppzB6mScysB2Cs=
|
||||||
|
go-simpler.org/musttag v0.12.2/go.mod h1:uN1DVIasMTQKk6XSik7yrJoEysGtR2GRqvWnI9S7TYM=
|
||||||
|
go-simpler.org/musttag v0.13.0 h1:Q/YAW0AHvaoaIbsPj3bvEI5/QFP7w696IMUpnKXQfCE=
|
||||||
|
go-simpler.org/musttag v0.13.0/go.mod h1:FTzIGeK6OkKlUDVpj0iQUXZLUO1Js9+mvykDQy9C5yM=
|
||||||
|
go-simpler.org/sloglint v0.7.1 h1:qlGLiqHbN5islOxjeLXoPtUdZXb669RW+BDQ+xOSNoU=
|
||||||
|
go-simpler.org/sloglint v0.7.1/go.mod h1:OlaVDRh/FKKd4X4sIMbsz8st97vomydceL146Fthh/c=
|
||||||
|
go-simpler.org/sloglint v0.7.2 h1:Wc9Em/Zeuu7JYpl+oKoYOsQSy2X560aVueCW/m6IijY=
|
||||||
|
go-simpler.org/sloglint v0.7.2/go.mod h1:US+9C80ppl7VsThQclkM7BkCHQAzuz8kHLsW3ppuluo=
|
||||||
|
go-simpler.org/sloglint v0.9.0 h1:/40NQtjRx9txvsB/RN022KsUJU+zaaSb/9q9BSefSrE=
|
||||||
|
go-simpler.org/sloglint v0.9.0/go.mod h1:G/OrAF6uxj48sHahCzrbarVMptL2kjWTaUeC8+fOGww=
|
||||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
||||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
||||||
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
@@ -645,6 +992,10 @@ go.tmz.dev/musttag v0.7.0 h1:QfytzjTWGXZmChoX0L++7uQN+yRCPfyFm+whsM+lfGc=
|
|||||||
go.tmz.dev/musttag v0.7.0/go.mod h1:oTFPvgOkJmp5kYL02S8+jrH0eLrBIl57rzWeA26zDEM=
|
go.tmz.dev/musttag v0.7.0/go.mod h1:oTFPvgOkJmp5kYL02S8+jrH0eLrBIl57rzWeA26zDEM=
|
||||||
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
|
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
|
||||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||||
|
go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8=
|
||||||
|
go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0=
|
||||||
|
go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
|
||||||
|
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
|
||||||
go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
|
go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
|
||||||
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
|
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
|
||||||
go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U=
|
go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U=
|
||||||
@@ -675,11 +1026,18 @@ golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfU
|
|||||||
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
|
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
|
||||||
golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea h1:vLCWI/yYrdEHyN2JzIzPO3aaQJHQdp89IZBA/+azVC4=
|
golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea h1:vLCWI/yYrdEHyN2JzIzPO3aaQJHQdp89IZBA/+azVC4=
|
||||||
golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
|
golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
|
||||||
|
golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM=
|
||||||
|
golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI=
|
||||||
|
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk=
|
||||||
golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
||||||
golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9 h1:6WHiuFL9FNjg8RljAaT7FNUuKDbvMqS1i5cr2OE2sLQ=
|
golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9 h1:6WHiuFL9FNjg8RljAaT7FNUuKDbvMqS1i5cr2OE2sLQ=
|
||||||
golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
||||||
golang.org/x/exp/typeparams v0.0.0-20230224173230-c95f2b4c22f2 h1:J74nGeMgeFnYQJN59eFwh06jX/V8g0lB7LWpjSLxtgU=
|
golang.org/x/exp/typeparams v0.0.0-20230224173230-c95f2b4c22f2 h1:J74nGeMgeFnYQJN59eFwh06jX/V8g0lB7LWpjSLxtgU=
|
||||||
golang.org/x/exp/typeparams v0.0.0-20230224173230-c95f2b4c22f2/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
golang.org/x/exp/typeparams v0.0.0-20230224173230-c95f2b4c22f2/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
||||||
|
golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f h1:phY1HzDcf18Aq9A8KkmRtY9WvOFIxN8wgfvy6Zm1DV8=
|
||||||
|
golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
||||||
|
golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f h1:WTyX8eCCyfdqiPYkRGm0MqElSfYFH3yR1+rl/mct9sA=
|
||||||
|
golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
||||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
@@ -715,6 +1073,12 @@ golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs=
|
|||||||
golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk=
|
golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk=
|
||||||
golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
|
golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0=
|
||||||
|
golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||||
|
golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
|
||||||
|
golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||||
|
golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM=
|
||||||
|
golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
@@ -783,6 +1147,12 @@ golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
|
|||||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI=
|
golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI=
|
||||||
golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
|
||||||
|
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
|
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
|
||||||
|
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
|
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
|
||||||
|
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
@@ -847,6 +1217,12 @@ golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
|
|||||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
|
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
|
||||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
|
||||||
|
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
|
golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM=
|
||||||
|
golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
|
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
|
||||||
|
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
@@ -870,6 +1246,10 @@ golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
|
|||||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
|
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
|
||||||
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||||
|
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
|
||||||
|
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
|
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
|
||||||
|
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
||||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
@@ -954,6 +1334,12 @@ golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4=
|
|||||||
golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
|
golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
|
||||||
golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM=
|
golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM=
|
||||||
golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
|
golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
|
||||||
|
golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA=
|
||||||
|
golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c=
|
||||||
|
golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
|
||||||
|
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
|
||||||
|
golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY=
|
||||||
|
golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
@@ -1050,6 +1436,10 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
|
|||||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||||
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
|
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
|
||||||
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||||
|
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
|
||||||
|
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||||
|
google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
|
||||||
|
google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
||||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
@@ -1080,16 +1470,28 @@ honnef.co/go/tools v0.4.2 h1:6qXr+R5w+ktL5UkwEbPp+fEvfyoMPche6GkOpGHZcLc=
|
|||||||
honnef.co/go/tools v0.4.2/go.mod h1:36ZgoUOrqOk1GxwHhyryEkq8FQWkUO2xGuSMhUCcdvA=
|
honnef.co/go/tools v0.4.2/go.mod h1:36ZgoUOrqOk1GxwHhyryEkq8FQWkUO2xGuSMhUCcdvA=
|
||||||
honnef.co/go/tools v0.4.3 h1:o/n5/K5gXqk8Gozvs2cnL0F2S1/g1vcGCAx2vETjITw=
|
honnef.co/go/tools v0.4.3 h1:o/n5/K5gXqk8Gozvs2cnL0F2S1/g1vcGCAx2vETjITw=
|
||||||
honnef.co/go/tools v0.4.3/go.mod h1:36ZgoUOrqOk1GxwHhyryEkq8FQWkUO2xGuSMhUCcdvA=
|
honnef.co/go/tools v0.4.3/go.mod h1:36ZgoUOrqOk1GxwHhyryEkq8FQWkUO2xGuSMhUCcdvA=
|
||||||
|
honnef.co/go/tools v0.4.7 h1:9MDAWxMoSnB6QoSqiVr7P5mtkT9pOc1kSxchzPCnqJs=
|
||||||
|
honnef.co/go/tools v0.4.7/go.mod h1:+rnGS1THNh8zMwnd2oVOTL9QF6vmfyG6ZXBULae2uc0=
|
||||||
|
honnef.co/go/tools v0.5.0 h1:29uoiIormS3Z6R+t56STz/oI4v+mB51TSmEOdJPgRnE=
|
||||||
|
honnef.co/go/tools v0.5.0/go.mod h1:e9irvo83WDG9/irijV44wr3tbhcFeRnfpVlRqVwpzMs=
|
||||||
|
honnef.co/go/tools v0.6.0 h1:TAODvD3knlq75WCp2nyGJtT4LeRV/o7NN9nYPeVJXf8=
|
||||||
|
honnef.co/go/tools v0.6.0/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4=
|
||||||
mvdan.cc/gofumpt v0.4.0 h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM=
|
mvdan.cc/gofumpt v0.4.0 h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM=
|
||||||
mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ=
|
mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ=
|
||||||
mvdan.cc/gofumpt v0.5.0 h1:0EQ+Z56k8tXjj/6TQD25BFNKQXpCvT0rnansIc7Ug5E=
|
mvdan.cc/gofumpt v0.5.0 h1:0EQ+Z56k8tXjj/6TQD25BFNKQXpCvT0rnansIc7Ug5E=
|
||||||
mvdan.cc/gofumpt v0.5.0/go.mod h1:HBeVDtMKRZpXyxFciAirzdKklDlGu8aAy1wEbH5Y9js=
|
mvdan.cc/gofumpt v0.5.0/go.mod h1:HBeVDtMKRZpXyxFciAirzdKklDlGu8aAy1wEbH5Y9js=
|
||||||
|
mvdan.cc/gofumpt v0.6.0 h1:G3QvahNDmpD+Aek/bNOLrFR2XC6ZAdo62dZu65gmwGo=
|
||||||
|
mvdan.cc/gofumpt v0.6.0/go.mod h1:4L0wf+kgIPZtcCWXynNS2e6bhmj73umwnuXSZarixzA=
|
||||||
|
mvdan.cc/gofumpt v0.7.0 h1:bg91ttqXmi9y2xawvkuMXyvAA/1ZGJqYAEGjXuP0JXU=
|
||||||
|
mvdan.cc/gofumpt v0.7.0/go.mod h1:txVFJy/Sc/mvaycET54pV8SW8gWxTlUuGHVEcncmNUo=
|
||||||
mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I=
|
mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I=
|
||||||
mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc=
|
mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc=
|
||||||
mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo=
|
mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo=
|
||||||
mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4=
|
mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4=
|
||||||
mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d h1:3rvTIIM22r9pvXk+q3swxUQAQOxksVMGK7sml4nG57w=
|
mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d h1:3rvTIIM22r9pvXk+q3swxUQAQOxksVMGK7sml4nG57w=
|
||||||
mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d/go.mod h1:IeHQjmn6TOD+e4Z3RFiZMMsLVL+A96Nvptar8Fj71is=
|
mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d/go.mod h1:IeHQjmn6TOD+e4Z3RFiZMMsLVL+A96Nvptar8Fj71is=
|
||||||
|
mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8XzX0u72NttUGVFjO3U=
|
||||||
|
mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f/go.mod h1:RSLa7mKKCNeTTMHBw5Hsy2rfJmd6O2ivt9Dw9ZqCQpQ=
|
||||||
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
||||||
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
||||||
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
||||||
|
|||||||
@@ -2,4 +2,4 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT
|
|||||||
|
|
||||||
go 1.18
|
go 1.18
|
||||||
|
|
||||||
require github.com/go-swagger/go-swagger v0.30.2 // cmd/swagger
|
require github.com/go-swagger/go-swagger v0.30.6-0.20240310114303-db51e79a0e37 // cmd/swagger
|
||||||
|
|||||||
@@ -42,8 +42,13 @@ github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJ
|
|||||||
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
|
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
|
||||||
github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
|
github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
|
||||||
github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
|
github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
|
||||||
|
github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
|
||||||
|
github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0=
|
||||||
|
github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
|
||||||
github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8=
|
github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8=
|
||||||
github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk=
|
github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk=
|
||||||
|
github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA=
|
||||||
|
github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM=
|
||||||
github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI=
|
github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI=
|
||||||
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
||||||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
|
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
|
||||||
@@ -51,6 +56,8 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdko
|
|||||||
github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
|
github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
|
||||||
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ=
|
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ=
|
||||||
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
|
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
|
||||||
|
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
|
||||||
|
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
|
||||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
||||||
@@ -73,9 +80,13 @@ github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw
|
|||||||
github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o=
|
github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o=
|
||||||
github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk=
|
github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk=
|
||||||
github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||||
|
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
|
||||||
|
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||||
github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=
|
github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=
|
||||||
github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI=
|
github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI=
|
||||||
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
|
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
|
||||||
|
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
|
||||||
|
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
|
||||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
@@ -83,49 +94,71 @@ github.com/go-openapi/analysis v0.21.2 h1:hXFrOYFHUAMQdu6zwAiKKJHJQ8kqZs1ux/ru1P
|
|||||||
github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY=
|
github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY=
|
||||||
github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc=
|
github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc=
|
||||||
github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo=
|
github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo=
|
||||||
|
github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU=
|
||||||
|
github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo=
|
||||||
github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
|
github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
|
||||||
github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
|
github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
|
||||||
github.com/go-openapi/errors v0.20.2 h1:dxy7PGTqEh94zj2E3h1cUmQQWiM1+aeCROfAr02EmK8=
|
github.com/go-openapi/errors v0.20.2 h1:dxy7PGTqEh94zj2E3h1cUmQQWiM1+aeCROfAr02EmK8=
|
||||||
github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
|
github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
|
||||||
github.com/go-openapi/errors v0.20.3 h1:rz6kiC84sqNQoqrtulzaL/VERgkoCyB6WdEkc2ujzUc=
|
github.com/go-openapi/errors v0.20.3 h1:rz6kiC84sqNQoqrtulzaL/VERgkoCyB6WdEkc2ujzUc=
|
||||||
github.com/go-openapi/errors v0.20.3/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk=
|
github.com/go-openapi/errors v0.20.3/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk=
|
||||||
|
github.com/go-openapi/errors v0.22.0 h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w=
|
||||||
|
github.com/go-openapi/errors v0.22.0/go.mod h1:J3DmZScxCDufmIMsdOuDHxJbdOGC0xtUynjIx092vXE=
|
||||||
github.com/go-openapi/inflect v0.19.0 h1:9jCH9scKIbHeV9m12SmPilScz6krDxKRasNNSNPXu/4=
|
github.com/go-openapi/inflect v0.19.0 h1:9jCH9scKIbHeV9m12SmPilScz6krDxKRasNNSNPXu/4=
|
||||||
github.com/go-openapi/inflect v0.19.0/go.mod h1:lHpZVlpIQqLyKwJ4N+YSc9hchQy/i12fJykb83CRBH4=
|
github.com/go-openapi/inflect v0.19.0/go.mod h1:lHpZVlpIQqLyKwJ4N+YSc9hchQy/i12fJykb83CRBH4=
|
||||||
|
github.com/go-openapi/inflect v0.21.0 h1:FoBjBTQEcbg2cJUWX6uwL9OyIW8eqc9k4KhN4lfbeYk=
|
||||||
|
github.com/go-openapi/inflect v0.21.0/go.mod h1:INezMuUu7SJQc2AyR3WO0DqqYUJSj8Kb4hBd7WtjlAw=
|
||||||
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
||||||
github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
|
github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
|
||||||
github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
||||||
|
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
|
||||||
|
github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
|
||||||
github.com/go-openapi/jsonreference v0.19.6 h1:UBIxjkht+AWIgYzCDSv2GN+E/togfwXUJFRTWhl2Jjs=
|
github.com/go-openapi/jsonreference v0.19.6 h1:UBIxjkht+AWIgYzCDSv2GN+E/togfwXUJFRTWhl2Jjs=
|
||||||
github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns=
|
github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns=
|
||||||
github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA=
|
github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA=
|
||||||
github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo=
|
github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo=
|
||||||
|
github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
|
||||||
|
github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
|
||||||
github.com/go-openapi/loads v0.21.0 h1:jYtUO4wwP7psAweisP/MDoOpdzsYEESdoPcsWjHDR68=
|
github.com/go-openapi/loads v0.21.0 h1:jYtUO4wwP7psAweisP/MDoOpdzsYEESdoPcsWjHDR68=
|
||||||
github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g=
|
github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g=
|
||||||
github.com/go-openapi/loads v0.21.2 h1:r2a/xFIYeZ4Qd2TnGpWDIQNcP80dIaZgf704za8enro=
|
github.com/go-openapi/loads v0.21.2 h1:r2a/xFIYeZ4Qd2TnGpWDIQNcP80dIaZgf704za8enro=
|
||||||
github.com/go-openapi/loads v0.21.2/go.mod h1:Jq58Os6SSGz0rzh62ptiu8Z31I+OTHqmULx5e/gJbNw=
|
github.com/go-openapi/loads v0.21.2/go.mod h1:Jq58Os6SSGz0rzh62ptiu8Z31I+OTHqmULx5e/gJbNw=
|
||||||
|
github.com/go-openapi/loads v0.22.0 h1:ECPGd4jX1U6NApCGG1We+uEozOAvXvJSF4nnwHZ8Aco=
|
||||||
|
github.com/go-openapi/loads v0.22.0/go.mod h1:yLsaTCS92mnSAZX5WWoxszLj0u+Ojl+Zs5Stn1oF+rs=
|
||||||
github.com/go-openapi/runtime v0.21.1 h1:/KIG00BzA2x2HRStX2tnhbqbQdPcFlkgsYCiNY20FZs=
|
github.com/go-openapi/runtime v0.21.1 h1:/KIG00BzA2x2HRStX2tnhbqbQdPcFlkgsYCiNY20FZs=
|
||||||
github.com/go-openapi/runtime v0.24.1 h1:Sml5cgQKGYQHF+M7yYSHaH1eOjvTykrddTE/KtQVjqo=
|
github.com/go-openapi/runtime v0.24.1 h1:Sml5cgQKGYQHF+M7yYSHaH1eOjvTykrddTE/KtQVjqo=
|
||||||
github.com/go-openapi/runtime v0.24.1/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk=
|
github.com/go-openapi/runtime v0.24.1/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk=
|
||||||
|
github.com/go-openapi/runtime v0.28.0 h1:gpPPmWSNGo214l6n8hzdXYhPuJcGtziTOgUpvsFWGIQ=
|
||||||
|
github.com/go-openapi/runtime v0.28.0/go.mod h1:QN7OzcS+XuYmkQLw05akXk0jRH/eZ3kb18+1KwW9gyc=
|
||||||
github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M=
|
github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M=
|
||||||
github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I=
|
github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I=
|
||||||
github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA=
|
github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA=
|
||||||
github.com/go-openapi/spec v0.20.7 h1:1Rlu/ZrOCCob0n+JKKJAWhNWMPW8bOZRg8FJaY+0SKI=
|
github.com/go-openapi/spec v0.20.7 h1:1Rlu/ZrOCCob0n+JKKJAWhNWMPW8bOZRg8FJaY+0SKI=
|
||||||
github.com/go-openapi/spec v0.20.7/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA=
|
github.com/go-openapi/spec v0.20.7/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA=
|
||||||
|
github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY=
|
||||||
|
github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk=
|
||||||
github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg=
|
github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg=
|
||||||
github.com/go-openapi/strfmt v0.21.1 h1:G6s2t5V5kGCHLVbSdZ/6lI8Wm4OzoPFkc3/cjAsKQrM=
|
github.com/go-openapi/strfmt v0.21.1 h1:G6s2t5V5kGCHLVbSdZ/6lI8Wm4OzoPFkc3/cjAsKQrM=
|
||||||
github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k=
|
github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k=
|
||||||
github.com/go-openapi/strfmt v0.21.2/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k=
|
github.com/go-openapi/strfmt v0.21.2/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k=
|
||||||
github.com/go-openapi/strfmt v0.21.3 h1:xwhj5X6CjXEZZHMWy1zKJxvW9AfHC9pkyUjLvHtKG7o=
|
github.com/go-openapi/strfmt v0.21.3 h1:xwhj5X6CjXEZZHMWy1zKJxvW9AfHC9pkyUjLvHtKG7o=
|
||||||
github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg=
|
github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg=
|
||||||
|
github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c=
|
||||||
|
github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4=
|
||||||
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
|
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
|
||||||
github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM=
|
github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM=
|
||||||
github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
|
github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
|
||||||
github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
|
github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
|
||||||
github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
|
github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
|
||||||
github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
|
github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
|
||||||
|
github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
|
||||||
|
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
|
||||||
github.com/go-openapi/validate v0.20.3 h1:GZPPhhKSZrE8HjB4eEkoYAZmoWA4+tCemSgINH1/vKw=
|
github.com/go-openapi/validate v0.20.3 h1:GZPPhhKSZrE8HjB4eEkoYAZmoWA4+tCemSgINH1/vKw=
|
||||||
github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg=
|
github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg=
|
||||||
github.com/go-openapi/validate v0.22.0 h1:b0QecH6VslW/TxtpKgzpO1SNG7GU2FsaqKdP1E2T50Y=
|
github.com/go-openapi/validate v0.22.0 h1:b0QecH6VslW/TxtpKgzpO1SNG7GU2FsaqKdP1E2T50Y=
|
||||||
github.com/go-openapi/validate v0.22.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg=
|
github.com/go-openapi/validate v0.22.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg=
|
||||||
|
github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58=
|
||||||
|
github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ=
|
||||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||||
github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw=
|
github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw=
|
||||||
github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4=
|
github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4=
|
||||||
@@ -133,6 +166,8 @@ github.com/go-swagger/go-swagger v0.29.0 h1:z3YoZtLvS1Y8TE/PCat1VypcZxM0IgKLt0Nv
|
|||||||
github.com/go-swagger/go-swagger v0.29.0/go.mod h1:Z4GJzI+bHKKkGB2Ji1rawpi3/ldXX8CkzGIa9HAC5EE=
|
github.com/go-swagger/go-swagger v0.29.0/go.mod h1:Z4GJzI+bHKKkGB2Ji1rawpi3/ldXX8CkzGIa9HAC5EE=
|
||||||
github.com/go-swagger/go-swagger v0.30.2 h1:23odPUyQZdkNFZZSBJ3mqYYcdh+LnuReEbdWN18OMRo=
|
github.com/go-swagger/go-swagger v0.30.2 h1:23odPUyQZdkNFZZSBJ3mqYYcdh+LnuReEbdWN18OMRo=
|
||||||
github.com/go-swagger/go-swagger v0.30.2/go.mod h1:neDPes8r8PCz2JPvHRDj8BTULLh4VJUt7n6MpQqxhHM=
|
github.com/go-swagger/go-swagger v0.30.2/go.mod h1:neDPes8r8PCz2JPvHRDj8BTULLh4VJUt7n6MpQqxhHM=
|
||||||
|
github.com/go-swagger/go-swagger v0.30.6-0.20240310114303-db51e79a0e37 h1:KFcZmKdZmapAog2+eL1buervAYrYolBZk7fMecPPDmo=
|
||||||
|
github.com/go-swagger/go-swagger v0.30.6-0.20240310114303-db51e79a0e37/go.mod h1:i1/E+d8iPNReSE7y04FaVu5OPKB3il5cn+T1Egogg3I=
|
||||||
github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
|
github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
|
||||||
github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY=
|
github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY=
|
||||||
github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg=
|
github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg=
|
||||||
@@ -211,11 +246,15 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4
|
|||||||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
|
github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
|
||||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
||||||
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
|
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
|
||||||
github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4=
|
github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4=
|
||||||
github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q=
|
github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q=
|
||||||
|
github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE=
|
||||||
|
github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w=
|
||||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
||||||
@@ -223,11 +262,16 @@ github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T
|
|||||||
github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
|
github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
|
||||||
github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw=
|
github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw=
|
||||||
github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
|
github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
|
||||||
|
github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
|
||||||
|
github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU=
|
||||||
|
github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
|
||||||
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||||
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||||
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
||||||
github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
|
github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
|
||||||
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
||||||
|
github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
|
||||||
|
github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
|
||||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||||
github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc=
|
github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc=
|
||||||
github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
|
github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
|
||||||
@@ -246,6 +290,8 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
|||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
|
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
|
||||||
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
|
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
|
||||||
|
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
||||||
|
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||||
@@ -253,6 +299,8 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
|||||||
github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls=
|
github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls=
|
||||||
github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
|
github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
|
||||||
github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
|
github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
|
||||||
|
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
|
||||||
|
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
|
||||||
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||||
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||||
github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
||||||
@@ -283,6 +331,9 @@ github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3v
|
|||||||
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
|
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
|
||||||
github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV0GUKU=
|
github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV0GUKU=
|
||||||
github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
|
github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.1.1 h1:LWAJwfNvjQZCFIDKWYQaM62NcYeYViCmWIwmOStowAI=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.1.1/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
|
||||||
|
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
|
||||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
@@ -297,18 +348,32 @@ github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTE
|
|||||||
github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg=
|
github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg=
|
||||||
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
|
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
|
||||||
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
||||||
|
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
|
||||||
|
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
|
||||||
|
github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
|
||||||
|
github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
|
||||||
|
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
|
||||||
|
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
|
||||||
github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
|
github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
|
||||||
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
||||||
|
github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
|
||||||
|
github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
||||||
github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
||||||
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
|
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
|
||||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||||
|
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
|
||||||
|
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
|
||||||
github.com/spf13/afero v1.8.0 h1:5MmtuhAgYeU6qpa7w7bP0dv6MBYuup0vekhSpSkoq60=
|
github.com/spf13/afero v1.8.0 h1:5MmtuhAgYeU6qpa7w7bP0dv6MBYuup0vekhSpSkoq60=
|
||||||
github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=
|
github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=
|
||||||
github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=
|
github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=
|
||||||
|
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
|
||||||
|
github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
|
||||||
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
|
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
|
||||||
github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
|
github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
|
||||||
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
|
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
|
||||||
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
|
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
|
||||||
|
github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0=
|
||||||
|
github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
|
||||||
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
|
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
|
||||||
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
|
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
|
||||||
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
|
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
|
||||||
@@ -318,9 +383,12 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An
|
|||||||
github.com/spf13/viper v1.10.1 h1:nuJZuYpG7gTj/XqiUwg8bA0cp1+M2mC3J4g5luUYBKk=
|
github.com/spf13/viper v1.10.1 h1:nuJZuYpG7gTj/XqiUwg8bA0cp1+M2mC3J4g5luUYBKk=
|
||||||
github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ=
|
github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ=
|
||||||
github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI=
|
github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI=
|
||||||
|
github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ=
|
||||||
|
github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||||
@@ -329,9 +397,12 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
|
|||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
|
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
|
github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
|
||||||
github.com/subosito/gotenv v1.3.0 h1:mjC+YW8QpAdXibNi+vNWgzmgBH4+5l5dCXv8cNysBLI=
|
github.com/subosito/gotenv v1.3.0 h1:mjC+YW8QpAdXibNi+vNWgzmgBH4+5l5dCXv8cNysBLI=
|
||||||
github.com/subosito/gotenv v1.3.0/go.mod h1:YzJjq/33h7nrwdY+iHMhEOEEbW0ovIz0tB6t6PwAXzs=
|
github.com/subosito/gotenv v1.3.0/go.mod h1:YzJjq/33h7nrwdY+iHMhEOEEbW0ovIz0tB6t6PwAXzs=
|
||||||
|
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
|
||||||
|
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
|
||||||
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
|
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
|
||||||
github.com/toqueteos/webbrowser v1.2.0 h1:tVP/gpK69Fx+qMJKsLE7TD8LuGWPnEV71wBN9rrstGQ=
|
github.com/toqueteos/webbrowser v1.2.0 h1:tVP/gpK69Fx+qMJKsLE7TD8LuGWPnEV71wBN9rrstGQ=
|
||||||
github.com/toqueteos/webbrowser v1.2.0/go.mod h1:XWoZq4cyp9WeUeak7w7LXRUQf1F1ATJMir8RTqb4ayM=
|
github.com/toqueteos/webbrowser v1.2.0/go.mod h1:XWoZq4cyp9WeUeak7w7LXRUQf1F1ATJMir8RTqb4ayM=
|
||||||
@@ -345,6 +416,7 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
|
|||||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg=
|
go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg=
|
||||||
go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng=
|
go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng=
|
||||||
go.mongodb.org/mongo-driver v1.8.2 h1:8ssUXufb90ujcIvR6MyE1SchaNj0SFxsakiZgxIyrMk=
|
go.mongodb.org/mongo-driver v1.8.2 h1:8ssUXufb90ujcIvR6MyE1SchaNj0SFxsakiZgxIyrMk=
|
||||||
@@ -352,12 +424,16 @@ go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCu
|
|||||||
go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8=
|
go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8=
|
||||||
go.mongodb.org/mongo-driver v1.10.1 h1:NujsPveKwHaWuKUer/ceo9DzEe7HIj1SlJ6uvXZG0S4=
|
go.mongodb.org/mongo-driver v1.10.1 h1:NujsPveKwHaWuKUer/ceo9DzEe7HIj1SlJ6uvXZG0S4=
|
||||||
go.mongodb.org/mongo-driver v1.10.1/go.mod h1:z4XpeoU6w+9Vht+jAFyLgVrD+jGSQQe0+CBWFHNiHt8=
|
go.mongodb.org/mongo-driver v1.10.1/go.mod h1:z4XpeoU6w+9Vht+jAFyLgVrD+jGSQQe0+CBWFHNiHt8=
|
||||||
|
go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd80=
|
||||||
|
go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c=
|
||||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
||||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
||||||
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
|
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
|
||||||
|
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
|
||||||
|
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
|
golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
|
||||||
@@ -369,10 +445,14 @@ golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPh
|
|||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
||||||
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
||||||
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90 h1:Y/gsMcFOcR+6S6f3YeMKl5g+dZMEWqcz5Czj/GWYbkM=
|
golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90 h1:Y/gsMcFOcR+6S6f3YeMKl5g+dZMEWqcz5Czj/GWYbkM=
|
||||||
golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
|
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
||||||
|
golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
|
||||||
|
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||||
@@ -383,6 +463,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
|
|||||||
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
||||||
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
||||||
|
golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ=
|
||||||
|
golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc=
|
||||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
@@ -409,6 +491,8 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
|||||||
golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38=
|
golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38=
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
|
golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic=
|
||||||
|
golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
@@ -444,6 +528,8 @@ golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1
|
|||||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/net v0.0.0-20220121210141-e204ce36a2ba h1:6u6sik+bn/y7vILcYkK3iwTBWN7WtBvB0+SZswQnbf8=
|
golang.org/x/net v0.0.0-20220121210141-e204ce36a2ba h1:6u6sik+bn/y7vILcYkK3iwTBWN7WtBvB0+SZswQnbf8=
|
||||||
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
||||||
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
|
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
@@ -465,6 +551,9 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ
|
|||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
|
||||||
|
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
@@ -511,11 +600,17 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0=
|
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0=
|
||||||
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220829200755-d48e67d00261 h1:v6hYoSR9T5oet+pMXwUWkbiVqx/63mlHjefrHmxwfeY=
|
golang.org/x/sys v0.0.0-20220829200755-d48e67d00261 h1:v6hYoSR9T5oet+pMXwUWkbiVqx/63mlHjefrHmxwfeY=
|
||||||
golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
|
||||||
|
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
|
||||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
@@ -526,6 +621,9 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|||||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
|
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
|
||||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
|
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
|
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||||
|
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
@@ -583,6 +681,8 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
|
|||||||
golang.org/x/tools v0.1.8 h1:P1HhGGuLW4aAclzjtmJdf0mJOjVUZUzOTqkAkWL+l6w=
|
golang.org/x/tools v0.1.8 h1:P1HhGGuLW4aAclzjtmJdf0mJOjVUZUzOTqkAkWL+l6w=
|
||||||
golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
|
golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
|
||||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
|
golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw=
|
||||||
|
golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
@@ -683,6 +783,8 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
|||||||
gopkg.in/ini.v1 v1.66.3 h1:jRskFVxYaMGAMUbN0UZ7niA9gzL9B49DOqE78vg0k3w=
|
gopkg.in/ini.v1 v1.66.3 h1:jRskFVxYaMGAMUbN0UZ7niA9gzL9B49DOqE78vg0k3w=
|
||||||
gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4=
|
gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4=
|
||||||
gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||||
|
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
|
||||||
|
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.8. DO NOT EDIT.
|
# Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.9. DO NOT EDIT.
|
||||||
# All tools are designed to be build inside $GOBIN.
|
# All tools are designed to be build inside $GOBIN.
|
||||||
# Those variables will work only until 'bingo get' was invoked, or if tools were installed via Makefile's Variables.mk.
|
# Those variables will work only until 'bingo get' was invoked, or if tools were installed via Makefile's Variables.mk.
|
||||||
GOBIN=${GOBIN:=$(go env GOBIN)}
|
GOBIN=${GOBIN:=$(go env GOBIN)}
|
||||||
@@ -14,13 +14,13 @@ CUE="${GOBIN}/cue-v0.5.0"
|
|||||||
|
|
||||||
DRONE="${GOBIN}/drone-v1.5.0"
|
DRONE="${GOBIN}/drone-v1.5.0"
|
||||||
|
|
||||||
GOLANGCI_LINT="${GOBIN}/golangci-lint-v1.53.3"
|
GOLANGCI_LINT="${GOBIN}/golangci-lint-v1.60.1"
|
||||||
|
|
||||||
JB="${GOBIN}/jb-v0.5.1"
|
JB="${GOBIN}/jb-v0.5.1"
|
||||||
|
|
||||||
LEFTHOOK="${GOBIN}/lefthook-v1.4.8"
|
LEFTHOOK="${GOBIN}/lefthook-v1.4.8"
|
||||||
|
|
||||||
SWAGGER="${GOBIN}/swagger-v0.30.2"
|
SWAGGER="${GOBIN}/swagger-v0.30.6-0.20240310114303-db51e79a0e37"
|
||||||
|
|
||||||
WIRE="${GOBIN}/wire-v0.5.0"
|
WIRE="${GOBIN}/wire-v0.6.0"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
aks
|
|
||||||
eror
|
|
||||||
iam
|
|
||||||
wan
|
|
||||||
[Operato Windrose](https://grafana.com/grafana/plugins/operato-windrose-panel/)
|
|
||||||
sergent
|
|
||||||
13
.drone.star
13
.drone.star
@@ -17,18 +17,10 @@ load(
|
|||||||
"publish_npm_pipelines",
|
"publish_npm_pipelines",
|
||||||
"publish_packages_pipeline",
|
"publish_packages_pipeline",
|
||||||
)
|
)
|
||||||
load(
|
|
||||||
"scripts/drone/pipelines/ci_images.star",
|
|
||||||
"publish_ci_windows_test_image_pipeline",
|
|
||||||
)
|
|
||||||
load(
|
load(
|
||||||
"scripts/drone/pipelines/publish_images.star",
|
"scripts/drone/pipelines/publish_images.star",
|
||||||
"publish_image_pipelines_public",
|
"publish_image_pipelines_public",
|
||||||
)
|
)
|
||||||
load(
|
|
||||||
"scripts/drone/pipelines/windows.star",
|
|
||||||
"windows_test_backend",
|
|
||||||
)
|
|
||||||
load(
|
load(
|
||||||
"scripts/drone/rgm.star",
|
"scripts/drone/rgm.star",
|
||||||
"rgm",
|
"rgm",
|
||||||
@@ -44,12 +36,7 @@ def main(_ctx):
|
|||||||
publish_npm_pipelines() +
|
publish_npm_pipelines() +
|
||||||
publish_packages_pipeline() +
|
publish_packages_pipeline() +
|
||||||
rgm() +
|
rgm() +
|
||||||
[windows_test_backend({
|
|
||||||
"event": ["promote"],
|
|
||||||
"target": ["test-windows"],
|
|
||||||
}, "oss", "testing")] +
|
|
||||||
integration_test_pipelines() +
|
integration_test_pipelines() +
|
||||||
publish_ci_windows_test_image_pipeline() +
|
|
||||||
cronjobs() +
|
cronjobs() +
|
||||||
secrets()
|
secrets()
|
||||||
)
|
)
|
||||||
|
|||||||
1468
.drone.yml
1468
.drone.yml
File diff suppressed because it is too large
Load Diff
756
.github/CODEOWNERS
vendored
756
.github/CODEOWNERS
vendored
File diff suppressed because it is too large
Load Diff
22
.github/actions/changelog/action.yml
vendored
Normal file
22
.github/actions/changelog/action.yml
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
name: Changelog generator
|
||||||
|
description: Generates and publishes a changelog for the given release version
|
||||||
|
inputs:
|
||||||
|
target:
|
||||||
|
description: Target tag, branch or commit hash for the changelog
|
||||||
|
required: true
|
||||||
|
previous:
|
||||||
|
description: Previous tag, branch or commit hash to start changelog from
|
||||||
|
required: false
|
||||||
|
github_token:
|
||||||
|
description: GitHub token with read/write access to all necessary repositories
|
||||||
|
required: true
|
||||||
|
output_file:
|
||||||
|
description: A file to store resulting changelog markdown
|
||||||
|
required: false
|
||||||
|
outputs:
|
||||||
|
changelog:
|
||||||
|
description: Changelog contents between the two given versions in Markdown format
|
||||||
|
runs:
|
||||||
|
using: 'node20'
|
||||||
|
main: 'index.js'
|
||||||
|
|
||||||
325
.github/actions/changelog/index.js
vendored
Normal file
325
.github/actions/changelog/index.js
vendored
Normal file
@@ -0,0 +1,325 @@
|
|||||||
|
import { appendFileSync, writeFileSync } from 'fs';
|
||||||
|
import { exec as execCallback } from 'node:child_process';
|
||||||
|
import { promisify } from 'node:util';
|
||||||
|
|
||||||
|
//
|
||||||
|
// Github Action core utils: logging (notice + debug log levels), must escape
|
||||||
|
// newlines and percent signs
|
||||||
|
//
|
||||||
|
const escapeData = (s) => s.replace(/%/g, '%25').replace(/\r/g, '%0D').replace(/\n/g, '%0A');
|
||||||
|
const LOG = (msg) => console.log(`::notice::${escapeData(msg)}`);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Semver utils: parse, compare, sort etc (using official regexp)
|
||||||
|
// https://regex101.com/r/Ly7O1x/3/
|
||||||
|
//
|
||||||
|
const semverRegExp =
|
||||||
|
/^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
|
||||||
|
|
||||||
|
const semverParse = (tag) => {
|
||||||
|
const m = tag.match(semverRegExp);
|
||||||
|
if (!m) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const [_, major, minor, patch, prerelease] = m;
|
||||||
|
return [+major, +minor, +patch, prerelease, tag];
|
||||||
|
};
|
||||||
|
|
||||||
|
// semverCompare takes two parsed semver tags and comparest them more or less
|
||||||
|
// according to the semver specs
|
||||||
|
const semverCompare = (a, b) => {
|
||||||
|
for (let i = 0; i < 3; i++) {
|
||||||
|
if (a[i] !== b[i]) {
|
||||||
|
return a[i] < b[i] ? 1 : -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (a[3] !== b[3]) {
|
||||||
|
return a[3] < b[3] ? 1 : -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Using `git tag -l` output find the tag (version) that goes semantically
|
||||||
|
// right before the given version. This might not work correctly with some
|
||||||
|
// pre-release versions, which is why it's possible to pass previous version
|
||||||
|
// into this action explicitly to avoid this step.
|
||||||
|
const getPreviousVersion = async (version) => {
|
||||||
|
const exec = promisify(execCallback);
|
||||||
|
const { stdout } = await exec('git tag -l');
|
||||||
|
const prev = stdout
|
||||||
|
.split('\n')
|
||||||
|
.map(semverParse)
|
||||||
|
.filter((tag) => tag)
|
||||||
|
.sort(semverCompare)
|
||||||
|
.find((tag) => semverCompare(tag, semverParse(version)) > 0);
|
||||||
|
if (!prev) {
|
||||||
|
throw `Could not find previous git tag for ${version}`;
|
||||||
|
}
|
||||||
|
return prev[4];
|
||||||
|
};
|
||||||
|
|
||||||
|
// A helper for Github GraphQL API endpoint
|
||||||
|
const graphql = async (ghtoken, query, variables) => {
|
||||||
|
const { env } = process;
|
||||||
|
const results = await fetch('https://api.github.com/graphql', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
Authorization: `Bearer ${ghtoken}`,
|
||||||
|
},
|
||||||
|
body: JSON.stringify({ query, variables }),
|
||||||
|
});
|
||||||
|
|
||||||
|
const res = await results.json();
|
||||||
|
|
||||||
|
LOG(
|
||||||
|
JSON.stringify({
|
||||||
|
status: results.status,
|
||||||
|
text: results.statusText,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
return res.data;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Using Github GraphQL API find the timestamp for the given tag/commit hash.
|
||||||
|
// This is required for PR listing, because Github API only takes date/time as
|
||||||
|
// a "since" parameter while listing. Currently there is no way to provide two
|
||||||
|
// "commitish" items and get a list of PRs in between them.
|
||||||
|
const getCommitishDate = async (name, owner, target) => {
|
||||||
|
const result = await graphql(
|
||||||
|
ghtoken,
|
||||||
|
`
|
||||||
|
query getCommitDate($owner: String!, $name: String!, $target: String!) {
|
||||||
|
repository(owner: $owner, name: $name) {
|
||||||
|
object(expression: $target) {
|
||||||
|
... on Commit {
|
||||||
|
committedDate
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
{ name, owner, target }
|
||||||
|
);
|
||||||
|
return result.repository.object.committedDate;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Using Github GraphQL API get a list of PRs between the two "commitish" items.
|
||||||
|
// This resoves the "since" item's timestamp first and iterates over all PRs
|
||||||
|
// till "target" using naïve pagination.
|
||||||
|
const getHistory = async (name, owner, from, to) => {
|
||||||
|
LOG(`Fetching ${owner}/${name} PRs between ${from} and ${to}`);
|
||||||
|
const query = `
|
||||||
|
query findCommitsWithAssociatedPullRequests(
|
||||||
|
$name: String!
|
||||||
|
$owner: String!
|
||||||
|
$from: String!
|
||||||
|
$to: String!
|
||||||
|
$cursor: String
|
||||||
|
) {
|
||||||
|
repository(name: $name, owner: $owner) {
|
||||||
|
ref(qualifiedName: $from) {
|
||||||
|
compare(headRef: $to) {
|
||||||
|
commits(first: 25, after: $cursor) {
|
||||||
|
totalCount
|
||||||
|
pageInfo {
|
||||||
|
hasNextPage
|
||||||
|
endCursor
|
||||||
|
}
|
||||||
|
nodes {
|
||||||
|
id
|
||||||
|
associatedPullRequests(first: 1) {
|
||||||
|
nodes {
|
||||||
|
title
|
||||||
|
number
|
||||||
|
labels(first: 10) {
|
||||||
|
nodes {
|
||||||
|
name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
commits(first: 1) {
|
||||||
|
nodes {
|
||||||
|
commit {
|
||||||
|
author {
|
||||||
|
user {
|
||||||
|
login
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}`;
|
||||||
|
|
||||||
|
let cursor;
|
||||||
|
let nodes = [];
|
||||||
|
for (;;) {
|
||||||
|
const result = await graphql(ghtoken, query, {
|
||||||
|
name,
|
||||||
|
owner,
|
||||||
|
from,
|
||||||
|
to,
|
||||||
|
cursor,
|
||||||
|
});
|
||||||
|
LOG(`GraphQL: ${JSON.stringify(result)}`);
|
||||||
|
nodes = [...nodes, ...result.repository.ref.compare.commits.nodes];
|
||||||
|
const { hasNextPage, endCursor } = result.repository.ref.compare.commits.pageInfo;
|
||||||
|
if (!hasNextPage) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
cursor = endCursor;
|
||||||
|
}
|
||||||
|
return nodes;
|
||||||
|
};
|
||||||
|
|
||||||
|
// The main function for this action: given two "commitish" items it gets a
|
||||||
|
// list of PRs between them and filters/groups the PRs by category (bugfix,
|
||||||
|
// feature, deprecation, breaking change and plugin fixes/enhancements).
|
||||||
|
//
|
||||||
|
// PR grouping relies on Github labels only, not on the PR contents.
|
||||||
|
const getChangeLogItems = async (name, owner, from, to) => {
|
||||||
|
// check if a node contains a certain label
|
||||||
|
const hasLabel = ({ labels }, label) => labels.nodes.some(({ name }) => name === label);
|
||||||
|
// get all the PRs between the two "commitish" items
|
||||||
|
const history = await getHistory(name, owner, from, to);
|
||||||
|
|
||||||
|
const items = history.flatMap((node) => {
|
||||||
|
// discard PRs without a "changelog" label
|
||||||
|
const changes = node.associatedPullRequests.nodes.filter((PR) => hasLabel(PR, 'add to changelog'));
|
||||||
|
if (changes.length === 0) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
const item = changes[0];
|
||||||
|
const { number, url, labels } = item;
|
||||||
|
const title = item.title.replace(/^\[[^\]]+\]:?\s*/, '');
|
||||||
|
// for changelog PRs try to find a suitable category.
|
||||||
|
// Note that we can not detect "deprecation notices" like that
|
||||||
|
// as there is no suitable label yet.
|
||||||
|
const isBug = /fix/i.test(title) || hasLabel({ labels }, 'type/bug');
|
||||||
|
const isBreaking = hasLabel({ labels }, 'breaking change');
|
||||||
|
const isPlugin =
|
||||||
|
hasLabel({ labels }, 'area/grafana/ui') ||
|
||||||
|
hasLabel({ labels }, 'area/grafana/toolkit') ||
|
||||||
|
hasLabel({ labels }, 'area/grafana/runtime');
|
||||||
|
const author = item.commits.nodes[0].commit.author.user?.login;
|
||||||
|
return {
|
||||||
|
repo: name,
|
||||||
|
number,
|
||||||
|
title,
|
||||||
|
author,
|
||||||
|
isBug,
|
||||||
|
isPlugin,
|
||||||
|
isBreaking,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return items;
|
||||||
|
};
|
||||||
|
|
||||||
|
// ======================================================
|
||||||
|
// GENERATE CHANGELOG
|
||||||
|
// ======================================================
|
||||||
|
|
||||||
|
LOG(`Changelog action started`);
|
||||||
|
|
||||||
|
const ghtoken = process.env.GITHUB_TOKEN || process.env.INPUT_GITHUB_TOKEN;
|
||||||
|
if (!ghtoken) {
|
||||||
|
throw 'GITHUB_TOKEN is not set and "github_token" input is empty';
|
||||||
|
}
|
||||||
|
|
||||||
|
const target = process.argv[2] || process.env.INPUT_TARGET;
|
||||||
|
LOG(`Target tag/branch/commit: ${target}`);
|
||||||
|
|
||||||
|
const previous = process.argv[3] || process.env.INPUT_PREVIOUS || (await getPreviousVersion(target));
|
||||||
|
|
||||||
|
LOG(`Previous tag/commit: ${previous}`);
|
||||||
|
|
||||||
|
// Get all changelog items from Grafana OSS
|
||||||
|
const oss = await getChangeLogItems('grafana', 'grafana', previous, target);
|
||||||
|
// Get all changelog items from Grafana Enterprise
|
||||||
|
const entr = await getChangeLogItems('grafana-enterprise', 'grafana', previous, target);
|
||||||
|
|
||||||
|
LOG(`Found OSS PRs: ${oss.length}`);
|
||||||
|
LOG(`Found Enterprise PRs: ${entr.length}`);
|
||||||
|
|
||||||
|
// Sort PRs and categorise them into sections
|
||||||
|
const changelog = [...oss, ...entr]
|
||||||
|
.sort((a, b) => (a.title < b.title ? -1 : 1))
|
||||||
|
.reduce(
|
||||||
|
(changelog, item) => {
|
||||||
|
if (item.isPlugin) {
|
||||||
|
changelog.plugins.push(item);
|
||||||
|
} else if (item.isBug) {
|
||||||
|
changelog.bugfixes.push(item);
|
||||||
|
} else if (item.isBreaking) {
|
||||||
|
changelog.breaking.push(item);
|
||||||
|
} else {
|
||||||
|
changelog.features.push(item);
|
||||||
|
}
|
||||||
|
return changelog;
|
||||||
|
},
|
||||||
|
{
|
||||||
|
breaking: [],
|
||||||
|
plugins: [],
|
||||||
|
bugfixes: [],
|
||||||
|
features: [],
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// Convert PR numbers to Github links
|
||||||
|
const pullRequestLink = (n) => `[#${n}](https://github.com/grafana/grafana/pull/${n})`;
|
||||||
|
// Convert Github user IDs to Github links
|
||||||
|
const userLink = (u) => `[@${u}](https://github.com/${u})`;
|
||||||
|
|
||||||
|
// Now that we have a changelog - we can render some markdown as an output
|
||||||
|
const markdown = (changelog) => {
|
||||||
|
// This convers a list of changelog items into a markdown section with a list of titles/links
|
||||||
|
const section = (title, items) =>
|
||||||
|
items.length === 0
|
||||||
|
? ''
|
||||||
|
: `### ${title}
|
||||||
|
|
||||||
|
${items
|
||||||
|
.map(
|
||||||
|
(item) =>
|
||||||
|
`- ${item.title.replace(/^([^:]*:)/gm, '**$1**')} ${
|
||||||
|
item.repo === 'grafana-enterprise'
|
||||||
|
? '(Enterprise)'
|
||||||
|
: `${pullRequestLink(item.number)}${item.author ? ', ' + userLink(item.author) : ''}`
|
||||||
|
}`
|
||||||
|
)
|
||||||
|
.join('\n')}
|
||||||
|
`;
|
||||||
|
|
||||||
|
// Render all present sections for the given changelog
|
||||||
|
return `${section('Features and enhancements', changelog.features)}
|
||||||
|
${section('Bug fixes', changelog.bugfixes)}
|
||||||
|
${section('Breaking changes', changelog.breaking)}
|
||||||
|
${section('Plugin development fixes & changes', changelog.plugins)}
|
||||||
|
`;
|
||||||
|
};
|
||||||
|
|
||||||
|
const md = markdown(changelog);
|
||||||
|
|
||||||
|
// Print changelog, mostly for debugging
|
||||||
|
LOG(`Resulting markdown: ${md}`);
|
||||||
|
|
||||||
|
// Save changelog as an output for this action
|
||||||
|
if (process.env.GITHUB_OUTPUT) {
|
||||||
|
LOG(`Output to ${process.env.GITHUB_OUTPUT}`);
|
||||||
|
appendFileSync(process.env.GITHUB_OUTPUT, `changelog<<EOF\n${escapeData(md)}\nEOF`);
|
||||||
|
} else {
|
||||||
|
LOG('GITHUB_OUTPUT is not set');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save changelog as an output file (if requested)
|
||||||
|
if (process.env.INPUT_OUTPUT_FILE) {
|
||||||
|
LOG(`Output to ${process.env.INPUT_OUTPUT_FILE}`);
|
||||||
|
writeFileSync(process.env.INPUT_OUTPUT_FILE, md);
|
||||||
|
}
|
||||||
6
.github/actions/changelog/package.json
vendored
Normal file
6
.github/actions/changelog/package.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"name": "changelog",
|
||||||
|
"main": "index.js",
|
||||||
|
"type": "module",
|
||||||
|
"description": "changelog generator"
|
||||||
|
}
|
||||||
48
.github/actions/setup-enterprise/action.yml
vendored
Normal file
48
.github/actions/setup-enterprise/action.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
name: 'Setup Grafana Enterprise'
|
||||||
|
description: 'Clones and sets up Grafana Enterprise repository for testing'
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
github-app-name:
|
||||||
|
description: 'Name of the GitHub App in Vault'
|
||||||
|
required: false
|
||||||
|
default: 'grafana-ci-bot'
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Retrieve GitHub App secrets
|
||||||
|
id: get-secrets
|
||||||
|
uses: grafana/shared-workflows/actions/get-vault-secrets@get-vault-secrets-v1.0.1 # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
repo_secrets: |
|
||||||
|
APP_ID=${{ inputs.github-app-name }}:app-id
|
||||||
|
APP_INSTALLATION_ID=${{ inputs.github-app-name }}:app-installation-id
|
||||||
|
PRIVATE_KEY=${{ inputs.github-app-name }}:private-key
|
||||||
|
|
||||||
|
- name: Generate GitHub App token
|
||||||
|
id: generate_token
|
||||||
|
uses: actions/create-github-app-token@v1
|
||||||
|
with:
|
||||||
|
app-id: ${{ env.APP_ID }}
|
||||||
|
private-key: ${{ env.PRIVATE_KEY }}
|
||||||
|
repositories: "grafana-enterprise"
|
||||||
|
owner: "grafana"
|
||||||
|
|
||||||
|
- name: Setup Enterprise
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||||
|
run: |
|
||||||
|
git clone https://x-access-token:${GH_TOKEN}@github.com/grafana/grafana-enterprise.git ../grafana-enterprise;
|
||||||
|
|
||||||
|
cd ../grafana-enterprise
|
||||||
|
|
||||||
|
if git checkout ${GITHUB_HEAD_REF}; then
|
||||||
|
echo "checked out ${GITHUB_HEAD_REF}"
|
||||||
|
elif git checkout ${GITHUB_BASE_REF}; then
|
||||||
|
echo "checked out ${GITHUB_BASE_REF}"
|
||||||
|
else
|
||||||
|
git checkout main
|
||||||
|
fi
|
||||||
|
|
||||||
|
./build.sh
|
||||||
45
.github/actions/setup-grafana-bench/action.yml
vendored
Normal file
45
.github/actions/setup-grafana-bench/action.yml
vendored
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
name: 'Setup Grafana Bench'
|
||||||
|
description: 'Sets up and installs Grafana Bench'
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
github-app-name:
|
||||||
|
description: 'Name of the GitHub App in Vault'
|
||||||
|
required: false
|
||||||
|
default: 'grafana-ci-bot'
|
||||||
|
branch:
|
||||||
|
description: 'The branch to install from'
|
||||||
|
required: false
|
||||||
|
default: 'main'
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Retrieve GitHub App secrets
|
||||||
|
id: get-secrets
|
||||||
|
uses: grafana/shared-workflows/actions/get-vault-secrets@get-vault-secrets-v1.0.1 # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
repo_secrets: |
|
||||||
|
APP_ID=${{ inputs.github-app-name }}:app-id
|
||||||
|
APP_INSTALLATION_ID=${{ inputs.github-app-name }}:app-installation-id
|
||||||
|
PRIVATE_KEY=${{ inputs.github-app-name }}:private-key
|
||||||
|
|
||||||
|
- name: Generate GitHub App token
|
||||||
|
id: generate_token
|
||||||
|
uses: actions/create-github-app-token@v1
|
||||||
|
with:
|
||||||
|
app-id: ${{ env.APP_ID }}
|
||||||
|
private-key: ${{ env.PRIVATE_KEY }}
|
||||||
|
repositories: "grafana-bench"
|
||||||
|
owner: "grafana"
|
||||||
|
|
||||||
|
- name: Setup Bench
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||||
|
BRANCH: ${{ inputs.branch }}
|
||||||
|
run: |
|
||||||
|
git clone https://x-access-token:${GH_TOKEN}@github.com/grafana/grafana-bench.git ../grafana-bench
|
||||||
|
|
||||||
|
cd ../grafana-bench
|
||||||
|
git switch "$BRANCH"
|
||||||
|
go install .
|
||||||
50
.github/actions/test-coverage-processor/action.yml
vendored
Normal file
50
.github/actions/test-coverage-processor/action.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name: 'Go Coverage Processor'
|
||||||
|
description: 'Process Go test coverage files and generate reports'
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
test-type:
|
||||||
|
description: 'Type of test (e.g., be-unit, be-integration)'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
coverage-file:
|
||||||
|
description: 'Path to the Go coverage file (.cov)'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
codecov-token:
|
||||||
|
description: 'Token for CodeCov (required for CodeCov reporting)'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
|
codecov-flag:
|
||||||
|
description: 'Flag to categorize the upload to CodeCov'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
|
codecov-name:
|
||||||
|
description: 'Custom name for the upload to CodeCov'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: 'composite'
|
||||||
|
steps:
|
||||||
|
- name: Process Go coverage output
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
COVERAGE_FILE: ${{ inputs.coverage-file }}
|
||||||
|
run: |
|
||||||
|
# Ensure valid coverage file even if empty
|
||||||
|
if [ ! -s "$COVERAGE_FILE" ]; then
|
||||||
|
echo "Coverage file is empty, creating a minimal valid file"
|
||||||
|
echo "mode: set" > "$COVERAGE_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Report coverage to CodeCov
|
||||||
|
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5
|
||||||
|
if: inputs.codecov-token != ''
|
||||||
|
with:
|
||||||
|
files: ${{ inputs.coverage-file }}
|
||||||
|
flags: ${{ inputs.codecov-flag || inputs.test-type }}
|
||||||
|
name: ${{ inputs.codecov-name || inputs.test-type }}
|
||||||
|
slug: grafana/grafana
|
||||||
|
# This URL doesn't use the Google auth, but is much more locked down. As such, it requires OIDC or a CodeCov-provided token to do anything.
|
||||||
|
url: https://codecov-webhook.grafana-dev.net
|
||||||
|
token: ${{ inputs.codecov-token }}
|
||||||
4
.github/bot.md
vendored
4
.github/bot.md
vendored
@@ -9,8 +9,8 @@ Comment commands:
|
|||||||
|
|
||||||
Label commands:
|
Label commands:
|
||||||
|
|
||||||
* Add label `bot/question` the the bot will close with standard question message and add label `type/question`
|
* Add label `bot/question` the bot will close with standard question message and add label `type/question`
|
||||||
* Add label `bot/duplicate` the the bot will close with standard duplicate message and add label `type/duplicate`
|
* Add label `bot/duplicate` the bot will close with standard duplicate message and add label `type/duplicate`
|
||||||
* Add label `bot/needs more info` for bot to request more info (or use comment command mentioned above)
|
* Add label `bot/needs more info` for bot to request more info (or use comment command mentioned above)
|
||||||
* Add label `bot/close feature request` for bot to close a feature request with standard message and adds label `not implemented`
|
* Add label `bot/close feature request` for bot to close a feature request with standard message and adds label `not implemented`
|
||||||
* Add label `bot/no new info` for bot to close an issue where we asked for more info but has not received any updates in at least 14 days.
|
* Add label `bot/no new info` for bot to close an issue where we asked for more info but has not received any updates in at least 14 days.
|
||||||
|
|||||||
16
.github/workflows/add-to-whats-new.yml
vendored
Normal file
16
.github/workflows/add-to-whats-new.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
name: Add comment about adding a What's new note
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [labeled]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
add-comment:
|
||||||
|
if: ${{ ! github.event.pull_request.head.repo.fork && contains(github.event.pull_request.labels.*.name, 'add to what''s new') }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
steps:
|
||||||
|
- uses: marocchino/sticky-pull-request-comment@52423e01640425a022ef5fd42c6fb5f633a02728 # v2.9.1
|
||||||
|
with:
|
||||||
|
message: |
|
||||||
|
Since you've added the `Add to what's new` label, consider drafting a [What's new note](https://admin.grafana.com/content-admin/#/collections/whats-new/new) for this feature.
|
||||||
10
.github/workflows/alerting-swagger-gen.yml
vendored
10
.github/workflows/alerting-swagger-gen.yml
vendored
@@ -13,15 +13,16 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 2
|
fetch-depth: 2
|
||||||
|
persist-credentials: false
|
||||||
- name: Set go version
|
- name: Set go version
|
||||||
uses: actions/setup-go@v4
|
uses: actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639
|
||||||
with:
|
with:
|
||||||
go-version: '1.21.6'
|
go-version-file: go.mod
|
||||||
- name: Build swagger
|
- name: Build swagger
|
||||||
run: |
|
run: |
|
||||||
make -C pkg/services/ngalert/api/tooling post.json api.json
|
make -C pkg/services/ngalert/api/tooling post.json api.json
|
||||||
- name: Open Pull Request
|
- name: Open Pull Request
|
||||||
uses: peter-evans/create-pull-request@v5
|
uses: peter-evans/create-pull-request@4e1beaa7521e8b457b572c090b25bd3db56bf1c5
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
commit-message: "chore: update alerting swagger spec"
|
commit-message: "chore: update alerting swagger spec"
|
||||||
@@ -32,6 +33,5 @@ jobs:
|
|||||||
branch: update-alerting-swagger-spec
|
branch: update-alerting-swagger-spec
|
||||||
delete-branch: true
|
delete-branch: true
|
||||||
labels: 'area/alerting,type/docs,no-changelog'
|
labels: 'area/alerting,type/docs,no-changelog'
|
||||||
team-reviewers: 'grafana/alerting-backend-product'
|
team-reviewers: 'grafana/alerting-backend'
|
||||||
draft: false
|
draft: false
|
||||||
|
|
||||||
|
|||||||
137
.github/workflows/alerting-update-module.yml
vendored
Normal file
137
.github/workflows/alerting-update-module.yml
vendored
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
name: Update Alerting Module
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update-grafana:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4 # 4.2.2
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Check if update branch exists
|
||||||
|
run: |
|
||||||
|
if git ls-remote --heads origin update-alerting-module | grep -q 'update-alerting-module'; then
|
||||||
|
echo "Branch 'update-alerting-module' already exists. There might be an open PR with Grafana updates."
|
||||||
|
echo "Please review and merge/close the existing PR before running this workflow again."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # 5.3.0
|
||||||
|
with:
|
||||||
|
"go-version-file": "go.mod"
|
||||||
|
|
||||||
|
- name: Extract current commit hash of alerting module
|
||||||
|
id: current-commit
|
||||||
|
run: |
|
||||||
|
FROM_COMMIT=$(go list -m -json github.com/grafana/alerting | jq -r '.Version' | grep -oP '(?<=-)[a-f0-9]+$')
|
||||||
|
echo "from_commit=$FROM_COMMIT" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Get current branch name
|
||||||
|
id: current-branch-name
|
||||||
|
run: echo "name=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Get latest commit
|
||||||
|
id: latest-commit
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
run: |
|
||||||
|
BRANCH="${{ steps.current-branch-name.outputs.name }}"
|
||||||
|
TO_COMMIT=$(gh api repos/grafana/alerting/commits/$BRANCH --jq '.sha')
|
||||||
|
if [ -z "$TO_COMMIT" ]; then
|
||||||
|
echo "Branch $BRANCH not found in alerting repo, falling back to main branch"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "to_commit=$TO_COMMIT" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Compare commit hashes
|
||||||
|
run: |
|
||||||
|
FROM_COMMIT="${{ steps.current-commit.outputs.from_commit }}"
|
||||||
|
TO_COMMIT="${{ steps.latest-commit.outputs.to_commit }}"
|
||||||
|
|
||||||
|
# Compare just the length of the shorter hash
|
||||||
|
SHORT_TO_COMMIT="${TO_COMMIT:0:${#FROM_COMMIT}}"
|
||||||
|
|
||||||
|
if [ "$FROM_COMMIT" = "$SHORT_TO_COMMIT" ]; then
|
||||||
|
echo "Current version ($FROM_COMMIT) is already at latest ($SHORT_TO_COMMIT). No update needed."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "Updates available: $FROM_COMMIT -> $TO_COMMIT"
|
||||||
|
|
||||||
|
- name: Check for commit history
|
||||||
|
id: check-commits
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
run: |
|
||||||
|
# get all commits that contains 'Alerting:' in the message
|
||||||
|
ALERTING_COMMITS=$(gh api repos/grafana/alerting/compare/${{ steps.current-commit.outputs.from_commit }}...${{ steps.latest-commit.outputs.to_commit }} \
|
||||||
|
--jq '.commits[].commit.message | split("\n")[0]') || true
|
||||||
|
|
||||||
|
# Use printf instead of echo -e for better multiline handling
|
||||||
|
printf "%s\n" "$ALERTING_COMMITS"
|
||||||
|
|
||||||
|
# make the list for markdown and replace PR numbers with links
|
||||||
|
ALERTING_COMMITS_FORMATTED=$(echo "$ALERTING_COMMITS" | while read -r line; do echo "- $line" | sed -E 's/\(#([0-9]+)\)/[#\1](https:\/\/github.com\/grafana\/grafana\/pull\/\1)/g'; done)
|
||||||
|
|
||||||
|
echo "alerting_commits<<EOF" >> $GITHUB_OUTPUT
|
||||||
|
echo "$ALERTING_COMMITS_FORMATTED" >> $GITHUB_OUTPUT
|
||||||
|
echo "EOF" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Update alerting module
|
||||||
|
env:
|
||||||
|
GOSUMDB: off
|
||||||
|
run: |
|
||||||
|
go get github.com/grafana/alerting@${{ steps.latest-commit.outputs.to_commit }}
|
||||||
|
make update-workspace
|
||||||
|
|
||||||
|
- id: get-secrets
|
||||||
|
uses: grafana/shared-workflows/actions/get-vault-secrets@main # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
repo_secrets: |
|
||||||
|
GITHUB_APP_ID=alerting-team:app-id
|
||||||
|
GITHUB_APP_PRIVATE_KEY=alerting-team:private-key
|
||||||
|
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: actions/create-github-app-token@0d564482f06ca65fa9e77e2510873638c82206f2 # 1.11.5
|
||||||
|
with:
|
||||||
|
app-id: ${{ env.GITHUB_APP_ID }}
|
||||||
|
private-key: ${{ env.GITHUB_APP_PRIVATE_KEY }}
|
||||||
|
|
||||||
|
- name: Create Pull Request
|
||||||
|
uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f # 7.0.6
|
||||||
|
id: create-pr
|
||||||
|
with:
|
||||||
|
token: '${{ steps.generate_token.outputs.token }}'
|
||||||
|
title: 'Alerting: Update alerting module to ${{ steps.latest-commit.outputs.to_commit }}'
|
||||||
|
branch: alerting/update-alerting-module
|
||||||
|
delete-branch: true
|
||||||
|
body: |
|
||||||
|
Updates Grafana Alerting module to latest version.
|
||||||
|
|
||||||
|
Compare changes: https://github.com/grafana/alerting/compare/${{ steps.current-commit.outputs.from_commit }}...${{ steps.latest-commit.outputs.to_commit }}
|
||||||
|
<details>
|
||||||
|
<summary>Commits</summary>
|
||||||
|
|
||||||
|
${{ steps.check-commits.outputs.alerting_commits }}
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
Created by: [GitHub Action Job](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})
|
||||||
|
- name: Add PR URL to Summary
|
||||||
|
if: steps.create-pr.outputs.pull-request-url != ''
|
||||||
|
run: |
|
||||||
|
echo "## Pull Request Created" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "🔗 [View Pull Request](${{ steps.create-pr.outputs.pull-request-url }})" >> $GITHUB_STEP_SUMMARY
|
||||||
25
.github/workflows/analytics-events-report.yml
vendored
Normal file
25
.github/workflows/analytics-events-report.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
name: Analytics Events Report
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
generate-report:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'yarn'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Generate analytics report
|
||||||
|
run: yarn analytics-report
|
||||||
38
.github/workflows/auto-milestone.yml
vendored
38
.github/workflows/auto-milestone.yml
vendored
@@ -1,39 +1,27 @@
|
|||||||
name: Auto-milestone
|
name: Auto-milestone
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request_target:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- reopened
|
- reopened
|
||||||
- closed
|
- closed
|
||||||
|
- ready_for_review
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
# Note: this action runs with write permissions on GITHUB_TOKEN even from forks
|
||||||
|
# so it must not run untrusted code (such as checking out the pull request)
|
||||||
jobs:
|
jobs:
|
||||||
config:
|
|
||||||
runs-on: "ubuntu-latest"
|
|
||||||
outputs:
|
|
||||||
has-secrets: ${{ steps.check.outputs.has-secrets }}
|
|
||||||
steps:
|
|
||||||
- name: "Check for secrets"
|
|
||||||
id: check
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ -n "${{ (secrets.GRAFANA_DELIVERY_BOT_APP_ID != '' && secrets.GRAFANA_DELIVERY_BOT_APP_PEM != '') || '' }}" ]; then
|
|
||||||
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
|
|
||||||
fi
|
|
||||||
|
|
||||||
main:
|
main:
|
||||||
needs: config
|
|
||||||
if: needs.config.outputs.has-secrets
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event.pull_request.draft == false
|
||||||
steps:
|
steps:
|
||||||
- name: "Generate token"
|
# Note: Github will not trigger other actions from this because it uses
|
||||||
id: generate_token
|
# the GITHUB_TOKEN token
|
||||||
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
|
||||||
with:
|
|
||||||
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
|
||||||
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
|
||||||
|
|
||||||
- name: Run auto-milestone
|
- name: Run auto-milestone
|
||||||
uses: grafana/grafana-github-actions-go/auto-milestone@main
|
uses: grafana/grafana-github-actions-go/auto-milestone@d4c452f92ed826d515dccf1f62923e537953acd8 # main
|
||||||
with:
|
with:
|
||||||
pr: ${{ github.event.pull_request.number }}
|
pr: ${{ github.event.pull_request.number }}
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|||||||
124
.github/workflows/auto-triager/labels.txt
vendored
Normal file
124
.github/workflows/auto-triager/labels.txt
vendored
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
area/admin/user
|
||||||
|
area/alerting
|
||||||
|
area/annotations
|
||||||
|
area/auth
|
||||||
|
area/auth/ldap
|
||||||
|
area/auth/oauth
|
||||||
|
area/auth/rbac
|
||||||
|
area/auth/serviceaccount
|
||||||
|
area/backend
|
||||||
|
area/backend/api
|
||||||
|
area/backend/db
|
||||||
|
area/backend/db/migration
|
||||||
|
area/backend/db/mysql
|
||||||
|
area/backend/db/postgres
|
||||||
|
area/backend/db/sql
|
||||||
|
area/backend/db/sqlite
|
||||||
|
area/configuration
|
||||||
|
area/dashboard/annotations
|
||||||
|
area/dashboard/data-links
|
||||||
|
area/dashboard/edit
|
||||||
|
area/dashboard/folders
|
||||||
|
area/dashboard/import
|
||||||
|
area/dashboard/kiosk
|
||||||
|
area/dashboard/links
|
||||||
|
area/dashboard/rows
|
||||||
|
area/dashboard/scenes
|
||||||
|
area/dashboard/settings
|
||||||
|
area/dashboard/snapshot
|
||||||
|
area/dashboard/templating
|
||||||
|
area/dashboard/timerange
|
||||||
|
area/dashboard/tv
|
||||||
|
area/dashboard/variable
|
||||||
|
area/dashboards/panel
|
||||||
|
area/data/export
|
||||||
|
area/explore
|
||||||
|
area/expressions
|
||||||
|
area/field/overrides
|
||||||
|
area/frontend/library-panels
|
||||||
|
area/frontend/login
|
||||||
|
area/image-rendering
|
||||||
|
area/internationalization
|
||||||
|
area/legend
|
||||||
|
area/library-panel
|
||||||
|
area/metricsdrilldown
|
||||||
|
area/navigation
|
||||||
|
area/panel/annotation-list
|
||||||
|
area/panel/barchart
|
||||||
|
area/panel/bargauge
|
||||||
|
area/panel/candlestick
|
||||||
|
area/panel/canvas
|
||||||
|
area/panel/dashboard-list
|
||||||
|
area/panel/edit
|
||||||
|
area/panel/edit
|
||||||
|
area/panel/field-override
|
||||||
|
area/panel/flame-graph
|
||||||
|
area/panel/gauge
|
||||||
|
area/panel/geomap
|
||||||
|
area/panel/heatmap
|
||||||
|
area/panel/histogram
|
||||||
|
area/panel/logs
|
||||||
|
area/panel/node-graph
|
||||||
|
area/panel/node-graph
|
||||||
|
area/panel/piechart
|
||||||
|
area/panel/repeat
|
||||||
|
area/panel/singlestat
|
||||||
|
area/panel/stat
|
||||||
|
area/panel/state-timeline
|
||||||
|
area/panel/status-history
|
||||||
|
area/panel/table
|
||||||
|
area/panel/timeseries
|
||||||
|
area/panel/traceview
|
||||||
|
area/panel/trend
|
||||||
|
area/panel/xychart
|
||||||
|
area/permissions
|
||||||
|
area/playlist
|
||||||
|
area/plugins
|
||||||
|
area/plugins-catalog
|
||||||
|
area/provisioning
|
||||||
|
area/provisioning/datasources
|
||||||
|
area/public-dashboards
|
||||||
|
area/query-library
|
||||||
|
area/recorded-queries
|
||||||
|
area/scenes
|
||||||
|
area/search
|
||||||
|
area/security
|
||||||
|
area/streaming
|
||||||
|
area/templating/repeating
|
||||||
|
area/tooltip
|
||||||
|
area/transformations
|
||||||
|
datagrid
|
||||||
|
datasource/Alertmanager
|
||||||
|
datasource/Azure
|
||||||
|
datasource/azure-cosmosdb
|
||||||
|
datasource/BigQuery
|
||||||
|
datasource/CloudWatch
|
||||||
|
datasource/CloudWatch Logs
|
||||||
|
datasource/CSV
|
||||||
|
datasource/Elasticsearch
|
||||||
|
datasource/GitHub
|
||||||
|
datasource/GoogleCloudMonitoring
|
||||||
|
datasource/GoogleSheets
|
||||||
|
datasource/grafana-pyroscope
|
||||||
|
datasource/Graphite
|
||||||
|
datasource/InfluxDB
|
||||||
|
datasource/Jaeger
|
||||||
|
datasource/JSON
|
||||||
|
datasource/Loki
|
||||||
|
datasource/MSSQL
|
||||||
|
datasource/MySQL
|
||||||
|
datasource/OpenSearch
|
||||||
|
datasource/OpenTSDB
|
||||||
|
datasource/Parca
|
||||||
|
datasource/Phlare
|
||||||
|
datasource/Postgres
|
||||||
|
datasource/Prometheus
|
||||||
|
datasource/SiteWIse
|
||||||
|
datasource/Splunk
|
||||||
|
datasource/Tempo
|
||||||
|
datasource/TestDataDB
|
||||||
|
datasource/Timestream
|
||||||
|
datasource/X-Ray
|
||||||
|
datasource/Zabbix
|
||||||
|
datasource/Zipkin
|
||||||
|
team/grafana-aws-datasources
|
||||||
25
.github/workflows/auto-triager/prompt.txt
vendored
Normal file
25
.github/workflows/auto-triager/prompt.txt
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
You are an expert Grafana issues categorizer.
|
||||||
|
|
||||||
|
You are provided with a Grafana issue. Your task is to categorize the issue by analyzing the issue title and description to determine the most relevant category and type from the provided lists. Focus on precision and clarity, selecting only the most pertinent labels based on the issue details. Ensure that your selections reflect the core problem or functionality affected.
|
||||||
|
|
||||||
|
The output should be a valid JSON object with the following fields:
|
||||||
|
* id (string): The ID of the current issue.
|
||||||
|
* categoryLabel (array of strings): The category labels for the current issue, emphasizing key terms and context.
|
||||||
|
* typeLabel (array of strings): The type of the current issue, emphasizing clarity and relevance.
|
||||||
|
|
||||||
|
**Instructions**:
|
||||||
|
1. **Contextual Analysis**: Understand the context and intent behind the issue description. Analyze the overall narrative and relationships between different components within Grafana. Consider dependencies and related components to inform your decision.
|
||||||
|
2. **Category and Type Differentiation**: Use language cues and patterns to differentiate between similar categories and types. Provide examples and counterexamples to clarify distinctions. Prioritize primary components over secondary ones unless they are critical to the issue.
|
||||||
|
3. **Historical Data Utilization**: Compare current issues with past resolved issues by analyzing similarities in problem descriptions, leveraging patterns to inform categorization. Use historical data to recognize patterns and inform your decision-making.
|
||||||
|
4. **Confidence Scoring**: Implement a confidence scoring mechanism to flag issues for review if the confidence is below a predefined threshold. Clearly indicate thresholds for high and low confidence predictions. Provide clarifying questions if data is ambiguous.
|
||||||
|
5. **Feedback Loop Integration**: Integrate feedback from incorrect predictions to refine understanding and improve future predictions. Conduct error analysis to identify patterns in misclassifications and adapt your approach accordingly.
|
||||||
|
6. **Semantic Analysis**: Evaluate the underlying intent of the issue using semantic analysis, considering broader implications and context. Leverage metadata or historical patterns to improve accuracy.
|
||||||
|
7. **Avoid Over-Specification**: Maintain precision and conciseness, avoiding unnecessary details. Prioritize clarity and flag for further review if uncertain.
|
||||||
|
8. **Consistent JSON Formatting**: Ensure the output maintains a consistent JSON structure with uniform formatting for readability and scalability.
|
||||||
|
|
||||||
|
**Next Steps and Insights**:
|
||||||
|
- Suggest potential next steps or resources that could help address the issue, providing actionable insights to enhance user engagement.
|
||||||
|
- Regularly test responses against edge cases to ensure robustness and adaptability.
|
||||||
|
- Stay updated with changes in category and type lists to remain current.
|
||||||
|
|
||||||
|
Provide a brief explanation of the categorization decision, highlighting key terms or context that influenced the choice. Use user-centric language and technical details to ensure the explanation is comprehensive and insightful.
|
||||||
30
.github/workflows/auto-triager/types.txt
vendored
Normal file
30
.github/workflows/auto-triager/types.txt
vendored
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
type/accessibility
|
||||||
|
type/angular-2-react
|
||||||
|
type/browser-compatibility
|
||||||
|
type/bug
|
||||||
|
type/build-packaging
|
||||||
|
type/chore
|
||||||
|
type/ci
|
||||||
|
type/cleanup
|
||||||
|
type/codegen
|
||||||
|
type/community
|
||||||
|
type/debt
|
||||||
|
type/design
|
||||||
|
type/discussion
|
||||||
|
type/docs
|
||||||
|
type/duplicate
|
||||||
|
type/e2e
|
||||||
|
type/epic
|
||||||
|
type/feature-request
|
||||||
|
type/feature-toggle-enable
|
||||||
|
type/feature-toggle-removal
|
||||||
|
type/performance
|
||||||
|
type/poc
|
||||||
|
type/project
|
||||||
|
type/proposal
|
||||||
|
type/question
|
||||||
|
type/refactor
|
||||||
|
type/regression
|
||||||
|
type/roadmap
|
||||||
|
type/tech
|
||||||
|
type/ux
|
||||||
73
.github/workflows/backend-code-checks.yml
vendored
Normal file
73
.github/workflows/backend-code-checks.yml
vendored
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
name: Backend Code Checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- '*.md'
|
||||||
|
- 'docs/**'
|
||||||
|
- 'latest.json'
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths-ignore:
|
||||||
|
- '*.md'
|
||||||
|
- 'docs/**'
|
||||||
|
- 'latest.json'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
validate-configs:
|
||||||
|
name: Validate Backend Configs
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
# Explicitly set Go version to 1.24.1 to ensure consistent OpenAPI spec generation
|
||||||
|
# The crypto/x509 package has additional fields in Go 1.24.1 that affect the generated specs
|
||||||
|
# This ensures the GHAs environment matches what we use in the Drone pipeline
|
||||||
|
go-version: 1.24.1
|
||||||
|
cache: true
|
||||||
|
|
||||||
|
- name: Verify code generation
|
||||||
|
run: |
|
||||||
|
CODEGEN_VERIFY=1 make gen-cue
|
||||||
|
CODEGEN_VERIFY=1 make gen-jsonnet
|
||||||
|
|
||||||
|
- name: Validate go.mod
|
||||||
|
run: go run scripts/modowners/modowners.go check go.mod
|
||||||
|
|
||||||
|
# Enterprise setup is needed for complete OpenAPI spec generation
|
||||||
|
# We only do this for internal PRs
|
||||||
|
- name: Setup Grafana Enterprise
|
||||||
|
if: github.event.pull_request.head.repo.fork == false
|
||||||
|
uses: ./.github/actions/setup-enterprise
|
||||||
|
|
||||||
|
- name: Generate and Validate OpenAPI Specs
|
||||||
|
run: |
|
||||||
|
# For PRs from forks, we'll just run the basic swagger-gen without validation
|
||||||
|
if [[ "${{ github.event_name }}" == "pull_request" && "${{ github.event.pull_request.head.repo.fork }}" == "true" ]]; then
|
||||||
|
echo "PR is from a fork, skipping enterprise-based validation"
|
||||||
|
make swagger-gen
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clean and regenerate OpenAPI specs
|
||||||
|
make swagger-clean && make openapi3-gen
|
||||||
|
|
||||||
|
# Check if the generated specs differ from what's in the repository
|
||||||
|
for f in public/api-merged.json public/openapi3.json; do git add $f; done
|
||||||
|
if [ -z "$(git diff --name-only --cached)" ]; then
|
||||||
|
echo "OpenAPI specs are up to date!"
|
||||||
|
else
|
||||||
|
echo "OpenAPI specs are OUT OF DATE!"
|
||||||
|
git diff --cached
|
||||||
|
echo "Please ensure the branch is up-to-date, then regenerate the specification by running make swagger-clean && make openapi3-gen"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
71
.github/workflows/backend-unit-tests.yml
vendored
Normal file
71
.github/workflows/backend-unit-tests.yml
vendored
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
name: Backend Unit Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- 'docs/**'
|
||||||
|
- '**/*.md'
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- release-*.*.*
|
||||||
|
paths-ignore:
|
||||||
|
- 'docs/**'
|
||||||
|
- '**/*.md'
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
grafana:
|
||||||
|
# Run this workflow only for PRs from forks; if it gets merged into `main` or `release-*`,
|
||||||
|
# the `pr-backend-unit-tests-enterprise` workflow will run instead
|
||||||
|
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == true
|
||||||
|
name: Grafana
|
||||||
|
runs-on: ubuntu-latest-8-cores
|
||||||
|
continue-on-error: true
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version-file: go.mod
|
||||||
|
- name: Generate Go code
|
||||||
|
run: make gen-go
|
||||||
|
- name: Run unit tests
|
||||||
|
run: make test-go-unit
|
||||||
|
|
||||||
|
grafana-enterprise:
|
||||||
|
# Run this workflow for non-PR events (like pushes to `main` or `release-*`) OR for internal PRs (PRs not from forks)
|
||||||
|
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false
|
||||||
|
name: Grafana Enterprise
|
||||||
|
runs-on: ubuntu-latest-8-cores
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version-file: go.mod
|
||||||
|
- name: Setup Enterprise
|
||||||
|
uses: ./.github/actions/setup-enterprise
|
||||||
|
with:
|
||||||
|
github-app-name: 'grafana-ci-bot'
|
||||||
|
- name: Generate Go code
|
||||||
|
run: make gen-go
|
||||||
|
- name: Run unit tests
|
||||||
|
run: make test-go-unit
|
||||||
35
.github/workflows/backport.yml
vendored
35
.github/workflows/backport.yml
vendored
@@ -5,29 +5,28 @@ on:
|
|||||||
- closed
|
- closed
|
||||||
- labeled
|
- labeled
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
main:
|
main:
|
||||||
if: github.repository == 'grafana/grafana'
|
if: github.repository == 'grafana/grafana'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Actions
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4 # 4.2.2
|
||||||
with:
|
with:
|
||||||
repository: "grafana/grafana-github-actions"
|
persist-credentials: false
|
||||||
path: ./actions
|
- run: git config --local user.name "github-actions[bot]"
|
||||||
ref: main
|
- run: git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
- name: Install Actions
|
- run: git config --local --add --bool push.autoSetupRemote true
|
||||||
run: npm install --production --prefix ./actions
|
- name: Set remote URL
|
||||||
- name: "Generate token"
|
env:
|
||||||
id: generate_token
|
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
run: |
|
||||||
with:
|
git remote set-url origin "https://grafana-delivery-bot:$GIT_TOKEN@github.com/grafana/grafana.git"
|
||||||
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
|
||||||
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
|
||||||
- name: Run backport
|
- name: Run backport
|
||||||
uses: ./actions/backport
|
uses: grafana/grafana-github-actions-go/backport@main # zizmor: ignore[unpinned-uses]
|
||||||
with:
|
with:
|
||||||
metricsWriteAPIKey: ${{secrets.GRAFANA_MISC_STATS_API_KEY}}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
|
||||||
labelsToAdd: "backport"
|
|
||||||
title: "[{{base}}] {{originalTitle}}"
|
|
||||||
|
|||||||
99
.github/workflows/bump-version.yml
vendored
99
.github/workflows/bump-version.yml
vendored
@@ -5,74 +5,43 @@ on:
|
|||||||
version:
|
version:
|
||||||
description: 'Needs to match, exactly, the name of a milestone. The version to be released please respect: major.minor.patch, major.minor.patch-preview or major.minor.patch-preview<number> format. example: 7.4.3, 7.4.3-preview or 7.4.3-preview1'
|
description: 'Needs to match, exactly, the name of a milestone. The version to be released please respect: major.minor.patch, major.minor.patch-preview or major.minor.patch-preview<number> format. example: 7.4.3, 7.4.3-preview or 7.4.3-preview1'
|
||||||
required: true
|
required: true
|
||||||
env:
|
push:
|
||||||
YARN_ENABLE_IMMUTABLE_INSTALLS: false
|
default: true
|
||||||
|
required: false
|
||||||
|
dry_run:
|
||||||
|
default: false
|
||||||
|
required: false
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
main:
|
bump-version:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
# This is a basic workflow to help you get started with Actions
|
- name: Checkout Grafana
|
||||||
- uses: actions-ecosystem/action-regex-match@v2.0.2
|
|
||||||
if: ${{ github.event.inputs.version != '' }}
|
|
||||||
id: regex-match
|
|
||||||
with:
|
|
||||||
text: ${{ github.event.inputs.version }}
|
|
||||||
regex: '^(\d+.\d+).\d+(?:-(?:(preview\d?)|(pre)))?$'
|
|
||||||
- uses: actions-ecosystem/action-regex-match@v2.0.2
|
|
||||||
if: ${{ inputs.version_call != '' }}
|
|
||||||
id: regex-match-version-call
|
|
||||||
with:
|
|
||||||
text: ${{ inputs.version_call }}
|
|
||||||
regex: '^(\d+.\d+).\d+(?:-(?:(preview\d?)|(pre)))?$'
|
|
||||||
- name: Validate input version
|
|
||||||
if: ${{ steps.regex-match.outputs.match == '' && github.event.inputs.version != '' }}
|
|
||||||
run: |
|
|
||||||
echo "The input version format is not correct, please respect:\
|
|
||||||
major.minor.patch, major.minor.patch-preview or major.minor.patch-preview<number> format. \
|
|
||||||
example: 7.4.3, 7.4.3-preview or 7.4.3-preview1"
|
|
||||||
exit 1
|
|
||||||
- name: Validate input version call
|
|
||||||
if: ${{ inputs.version_call != '' && steps.regex-match-version-call.outputs.match == '' }}
|
|
||||||
run: |
|
|
||||||
echo "The input version format is not correct, please respect:\
|
|
||||||
major.minor.patch, major.minor.patch-preview or major.minor.patch-preview<number> format. \
|
|
||||||
example: 7.4.3, 7.4.3-preview or 7.4.3-preview1"
|
|
||||||
exit 1
|
|
||||||
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Set intermedia variables
|
|
||||||
id: intermedia
|
|
||||||
run: |
|
|
||||||
echo "short_ref=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT
|
|
||||||
echo "check_passed=false" >> $GITHUB_OUTPUT
|
|
||||||
echo "branch_name=v${{steps.regex-match.outputs.group1}}" >> $GITHUB_OUTPUT
|
|
||||||
echo "branch_exist=$(git ls-remote --heads https://github.com/grafana/grafana.git v${{ steps.regex-match.outputs.group1 }}.x | wc -l)" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
- name: Checkout Actions
|
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
repository: "grafana/grafana-github-actions"
|
persist-credentials: false
|
||||||
path: ./actions
|
- name: Update package.json versions
|
||||||
ref: main
|
uses: ./pkg/build/actions/bump-version
|
||||||
# Go is required for also updating the schema versions as part of the precommit hook:
|
|
||||||
- uses: actions/setup-go@v4
|
|
||||||
with:
|
with:
|
||||||
go-version: '1.20'
|
version: ${{ inputs.version }}
|
||||||
- uses: actions/setup-node@v4
|
- if: ${{ inputs.push }}
|
||||||
with:
|
name: Push & Create PR
|
||||||
node-version: '18'
|
env:
|
||||||
- name: Install Actions
|
VERSION: ${{ inputs.version }}
|
||||||
run: npm install --production --prefix ./actions
|
DRY_RUN: ${{ inputs.dry_run }}
|
||||||
- name: "Generate token"
|
REF_NAME: ${{ github.ref_name }}
|
||||||
id: generate_token
|
RUN_ID: ${{ github.run_id }}
|
||||||
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
with:
|
run: |
|
||||||
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
git config --local user.name "github-actions[bot]"
|
||||||
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
- name: Run bump version (manually invoked)
|
git config --local --add --bool push.autoSetupRemote true
|
||||||
uses: ./actions/bump-version
|
git checkout -b "bump-version/${RUN_ID}/${VERSION}"
|
||||||
with:
|
git add .
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
git commit -m "bump version ${VERSION}"
|
||||||
metricsWriteAPIKey: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
|
git push
|
||||||
precommit_make_target: gen-cue
|
gh pr create --dry-run=$DRY_RUN -l "type/ci" -l "no-changelog" -B "$REF_NAME" --title "Release: Bump version to ${VERSION}" --body "Updated version to ${VERSION}"
|
||||||
|
|||||||
155
.github/workflows/changelog.yml
vendored
Normal file
155
.github/workflows/changelog.yml
vendored
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
name: Generate changelog
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
previous_version:
|
||||||
|
type: string
|
||||||
|
required: false
|
||||||
|
description: 'The release version (semver, git tag, branch or commit) to use for comparison'
|
||||||
|
version:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: 'Target release version (semver, git tag, branch or commit)'
|
||||||
|
target:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
description: 'The base branch that these changes are being merged into'
|
||||||
|
dry_run:
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
|
latest:
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
|
secrets:
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_ID:
|
||||||
|
required: true
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_PEM:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
previous_version:
|
||||||
|
type: string
|
||||||
|
required: false
|
||||||
|
description: 'The release version (semver, git tag, branch or commit) to use for comparison'
|
||||||
|
version:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: 'Target release version (semver, git tag, branch or commit)'
|
||||||
|
target:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
description: 'The base branch that these changes are being merged into'
|
||||||
|
dry_run:
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
|
latest:
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
main:
|
||||||
|
env:
|
||||||
|
RUN_ID: ${{ github.run_id }}
|
||||||
|
VERSION: ${{ inputs.version }}
|
||||||
|
PREVIOUS_VERISON: ${{ inputs.previous_version }}
|
||||||
|
TARGET: ${{ inputs.target }}
|
||||||
|
DRY_RUN: ${{ inputs.dry_run }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
id-token: write
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
steps:
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
- name: "Checkout Grafana repo"
|
||||||
|
uses: "actions/checkout@v4"
|
||||||
|
with:
|
||||||
|
ref: main
|
||||||
|
sparse-checkout: |
|
||||||
|
.github/workflows
|
||||||
|
CHANGELOG.md
|
||||||
|
.nvmrc
|
||||||
|
.prettierignore
|
||||||
|
.prettierrc.js
|
||||||
|
fetch-depth: 0
|
||||||
|
fetch-tags: true
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Setup nodejs environment
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: .nvmrc
|
||||||
|
- name: "Configure git user"
|
||||||
|
run: |
|
||||||
|
git config --local user.name "github-actions[bot]"
|
||||||
|
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
git config --local --add --bool push.autoSetupRemote true
|
||||||
|
- name: "Create branch"
|
||||||
|
run: git checkout -b "changelog/${RUN_ID}/${VERSION}"
|
||||||
|
- name: "Generate changelog"
|
||||||
|
id: changelog
|
||||||
|
uses: ./.github/actions/changelog
|
||||||
|
with:
|
||||||
|
previous: ${{ inputs.previous_version }}
|
||||||
|
github_token: ${{ steps.generate_token.outputs.token }}
|
||||||
|
target: v${{ inputs.version }}
|
||||||
|
output_file: changelog_items.md
|
||||||
|
- name: "Patch CHANGELOG.md"
|
||||||
|
run: |
|
||||||
|
# Prepare CHANGELOG.md content with version delimiters
|
||||||
|
(
|
||||||
|
echo
|
||||||
|
echo "# ${VERSION} ($(date '+%F'))"
|
||||||
|
echo
|
||||||
|
cat changelog_items.md
|
||||||
|
) > CHANGELOG.part
|
||||||
|
|
||||||
|
# Check if a version exists in the changelog
|
||||||
|
if grep -q "<!-- ${VERSION} START" CHANGELOG.md ; then
|
||||||
|
# Replace the content between START and END delimiters
|
||||||
|
echo "Version ${VERSION} is found in the CHANGELOG.md, patching contents..."
|
||||||
|
sed -i -e "/${VERSION} START/,/${VERSION} END/{//!d;}" \
|
||||||
|
-e "/${VERSION} START/r CHANGELOG.part" CHANGELOG.md
|
||||||
|
else
|
||||||
|
# Prepend changelog part to the main changelog file
|
||||||
|
echo "Version $VERSION not found in the CHANGELOG.md"
|
||||||
|
(
|
||||||
|
echo "<!-- ${VERSION} START -->"
|
||||||
|
cat CHANGELOG.part
|
||||||
|
echo "<!-- ${VERSION} END -->"
|
||||||
|
cat CHANGELOG.md
|
||||||
|
) > CHANGELOG.tmp
|
||||||
|
mv CHANGELOG.tmp CHANGELOG.md
|
||||||
|
fi
|
||||||
|
|
||||||
|
git diff CHANGELOG.md
|
||||||
|
|
||||||
|
- name: "Prettify CHANGELOG.md"
|
||||||
|
run: npx prettier --write CHANGELOG.md
|
||||||
|
- name: "Commit changelog changes"
|
||||||
|
run: git add CHANGELOG.md && git commit --allow-empty -m "Update changelog" CHANGELOG.md
|
||||||
|
- name: "git push"
|
||||||
|
if: ${{ inputs.dry_run }} != true
|
||||||
|
run: git push
|
||||||
|
- name: "Create changelog PR"
|
||||||
|
run: >
|
||||||
|
gh pr create \
|
||||||
|
--dry-run=${DRY_RUN} \
|
||||||
|
--label "no-backport" \
|
||||||
|
--label "no-changelog" \
|
||||||
|
-B "${TARGET}" \
|
||||||
|
--title "Release: update changelog for ${VERSION}" \
|
||||||
|
--body "Changelog changes for release ${VERSION}"
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
44
.github/workflows/close-milestone.yml
vendored
44
.github/workflows/close-milestone.yml
vendored
@@ -1,44 +0,0 @@
|
|||||||
name: Close milestone
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
version:
|
|
||||||
required: true
|
|
||||||
description: Needs to match, exactly, the name of a milestone
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
version_call:
|
|
||||||
description: Needs to match, exactly, the name of a milestone
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
main:
|
|
||||||
if: github.repository == 'grafana/grafana'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout Actions
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
repository: "grafana/grafana-github-actions"
|
|
||||||
path: ./actions
|
|
||||||
ref: main
|
|
||||||
- name: Install Actions
|
|
||||||
run: npm install --production --prefix ./actions
|
|
||||||
- name: "Generate token"
|
|
||||||
id: generate_token
|
|
||||||
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
|
||||||
with:
|
|
||||||
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
|
||||||
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
|
||||||
- name: Close milestone (manually invoked)
|
|
||||||
if: ${{ github.event.inputs.version != '' }}
|
|
||||||
uses: ./actions/close-milestone
|
|
||||||
with:
|
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
|
||||||
- name: Close milestone (workflow invoked)
|
|
||||||
if: ${{ inputs.version_call != '' }}
|
|
||||||
uses: ./actions/close-milestone
|
|
||||||
with:
|
|
||||||
version_call: ${{ inputs.version_call }}
|
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
|
||||||
4
.github/workflows/codeowners-validator.yml
vendored
4
.github/workflows/codeowners-validator.yml
vendored
@@ -10,8 +10,10 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
# Checks-out your repository, which is validated in the next step
|
# Checks-out your repository, which is validated in the next step
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
- name: GitHub CODEOWNERS Validator
|
- name: GitHub CODEOWNERS Validator
|
||||||
uses: mszostok/codeowners-validator@v0.7.4
|
uses: mszostok/codeowners-validator@7f3f5e28c6d7b8dfae5731e54ce2272ca384592f
|
||||||
# input parameters
|
# input parameters
|
||||||
with:
|
with:
|
||||||
# ==== GitHub Auth ====
|
# ==== GitHub Auth ====
|
||||||
|
|||||||
16
.github/workflows/codeql-analysis.yml
vendored
16
.github/workflows/codeql-analysis.yml
vendored
@@ -3,18 +3,19 @@
|
|||||||
#
|
#
|
||||||
# You may wish to alter this file to override the set of languages analyzed,
|
# You may wish to alter this file to override the set of languages analyzed,
|
||||||
# or to provide custom queries or build logic.
|
# or to provide custom queries or build logic.
|
||||||
name: "CodeQL"
|
name: "CodeQL checks"
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
branches: [main, v1.8.x, v2.0.x, v2.1.x, v2.6.x, v3.0.x, v3.1.x, v4.0.x, v4.1.x, v4.2.x, v4.3.x, v4.4.x, v4.5.x, v4.6.x, v4.7.x, v5.0.x, v5.1.x, v5.2.x, v5.3.x, v5.4.x, v6.0.x, v6.1.x, v6.2.x, v6.3.x, v6.4.x, v6.5.x, v6.6.x, v6.7.x, v7.0.x, v7.1.x, v7.2.x]
|
branches: ['**'] # run on all branches
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- '**/*.cue'
|
- '**/*.cue'
|
||||||
- '**/*.json'
|
- '**/*.json'
|
||||||
- '**/*.md'
|
- '**/*.md'
|
||||||
- '**/*.txt'
|
- '**/*.txt'
|
||||||
- '**/*.yml'
|
- '**/*.yml'
|
||||||
|
- pkg/storage/unified/sql/db/dbimpl/db.go # Ignoring warnings on the whole file for now while inline comments is not supported in Go (https://github.com/github/codeql/issues/11427)
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '0 4 * * 6'
|
- cron: '0 4 * * 6'
|
||||||
|
|
||||||
@@ -25,6 +26,8 @@ jobs:
|
|||||||
analyze:
|
analyze:
|
||||||
name: Analyze
|
name: Analyze
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
continue-on-error: true # doesn't block PRs from being merged if this fails
|
||||||
|
if: github.repository == 'grafana/grafana'
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
@@ -42,16 +45,17 @@ jobs:
|
|||||||
# We must fetch at least the immediate parents so that if this is
|
# We must fetch at least the immediate parents so that if this is
|
||||||
# a pull request then we can checkout the head.
|
# a pull request then we can checkout the head.
|
||||||
fetch-depth: 2
|
fetch-depth: 2
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- if: matrix.language == 'go'
|
- if: matrix.language == 'go'
|
||||||
name: Set go version
|
name: Set go version
|
||||||
uses: actions/setup-go@v4
|
uses: actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639
|
||||||
with:
|
with:
|
||||||
go-version: '1.21.6'
|
go-version-file: go.mod
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v2
|
uses: github/codeql-action/init@v3
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
@@ -66,4 +70,4 @@ jobs:
|
|||||||
make build-go
|
make build-go
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v2
|
uses: github/codeql-action/analyze@v3
|
||||||
|
|||||||
35
.github/workflows/commands.yml
vendored
35
.github/workflows/commands.yml
vendored
@@ -1,11 +1,19 @@
|
|||||||
name: Run commands when issues are labeled or comments added
|
name: Run commands when issues are labeled or comments added
|
||||||
|
|
||||||
|
# important: this workflow uses a github app that is strictly limited
|
||||||
|
# to issues. If you want to change the triggers for this workflow,
|
||||||
|
# please review if the permissions are still sufficient.
|
||||||
on:
|
on:
|
||||||
issues:
|
issues:
|
||||||
types: [labeled, unlabeled]
|
types: [labeled, unlabeled]
|
||||||
issue_comment:
|
issue_comment:
|
||||||
types: [created]
|
types: [created]
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: issue-commands-${{ github.event.issue.number }}
|
group: issue-commands-${{ github.event.issue.number }}
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
config:
|
config:
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
@@ -16,7 +24,7 @@ jobs:
|
|||||||
id: check
|
id: check
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
if [ -n "${{ (secrets.GRAFANA_MISC_STATS_API_KEY != '' && secrets.ISSUE_COMMANDS_TOKEN != '') || '' }}" ]; then
|
if [ "${{ github.repository }}" == "grafana/grafana" ] && [ -n "${{ secrets.GRAFANA_MISC_STATS_API_KEY }}" ]; then
|
||||||
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
|
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -24,18 +32,39 @@ jobs:
|
|||||||
needs: config
|
needs: config
|
||||||
if: needs.config.outputs.has-secrets
|
if: needs.config.outputs.has-secrets
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
steps:
|
steps:
|
||||||
|
- name: "Get vault secrets"
|
||||||
|
id: vault-secrets
|
||||||
|
uses: grafana/shared-workflows/actions/get-vault-secrets@main # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
# Secrets placed in the ci/repo/grafana/grafana/plugins_platform_issue_commands_github_bot path in Vault
|
||||||
|
repo_secrets: |
|
||||||
|
GH_APP_ID=plugins_platform_issue_commands_github_bot:app_id
|
||||||
|
GH_APP_PEM=plugins_platform_issue_commands_github_bot:app_pem
|
||||||
|
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ env.GH_APP_ID }}
|
||||||
|
private_key: ${{ env.GH_APP_PEM }}
|
||||||
|
|
||||||
- name: Checkout Actions
|
- name: Checkout Actions
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: "grafana/grafana-github-actions"
|
repository: "grafana/grafana-github-actions"
|
||||||
path: ./actions
|
path: ./actions
|
||||||
ref: main
|
ref: main
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Install Actions
|
- name: Install Actions
|
||||||
run: npm install --production --prefix ./actions
|
run: npm install --production --prefix ./actions
|
||||||
- name: Run Commands
|
- name: Run Commands
|
||||||
uses: ./actions/commands
|
uses: ./actions/commands
|
||||||
with:
|
with:
|
||||||
metricsWriteAPIKey: ${{secrets.GRAFANA_MISC_STATS_API_KEY}}
|
metricsWriteAPIKey: ${{secrets.GRAFANA_MISC_STATS_API_KEY}}
|
||||||
token: ${{secrets.ISSUE_COMMANDS_TOKEN}}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
configPath: commands
|
configPath: commands
|
||||||
|
|||||||
37
.github/workflows/community-release.yml
vendored
37
.github/workflows/community-release.yml
vendored
@@ -1,25 +1,46 @@
|
|||||||
name: Create community release post
|
name: Create community release post
|
||||||
on:
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: 'Needs to match, exactly, the name of a milestone. The version to be released please respect: major.minor.patch, major.minor.patch-preview or major.minor.patch-preview<number> format. example: 7.4.3, 7.4.3-preview or 7.4.3-preview1'
|
||||||
|
dry_run:
|
||||||
|
type: boolean
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
description: When enabled, this workflow will print a preview instead of creating an actual post.
|
||||||
|
secrets:
|
||||||
|
GRAFANA_MISC_STATS_API_KEY:
|
||||||
|
required: true
|
||||||
|
GRAFANABOT_FORUM_KEY:
|
||||||
|
required: true
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
inputs:
|
||||||
version:
|
version:
|
||||||
|
type: string
|
||||||
required: true
|
required: true
|
||||||
description: 'Needs to match, exactly, the name of a milestone. The version to be released please respect: major.minor.patch, major.minor.patch-preview or major.minor.patch-preview<number> format. example: 7.4.3, 7.4.3-preview or 7.4.3-preview1'
|
description: 'Needs to match, exactly, the name of a milestone. The version to be released please respect: major.minor.patch, major.minor.patch-preview or major.minor.patch-preview<number> format. example: 7.4.3, 7.4.3-preview or 7.4.3-preview1'
|
||||||
|
dry_run:
|
||||||
|
type: boolean
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
description: When enabled, this workflow will print a preview instead of creating an actual post.
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
main:
|
main:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: "Generate token"
|
|
||||||
id: generate_token
|
|
||||||
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
|
||||||
with:
|
|
||||||
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
|
||||||
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
|
||||||
- name: Run community-release (manually invoked)
|
- name: Run community-release (manually invoked)
|
||||||
uses: grafana/grafana-github-actions-go/community-release@main
|
uses: grafana/grafana-github-actions-go/community-release@main # zizmor: ignore[unpinned-uses]
|
||||||
with:
|
with:
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
version: ${{ inputs.version }}
|
version: ${{ inputs.version }}
|
||||||
metrics_api_key: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
|
metrics_api_key: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
|
||||||
community_api_key: ${{ secrets.GRAFANABOT_FORUM_KEY }}
|
community_api_key: ${{ secrets.GRAFANABOT_FORUM_KEY }}
|
||||||
community_api_username: grafanabot
|
community_api_username: grafanabot
|
||||||
|
dry_run: ${{ inputs.dry_run }}
|
||||||
|
|||||||
@@ -11,9 +11,11 @@ on:
|
|||||||
- grafana-azure-monitor-datasource
|
- grafana-azure-monitor-datasource
|
||||||
- grafana-pyroscope-datasource
|
- grafana-pyroscope-datasource
|
||||||
- grafana-testdata-datasource
|
- grafana-testdata-datasource
|
||||||
|
- jaeger
|
||||||
- parca
|
- parca
|
||||||
- stackdriver
|
- stackdriver
|
||||||
- tempo
|
- tempo
|
||||||
|
- zipkin
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}-${{ inputs.plugin_id }}
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}-${{ inputs.plugin_id }}
|
||||||
@@ -31,6 +33,8 @@ permissions:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-publish:
|
build-and-publish:
|
||||||
|
env:
|
||||||
|
PLUGIN_ID: ${{ inputs.plugin_id }}
|
||||||
name: Build and publish ${{ inputs.plugin_id }}
|
name: Build and publish ${{ inputs.plugin_id }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
@@ -40,11 +44,13 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: checkout
|
- name: checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
- name: Verify inputs
|
- name: Verify inputs
|
||||||
run: |
|
run: |
|
||||||
if [ -z ${{ inputs.plugin_id }} ]; then echo "Missing plugin ID"; exit 1; fi
|
if [ -z $PLUGIN_ID ]; then echo "Missing plugin ID"; exit 1; fi
|
||||||
- id: get-secrets
|
- id: get-secrets
|
||||||
uses: grafana/shared-workflows/actions/get-vault-secrets@main
|
uses: grafana/shared-workflows/actions/get-vault-secrets@main # zizmor: ignore[unpinned-uses]
|
||||||
with:
|
with:
|
||||||
# Secrets placed in the ci/repo/grafana/<repo>/<path> path in Vault
|
# Secrets placed in the ci/repo/grafana/<repo>/<path> path in Vault
|
||||||
repo_secrets: |
|
repo_secrets: |
|
||||||
@@ -52,11 +58,11 @@ jobs:
|
|||||||
PLUGINS_GRAFANA_API_KEY=core-plugins-build-and-release:PLUGINS_GRAFANA_API_KEY
|
PLUGINS_GRAFANA_API_KEY=core-plugins-build-and-release:PLUGINS_GRAFANA_API_KEY
|
||||||
PLUGINS_GCOM_TOKEN=core-plugins-build-and-release:PLUGINS_GCOM_TOKEN
|
PLUGINS_GCOM_TOKEN=core-plugins-build-and-release:PLUGINS_GCOM_TOKEN
|
||||||
- name: 'Authenticate to Google Cloud'
|
- name: 'Authenticate to Google Cloud'
|
||||||
uses: 'google-github-actions/auth@v2'
|
uses: 'google-github-actions/auth@6fc4af4b145ae7821d527454aa9bd537d1f2dc5f'
|
||||||
with:
|
with:
|
||||||
credentials_json: '${{ env.PLUGINS_GOOGLE_CREDENTIALS }}'
|
credentials_json: '${{ env.PLUGINS_GOOGLE_CREDENTIALS }}'
|
||||||
- name: 'Set up Cloud SDK'
|
- name: 'Set up Cloud SDK'
|
||||||
uses: 'google-github-actions/setup-gcloud@v2'
|
uses: 'google-github-actions/setup-gcloud@6189d56e4096ee891640bb02ac264be376592d6a'
|
||||||
- name: Setup nodejs environment
|
- name: Setup nodejs environment
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
@@ -68,7 +74,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
dir=$(dirname \
|
dir=$(dirname \
|
||||||
$(egrep -lir --include=plugin.json --exclude-dir=dist \
|
$(egrep -lir --include=plugin.json --exclude-dir=dist \
|
||||||
'"id": "${{ inputs.plugin_id }}"' \
|
'"id": "${PLUGIN_ID}"' \
|
||||||
public/app/plugins \
|
public/app/plugins \
|
||||||
) \
|
) \
|
||||||
)
|
)
|
||||||
@@ -83,19 +89,19 @@ jobs:
|
|||||||
working-directory: ${{ steps.get_dir.outputs.dir }}
|
working-directory: ${{ steps.get_dir.outputs.dir }}
|
||||||
run: |
|
run: |
|
||||||
[ ! -d ./bin ] && mkdir -pv ./bin || true
|
[ ! -d ./bin ] && mkdir -pv ./bin || true
|
||||||
curl -fL -o ./bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v${{ env.GRABPL_VERSION }}/grabpl
|
curl -fL -o ./bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v$GRABPL_VERSION/grabpl
|
||||||
chmod 0755 ./bin/grabpl
|
chmod 0755 ./bin/grabpl
|
||||||
- name: Check backend
|
- name: Check backend
|
||||||
id: check_backend
|
id: check_backend
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
if egrep -qr --include=main.go 'datasource.Manage\("${{ inputs.plugin_id }}"' pkg/tsdb; then
|
if egrep -qr --include=main.go 'datasource.Manage\("$PLUGIN_ID"' pkg/tsdb; then
|
||||||
echo "has_backend=true" >> $GITHUB_OUTPUT
|
echo "has_backend=true" >> $GITHUB_OUTPUT
|
||||||
else
|
else
|
||||||
echo "has_backend=false" >> $GITHUB_OUTPUT
|
echo "has_backend=false" >> $GITHUB_OUTPUT
|
||||||
fi
|
fi
|
||||||
- name: Setup golang environment
|
- name: Setup golang environment
|
||||||
uses: actions/setup-go@v4
|
uses: actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639
|
||||||
if: steps.check_backend.outputs.has_backend == 'true'
|
if: steps.check_backend.outputs.has_backend == 'true'
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version-file: go.mod
|
||||||
@@ -149,7 +155,7 @@ jobs:
|
|||||||
# Release branch, do not add commit hash to version
|
# Release branch, do not add commit hash to version
|
||||||
command="plugin:build"
|
command="plugin:build"
|
||||||
fi
|
fi
|
||||||
yarn $command --scope="@grafana-plugins/${{ inputs.plugin_id }}"
|
yarn $command --scope="@grafana-plugins/$PLUGIN_ID"
|
||||||
version=$(cat ${{ steps.get_dir.outputs.dir }}/dist/plugin.json | jq -r .info.version)
|
version=$(cat ${{ steps.get_dir.outputs.dir }}/dist/plugin.json | jq -r .info.version)
|
||||||
echo "version=${version}" >> $GITHUB_OUTPUT
|
echo "version=${version}" >> $GITHUB_OUTPUT
|
||||||
- name: build:backend
|
- name: build:backend
|
||||||
@@ -158,7 +164,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
VERSION: ${{ steps.build_frontend.outputs.version }}
|
VERSION: ${{ steps.build_frontend.outputs.version }}
|
||||||
run: |
|
run: |
|
||||||
make build-plugin-go PLUGIN_ID=${{ inputs.plugin_id }}
|
make build-plugin-go PLUGIN_ID=$PLUGIN_ID
|
||||||
- name: package
|
- name: package
|
||||||
working-directory: ${{ steps.get_dir.outputs.dir }}
|
working-directory: ${{ steps.get_dir.outputs.dir }}
|
||||||
run: |
|
run: |
|
||||||
@@ -173,7 +179,7 @@ jobs:
|
|||||||
VERSION: ${{ steps.build_frontend.outputs.version }}
|
VERSION: ${{ steps.build_frontend.outputs.version }}
|
||||||
run: |
|
run: |
|
||||||
api_res=$(curl -X 'GET' -H "Authorization: Bearer $GCOM_TOKEN" \
|
api_res=$(curl -X 'GET' -H "Authorization: Bearer $GCOM_TOKEN" \
|
||||||
'${{ env.GCOM_API}}/api/plugins/${{ inputs.plugin_id }}?version=$VERSION' \
|
'${{ env.GCOM_API}}/api/plugins/$PLUGIN_ID?version=$VERSION' \
|
||||||
-H 'accept: application/json')
|
-H 'accept: application/json')
|
||||||
api_res_code=$(echo $api_res | jq -r .code)
|
api_res_code=$(echo $api_res | jq -r .code)
|
||||||
if [ "$api_res_code" = "NotFound" ]; then
|
if [ "$api_res_code" = "NotFound" ]; then
|
||||||
@@ -184,7 +190,7 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
- name: store build artifacts
|
- name: store build artifacts
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: build-artifacts
|
name: build-artifacts
|
||||||
path: ${{ steps.get_dir.outputs.dir }}/ci/packages/*.zip
|
path: ${{ steps.get_dir.outputs.dir }}/ci/packages/*.zip
|
||||||
@@ -195,10 +201,10 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo "Publish release to Google Cloud Storage:"
|
echo "Publish release to Google Cloud Storage:"
|
||||||
touch ci/packages/windows ci/packages/darwin ci/packages/linux ci/packages/any
|
touch ci/packages/windows ci/packages/darwin ci/packages/linux ci/packages/any
|
||||||
gsutil -m cp -r ci/packages/*windows* gs://${{ env.GCP_BUCKET }}/${{ inputs.plugin_id }}/release/${VERSION}/windows
|
gsutil -m cp -r ci/packages/*windows* gs://${{ env.GCP_BUCKET }}/$PLUGIN_ID/release/${VERSION}/windows
|
||||||
gsutil -m cp -r ci/packages/*linux* gs://${{ env.GCP_BUCKET }}/${{ inputs.plugin_id }}/release/${VERSION}/linux
|
gsutil -m cp -r ci/packages/*linux* gs://${{ env.GCP_BUCKET }}/$PLUGIN_ID/release/${VERSION}/linux
|
||||||
gsutil -m cp -r ci/packages/*darwin* gs://${{ env.GCP_BUCKET }}/${{ inputs.plugin_id }}/release/${VERSION}/darwin
|
gsutil -m cp -r ci/packages/*darwin* gs://${{ env.GCP_BUCKET }}/$PLUGIN_ID/release/${VERSION}/darwin
|
||||||
gsutil -m cp -r ci/packages/*any* gs://${{ env.GCP_BUCKET }}/${{ inputs.plugin_id }}/release/${VERSION}/any
|
gsutil -m cp -r ci/packages/*any* gs://${{ env.GCP_BUCKET }}/$PLUGIN_ID/release/${VERSION}/any
|
||||||
- name: Publish new plugin version on grafana.com
|
- name: Publish new plugin version on grafana.com
|
||||||
if: steps.check_backend.outputs.has_backend == 'true'
|
if: steps.check_backend.outputs.has_backend == 'true'
|
||||||
working-directory: ${{ steps.get_dir.outputs.dir }}
|
working-directory: ${{ steps.get_dir.outputs.dir }}
|
||||||
@@ -212,27 +218,27 @@ jobs:
|
|||||||
\"url\": \"https://github.com/grafana/grafana/tree/main/${{ steps.get_dir.outputs.dir }}\",
|
\"url\": \"https://github.com/grafana/grafana/tree/main/${{ steps.get_dir.outputs.dir }}\",
|
||||||
\"download\": {
|
\"download\": {
|
||||||
\"linux-amd64\": {
|
\"linux-amd64\": {
|
||||||
\"url\": \"https://storage.googleapis.com/${{ env.GCP_BUCKET }}/${{ inputs.plugin_id }}/release/${VERSION}/linux/${{ inputs.plugin_id }}-${VERSION}.linux_amd64.zip\",
|
\"url\": \"https://storage.googleapis.com/${{ env.GCP_BUCKET }}/$PLUGIN_ID/release/${VERSION}/linux/$PLUGIN_ID-${VERSION}.linux_amd64.zip\",
|
||||||
\"md5\": \"$(cat ci/packages/info-linux_amd64.json | jq -r .plugin.md5)\"
|
\"md5\": \"$(cat ci/packages/info-linux_amd64.json | jq -r .plugin.md5)\"
|
||||||
},
|
},
|
||||||
\"linux-arm64\": {
|
\"linux-arm64\": {
|
||||||
\"url\": \"https://storage.googleapis.com/${{ env.GCP_BUCKET }}/${{ inputs.plugin_id }}/release/${VERSION}/linux/${{ inputs.plugin_id }}-${VERSION}.linux_arm64.zip\",
|
\"url\": \"https://storage.googleapis.com/${{ env.GCP_BUCKET }}/$PLUGIN_ID/release/${VERSION}/linux/$PLUGIN_ID-${VERSION}.linux_arm64.zip\",
|
||||||
\"md5\": \"$(cat ci/packages/info-linux_arm64.json | jq -r .plugin.md5)\"
|
\"md5\": \"$(cat ci/packages/info-linux_arm64.json | jq -r .plugin.md5)\"
|
||||||
},
|
},
|
||||||
\"linux-arm\": {
|
\"linux-arm\": {
|
||||||
\"url\": \"https://storage.googleapis.com/${{ env.GCP_BUCKET }}/${{ inputs.plugin_id }}/release/${VERSION}/linux/${{ inputs.plugin_id }}-${VERSION}.linux_arm.zip\",
|
\"url\": \"https://storage.googleapis.com/${{ env.GCP_BUCKET }}/$PLUGIN_ID/release/${VERSION}/linux/$PLUGIN_ID-${VERSION}.linux_arm.zip\",
|
||||||
\"md5\": \"$(cat ci/packages/info-linux_arm.json | jq -r .plugin.md5)\"
|
\"md5\": \"$(cat ci/packages/info-linux_arm.json | jq -r .plugin.md5)\"
|
||||||
},
|
},
|
||||||
\"windows-amd64\": {
|
\"windows-amd64\": {
|
||||||
\"url\": \"https://storage.googleapis.com/${{ env.GCP_BUCKET }}/${{ inputs.plugin_id }}/release/${VERSION}/windows/${{ inputs.plugin_id }}-${VERSION}.windows_amd64.zip\",
|
\"url\": \"https://storage.googleapis.com/${{ env.GCP_BUCKET }}/$PLUGIN_ID/release/${VERSION}/windows/$PLUGIN_ID-${VERSION}.windows_amd64.zip\",
|
||||||
\"md5\": \"$(cat ci/packages/info-windows_amd64.json | jq -r .plugin.md5)\"
|
\"md5\": \"$(cat ci/packages/info-windows_amd64.json | jq -r .plugin.md5)\"
|
||||||
},
|
},
|
||||||
\"darwin-amd64\": {
|
\"darwin-amd64\": {
|
||||||
\"url\": \"https://storage.googleapis.com/${{ env.GCP_BUCKET }}/${{ inputs.plugin_id }}/release/${VERSION}/darwin/${{ inputs.plugin_id }}-${VERSION}.darwin_amd64.zip\",
|
\"url\": \"https://storage.googleapis.com/${{ env.GCP_BUCKET }}/$PLUGIN_ID/release/${VERSION}/darwin/$PLUGIN_ID-${VERSION}.darwin_amd64.zip\",
|
||||||
\"md5\": \"$(cat ci/packages/info-darwin_amd64.json | jq -r .plugin.md5)\"
|
\"md5\": \"$(cat ci/packages/info-darwin_amd64.json | jq -r .plugin.md5)\"
|
||||||
},
|
},
|
||||||
\"darwin-arm64\": {
|
\"darwin-arm64\": {
|
||||||
\"url\": \"https://storage.googleapis.com/${{ env.GCP_BUCKET }}/${{ inputs.plugin_id }}/release/${VERSION}/darwin/${{ inputs.plugin_id }}-${VERSION}.darwin_arm64.zip\",
|
\"url\": \"https://storage.googleapis.com/${{ env.GCP_BUCKET }}/$PLUGIN_ID/release/${VERSION}/darwin/$PLUGIN_ID-${VERSION}.darwin_arm64.zip\",
|
||||||
\"md5\": \"$(cat ci/packages/info-darwin_arm64.json | jq -r .plugin.md5)\"
|
\"md5\": \"$(cat ci/packages/info-darwin_arm64.json | jq -r .plugin.md5)\"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -255,7 +261,7 @@ jobs:
|
|||||||
\"url\": \"https://github.com/grafana/grafana/tree/main/${{ steps.get_dir.outputs.dir }}\",
|
\"url\": \"https://github.com/grafana/grafana/tree/main/${{ steps.get_dir.outputs.dir }}\",
|
||||||
\"download\": {
|
\"download\": {
|
||||||
\"any\": {
|
\"any\": {
|
||||||
\"url\": \"https://storage.googleapis.com/${{ env.GCP_BUCKET }}/${{ inputs.plugin_id }}/release/${VERSION}/any/${{ inputs.plugin_id }}-${VERSION}.any.zip\",
|
\"url\": \"https://storage.googleapis.com/${{ env.GCP_BUCKET }}/$PLUGIN_ID/release/${VERSION}/any/$PLUGIN_ID-${VERSION}.any.zip\",
|
||||||
\"md5\": \"$(cat ci/packages/info-any.json | jq -r .plugin.md5)\"
|
\"md5\": \"$(cat ci/packages/info-any.json | jq -r .plugin.md5)\"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
53
.github/workflows/create-next-release-branch.yml
vendored
Normal file
53
.github/workflows/create-next-release-branch.yml
vendored
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
name: Create next release branch
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
ownerRepo:
|
||||||
|
type: string
|
||||||
|
description: Owner/repo of the repository where the branch is created (e.g. 'grafana/grafana')
|
||||||
|
required: true
|
||||||
|
source:
|
||||||
|
description: The release branch to increment (eg providing `release-11.2.3` will result in `release-11.2.4` being created)
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
secrets:
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_ID:
|
||||||
|
required: true
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_PEM:
|
||||||
|
required: true
|
||||||
|
outputs:
|
||||||
|
branch:
|
||||||
|
description: The new branch that was created
|
||||||
|
value: ${{ jobs.main.outputs.branch }}
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
ownerRepo:
|
||||||
|
description: Owner/repo of the repository where the branch is created (e.g. 'grafana/grafana')
|
||||||
|
source:
|
||||||
|
description: The release branch to increment (eg providing `release-11.2.3` will result in `release-11.2.4` being created)
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
secrets:
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_ID:
|
||||||
|
required: true
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_PEM:
|
||||||
|
required: true
|
||||||
|
jobs:
|
||||||
|
main:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
branch: ${{ steps.branch.outputs.branch }}
|
||||||
|
steps:
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
- name: Create release branch
|
||||||
|
id: branch
|
||||||
|
uses: grafana/grafana-github-actions-go/bump-release@main # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
ownerRepo: ${{ inputs.ownerRepo }}
|
||||||
|
source: ${{ inputs.source }}
|
||||||
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
@@ -11,12 +11,13 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- "main"
|
- "main"
|
||||||
- "v*.*.*"
|
- "v*.*.*"
|
||||||
|
- "release-*.*.*"
|
||||||
|
|
||||||
# This is run before the pull request has been merged, so we'll run against the src branch
|
# This is run before the pull request has been merged, so we'll run against the src branch
|
||||||
jobs:
|
jobs:
|
||||||
trigger_downstream_create_security_patch:
|
trigger_downstream_create_security_patch:
|
||||||
concurrency: create-patch-${{ github.ref_name }}
|
concurrency: create-patch-${{ github.ref_name }}
|
||||||
uses: grafana/security-patch-actions/.github/workflows/create-patch.yml@main
|
uses: grafana/security-patch-actions/.github/workflows/create-patch.yml@main # zizmor: ignore[unpinned-uses]
|
||||||
if: github.repository == 'grafana/grafana-security-mirror'
|
if: github.repository == 'grafana/grafana-security-mirror'
|
||||||
with:
|
with:
|
||||||
repo: "${{ github.repository }}"
|
repo: "${{ github.repository }}"
|
||||||
@@ -24,5 +25,4 @@ jobs:
|
|||||||
patch_ref: "${{ github.base_ref }}" # this is the target branch name, Ex: "main"
|
patch_ref: "${{ github.base_ref }}" # this is the target branch name, Ex: "main"
|
||||||
patch_repo: "grafana/grafana-security-patches"
|
patch_repo: "grafana/grafana-security-patches"
|
||||||
patch_prefix: "${{ github.event.pull_request.number }}"
|
patch_prefix: "${{ github.event.pull_request.number }}"
|
||||||
secrets: inherit
|
secrets: inherit # zizmor: ignore[secrets-inherit]
|
||||||
|
|
||||||
|
|||||||
55
.github/workflows/dashboards-issue-add-label.yml
vendored
55
.github/workflows/dashboards-issue-add-label.yml
vendored
@@ -3,8 +3,11 @@ on:
|
|||||||
issues:
|
issues:
|
||||||
types: [opened, closed, edited, reopened, assigned, unassigned, labeled, unlabeled]
|
types: [opened, closed, edited, reopened, assigned, unassigned, labeled, unlabeled]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.ISSUE_COMMANDS_TOKEN }}
|
|
||||||
ORGANIZATION: ${{ github.repository_owner }}
|
ORGANIZATION: ${{ github.repository_owner }}
|
||||||
REPO: ${{ github.event.repository.name }}
|
REPO: ${{ github.event.repository.name }}
|
||||||
TARGET_PROJECT: 202
|
TARGET_PROJECT: 202
|
||||||
@@ -13,32 +16,35 @@ env:
|
|||||||
concurrency:
|
concurrency:
|
||||||
group: issue-label-when-in-project-${{ github.event.number }}
|
group: issue-label-when-in-project-${{ github.event.number }}
|
||||||
jobs:
|
jobs:
|
||||||
config:
|
|
||||||
runs-on: "ubuntu-latest"
|
|
||||||
outputs:
|
|
||||||
has-secrets: ${{ steps.check.outputs.has-secrets }}
|
|
||||||
steps:
|
|
||||||
- name: "Check for secrets"
|
|
||||||
id: check
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ -n "${{ (secrets.ISSUE_COMMANDS_TOKEN != '') || '' }}" ]; then
|
|
||||||
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
|
|
||||||
fi
|
|
||||||
|
|
||||||
main:
|
main:
|
||||||
needs: config
|
if: github.repository == 'grafana/grafana'
|
||||||
if: needs.config.outputs.has-secrets
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: log in
|
- name: "Get vault secrets"
|
||||||
run: gh api user -q .login
|
id: vault-secrets
|
||||||
|
uses: grafana/shared-workflows/actions/get-vault-secrets@main # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
# Secrets placed in the ci/repo/grafana/grafana/plugins_platform_issue_commands_github_bot path in Vault
|
||||||
|
repo_secrets: |
|
||||||
|
GH_APP_ID=plugins_platform_issue_commands_github_bot:app_id
|
||||||
|
GH_APP_PEM=plugins_platform_issue_commands_github_bot:app_pem
|
||||||
|
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ env.GH_APP_ID }}
|
||||||
|
private_key: ${{ env.GH_APP_PEM }}
|
||||||
- name: Check if issue is in target project
|
- name: Check if issue is in target project
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||||
|
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
||||||
|
TARGET_PROJECT: ${{ env.TARGET_PROJECT }}
|
||||||
run: |
|
run: |
|
||||||
gh api graphql -f query='
|
gh api graphql -f query='
|
||||||
query($org: String!, $repo: String!) {
|
query($org: String!, $repo: String!) {
|
||||||
repository(name: $repo, owner: $org) {
|
repository(name: $repo, owner: $org) {
|
||||||
issue (number: ${{ github.event.issue.number }}) {
|
issue (number: $ISSUE_NUMBER) {
|
||||||
id
|
id
|
||||||
projectItems(first:20) {
|
projectItems(first:20) {
|
||||||
nodes {
|
nodes {
|
||||||
@@ -51,17 +57,22 @@ jobs:
|
|||||||
}
|
}
|
||||||
}' -f org=$ORGANIZATION -f repo=$REPO > projects_data.json
|
}' -f org=$ORGANIZATION -f repo=$REPO > projects_data.json
|
||||||
|
|
||||||
echo 'IN_TARGET_PROJ='$(jq '.data.repository.issue.projectItems.nodes[] | select(.project.number==${{ env.TARGET_PROJECT }}) | .project != null' projects_data.json) >> $GITHUB_ENV
|
echo 'IN_TARGET_PROJ='$(jq '.data.repository.issue.projectItems.nodes[] | select(.project.number=='"$TARGET_PROJECT"') | .project != null' projects_data.json) >> $GITHUB_ENV
|
||||||
echo 'ITEM_ID='$(jq '.data.repository.issue.id' projects_data.json) >> $GITHUB_ENV
|
echo 'ITEM_ID='$(jq '.data.repository.issue.id' projects_data.json) >> $GITHUB_ENV
|
||||||
- name: Set up label array
|
- name: Set up label array
|
||||||
if: env.IN_TARGET_PROJ
|
if: env.IN_TARGET_PROJ
|
||||||
|
env:
|
||||||
|
LABEL_IDS: ${{ env.LABEL_IDS }}
|
||||||
run: |
|
run: |
|
||||||
IFS=',' read -ra LABEL_IDs <<< "${{ env.LABEL_IDs }}"
|
IFS=',' read -ra LABEL_IDs <<< "$LABEL_IDS"
|
||||||
for item in "${LABEL_IDs[@]}"; do
|
for item in "${LABEL_IDs[@]}"; do
|
||||||
echo "Item: $item"
|
echo "Item: $item"
|
||||||
done
|
done
|
||||||
- name: Add label to issue
|
- name: Add label to issue
|
||||||
if: env.IN_TARGET_PROJ
|
if: env.IN_TARGET_PROJ
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||||
|
LABEL_IDS: ${{ env.LABEL_IDS }}
|
||||||
run: |
|
run: |
|
||||||
gh api graphql -f query='
|
gh api graphql -f query='
|
||||||
mutation ($labelableId: ID!, $labelIds: [ID!]!) {
|
mutation ($labelableId: ID!, $labelIds: [ID!]!) {
|
||||||
@@ -70,4 +81,4 @@ jobs:
|
|||||||
) {
|
) {
|
||||||
clientMutationId
|
clientMutationId
|
||||||
}
|
}
|
||||||
}' -f labelableId=$ITEM_ID -f labelIds=${{ env.LABEL_IDs }}
|
}' -f labelableId=$ITEM_ID -f labelIds=$LABEL_IDS
|
||||||
|
|||||||
31
.github/workflows/deploy-pr-preview.yml
vendored
Normal file
31
.github/workflows/deploy-pr-preview.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
name: Deploy pr preview
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- synchronize
|
||||||
|
- closed
|
||||||
|
paths:
|
||||||
|
- "docs/sources/**"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy-pr-preview:
|
||||||
|
if: "!github.event.pull_request.head.repo.fork"
|
||||||
|
uses: grafana/writers-toolkit/.github/workflows/deploy-preview.yml@main # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
branch: ${{ github.head_ref }}
|
||||||
|
event_number: ${{ github.event.number }}
|
||||||
|
repo: grafana
|
||||||
|
sha: ${{ github.event.pull_request.head.sha }}
|
||||||
|
sources: |
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"index_file": "content/docs/grafana/_index.md",
|
||||||
|
"relative_prefix": "/docs/grafana/latest/",
|
||||||
|
"repo": "grafana",
|
||||||
|
"source_directory": "docs/sources",
|
||||||
|
"website_directory": "content/docs/grafana/latest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
title: ${{ github.event.pull_request.title }}
|
||||||
@@ -2,6 +2,12 @@
|
|||||||
---
|
---
|
||||||
name: Levitate / Detect breaking changes in PR
|
name: Levitate / Detect breaking changes in PR
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
@@ -11,23 +17,27 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
buildPR:
|
buildPR:
|
||||||
name: Build PR
|
name: Build PR packages artifacts
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
working-directory: './pr'
|
working-directory: './pr'
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
path: './pr'
|
path: './pr'
|
||||||
|
persist-credentials: false
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 20.9.0
|
node-version: 22.11.0
|
||||||
|
|
||||||
- name: Get yarn cache directory path
|
- name: Get yarn cache directory path
|
||||||
id: yarn-cache-dir-path
|
id: yarn-cache-dir-path
|
||||||
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
|
run: echo "dir=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
- name: Restore yarn cache
|
- name: Restore yarn cache
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
@@ -57,8 +67,11 @@ jobs:
|
|||||||
path: './pr/pr_built_packages.zip'
|
path: './pr/pr_built_packages.zip'
|
||||||
|
|
||||||
buildBase:
|
buildBase:
|
||||||
name: Build Base
|
name: Build Base packages artifacts
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
working-directory: './base'
|
working-directory: './base'
|
||||||
@@ -71,11 +84,11 @@ jobs:
|
|||||||
|
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 20.9.0
|
node-version: 22.11.0
|
||||||
|
|
||||||
- name: Get yarn cache directory path
|
- name: Get yarn cache directory path
|
||||||
id: yarn-cache-dir-path
|
id: yarn-cache-dir-path
|
||||||
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
|
run: echo "dir=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
- name: Restore yarn cache
|
- name: Restore yarn cache
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
@@ -105,17 +118,20 @@ jobs:
|
|||||||
path: './base/base_built_packages.zip'
|
path: './base/base_built_packages.zip'
|
||||||
|
|
||||||
Detect:
|
Detect:
|
||||||
name: Detect breaking changes
|
name: Detect breaking changes between PR and base
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: ['buildPR', 'buildBase']
|
needs: ['buildPR', 'buildBase']
|
||||||
env:
|
env:
|
||||||
GITHUB_STEP_NUMBER: 8
|
GITHUB_STEP_NUMBER: 8
|
||||||
|
permissions:
|
||||||
|
contents: 'read'
|
||||||
|
id-token: 'write'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 20.9.0
|
node-version: 22.11.0
|
||||||
|
|
||||||
- name: Get built packages from pr
|
- name: Get built packages from pr
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
@@ -133,26 +149,30 @@ jobs:
|
|||||||
- name: Unzip artifact from base
|
- name: Unzip artifact from base
|
||||||
run: unzip -j base_built_packages.zip -d ./base && rm base_built_packages.zip
|
run: unzip -j base_built_packages.zip -d ./base && rm base_built_packages.zip
|
||||||
|
|
||||||
- name: Get link for the Github Action job
|
- id: 'auth'
|
||||||
id: job
|
uses: 'google-github-actions/auth@6fc4af4b145ae7821d527454aa9bd537d1f2dc5f'
|
||||||
uses: actions/github-script@v6
|
|
||||||
with:
|
with:
|
||||||
script: |
|
workload_identity_provider: ${{ secrets.WIF_PROVIDER }}
|
||||||
const name = 'Detect breaking changes';
|
service_account: ${{ secrets.LEVITATE_SA }}
|
||||||
const script = require('./.github/workflows/scripts/pr-get-job-link.js')
|
project_id: 'grafanalabs-global'
|
||||||
await script({name, github, context, core})
|
|
||||||
|
- name: 'Set up Cloud SDK'
|
||||||
|
uses: 'google-github-actions/setup-gcloud@6189d56e4096ee891640bb02ac264be376592d6a'
|
||||||
|
with:
|
||||||
|
version: '>= 363.0.0'
|
||||||
|
project_id: 'grafanalabs-global'
|
||||||
|
install_components: 'bq'
|
||||||
|
|
||||||
- name: Detect breaking changes
|
- name: Detect breaking changes
|
||||||
id: breaking-changes
|
id: breaking-changes
|
||||||
run: ./scripts/check-breaking-changes.sh
|
run: ./scripts/check-breaking-changes.sh
|
||||||
env:
|
env:
|
||||||
FORCE_COLOR: 3
|
FORCE_COLOR: 3
|
||||||
GITHUB_JOB_LINK: ${{ steps.job.outputs.link }}
|
|
||||||
|
|
||||||
- name: Persisting the check output
|
- name: Persisting the check output
|
||||||
run: |
|
run: |
|
||||||
mkdir -p ./levitate
|
mkdir -p ./levitate
|
||||||
echo "{ \"exit_code\": ${{ steps.breaking-changes.outputs.is_breaking }}, \"message\": \"${{ steps.breaking-changes.outputs.message }}\", \"job_link\": \"${{ steps.job.outputs.link }}#step:${GITHUB_STEP_NUMBER}:1\", \"pr_number\": \"${{ github.event.pull_request.number }}\" }" > ./levitate/result.json
|
echo "{ \"exit_code\": ${{ steps.breaking-changes.outputs.is_breaking }}, \"message\": \"${{ steps.breaking-changes.outputs.message }}\", \"pr_number\": \"${{ github.event.pull_request.number }}\" }" > ./levitate/result.json
|
||||||
|
|
||||||
- name: Upload check output as artifact
|
- name: Upload check output as artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
@@ -162,9 +182,12 @@ jobs:
|
|||||||
|
|
||||||
|
|
||||||
Report:
|
Report:
|
||||||
name: Report breaking changes in PR
|
name: Report breaking changes in PR comment
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: ['Detect']
|
needs: ['Detect']
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: "Generate token"
|
- name: "Generate token"
|
||||||
@@ -198,15 +221,12 @@ jobs:
|
|||||||
PR_NUMBER: ${{ github.event.pull_request.number }}
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const { data } = await github.rest.issues.listLabelsOnIssue({
|
const { data: labels } = await github.rest.issues.listLabelsOnIssue({
|
||||||
issue_number: process.env.PR_NUMBER,
|
issue_number: context.issue.number,
|
||||||
owner: context.repo.owner,
|
owner: context.repo.owner,
|
||||||
repo: context.repo.repo,
|
repo: context.repo.repo,
|
||||||
});
|
});
|
||||||
const labels = data.map(({ name }) => name);
|
return labels.some(label => label.name === 'levitate breaking change') ? 1 : 0
|
||||||
const doesExist = labels.includes('levitate breaking change');
|
|
||||||
|
|
||||||
return doesExist ? 1 : 0;
|
|
||||||
|
|
||||||
# put the markdown into a variable
|
# put the markdown into a variable
|
||||||
- name: Levitate Markdown
|
- name: Levitate Markdown
|
||||||
@@ -217,16 +237,16 @@ jobs:
|
|||||||
echo 'levitate_markdown<<EOF'
|
echo 'levitate_markdown<<EOF'
|
||||||
cat levitate.md
|
cat levitate.md
|
||||||
echo EOF
|
echo EOF
|
||||||
} >> $GITHUB_OUTPUT
|
} >> "$GITHUB_OUTPUT"
|
||||||
else
|
else
|
||||||
echo "levitate_markdown=No breaking changes detected" >> $GITHUB_OUTPUT
|
echo "levitate_markdown=No breaking changes detected" >> "$GITHUB_OUTPUT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Comment on the PR
|
# Comment on the PR
|
||||||
- name: Comment on PR
|
- name: Comment on PR
|
||||||
if: steps.levitate-run.outputs.exit_code == 1
|
if: steps.levitate-run.outputs.exit_code == 1
|
||||||
uses: marocchino/sticky-pull-request-comment@v2
|
uses: marocchino/sticky-pull-request-comment@52423e01640425a022ef5fd42c6fb5f633a02728
|
||||||
with:
|
with:
|
||||||
header: levitate-breaking-change-comment
|
header: levitate-breaking-change-comment
|
||||||
number: ${{ github.event.pull_request.number }}
|
number: ${{ github.event.pull_request.number }}
|
||||||
@@ -236,36 +256,55 @@ jobs:
|
|||||||
${{ steps.levitate-markdown.outputs.levitate_markdown }}
|
${{ steps.levitate-markdown.outputs.levitate_markdown }}
|
||||||
|
|
||||||
[Read our guideline](https://github.com/grafana/grafana/blob/main/contribute/breaking-changes-guide/breaking-changes-guide.md)
|
[Read our guideline](https://github.com/grafana/grafana/blob/main/contribute/breaking-changes-guide/breaking-changes-guide.md)
|
||||||
[Console output](${{ steps.levitate-run.outputs.job_link }})
|
|
||||||
|
* Your pull request merge won't be blocked.
|
||||||
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
|
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||||
|
|
||||||
# Remove comment from the PR (no more breaking changes)
|
# Remove comment from the PR (no more breaking changes)
|
||||||
- name: Remove comment from PR
|
- name: Remove comment from PR
|
||||||
if: steps.levitate-run.outputs.exit_code == 0
|
if: steps.levitate-run.outputs.exit_code == 0
|
||||||
uses: marocchino/sticky-pull-request-comment@v2
|
uses: marocchino/sticky-pull-request-comment@52423e01640425a022ef5fd42c6fb5f633a02728
|
||||||
with:
|
with:
|
||||||
header: levitate-breaking-change-comment
|
header: levitate-breaking-change-comment
|
||||||
number: ${{ github.event.pull_request.number }}
|
number: ${{ github.event.pull_request.number }}
|
||||||
delete: true
|
delete: true
|
||||||
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
|
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||||
|
|
||||||
# Posts a notification to Slack if a PR has a breaking change and it did not have a breaking change before
|
- name: Send Slack Message via Payload
|
||||||
- name: Post to Slack
|
|
||||||
id: slack
|
id: slack
|
||||||
if: steps.levitate-run.outputs.exit_code == 1 && steps.does-label-exist.outputs.result == 0 && env.HAS_SECRETS
|
if: steps.levitate-run.outputs.exit_code == 1 && steps.does-label-exist.outputs.result == 0 && github.repository == 'grafana/grafana'
|
||||||
uses: slackapi/slack-github-action@v1.24.0
|
uses: grafana/shared-workflows/actions/send-slack-message@7b628e7352c2dea057c565cc4fcd5564d5f396c0 #v1.0.0
|
||||||
with:
|
with:
|
||||||
|
channel-id: "C031SLFH6G0"
|
||||||
payload: |
|
payload: |
|
||||||
{
|
{
|
||||||
"pr_link": "https://github.com/grafana/grafana/pull/${{ steps.levitate-run.outputs.pr_number }}",
|
"channel": "C031SLFH6G0",
|
||||||
"pr_number": "${{ steps.levitate-run.outputs.pr_number }}",
|
"text": ":warning: Possible breaking changes detected in *PR:* <${{ github.event.pull_request.html_url }}|#${{ github.event.pull_request.number }} :warning:",
|
||||||
"job_link": "${{ steps.levitate-run.outputs.job_link }}",
|
"icon_emoji": ":grot:",
|
||||||
"reporting_job_link": "${{ github.event.workflow_run.html_url }}",
|
"username": "Levitate Bot",
|
||||||
"message": "${{ steps.levitate-run.outputs.message }}"
|
"blocks": [
|
||||||
|
{
|
||||||
|
"type": "section",
|
||||||
|
"text": {
|
||||||
|
"type": "mrkdwn",
|
||||||
|
"text": "*grafana/grafana* repository has possible breaking changes"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "section",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"type": "mrkdwn",
|
||||||
|
"text": "*PR:* <${{ github.event.pull_request.html_url }}|#${{ github.event.pull_request.number }}>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "mrkdwn",
|
||||||
|
"text": "*Job:* <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View Job>"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_LEVITATE_WEBHOOK_URL }}
|
|
||||||
HAS_SECRETS: ${{ (github.repository == 'grafana/grafana' || secrets.SLACK_LEVITATE_WEBHOOK_URL != '') || '' }}
|
|
||||||
|
|
||||||
# Add the label
|
# Add the label
|
||||||
- name: Add "levitate breaking change" label
|
- name: Add "levitate breaking change" label
|
||||||
@@ -336,5 +375,10 @@ jobs:
|
|||||||
});
|
});
|
||||||
|
|
||||||
- name: Exit
|
- name: Exit
|
||||||
run: exit ${{ steps.levitate-run.outputs.exit_code }}
|
run: |
|
||||||
|
if [ "${{ steps.levitate-run.outputs.exit_code }}" -ne 0 ]; then
|
||||||
|
echo "Breaking changes detected. Please check the levitate report in your pull request. This workflow won't block merging."
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit ${{ steps.levitate-run.outputs.exit_code }}
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|||||||
29
.github/workflows/doc-validator.yml
vendored
29
.github/workflows/doc-validator.yml
vendored
@@ -1,29 +0,0 @@
|
|||||||
name: "doc-validator"
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
paths: ["docs/sources/**"]
|
|
||||||
workflow_dispatch:
|
|
||||||
jobs:
|
|
||||||
doc-validator:
|
|
||||||
runs-on: "ubuntu-latest"
|
|
||||||
container:
|
|
||||||
image: "grafana/doc-validator:v4.0.0"
|
|
||||||
steps:
|
|
||||||
- name: "Checkout code"
|
|
||||||
uses: "actions/checkout@v4"
|
|
||||||
- name: "Run doc-validator tool"
|
|
||||||
# Only run doc-validator on specific directories.
|
|
||||||
run: >
|
|
||||||
doc-validator
|
|
||||||
'--include=^docs/sources/(?:alerting|fundamentals|getting-started|introduction|setup-grafana|upgrade-guide|whatsnew/whats-new-in-v(?:9|10))/.+\.md$'
|
|
||||||
'--skip-checks=^(?:image.+|canonical-does-not-match-pretty-URL)$'
|
|
||||||
./docs/sources
|
|
||||||
/docs/grafana/latest
|
|
||||||
| reviewdog
|
|
||||||
-f=rdjsonl
|
|
||||||
--fail-on-error
|
|
||||||
--filter-mode=nofilter
|
|
||||||
--name=doc-validator
|
|
||||||
--reporter=github-pr-review
|
|
||||||
env:
|
|
||||||
REVIEWDOG_GITHUB_API_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
|
||||||
19
.github/workflows/documentation-ci.yml
vendored
Normal file
19
.github/workflows/documentation-ci.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
name: Documentation CI
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: ["main"]
|
||||||
|
paths: ["docs/sources/**"]
|
||||||
|
workflow_dispatch:
|
||||||
|
jobs:
|
||||||
|
vale:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: grafana/vale:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- uses: grafana/writers-toolkit/vale-action@vale-action/v1 # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
filter: '.Name in ["Grafana.GrafanaCom", "Grafana.WordList", "Grafana.Spelling", "Grafana.ProductPossessives"]'
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
name: 'Ephemeral instances: PR comment'
|
name: 'Ephemeral instances'
|
||||||
on:
|
on:
|
||||||
issue_comment:
|
issue_comment:
|
||||||
types: [created]
|
types: [created]
|
||||||
|
pull_request:
|
||||||
|
types: [closed]
|
||||||
jobs:
|
jobs:
|
||||||
config:
|
config:
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
@@ -26,18 +28,11 @@ jobs:
|
|||||||
handle-pull-request-event:
|
handle-pull-request-event:
|
||||||
needs: config
|
needs: config
|
||||||
if: needs.config.outputs.has-secrets &&
|
if: needs.config.outputs.has-secrets &&
|
||||||
github.event.sender.type == 'User' &&
|
${{ github.event.issue.pull_request && (startsWith(github.event.comment.body, '/deploy-to-hg') || github.event.action == 'closed') }}
|
||||||
github.event.issue.pull_request &&
|
|
||||||
startsWith(github.event.comment.body, '/deploy-to-hg')
|
|
||||||
runs-on:
|
runs-on:
|
||||||
labels: ubuntu-latest-8-cores
|
labels: ubuntu-latest-8-cores
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Go
|
|
||||||
uses: actions/setup-go@v4
|
|
||||||
with:
|
|
||||||
go-version: '>=1.20'
|
|
||||||
|
|
||||||
- name: Generate a GitHub app installation token
|
- name: Generate a GitHub app installation token
|
||||||
id: generate_token
|
id: generate_token
|
||||||
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
@@ -52,22 +47,16 @@ jobs:
|
|||||||
token: ${{ steps.generate_token.outputs.token }}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
ref: main
|
ref: main
|
||||||
path: ephemeral
|
path: ephemeral
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Run action
|
- name: build and deploy ephemeral instance
|
||||||
env:
|
uses: ./ephemeral
|
||||||
GITHUB_EVENT: ${{ toJson(github.event)}}
|
with:
|
||||||
run: |
|
github-token: ${{ steps.generate_token.outputs.token }}
|
||||||
GRAFANA_VERSION=10.1.0
|
gcom-host: ${{ secrets.EI_GCOM_HOST }}
|
||||||
|
gcom-token: ${{ secrets.EI_GCOM_TOKEN }}
|
||||||
cd $GITHUB_WORKSPACE/ephemeral/src
|
registry: "${{ secrets.EI_EPHEMERAL_INSTANCES_REGISTRY }}"
|
||||||
go run . \
|
gcp-service-account-key: "${{ secrets.EI_GCP_SERVICE_ACCOUNT_KEY_BASE64 }}"
|
||||||
-GITHUB_TOKEN="${{ steps.generate_token.outputs.token }}" \
|
ephemeral-org-id: "${{ secrets.EI_EPHEMERAL_ORG_ID }}"
|
||||||
-GITHUB_EVENT="$GITHUB_EVENT" \
|
oss-or-enterprise: oss
|
||||||
-GITHUB_TRIGGERING_ACTOR="${{ github.triggering_actor }}" \
|
verbose: true
|
||||||
-GCOM_HOST="${{ secrets.EI_GCOM_HOST }}" \
|
|
||||||
-GCOM_TOKEN="${{ secrets.EI_GCOM_TOKEN }}" \
|
|
||||||
-HOSTED_GRAFANA_IMAGE_TAG="$GRAFANA_VERSION-ephemeral-oss-${{ github.event.issue.number}}-${{ github.run_number }}-${{ github.run_attempt }}" \
|
|
||||||
-REGISTRY="${{ secrets.EI_EPHEMERAL_INSTANCES_REGISTRY }}" \
|
|
||||||
-GRAFANA_VERSION="$GRAFANA_VERSION" \
|
|
||||||
-GCP_SERVICE_ACCOUNT_KEY_BASE64="${{ secrets.EI_GCP_SERVICE_ACCOUNT_KEY_BASE64 }}" \
|
|
||||||
-EPHEMERAL_ORG_ID="${{ secrets.EI_EPHEMERAL_ORG_ID }}" || true
|
|
||||||
|
|||||||
@@ -1,69 +0,0 @@
|
|||||||
name: 'Ephemeral instances: PR opened/closed'
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
types: [opened, reopened, closed]
|
|
||||||
jobs:
|
|
||||||
config:
|
|
||||||
runs-on: "ubuntu-latest"
|
|
||||||
outputs:
|
|
||||||
has-secrets: ${{ steps.check.outputs.has-secrets }}
|
|
||||||
steps:
|
|
||||||
- name: "Check for secrets"
|
|
||||||
id: check
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ -n "${{ (secrets.EI_APP_ID != '' &&
|
|
||||||
secrets.EI_APP_PRIVATE_KEY != '' &&
|
|
||||||
secrets.EI_GCOM_HOST != '' &&
|
|
||||||
secrets.EI_GCOM_TOKEN != '' &&
|
|
||||||
secrets.EI_EPHEMERAL_INSTANCES_REGISTRY != '' &&
|
|
||||||
secrets.EI_GCP_SERVICE_ACCOUNT_KEY_BASE64 != '' &&
|
|
||||||
secrets.EI_EPHEMERAL_ORG_ID != ''
|
|
||||||
) || '' }}" ]; then
|
|
||||||
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
|
|
||||||
fi
|
|
||||||
|
|
||||||
handle-pull-request-event:
|
|
||||||
needs: config
|
|
||||||
if: needs.config.outputs.has-secrets
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
continue-on-error: true
|
|
||||||
steps:
|
|
||||||
- name: Setup Go
|
|
||||||
uses: actions/setup-go@v4
|
|
||||||
with:
|
|
||||||
go-version: '>=1.20'
|
|
||||||
|
|
||||||
- name: Generate a GitHub app installation token
|
|
||||||
id: generate_token
|
|
||||||
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
|
||||||
with:
|
|
||||||
app_id: ${{ secrets.EI_APP_ID }}
|
|
||||||
private_key: ${{ secrets.EI_APP_PRIVATE_KEY }}
|
|
||||||
|
|
||||||
- name: Checkout ephemeral instances repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
repository: grafana/ephemeral-grafana-instances-github-action
|
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
|
||||||
ref: main
|
|
||||||
path: ephemeral
|
|
||||||
|
|
||||||
- name: Run action
|
|
||||||
env:
|
|
||||||
GITHUB_EVENT: ${{ toJson(github.event)}}
|
|
||||||
run: |
|
|
||||||
GRAFANA_VERSION=10.1.0
|
|
||||||
|
|
||||||
cd $GITHUB_WORKSPACE/ephemeral/src
|
|
||||||
go run . \
|
|
||||||
-GITHUB_TOKEN="${{ steps.generate_token.outputs.token }}" \
|
|
||||||
-GITHUB_EVENT="$GITHUB_EVENT" \
|
|
||||||
-GITHUB_TRIGGERING_ACTOR="${{ github.triggering_actor }}" \
|
|
||||||
-GCOM_HOST="${{ secrets.EI_GCOM_HOST }}" \
|
|
||||||
-GCOM_TOKEN="${{ secrets.EI_GCOM_TOKEN }}" \
|
|
||||||
-HOSTED_GRAFANA_IMAGE_TAG="unused" \
|
|
||||||
-REGISTRY="${{ secrets.EI_EPHEMERAL_INSTANCES_REGISTRY }}" \
|
|
||||||
-GRAFANA_VERSION="$GRAFANA_VERSION" \
|
|
||||||
-GCP_SERVICE_ACCOUNT_KEY_BASE64="${{ secrets.EI_GCP_SERVICE_ACCOUNT_KEY_BASE64 }}" \
|
|
||||||
-EPHEMERAL_ORG_ID="${{ secrets.EI_EPHEMERAL_ORG_ID }}" || true
|
|
||||||
@@ -1,149 +0,0 @@
|
|||||||
name: When epic issues changed in Platform UX squad projects, check if epic is part of specified child projects and update on Platform UX parent project
|
|
||||||
|
|
||||||
on:
|
|
||||||
issues:
|
|
||||||
types: [opened, closed, edited, reopened, assigned, unassigned, labeled, unlabeled]
|
|
||||||
labels:
|
|
||||||
- 'type/epic'
|
|
||||||
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ secrets.GH_BOT_PROJECTS_ACCESS_TOKEN }}
|
|
||||||
ORGANIZATION: ${{ github.repository_owner }}
|
|
||||||
REPO: ${{ github.event.repository.name }}
|
|
||||||
PARENT_PROJECT: 304
|
|
||||||
CHILD_PROJECT_1: 78
|
|
||||||
CHILD_PROJECT_2: 111
|
|
||||||
CHILD_PROJECT_3: 202
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: issue-add-to-parent-project-${{ github.event.number }}
|
|
||||||
jobs:
|
|
||||||
config:
|
|
||||||
runs-on: "ubuntu-latest"
|
|
||||||
outputs:
|
|
||||||
has-secrets: ${{ steps.check.outputs.has-secrets }}
|
|
||||||
steps:
|
|
||||||
- name: "Check for secrets"
|
|
||||||
id: check
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ -n "${{ (secrets.GH_BOT_PROJECTS_ACCESS_TOKEN != '') || '' }}" ]; then
|
|
||||||
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
|
|
||||||
fi
|
|
||||||
|
|
||||||
main:
|
|
||||||
needs: config
|
|
||||||
if: needs.config.outputs.has-secrets && contains(github.event.issue.labels.*.name, 'type/epic')
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Check if issue is in child or parent projects
|
|
||||||
run: |
|
|
||||||
gh api graphql -f query='
|
|
||||||
query($org: String!, $repo: String!) {
|
|
||||||
repository(name: $repo, owner: $org) {
|
|
||||||
issue (number: ${{ github.event.issue.number }}) {
|
|
||||||
projectItems(first:20) {
|
|
||||||
nodes {
|
|
||||||
id,
|
|
||||||
project {
|
|
||||||
number,
|
|
||||||
title
|
|
||||||
},
|
|
||||||
fieldValueByName(name:"Status") {
|
|
||||||
... on ProjectV2ItemFieldSingleSelectValue {
|
|
||||||
optionId
|
|
||||||
name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}' -f org=$ORGANIZATION -f repo=$REPO > projects_data.json
|
|
||||||
|
|
||||||
echo 'IN_PARENT_PROJ='$(jq '.data.repository.issue.projectItems.nodes[] | select(.project.number==${{ env.PARENT_PROJECT }}) | .project != null' projects_data.json) >> $GITHUB_ENV
|
|
||||||
echo 'PARENT_PROJ_STATUS_ID='$(jq '.data.repository.issue.projectItems.nodes[] | select(.project.number==${{ env.PARENT_PROJECT }}) | select(.fieldValueByName != null) | .fieldValueByName.optionId' projects_data.json) >> $GITHUB_ENV
|
|
||||||
echo 'ITEM_ID='$(jq '.data.repository.issue.projectItems.nodes[] | select(.project.number==${{ env.PARENT_PROJECT }}) | .id' projects_data.json) >> $GITHUB_ENV
|
|
||||||
echo 'IN_CHILD_PROJ='$(jq 'first(.data.repository.issue.projectItems.nodes[] | select(.project.number==${{ env.CHILD_PROJECT_1 }} or .project.number==${{ env.CHILD_PROJECT_2 }} or .project.number==${{ env.CHILD_PROJECT_3 }}) | .project != null)' projects_data.json) >> $GITHUB_ENV
|
|
||||||
echo 'CHILD_PROJ_STATUS='$(jq -r '.data.repository.issue.projectItems.nodes[] | select(.project.number==${{ env.CHILD_PROJECT_1 }} or .project.number==${{ env.CHILD_PROJECT_2 }} or .project.number==${{ env.CHILD_PROJECT_3 }}) | select(.fieldValueByName != null) | .fieldValueByName.name' projects_data.json) >> $GITHUB_ENV
|
|
||||||
- name: Get parent project project data
|
|
||||||
if: env.IN_CHILD_PROJ
|
|
||||||
run: |
|
|
||||||
gh api graphql -f query='
|
|
||||||
query($org: String!, $number: Int!) {
|
|
||||||
organization(login: $org){
|
|
||||||
projectV2(number: $number) {
|
|
||||||
id
|
|
||||||
fields(first:20) {
|
|
||||||
nodes {
|
|
||||||
... on ProjectV2Field {
|
|
||||||
id
|
|
||||||
name
|
|
||||||
}
|
|
||||||
... on ProjectV2SingleSelectField {
|
|
||||||
id
|
|
||||||
name
|
|
||||||
options {
|
|
||||||
id
|
|
||||||
name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}' -f org=$ORGANIZATION -F number=$PARENT_PROJECT > project_data.json
|
|
||||||
|
|
||||||
echo 'PROJECT_ID='$(jq '.data.organization.projectV2.id' project_data.json) >> $GITHUB_ENV
|
|
||||||
echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV
|
|
||||||
echo 'TODO_OPTION_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .options[] | select(.name=="Todo") |.id' project_data.json) >> $GITHUB_ENV
|
|
||||||
echo 'PROGRESS_OPTION_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .options[] | select(.name=="In Progress") |.id' project_data.json) >> $GITHUB_ENV
|
|
||||||
echo 'DONE_OPTION_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .options[] | select(.name=="Done") |.id' project_data.json) >> $GITHUB_ENV
|
|
||||||
- name: Add issue to parent project
|
|
||||||
if: env.IN_CHILD_PROJ && !env.IN_PARENT_PROJ
|
|
||||||
run: |
|
|
||||||
item_id="$( gh api graphql -f query='
|
|
||||||
mutation($project:ID!, $issue:ID!) {
|
|
||||||
addProjectV2ItemById(input: {projectId: $project, contentId: $issue}) {
|
|
||||||
item {
|
|
||||||
id
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}' -f project=$PROJECT_ID -f issue=${{ github.event.issue.node_id }} --jq '.data.addProjectV2ItemById.item.id')"
|
|
||||||
|
|
||||||
echo 'ITEM_ID='$item_id >> $GITHUB_ENV
|
|
||||||
- name: Set parent project status Done
|
|
||||||
if: contains(env.CHILD_PROJ_STATUS, 'Done')
|
|
||||||
run: |
|
|
||||||
echo 'OPTION_ID='$DONE_OPTION_ID >> $GITHUB_ENV
|
|
||||||
- name: Set parent project status In Progress
|
|
||||||
if: contains(env.CHILD_PROJ_STATUS, 'In ') || contains(env.CHILD_PROJ_STATUS, 'Blocked')
|
|
||||||
run: |
|
|
||||||
echo 'OPTION_ID='$PROGRESS_OPTION_ID >> $GITHUB_ENV
|
|
||||||
- name: Set parent project status To do
|
|
||||||
if: env.CHILD_PROJ_STATUS && !contains(env.CHILD_PROJ_STATUS, 'In ') && !contains(env.CHILD_PROJ_STATUS, 'Blocked') && ! contains(env.CHILD_PROJ_STATUS, 'Done')
|
|
||||||
run: |
|
|
||||||
echo 'OPTION_ID='$TODO_OPTION_ID >> $GITHUB_ENV
|
|
||||||
- name: Set issue status in parent project
|
|
||||||
if: env.OPTION_ID && (env.OPTION_ID != env.PARENT_PROJ_STATUS_ID)
|
|
||||||
run: |
|
|
||||||
gh api graphql -f query='
|
|
||||||
mutation (
|
|
||||||
$project: ID!
|
|
||||||
$item: ID!
|
|
||||||
$status_field: ID!
|
|
||||||
$status_value: String!
|
|
||||||
) {
|
|
||||||
set_status: updateProjectV2ItemFieldValue(input: {
|
|
||||||
projectId: $project
|
|
||||||
itemId: $item
|
|
||||||
fieldId: $status_field
|
|
||||||
value: {
|
|
||||||
singleSelectOptionId: $status_value
|
|
||||||
}
|
|
||||||
}) {
|
|
||||||
projectV2Item {
|
|
||||||
id
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}' -f project=$PROJECT_ID -f item=$ITEM_ID -f status_field=$STATUS_FIELD_ID -f status_value=${{ env.OPTION_ID }} --silent
|
|
||||||
28
.github/workflows/feature-toggle-cleanup.yml
vendored
28
.github/workflows/feature-toggle-cleanup.yml
vendored
@@ -1,28 +0,0 @@
|
|||||||
name: Feature Toggle Cleanup
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
schedule:
|
|
||||||
# * is a special character in YAML so you have to quote this string
|
|
||||||
- cron: '30 10 * * *'
|
|
||||||
jobs:
|
|
||||||
feature-toggle-cleanup:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
# This check is here to prevent this workflow from running on forks.
|
|
||||||
if: github.repository == 'grafana/grafana'
|
|
||||||
steps:
|
|
||||||
- name: Check out the code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: "20.x"
|
|
||||||
- run: npm install csv-parse
|
|
||||||
- name: Parse CVS file to see which Feature Toggles should be notified about
|
|
||||||
id: parse-csv-file
|
|
||||||
uses: actions/github-script@v7
|
|
||||||
env:
|
|
||||||
FEATURE_TOGGLES_CSV_FILE_PATH: "pkg/services/featuremgmt/toggles_gen.csv"
|
|
||||||
with:
|
|
||||||
script: |
|
|
||||||
const { default: cleanupFeatureFlags } = await import('${{ github.workspace }}/.github/workflows/scripts/feature-toggle-cleanup/feature-toggle-cleanup.mjs')
|
|
||||||
await cleanupFeatureFlags({github, context, core})
|
|
||||||
25
.github/workflows/feature-toggles-ci.yml
vendored
Normal file
25
.github/workflows/feature-toggles-ci.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
name: Feature toggles CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'pkg/services/featuremgmt/toggles_gen_test.go'
|
||||||
|
- 'pkg/services/featuremgmt/registry.go'
|
||||||
|
- 'docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Set up Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version-file: 'go.mod'
|
||||||
|
cache: true
|
||||||
|
|
||||||
|
- name: Run feature toggle tests
|
||||||
|
run: go test -v -run TestFeatureToggleFiles ./pkg/services/featuremgmt/
|
||||||
133
.github/workflows/frontend-lint.yml
vendored
Normal file
133
.github/workflows/frontend-lint.yml
vendored
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
name: Lint Frontend
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- release-*.*.*
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint-frontend-verify-i18n:
|
||||||
|
name: Verify i18n
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'yarn'
|
||||||
|
cache-dependency-path: 'yarn.lock'
|
||||||
|
- run: yarn install --immutable --check-cache
|
||||||
|
- run: |
|
||||||
|
extract_error_message='::error::Extraction failed. Make sure that you have no dynamic translation phrases, such as "t(`preferences.theme.{themeID}`, themeName)" and that no translation key is used twice. Search the output for '[warning]' to find the offending file.'
|
||||||
|
make i18n-extract || (echo "${extract_error_message}" && false)
|
||||||
|
- run: |
|
||||||
|
uncommited_error_message="::error::Translation extraction has not been committed. Please run 'make i18n-extract', commit the changes and push again."
|
||||||
|
file_diff=$(git diff --dirstat public/locales)
|
||||||
|
if [ -n "$file_diff" ]; then
|
||||||
|
echo $file_diff
|
||||||
|
echo "${uncommited_error_message}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
lint-frontend-prettier:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
# Run this workflow only for PRs from forks; if it gets merged into `main` or `release-*`,
|
||||||
|
# the `lint-frontend-prettier-enterprise` workflow will run instead
|
||||||
|
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == true
|
||||||
|
name: Lint
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'yarn'
|
||||||
|
cache-dependency-path: 'yarn.lock'
|
||||||
|
- run: yarn install --immutable --check-cache
|
||||||
|
- run: yarn run prettier:check
|
||||||
|
- run: yarn run lint
|
||||||
|
lint-frontend-prettier-enterprise:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
# Run this workflow for non-PR events (like pushes to `main` or `release-*`) OR for internal PRs (PRs not from forks)
|
||||||
|
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false
|
||||||
|
name: Lint
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'yarn'
|
||||||
|
cache-dependency-path: 'yarn.lock'
|
||||||
|
- name: Setup Enterprise
|
||||||
|
uses: ./.github/actions/setup-enterprise
|
||||||
|
with:
|
||||||
|
github-app-name: 'grafana-ci-bot'
|
||||||
|
- run: yarn install --immutable --check-cache
|
||||||
|
- run: yarn run prettier:check
|
||||||
|
- run: yarn run lint
|
||||||
|
lint-frontend-typecheck:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
# Run this workflow only for PRs from forks; if it gets merged into `main` or `release-*`,
|
||||||
|
# the `lint-frontend-typecheck-enterprise` workflow will run instead
|
||||||
|
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == true
|
||||||
|
name: Typecheck
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'yarn'
|
||||||
|
cache-dependency-path: 'yarn.lock'
|
||||||
|
- run: yarn install --immutable --check-cache
|
||||||
|
- run: yarn run typecheck
|
||||||
|
lint-frontend-typecheck-enterprise:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
# Run this workflow for non-PR events (like pushes to `main` or `release-*`) OR for internal PRs (PRs not from forks)
|
||||||
|
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false
|
||||||
|
name: Typecheck
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'yarn'
|
||||||
|
cache-dependency-path: 'yarn.lock'
|
||||||
|
- name: Setup Enterprise
|
||||||
|
uses: ./.github/actions/setup-enterprise
|
||||||
|
with:
|
||||||
|
github-app-name: 'grafana-ci-bot'
|
||||||
|
- run: yarn install --immutable --check-cache
|
||||||
|
- run: yarn run typecheck
|
||||||
|
lint-frontend-betterer:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
name: Betterer
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'yarn'
|
||||||
|
cache-dependency-path: 'yarn.lock'
|
||||||
|
- run: yarn install --immutable --check-cache
|
||||||
|
- run: yarn run betterer:ci
|
||||||
38
.github/workflows/github-release.yml
vendored
38
.github/workflows/github-release.yml
vendored
@@ -1,27 +1,49 @@
|
|||||||
name: Create or update GitHub release
|
name: Create or update GitHub release
|
||||||
on:
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
required: true
|
||||||
|
description: Needs to match, exactly, the name of a milestone (NO v prefix)
|
||||||
|
type: string
|
||||||
|
latest:
|
||||||
|
required: false
|
||||||
|
default: "0"
|
||||||
|
description: Mark this release as latest (`1`) or not (`0`, default)
|
||||||
|
type: string
|
||||||
|
dry_run:
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
inputs:
|
||||||
version:
|
version:
|
||||||
required: true
|
required: true
|
||||||
description: Needs to match, exactly, the name of a milestone (NO v prefix)
|
description: Needs to match, exactly, the name of a milestone (NO v prefix)
|
||||||
|
type: string
|
||||||
latest:
|
latest:
|
||||||
required: false
|
required: false
|
||||||
|
default: "0"
|
||||||
description: Mark this release as latest (`1`) or not (`0`, default)
|
description: Mark this release as latest (`1`) or not (`0`, default)
|
||||||
|
type: string
|
||||||
|
dry_run:
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
# contents: write allows the action(s) to create github releases
|
||||||
|
contents: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
main:
|
main:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: "Generate token"
|
|
||||||
id: generate_token
|
|
||||||
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
|
||||||
with:
|
|
||||||
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
|
||||||
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
|
||||||
- name: Create GitHub release (manually invoked)
|
- name: Create GitHub release (manually invoked)
|
||||||
uses: grafana/grafana-github-actions-go/github-release@main
|
uses: grafana/grafana-github-actions-go/github-release@main # zizmor: ignore[unpinned-uses]
|
||||||
with:
|
with:
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
version: ${{ inputs.version }}
|
version: ${{ inputs.version }}
|
||||||
metrics_api_key: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
|
metrics_api_key: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
|
||||||
latest: ${{ inputs.latest }}
|
latest: ${{ inputs.latest }}
|
||||||
|
dry_run: ${{ inputs.dry_run }}
|
||||||
|
|||||||
32
.github/workflows/go-lint.yml
vendored
Normal file
32
.github/workflows/go-lint.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
name: golangci-lint
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- pkg/**
|
||||||
|
- .github/workflows/go-lint.yml
|
||||||
|
- go.*
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint-go:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version-file: ./go.mod
|
||||||
|
- run: make gen-go
|
||||||
|
- name: golangci-lint
|
||||||
|
uses: golangci/golangci-lint-action@1481404843c368bc19ca9406f87d6e0fc97bdcfd
|
||||||
|
with:
|
||||||
|
version: v2.0.2
|
||||||
|
args: |
|
||||||
|
--verbose $(go list -m -f '{{.Dir}}' | xargs -I{} sh -c 'test ! -f {}/.nolint && echo {}/...')
|
||||||
|
install-mode: binary
|
||||||
27
.github/workflows/i18n-crowdin-create-tasks.yml
vendored
Normal file
27
.github/workflows/i18n-crowdin-create-tasks.yml
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
name: Crowdin Create Tasks
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
# schedule:
|
||||||
|
# - cron: "0 0 * * *"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
create-tasks-in-crowdin:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
|
- name: Create tasks
|
||||||
|
env:
|
||||||
|
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
||||||
|
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||||
|
run: node ./.github/workflows/scripts/crowdin/create-tasks.js
|
||||||
92
.github/workflows/i18n-crowdin-download.yml
vendored
92
.github/workflows/i18n-crowdin-download.yml
vendored
@@ -3,7 +3,7 @@ name: Crowdin Download Action
|
|||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "0 * * * *"
|
- cron: "0 0 * * *"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
download-sources-from-crowdin:
|
download-sources-from-crowdin:
|
||||||
@@ -12,15 +12,25 @@ jobs:
|
|||||||
permissions:
|
permissions:
|
||||||
contents: write # needed to commit changes into the PR
|
contents: write # needed to commit changes into the PR
|
||||||
pull-requests: write # needed to update PR description, labels, etc
|
pull-requests: write # needed to update PR description, labels, etc
|
||||||
|
id-token: write # needed to get vault secrets
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
- name: Generate token
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ secrets.GRAFANA_PR_AUTOMATION_APP_ID }}
|
||||||
|
private_key: ${{ secrets.GRAFANA_PR_AUTOMATION_APP_PEM }}
|
||||||
|
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.head_ref }}
|
ref: ${{ github.head_ref }}
|
||||||
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Download sources
|
- name: Download sources
|
||||||
id: crowdin-download
|
id: crowdin-download
|
||||||
uses: crowdin/github-action@v1
|
uses: crowdin/github-action@b8012bd5491b8aa8578b73ab5b5f5e7c94aaa6e2
|
||||||
with:
|
with:
|
||||||
upload_sources: false
|
upload_sources: false
|
||||||
upload_translations: false
|
upload_translations: false
|
||||||
@@ -33,17 +43,11 @@ jobs:
|
|||||||
pull_request_body: |
|
pull_request_body: |
|
||||||
:robot: Automatic download of translations from Crowdin.
|
:robot: Automatic download of translations from Crowdin.
|
||||||
|
|
||||||
Steps for merging:
|
This runs once per day and will merge automatically if all the required checks pass.
|
||||||
1. A quick sanity check of the changes and approve. Things to look out for:
|
|
||||||
- No changes in the English file. The source of truth is in the main branch, NOT in Crowdin.
|
|
||||||
- Translations maybe be removed if the English phrase was removed, but there should not be many of these
|
|
||||||
- Anything else that looks 'funky'. Ask if you're not sure.
|
|
||||||
2. Approve & (Auto-)merge. :tada:
|
|
||||||
|
|
||||||
If there's a conflict, close the pull request and **delete the branch**. A GH action will recreate the pull request.
|
If there's a conflict, close the pull request and **delete the branch**.
|
||||||
Remember, the longer this pull request is open, the more likely it is that it'll get conflicts.
|
You can then either wait for the schedule to trigger a new PR, or rerun the action manually.
|
||||||
pull_request_labels: 'area/frontend, area/internationalization, no-changelog, no-backport'
|
pull_request_labels: 'area/frontend, area/internationalization, no-changelog, no-backport'
|
||||||
pull_request_reviewers: 'grafana-frontend-platform'
|
|
||||||
pull_request_base_branch_name: 'main'
|
pull_request_base_branch_name: 'main'
|
||||||
base_url: 'https://grafana.api.crowdin.com'
|
base_url: 'https://grafana.api.crowdin.com'
|
||||||
config: 'crowdin.yml'
|
config: 'crowdin.yml'
|
||||||
@@ -53,18 +57,10 @@ jobs:
|
|||||||
github_user_name: "github-actions[bot]"
|
github_user_name: "github-actions[bot]"
|
||||||
github_user_email: "41898282+github-actions[bot]@users.noreply.github.com"
|
github_user_email: "41898282+github-actions[bot]@users.noreply.github.com"
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
||||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||||
|
|
||||||
- name: Generate token
|
|
||||||
if: steps.crowdin-download.outputs.pull_request_url
|
|
||||||
id: generate_token
|
|
||||||
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
|
||||||
with:
|
|
||||||
app_id: ${{ secrets.GRAFANA_PR_AUTOMATION_APP_ID }}
|
|
||||||
private_key: ${{ secrets.GRAFANA_PR_AUTOMATION_APP_PEM }}
|
|
||||||
|
|
||||||
- name: Get pull request ID
|
- name: Get pull request ID
|
||||||
if: steps.crowdin-download.outputs.pull_request_url
|
if: steps.crowdin-download.outputs.pull_request_url
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -74,10 +70,10 @@ jobs:
|
|||||||
pr_id=$(gh pr view ${{ steps.crowdin-download.outputs.pull_request_url }} --json id -q .id)
|
pr_id=$(gh pr view ${{ steps.crowdin-download.outputs.pull_request_url }} --json id -q .id)
|
||||||
echo "PULL_REQUEST_ID=$pr_id" >> "$GITHUB_ENV"
|
echo "PULL_REQUEST_ID=$pr_id" >> "$GITHUB_ENV"
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||||
|
|
||||||
- name: Get project board ID
|
- name: Get project board ID
|
||||||
uses: octokit/graphql-action@v2.x
|
uses: octokit/graphql-action@51bf543c240dcd14761320e2efc625dc32ec0d32
|
||||||
id: get-project-id
|
id: get-project-id
|
||||||
if: steps.crowdin-download.outputs.pull_request_url
|
if: steps.crowdin-download.outputs.pull_request_url
|
||||||
with:
|
with:
|
||||||
@@ -97,7 +93,7 @@ jobs:
|
|||||||
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
|
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||||
|
|
||||||
- name: Add to project board
|
- name: Add to project board
|
||||||
uses: octokit/graphql-action@v2.x
|
uses: octokit/graphql-action@51bf543c240dcd14761320e2efc625dc32ec0d32
|
||||||
if: steps.crowdin-download.outputs.pull_request_url
|
if: steps.crowdin-download.outputs.pull_request_url
|
||||||
with:
|
with:
|
||||||
projectid: ${{ fromJson(steps.get-project-id.outputs.data).organization.projectV2.id }}
|
projectid: ${{ fromJson(steps.get-project-id.outputs.data).organization.projectV2.id }}
|
||||||
@@ -110,6 +106,54 @@ jobs:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
|
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||||
|
|
||||||
|
- name: Run auto-milestone
|
||||||
|
uses: grafana/grafana-github-actions-go/auto-milestone@main # zizmor: ignore[unpinned-uses]
|
||||||
|
if: steps.crowdin-download.outputs.pull_request_url
|
||||||
|
with:
|
||||||
|
pr: ${{ steps.crowdin-download.outputs.pull_request_number }}
|
||||||
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
|
|
||||||
|
- name: Get vault secrets
|
||||||
|
id: vault-secrets
|
||||||
|
uses: grafana/shared-workflows/actions/get-vault-secrets@main # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
# Secrets placed in ci/repo/grafana/grafana/grafana-pr-approver
|
||||||
|
repo_secrets: |
|
||||||
|
GRAFANA_PR_APPROVER_APP_ID=grafana-pr-approver:app-id
|
||||||
|
GRAFANA_PR_APPROVER_APP_PEM=grafana-pr-approver:private-key
|
||||||
|
|
||||||
|
- name: Generate approver token
|
||||||
|
if: steps.crowdin-download.outputs.pull_request_url
|
||||||
|
id: generate_approver_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ env.GRAFANA_PR_APPROVER_APP_ID }}
|
||||||
|
private_key: ${{ env.GRAFANA_PR_APPROVER_APP_PEM }}
|
||||||
|
|
||||||
|
- name: Approve and automerge PR
|
||||||
|
if: steps.crowdin-download.outputs.pull_request_url
|
||||||
|
shell: bash
|
||||||
|
# Only approve if:
|
||||||
|
# - the PR does not modify files other than json files under the public/locales/ directory
|
||||||
|
# - the PR does not modify the en-US locale
|
||||||
|
run: |
|
||||||
|
filesChanged=$(gh pr diff --name-only ${{ steps.crowdin-download.outputs.pull_request_url }})
|
||||||
|
|
||||||
|
if [[ $(echo $filesChanged | grep -v 'public/locales/[a-zA-Z\-]*/grafana.json' | wc -l) -ne 0 ]]; then
|
||||||
|
echo "Non-i18n changes detected, not approving"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $(echo $filesChanged | grep "public/locales/en-US" | wc -l) -ne 0 ]]; then
|
||||||
|
echo "public/locales/en-US changes detected, not approving"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Approving and enabling automerge"
|
||||||
|
gh pr review ${{ steps.crowdin-download.outputs.pull_request_url }} --approve
|
||||||
|
gh pr merge --auto --squash ${{ steps.crowdin-download.outputs.pull_request_url }}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ steps.generate_approver_token.outputs.token }}
|
||||||
|
|||||||
4
.github/workflows/i18n-crowdin-upload.yml
vendored
4
.github/workflows/i18n-crowdin-upload.yml
vendored
@@ -15,9 +15,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Upload sources
|
- name: Upload sources
|
||||||
uses: crowdin/github-action@v1
|
uses: crowdin/github-action@b8012bd5491b8aa8578b73ab5b5f5e7c94aaa6e2
|
||||||
with:
|
with:
|
||||||
upload_sources: true
|
upload_sources: true
|
||||||
upload_sources_args: '--dest=public/locales/en-US/grafana.json'
|
upload_sources_args: '--dest=public/locales/en-US/grafana.json'
|
||||||
|
|||||||
99
.github/workflows/issue-labeled.yml
vendored
99
.github/workflows/issue-labeled.yml
vendored
@@ -1,99 +0,0 @@
|
|||||||
name: Notify Slack channel based on new issue label
|
|
||||||
|
|
||||||
on:
|
|
||||||
issues:
|
|
||||||
types: [labeled]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
config:
|
|
||||||
runs-on: "ubuntu-latest"
|
|
||||||
outputs:
|
|
||||||
has-secrets: ${{ steps.check.outputs.has-secrets }}
|
|
||||||
steps:
|
|
||||||
- name: "Check for secrets"
|
|
||||||
id: check
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ -n "${{ (secrets.SLACK_WEBHOOK_URL != '') || '' }}" ]; then
|
|
||||||
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
|
|
||||||
fi
|
|
||||||
|
|
||||||
notify:
|
|
||||||
needs: config
|
|
||||||
if: needs.config.outputs.has-secrets
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: "Download teams.yml to know which label is for which team"
|
|
||||||
run: wget https://raw.githubusercontent.com/grafana/grafana/main/.github/teams.yml
|
|
||||||
|
|
||||||
- name: "Determine which team to notify"
|
|
||||||
run: |
|
|
||||||
# Default to null values.
|
|
||||||
CHANNEL="null"
|
|
||||||
TEAM="null"
|
|
||||||
|
|
||||||
echo "${{ github.event.label.name }} label added"
|
|
||||||
export CURRENT_LABEL="${{ github.event.label.name }}" # Enable the use of the label in yq evaluations
|
|
||||||
# yq is installed by default in ubuntu-latest
|
|
||||||
if [[ $(yq e 'keys | .[] | select(. == env(CURRENT_LABEL))' teams.yml ) ]]; then
|
|
||||||
# Check if we have a channel set to notify on comments.
|
|
||||||
if [[ $(yq '.[env(CURRENT_LABEL)] | has("channel-label")' teams.yml ) == true ]]; then
|
|
||||||
CHANNEL=$(yq '.[env(CURRENT_LABEL)].channel-label' teams.yml)
|
|
||||||
echo "Ready to send issue to channel ID ${CHANNEL}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $(yq '.[env(CURRENT_LABEL)] | has("exclude-github-team")' teams.yml ) == true ]]; then
|
|
||||||
TEAM=$(yq '.[env(CURRENT_LABEL)].exclude-github-team' teams.yml)
|
|
||||||
echo "Will not send issue to channel if issue author is part of the team ${TEAM}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# set environment for next steps
|
|
||||||
echo "CHANNEL=${CHANNEL}" >> $GITHUB_ENV
|
|
||||||
echo "TEAM=${TEAM}" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: "Prepare payload"
|
|
||||||
uses: frabert/replace-string-action@v2.0
|
|
||||||
id: preparePayload
|
|
||||||
with:
|
|
||||||
# replace double quotes with single quotes to avoid breaking the JSON payload sent to Slack
|
|
||||||
string: ${{ github.event.issue.title }}
|
|
||||||
pattern: '"'
|
|
||||||
replace-with: "'"
|
|
||||||
flags: 'g'
|
|
||||||
|
|
||||||
- name: Get Token
|
|
||||||
id: get_workflow_token
|
|
||||||
uses: peter-murray/workflow-application-token-action@v2
|
|
||||||
with:
|
|
||||||
application_id: ${{ secrets.APP_GRAFANA_TEAM_CHECKER_ID }}
|
|
||||||
application_private_key: ${{ secrets.APP_GRAFANA_TEAM_CHECKER_KEY }}
|
|
||||||
|
|
||||||
- name: "Check that issue author is not part of the team"
|
|
||||||
if: ${{ env.TEAM != 'null' }}
|
|
||||||
run: |
|
|
||||||
response=$(gh api /orgs/grafana/teams/${{ env.TEAM }}/memberships/${{ github.event.issue.user.login }} -i -H "Accept: application/vnd.github.v3+json")
|
|
||||||
STATUS_CODE=$(echo "$response" | head -n 1 | cut -d' ' -f2)
|
|
||||||
if [ "$status_code" -eq 404 ]; then
|
|
||||||
echo "The user was not found in the team."
|
|
||||||
echo "USER_FOUND=false" >> $GITHUB_ENV
|
|
||||||
else
|
|
||||||
echo "The user was potentially found in the team"
|
|
||||||
echo "USER_FOUND=maybe" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ steps.get_workflow_token.outputs.token }}
|
|
||||||
|
|
||||||
- name: "Send Slack notification"
|
|
||||||
if: ${{ (env.CHANNEL != 'null') && ((env.USER_FOUND == 'false') || (env.TEAM != 'null')) }}
|
|
||||||
uses: slackapi/slack-github-action@v1.24.0
|
|
||||||
with:
|
|
||||||
payload: >
|
|
||||||
{
|
|
||||||
"icon_emoji": ":grafana:",
|
|
||||||
"username": "Grafana issue labeled",
|
|
||||||
"text": "Issue \"${{ steps.preparePayload.outputs.replaced }}\" labeled \"${{ github.event.label.name }}\": ${{ github.event.issue.html_url }}, please triage.",
|
|
||||||
"channel": "${{ env.CHANNEL }}"
|
|
||||||
}
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
||||||
94
.github/workflows/issue-opened.yml
vendored
94
.github/workflows/issue-opened.yml
vendored
@@ -1,28 +1,118 @@
|
|||||||
name: Run commands when issues are opened
|
name: Run commands when issues are opened
|
||||||
|
|
||||||
|
# important: this workflow uses a github app that is strictly limited
|
||||||
|
# to issues. If you want to change the triggers for this workflow,
|
||||||
|
# please review if the permissions are still sufficient.
|
||||||
on:
|
on:
|
||||||
issues:
|
issues:
|
||||||
types: [opened]
|
types: [opened]
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: issue-opened-${{ github.event.issue.number }}
|
group: issue-opened-${{ github.event.issue.number }}
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
main:
|
main:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
if: github.repository == 'grafana/grafana'
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- name: Checkout Actions
|
- name: Checkout Actions
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: "grafana/grafana-github-actions"
|
repository: "grafana/grafana-github-actions"
|
||||||
path: ./actions
|
path: ./actions
|
||||||
ref: main
|
ref: main
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Install Actions
|
- name: Install Actions
|
||||||
run: npm install --production --prefix ./actions
|
run: npm install --production --prefix ./actions
|
||||||
|
|
||||||
# give issue-openers a chance to add labels after submit
|
# give issue-openers a chance to add labels after submit
|
||||||
- name: Sleep for 2 minutes
|
- name: Sleep for 2 minutes
|
||||||
run: sleep 2m
|
run: sleep 2m
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
|
- name: "Get vault secrets"
|
||||||
|
id: vault-secrets
|
||||||
|
uses: grafana/shared-workflows/actions/get-vault-secrets@main # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
# Secrets placed in the ci/repo/grafana/grafana/plugins_platform_issue_commands_github_bot path in Vault
|
||||||
|
repo_secrets: |
|
||||||
|
GH_APP_ID=plugins_platform_issue_commands_github_bot:app_id
|
||||||
|
GH_APP_PEM=plugins_platform_issue_commands_github_bot:app_pem
|
||||||
|
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ env.GH_APP_ID }}
|
||||||
|
private_key: ${{ env.GH_APP_PEM }}
|
||||||
|
|
||||||
- name: Run Commands
|
- name: Run Commands
|
||||||
uses: ./actions/commands
|
uses: ./actions/commands
|
||||||
with:
|
with:
|
||||||
metricsWriteAPIKey: ${{secrets.GRAFANA_MISC_STATS_API_KEY}}
|
metricsWriteAPIKey: ${{secrets.GRAFANA_MISC_STATS_API_KEY}}
|
||||||
token: ${{secrets.ISSUE_COMMANDS_TOKEN}}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
configPath: "issue-opened"
|
configPath: "issue-opened"
|
||||||
|
|
||||||
|
auto-triage:
|
||||||
|
needs: [main]
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
if: github.repository == 'grafana/grafana' && github.event.issue.author_association != 'MEMBER' && github.event.issue.author_association != 'OWNER'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: "Get vault secrets"
|
||||||
|
id: vault-secrets
|
||||||
|
uses: grafana/shared-workflows/actions/get-vault-secrets@main # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
# Secrets placed in the ci/repo/grafana/grafana/plugins_platform_issue_triager path in Vault
|
||||||
|
repo_secrets: |
|
||||||
|
AUTOTRIAGER_OPENAI_API_KEY=plugins_platform_issue_triager:AUTOTRIAGER_OPENAI_API_KEY
|
||||||
|
AUTOTRIAGER_SLACK_WEBHOOK_URL=plugins_platform_issue_triager:AUTOTRIAGER_SLACK_WEBHOOK_URL
|
||||||
|
GH_APP_ID=plugins_platform_issue_commands_github_bot:app_id
|
||||||
|
GH_APP_PEM=plugins_platform_issue_commands_github_bot:app_pem
|
||||||
|
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ env.GH_APP_ID }}
|
||||||
|
private_key: ${{ env.GH_APP_PEM }}
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4 # v4.2.2
|
||||||
|
|
||||||
|
- name: Send issue to the auto triager action
|
||||||
|
id: auto_triage
|
||||||
|
uses: grafana/auto-triager@main # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
|
issue_number: ${{ github.event.issue.number }}
|
||||||
|
openai_api_key: ${{ env.AUTOTRIAGER_OPENAI_API_KEY }}
|
||||||
|
add_labels: true
|
||||||
|
labels_file: ${{ github.workspace }}/.github/workflows/auto-triager/labels.txt
|
||||||
|
types_file: ${{ github.workspace }}/.github/workflows/auto-triager/types.txt
|
||||||
|
prompt_file: ${{ github.workspace }}/.github/workflows/auto-triager/prompt.txt
|
||||||
|
|
||||||
|
- name: "Send Slack notification"
|
||||||
|
if: ${{ steps.auto_triage.outputs.triage_labels != '' }}
|
||||||
|
uses: slackapi/slack-github-action@37ebaef184d7626c5f204ab8d3baff4262dd30f0 # v1.27.0
|
||||||
|
with:
|
||||||
|
payload: >
|
||||||
|
{
|
||||||
|
"icon_emoji": ":robocto:",
|
||||||
|
"username": "Auto Triager",
|
||||||
|
"type": "mrkdwn",
|
||||||
|
"text": "Auto triager found the following labels: ${{ steps.auto_triage.outputs.triage_labels }} for issue ${{ github.event.issue.html_url }}",
|
||||||
|
"channel": "#triage-automation-ci"
|
||||||
|
}
|
||||||
|
env:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ env.AUTOTRIAGER_SLACK_WEBHOOK_URL }}
|
||||||
|
|||||||
62
.github/workflows/lint-build-docs.yml
vendored
Normal file
62
.github/workflows/lint-build-docs.yml
vendored
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
name: Documentation
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- '*.md'
|
||||||
|
- 'docs/**'
|
||||||
|
- 'packages/**/*.md'
|
||||||
|
- 'latest.json'
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- '*.md'
|
||||||
|
- 'docs/**'
|
||||||
|
- 'packages/**/*.md'
|
||||||
|
- 'latest.json'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docs:
|
||||||
|
name: Build & Verify Docs
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '22.11.0'
|
||||||
|
cache: 'yarn'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Lint docs
|
||||||
|
run: yarn run prettier:checkDocs
|
||||||
|
env:
|
||||||
|
# Increase memory for prettier due to large number of files
|
||||||
|
NODE_OPTIONS: --max_old_space_size=8192
|
||||||
|
|
||||||
|
- name: Build docs website
|
||||||
|
run: |
|
||||||
|
# Create and start a container from the docs-base image in detached mode
|
||||||
|
docker run -d --name docs-builder grafana/docs-base:latest tail -f /dev/null
|
||||||
|
|
||||||
|
# Create the directory structure inside the container
|
||||||
|
docker exec docs-builder mkdir -p /hugo/content/docs/grafana/latest
|
||||||
|
|
||||||
|
# Create the _index.md file
|
||||||
|
docker exec docs-builder /bin/sh -c "echo -e '---\nredirectURL: /docs/grafana/latest/\ntype: redirect\nversioned: true\n---\n' > /hugo/content/docs/grafana/_index.md"
|
||||||
|
|
||||||
|
# Copy the docs sources from the host to the container
|
||||||
|
docker cp docs/sources/. docs-builder:/hugo/content/docs/grafana/latest/
|
||||||
|
|
||||||
|
# Run the make prod command inside the container
|
||||||
|
docker exec -w /hugo docs-builder make prod || echo "Build completed with warnings"
|
||||||
|
|
||||||
|
# Clean up the container
|
||||||
|
docker rm -f docs-builder
|
||||||
6
.github/workflows/metrics-collector.yml
vendored
6
.github/workflows/metrics-collector.yml
vendored
@@ -15,6 +15,9 @@ on:
|
|||||||
issues:
|
issues:
|
||||||
types: [opened, closed]
|
types: [opened, closed]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
config:
|
config:
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
@@ -35,11 +38,12 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Actions
|
- name: Checkout Actions
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: "grafana/grafana-github-actions"
|
repository: "grafana/grafana-github-actions"
|
||||||
path: ./actions
|
path: ./actions
|
||||||
ref: main
|
ref: main
|
||||||
|
persist-credentials: false
|
||||||
- name: Install Actions
|
- name: Install Actions
|
||||||
run: npm install --production --prefix ./actions
|
run: npm install --production --prefix ./actions
|
||||||
- name: Run metrics collector
|
- name: Run metrics collector
|
||||||
|
|||||||
60
.github/workflows/migrate-prs.yml
vendored
Normal file
60
.github/workflows/migrate-prs.yml
vendored
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
name: Migrate open PRs
|
||||||
|
# Migrate open PRs from a superseded release branch to the current release branch and notify authors
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
from:
|
||||||
|
description: 'The base branch to check for open PRs'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
to:
|
||||||
|
description: 'The base branch to migrate open PRs to'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
ownerRepo:
|
||||||
|
description: Owner/repo of the repository where the branch is created (e.g. 'grafana/grafana')
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
secrets:
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_ID:
|
||||||
|
required: true
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_PEM:
|
||||||
|
required: true
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
from:
|
||||||
|
description: 'The base branch to check for open PRs'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
to:
|
||||||
|
description: 'The base branch to migrate open PRs to'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
ownerRepo:
|
||||||
|
description: Owner/repo of the repository where the branch is created (e.g. 'grafana/grafana')
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
secrets:
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_ID:
|
||||||
|
required: true
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_PEM:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
main:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
- name: Migrate PRs
|
||||||
|
uses: grafana/grafana-github-actions-go/migrate-open-prs@main # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
|
ownerRepo: ${{ inputs.ownerRepo }}
|
||||||
|
from: ${{ inputs.from }}
|
||||||
|
to: ${{ inputs.to }}
|
||||||
|
binary_release_tag: 'dev'
|
||||||
19
.github/workflows/milestone.yml
vendored
19
.github/workflows/milestone.yml
vendored
@@ -1,19 +0,0 @@
|
|||||||
name: Close Milestone
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
version_input:
|
|
||||||
description: 'The version to be released please respect: major.minor.patch, major.minor.patch-preview or major.minor.patch-preview<number> format. example: 7.4.3, 7.4.3-preview or 7.4.3-preview1'
|
|
||||||
required: true
|
|
||||||
jobs:
|
|
||||||
call-remove-milestone:
|
|
||||||
uses: grafana/grafana/.github/workflows/remove-milestone.yml@main
|
|
||||||
with:
|
|
||||||
version_call: ${{ github.event.inputs.version_input }}
|
|
||||||
secrets: inherit
|
|
||||||
call-close-milestone:
|
|
||||||
uses: grafana/grafana/.github/workflows/close-milestone.yml@main
|
|
||||||
with:
|
|
||||||
version_call: ${{ github.event.inputs.version_input }}
|
|
||||||
secrets: inherit
|
|
||||||
needs: call-remove-milestone
|
|
||||||
71
.github/workflows/pr-backend-coverage.yml
vendored
Normal file
71
.github/workflows/pr-backend-coverage.yml
vendored
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
name: Coverage
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths-ignore:
|
||||||
|
- 'docs/**'
|
||||||
|
- '**/*.md'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
env:
|
||||||
|
EDITION: 'oss'
|
||||||
|
WIRE_TAGS: 'oss'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
main:
|
||||||
|
name: Backend Unit Tests
|
||||||
|
runs-on: ubuntu-latest-8-cores
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version-file: go.mod
|
||||||
|
cache: true
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y build-essential shared-mime-info
|
||||||
|
go install github.com/mfridman/tparse@c1754a1f484ac5cd422697b0fec635177ddc8507 # v0.17.0
|
||||||
|
- name: Generate Go code
|
||||||
|
run: make gen-go
|
||||||
|
- name: Run unit tests
|
||||||
|
run: COVER_OPTS="-coverprofile=be-unit.cov -coverpkg=github.com/grafana/grafana/..." GO_TEST_OUTPUT="/tmp/unit.log" make test-go-unit-cov
|
||||||
|
- name: Process and upload coverage
|
||||||
|
uses: ./.github/actions/test-coverage-processor
|
||||||
|
with:
|
||||||
|
test-type: 'be-unit'
|
||||||
|
# Needs to be named 'unit.cov' based on the Makefile command `make test-go-unit`
|
||||||
|
coverage-file: 'unit.cov'
|
||||||
|
codecov-token: ${{ secrets.CODECOV_TOKEN }}
|
||||||
|
codecov-flag: 'be-unit'
|
||||||
|
codecov-name: 'be-unit'
|
||||||
|
|
||||||
|
- name: Install Grafana Bench
|
||||||
|
# We can't allow forks here, as we need secret access.
|
||||||
|
if: ${{ github.event_name != 'pull_request' }}
|
||||||
|
uses: ./.github/actions/setup-grafana-bench
|
||||||
|
|
||||||
|
- name: Process output for Bench
|
||||||
|
if: ${{ github.event_name != 'pull_request' }}
|
||||||
|
run: |
|
||||||
|
grafana-bench report \
|
||||||
|
--trigger pr-backend-unit-tests-oss \
|
||||||
|
--report-input go \
|
||||||
|
--report-output log \
|
||||||
|
--grafana-version "$(git rev-parse HEAD)" \
|
||||||
|
--suite-name grafana-oss-unit-tests \
|
||||||
|
/tmp/unit.log || true
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: false
|
||||||
4
.github/workflows/pr-checks.yml
vendored
4
.github/workflows/pr-checks.yml
vendored
@@ -9,6 +9,7 @@ on:
|
|||||||
- labeled
|
- labeled
|
||||||
- unlabeled
|
- unlabeled
|
||||||
- edited
|
- edited
|
||||||
|
- auto_merge_enabled
|
||||||
issues:
|
issues:
|
||||||
types:
|
types:
|
||||||
- milestoned
|
- milestoned
|
||||||
@@ -30,11 +31,12 @@ jobs:
|
|||||||
if: github.event.pull_request.draft == false
|
if: github.event.pull_request.draft == false
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Actions
|
- name: Checkout Actions
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: "grafana/grafana-github-actions"
|
repository: "grafana/grafana-github-actions"
|
||||||
path: ./actions
|
path: ./actions
|
||||||
ref: main
|
ref: main
|
||||||
|
persist-credentials: false
|
||||||
- name: Install Actions
|
- name: Install Actions
|
||||||
run: npm install --production --prefix ./actions
|
run: npm install --production --prefix ./actions
|
||||||
- name: Run PR Checks
|
- name: Run PR Checks
|
||||||
|
|||||||
52
.github/workflows/pr-codeql-analysis-go.yml
vendored
52
.github/workflows/pr-codeql-analysis-go.yml
vendored
@@ -1,52 +0,0 @@
|
|||||||
name: "CodeQL for PR / go"
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
pull_request:
|
|
||||||
branches: [main]
|
|
||||||
paths:
|
|
||||||
- '**/*.go'
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
security-events: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
analyze:
|
|
||||||
name: Analyze
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: "Generate token"
|
|
||||||
id: generate_token
|
|
||||||
continue-on-error: true
|
|
||||||
uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a
|
|
||||||
with:
|
|
||||||
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
|
||||||
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
|
||||||
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
# We must fetch at least the immediate parents so that if this is
|
|
||||||
# a pull request then we can checkout the head.
|
|
||||||
fetch-depth: 2
|
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
|
||||||
|
|
||||||
- name: Set go version
|
|
||||||
uses: actions/setup-go@v4
|
|
||||||
with:
|
|
||||||
go-version: '1.21.6'
|
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v2
|
|
||||||
with:
|
|
||||||
languages: "go"
|
|
||||||
|
|
||||||
- name: Build go files
|
|
||||||
run: |
|
|
||||||
go mod verify
|
|
||||||
make build-go
|
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
|
||||||
uses: github/codeql-action/analyze@v2
|
|
||||||
@@ -16,6 +16,7 @@ jobs:
|
|||||||
analyze:
|
analyze:
|
||||||
name: Analyze
|
name: Analyze
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
if: github.repository == 'grafana/grafana'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
@@ -24,12 +25,13 @@ jobs:
|
|||||||
# We must fetch at least the immediate parents so that if this is
|
# We must fetch at least the immediate parents so that if this is
|
||||||
# a pull request then we can checkout the head.
|
# a pull request then we can checkout the head.
|
||||||
fetch-depth: 2
|
fetch-depth: 2
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v2
|
uses: github/codeql-action/init@v3
|
||||||
with:
|
with:
|
||||||
languages: "javascript"
|
languages: "javascript"
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v2
|
uses: github/codeql-action/analyze@v3
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ jobs:
|
|||||||
analyze:
|
analyze:
|
||||||
name: Analyze
|
name: Analyze
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
if: github.repository == 'grafana/grafana'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
@@ -22,12 +23,13 @@ jobs:
|
|||||||
# We must fetch at least the immediate parents so that if this is
|
# We must fetch at least the immediate parents so that if this is
|
||||||
# a pull request then we can checkout the head.
|
# a pull request then we can checkout the head.
|
||||||
fetch-depth: 2
|
fetch-depth: 2
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v2
|
uses: github/codeql-action/init@v3
|
||||||
with:
|
with:
|
||||||
languages: "python"
|
languages: "python"
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v2
|
uses: github/codeql-action/analyze@v3
|
||||||
|
|||||||
3
.github/workflows/pr-commands.yml
vendored
3
.github/workflows/pr-commands.yml
vendored
@@ -30,11 +30,12 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Actions
|
- name: Checkout Actions
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: "grafana/grafana-github-actions"
|
repository: "grafana/grafana-github-actions"
|
||||||
path: ./actions
|
path: ./actions
|
||||||
ref: main
|
ref: main
|
||||||
|
persist-credentials: false
|
||||||
- name: Install Actions
|
- name: Install Actions
|
||||||
run: npm install --production --prefix ./actions
|
run: npm install --production --prefix ./actions
|
||||||
- name: "Generate token"
|
- name: "Generate token"
|
||||||
|
|||||||
69
.github/workflows/pr-dependabot-update-go-workspace.yml
vendored
Normal file
69
.github/workflows/pr-dependabot-update-go-workspace.yml
vendored
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
name: "Update Go Workspace for Dependabot PRs"
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: [main]
|
||||||
|
paths:
|
||||||
|
- .github/workflows/pr-dependabot-update-go-workspace.yml
|
||||||
|
- go.mod
|
||||||
|
- go.sum
|
||||||
|
- go.work
|
||||||
|
- go.work.sum
|
||||||
|
- '**/go.mod'
|
||||||
|
- '**/go.sum'
|
||||||
|
- '**.go'
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
id-token: write
|
||||||
|
jobs:
|
||||||
|
update:
|
||||||
|
runs-on: "ubuntu-latest"
|
||||||
|
if: ${{ github.actor == 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository }}
|
||||||
|
continue-on-error: true
|
||||||
|
steps:
|
||||||
|
- name: Retrieve GitHub App secrets
|
||||||
|
id: get-secrets
|
||||||
|
uses: grafana/shared-workflows/actions/get-vault-secrets@get-vault-secrets-v1.0.1 # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
repo_secrets: |
|
||||||
|
APP_ID=grafana-go-workspace-bot:app-id
|
||||||
|
APP_INSTALLATION_ID=grafana-go-workspace-bot:app-installation-id
|
||||||
|
PRIVATE_KEY=grafana-go-workspace-bot:private-key
|
||||||
|
|
||||||
|
- name: Generate GitHub App token
|
||||||
|
id: generate_token
|
||||||
|
uses: actions/create-github-app-token@v1
|
||||||
|
with:
|
||||||
|
app-id: ${{ env.APP_ID }}
|
||||||
|
private-key: ${{ env.PRIVATE_KEY }}
|
||||||
|
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
||||||
|
ref: ${{ github.event.pull_request.head.ref }}
|
||||||
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Set go version
|
||||||
|
uses: actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639
|
||||||
|
with:
|
||||||
|
go-version-file: go.mod
|
||||||
|
|
||||||
|
- name: Configure Git
|
||||||
|
run: |
|
||||||
|
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||||
|
git config --local user.name "github-actions[bot]"
|
||||||
|
git config --local --add --bool push.autoSetupRemote true
|
||||||
|
|
||||||
|
- name: Update workspace
|
||||||
|
run: make update-workspace
|
||||||
|
|
||||||
|
- name: Commit and push workspace changes
|
||||||
|
env:
|
||||||
|
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
|
||||||
|
run: |
|
||||||
|
if ! git diff --exit-code --quiet; then
|
||||||
|
echo "Committing and pushing workspace changes"
|
||||||
|
git commit -a -m "update workspace"
|
||||||
|
git push origin $BRANCH_NAME
|
||||||
|
fi
|
||||||
72
.github/workflows/pr-e2e-tests.yml
vendored
Normal file
72
.github/workflows/pr-e2e-tests.yml
vendored
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
name: End-to-end tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- release-*.*.*
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-grafana:
|
||||||
|
name: Build & Package Grafana
|
||||||
|
runs-on: ubuntu-latest-16-cores
|
||||||
|
outputs:
|
||||||
|
artifact: ${{ steps.artifact.outputs.artifact }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: 'grafana/grafana-build'
|
||||||
|
ref: 'main'
|
||||||
|
persist-credentials: false
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: ./grafana
|
||||||
|
- run: echo "GRAFANA_GO_VERSION=$(grep "go 1." grafana/go.work | cut -d\ -f2)" >> "$GITHUB_ENV"
|
||||||
|
- uses: dagger/dagger-for-github@e47aba410ef9bb9ed81a4d2a97df31061e5e842e
|
||||||
|
with:
|
||||||
|
verb: run
|
||||||
|
args: go run ./cmd artifacts -a targz:grafana:linux/amd64 --grafana-dir=grafana --go-version=${GRAFANA_GO_VERSION} > out.txt
|
||||||
|
- run: mv $(cat out.txt) grafana.tar.gz
|
||||||
|
- run: echo "artifact=grafana-e2e-${{github.run_number}}" >> "$GITHUB_OUTPUT"
|
||||||
|
id: artifact
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
id: upload
|
||||||
|
with:
|
||||||
|
retention-days: 1
|
||||||
|
name: ${{ steps.artifact.outputs.artifact }}
|
||||||
|
path: grafana.tar.gz
|
||||||
|
e2e-matrix:
|
||||||
|
name: ${{ matrix.suite }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
suite:
|
||||||
|
- various-suite
|
||||||
|
- dashboards-suite
|
||||||
|
- smoke-tests-suite
|
||||||
|
- panels-suite
|
||||||
|
needs:
|
||||||
|
- build-grafana
|
||||||
|
uses: ./.github/workflows/run-e2e-suite.yml
|
||||||
|
with:
|
||||||
|
package: ${{ needs.build-grafana.outputs.artifact }}
|
||||||
|
suite: ${{ matrix.suite }}
|
||||||
|
e2e-matrix-old-arch:
|
||||||
|
name: ${{ matrix.suite }} (old arch)
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
suite:
|
||||||
|
- old-arch/various-suite
|
||||||
|
- old-arch/dashboards-suite
|
||||||
|
- old-arch/smoke-tests-suite
|
||||||
|
- old-arch/panels-suite
|
||||||
|
needs:
|
||||||
|
- build-grafana
|
||||||
|
uses: ./.github/workflows/run-e2e-suite.yml
|
||||||
|
with:
|
||||||
|
package: ${{ needs.build-grafana.outputs.artifact }}
|
||||||
|
suite: ${{ matrix.suite }}
|
||||||
69
.github/workflows/pr-frontend-unit-tests.yml
vendored
Normal file
69
.github/workflows/pr-frontend-unit-tests.yml
vendored
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
name: Frontend tests
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- release-*.*.*
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
frontend-unit-tests:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
# Run this workflow only for PRs from forks; if it gets merged into `main` or `release-*`,
|
||||||
|
# the `frontend-unit-tests-enterprise` workflow will run instead
|
||||||
|
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == true
|
||||||
|
runs-on: ubuntu-latest-8-cores
|
||||||
|
name: "Unit tests (${{ matrix.chunk }} / 8)"
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
chunk: [1, 2, 3, 4, 5, 6, 7, 8]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'yarn'
|
||||||
|
cache-dependency-path: 'yarn.lock'
|
||||||
|
- run: yarn install --immutable --check-cache
|
||||||
|
- run: yarn run test:ci
|
||||||
|
env:
|
||||||
|
TEST_MAX_WORKERS: 2
|
||||||
|
TEST_SHARD: ${{ matrix.chunk }}
|
||||||
|
TEST_SHARD_TOTAL: 8
|
||||||
|
|
||||||
|
frontend-unit-tests-enterprise:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
# Run this workflow for non-PR events (like pushes to `main` or `release-*`) OR for internal PRs (PRs not from forks)
|
||||||
|
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false
|
||||||
|
runs-on: ubuntu-latest-8-cores
|
||||||
|
name: "Unit tests (${{ matrix.chunk }} / 8)"
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
chunk: [1, 2, 3, 4, 5, 6, 7, 8]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'yarn'
|
||||||
|
cache-dependency-path: 'yarn.lock'
|
||||||
|
- name: Setup Enterprise
|
||||||
|
uses: ./.github/actions/setup-enterprise
|
||||||
|
with:
|
||||||
|
github-app-name: 'grafana-ci-bot'
|
||||||
|
- run: yarn install --immutable --check-cache
|
||||||
|
- run: yarn run test:ci
|
||||||
|
env:
|
||||||
|
TEST_MAX_WORKERS: 2
|
||||||
|
TEST_SHARD: ${{ matrix.chunk }}
|
||||||
|
TEST_SHARD_TOTAL: 8
|
||||||
47
.github/workflows/pr-go-workspace-check.yml
vendored
Normal file
47
.github/workflows/pr-go-workspace-check.yml
vendored
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
name: "Go Workspace Check"
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
pull_request:
|
||||||
|
branches: [main]
|
||||||
|
paths:
|
||||||
|
- .github/workflows/pr-go-workspace-check.yml
|
||||||
|
- go.mod
|
||||||
|
- go.sum
|
||||||
|
- go.work
|
||||||
|
- go.work.sum
|
||||||
|
- '**/go.mod'
|
||||||
|
- '**/go.sum'
|
||||||
|
- '**.go'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check:
|
||||||
|
name: Go Workspace Check
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Set go version
|
||||||
|
uses: actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639
|
||||||
|
with:
|
||||||
|
cache: false
|
||||||
|
go-version-file: go.mod
|
||||||
|
|
||||||
|
- name: Update workspace
|
||||||
|
run: make update-workspace
|
||||||
|
|
||||||
|
- name: Check for go mod & workspace changes
|
||||||
|
run: |
|
||||||
|
if ! git diff --exit-code --quiet; then
|
||||||
|
echo "Changes detected:"
|
||||||
|
git diff
|
||||||
|
echo "Please run 'make update-workspace' and commit the changes."
|
||||||
|
echo "If there is a change in enterprise dependencies, please update pkg/extensions/main.go."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
- name: Ensure Dockerfile contains submodule COPY commands
|
||||||
|
run: ./scripts/go-workspace/validate-dockerfile.sh
|
||||||
41
.github/workflows/pr-k8s-codegen-check.yml
vendored
Normal file
41
.github/workflows/pr-k8s-codegen-check.yml
vendored
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
name: "K8s Codegen Check"
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
pull_request:
|
||||||
|
branches: [main]
|
||||||
|
paths:
|
||||||
|
- "pkg/apis/**"
|
||||||
|
- "pkg/aggregator/apis/**"
|
||||||
|
- "pkg/apimachinery/apis/**"
|
||||||
|
- "hack/**"
|
||||||
|
- "apps/**"
|
||||||
|
- "*.sum"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check:
|
||||||
|
name: K8s Codegen Check
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Set go version
|
||||||
|
uses: actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639
|
||||||
|
with:
|
||||||
|
go-version-file: go.mod
|
||||||
|
|
||||||
|
- name: Update k8s codegen
|
||||||
|
run: ./hack/update-codegen.sh
|
||||||
|
|
||||||
|
- name: Check for k8s codegen changes
|
||||||
|
run: |
|
||||||
|
if ! git diff --exit-code --quiet; then
|
||||||
|
echo "Changes detected:"
|
||||||
|
git diff
|
||||||
|
echo "Please run './hack/update-codegen.sh' and commit the changes."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
63
.github/workflows/pr-patch-check-event.yml
vendored
Normal file
63
.github/workflows/pr-patch-check-event.yml
vendored
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# Owned by grafana-delivery-squad
|
||||||
|
# Intended to be dropped into the base repo Ex: grafana/grafana
|
||||||
|
name: Dispatch check for patch conflicts
|
||||||
|
run-name: dispatch-check-patch-conflicts-${{ github.base_ref }}-${{ github.head_ref }}
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- reopened
|
||||||
|
- synchronize
|
||||||
|
branches:
|
||||||
|
- "main"
|
||||||
|
- "v*.*.*"
|
||||||
|
- "release-*"
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
|
# Since this is run on a pull request, we want to apply the patches intended for the
|
||||||
|
# target branch onto the source branch, to verify compatibility before merging.
|
||||||
|
jobs:
|
||||||
|
dispatch-job:
|
||||||
|
permissions:
|
||||||
|
id-token: write
|
||||||
|
contents: read
|
||||||
|
actions: write
|
||||||
|
env:
|
||||||
|
HEAD_REF: ${{ github.head_ref }}
|
||||||
|
BASE_REF: ${{ github.base_ref }}
|
||||||
|
REPO: ${{ github.repository }}
|
||||||
|
SENDER: ${{ github.event.sender.login }}
|
||||||
|
SHA: ${{ github.sha }}
|
||||||
|
PR_COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a
|
||||||
|
with:
|
||||||
|
# App needs Actions: Read/Write for the grafana/security-patch-actions repo
|
||||||
|
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
- name: "Dispatch job"
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
github-token: ${{ steps.generate_token.outputs.token }}
|
||||||
|
script: |
|
||||||
|
const {HEAD_REF, BASE_REF, REPO, SENDER, SHA, PR_COMMIT_SHA} = process.env;
|
||||||
|
|
||||||
|
await github.rest.actions.createWorkflowDispatch({
|
||||||
|
owner: 'grafana',
|
||||||
|
repo: 'security-patch-actions',
|
||||||
|
workflow_id: 'test-patches-event.yml',
|
||||||
|
ref: 'main',
|
||||||
|
inputs: {
|
||||||
|
src_repo: REPO,
|
||||||
|
src_ref: HEAD_REF,
|
||||||
|
src_merge_sha: SHA,
|
||||||
|
src_pr_commit_sha: PR_COMMIT_SHA,
|
||||||
|
patch_repo: REPO + '-security-patches',
|
||||||
|
patch_ref: BASE_REF,
|
||||||
|
triggering_github_handle: SENDER
|
||||||
|
}
|
||||||
|
})
|
||||||
26
.github/workflows/pr-patch-check.yml
vendored
26
.github/workflows/pr-patch-check.yml
vendored
@@ -1,26 +0,0 @@
|
|||||||
# Owned by grafana-release-guild
|
|
||||||
# Intended to be dropped into the base repo Ex: grafana/grafana
|
|
||||||
name: Check for patch conflicts
|
|
||||||
run-name: check-patch-conflicts-${{ github.base_ref }}-${{ github.head_ref }}
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
types:
|
|
||||||
- opened
|
|
||||||
- reopened
|
|
||||||
- synchronize
|
|
||||||
branches:
|
|
||||||
- "main"
|
|
||||||
- "v*.*.*"
|
|
||||||
- "release-*"
|
|
||||||
|
|
||||||
# Since this is run on a pull request, we want to apply the patches intended for the
|
|
||||||
# target branch onto the source branch, to verify compatibility before merging.
|
|
||||||
jobs:
|
|
||||||
trigger_downstream_patch_check:
|
|
||||||
uses: grafana/security-patch-actions/.github/workflows/test-patches.yml@main
|
|
||||||
with:
|
|
||||||
src_repo: "${{ github.repository }}"
|
|
||||||
src_ref: "${{ github.head_ref }}" # this is the source branch name, Ex: "feature/newthing"
|
|
||||||
patch_repo: "${{ github.repository }}-security-patches"
|
|
||||||
patch_ref: "${{ github.base_ref }}" # this is the target branch name, Ex: "main"
|
|
||||||
secrets: inherit
|
|
||||||
89
.github/workflows/pr-test-integration.yml
vendored
Normal file
89
.github/workflows/pr-test-integration.yml
vendored
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
name: Integration Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- release-*.*.*
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
sqlite:
|
||||||
|
name: Sqlite
|
||||||
|
runs-on: ubuntu-latest-8-cores
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version-file: go.mod
|
||||||
|
cache: true
|
||||||
|
- run: |
|
||||||
|
make gen-go
|
||||||
|
go test -tags=sqlite -timeout=5m -run '^TestIntegration' $(find ./pkg -type f -name '*_test.go' -exec grep -l '^func TestIntegration' '{}' '+' | grep -o '\(.*\)/' | sort -u)
|
||||||
|
mysql:
|
||||||
|
name: MySQL
|
||||||
|
runs-on: ubuntu-latest-8-cores
|
||||||
|
env:
|
||||||
|
GRAFANA_TEST_DB: mysql
|
||||||
|
MYSQL_HOST: 127.0.0.1
|
||||||
|
services:
|
||||||
|
mysql:
|
||||||
|
image: mysql:8.0.32
|
||||||
|
env:
|
||||||
|
MYSQL_ROOT_PASSWORD: rootpass
|
||||||
|
MYSQL_DATABASE: grafana_tests
|
||||||
|
MYSQL_USER: grafana
|
||||||
|
MYSQL_PASSWORD: password
|
||||||
|
options: --health-cmd="mysqladmin ping --silent" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||||
|
ports:
|
||||||
|
- 3306:3306
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version-file: go.mod
|
||||||
|
cache: true
|
||||||
|
- run: |
|
||||||
|
sudo apt-get update -yq && sudo apt-get install mariadb-client
|
||||||
|
cat devenv/docker/blocks/mysql_tests/setup.sql | mariadb -h 127.0.0.1 -P 3306 -u root -prootpass --disable-ssl-verify-server-cert
|
||||||
|
make gen-go
|
||||||
|
go test -tags=mysql -p=1 -timeout=5m -run '^TestIntegration' $(find ./pkg -type f -name '*_test.go' -exec grep -l '^func TestIntegration' '{}' '+' | grep -o '\(.*\)/' | sort -u)
|
||||||
|
postgres:
|
||||||
|
name: Postgres
|
||||||
|
runs-on: ubuntu-latest-8-cores
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:12.3-alpine
|
||||||
|
env:
|
||||||
|
POSTGRES_USER: grafanatest
|
||||||
|
POSTGRES_PASSWORD: grafanatest
|
||||||
|
POSTGRES_DB: grafanatest
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version-file: go.mod
|
||||||
|
cache: true
|
||||||
|
- env:
|
||||||
|
GRAFANA_TEST_DB: postgres
|
||||||
|
PGPASSWORD: grafanatest
|
||||||
|
POSTGRES_HOST: 127.0.0.1
|
||||||
|
run: |
|
||||||
|
sudo apt-get update -yq && sudo apt-get install postgresql-client
|
||||||
|
psql -p 5432 -h 127.0.0.1 -U grafanatest -d grafanatest -f devenv/docker/blocks/postgres_tests/setup.sql
|
||||||
|
make gen-go
|
||||||
|
go test -p=1 -tags=postgres -timeout=5m -run '^TestIntegration' $(find ./pkg -type f -name '*_test.go' -exec grep -l '^func TestIntegration' '{}' '+' | grep -o '\(.*\)/' | sort -u)
|
||||||
5
.github/workflows/publish-kinds-next.yml
vendored
5
.github/workflows/publish-kinds-next.yml
vendored
@@ -32,11 +32,12 @@ jobs:
|
|||||||
uses: "actions/checkout@v4"
|
uses: "actions/checkout@v4"
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: "Setup Go"
|
- name: "Setup Go"
|
||||||
uses: "actions/setup-go@v4"
|
uses: "actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639"
|
||||||
with:
|
with:
|
||||||
go-version: '1.21.6'
|
go-version-file: go.mod
|
||||||
|
|
||||||
- name: "Verify kinds"
|
- name: "Verify kinds"
|
||||||
run: go run .github/workflows/scripts/kinds/verify-kinds.go
|
run: go run .github/workflows/scripts/kinds/verify-kinds.go
|
||||||
|
|||||||
5
.github/workflows/publish-kinds-release.yml
vendored
5
.github/workflows/publish-kinds-release.yml
vendored
@@ -35,11 +35,12 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
# required for the `grafana/grafana-github-actions/has-matching-release-tag` action to work
|
# required for the `grafana/grafana-github-actions/has-matching-release-tag` action to work
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: "Setup Go"
|
- name: "Setup Go"
|
||||||
uses: "actions/setup-go@v4"
|
uses: "actions/setup-go@19bb51245e9c80abacb2e91cc42b33fa478b8639"
|
||||||
with:
|
with:
|
||||||
go-version: '1.21.6'
|
go-version-file: go.mod
|
||||||
|
|
||||||
- name: "Verify kinds"
|
- name: "Verify kinds"
|
||||||
run: go run .github/workflows/scripts/kinds/verify-kinds.go
|
run: go run .github/workflows/scripts/kinds/verify-kinds.go
|
||||||
|
|||||||
@@ -1,38 +1,21 @@
|
|||||||
name: "publish-technical-documentation-next"
|
name: publish-technical-documentation-next
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- "main"
|
- main
|
||||||
paths:
|
paths:
|
||||||
- "docs/sources/**"
|
- "docs/sources/**"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
jobs:
|
jobs:
|
||||||
sync:
|
sync:
|
||||||
if: github.repository == 'grafana/grafana'
|
if: github.repository == 'grafana/grafana'
|
||||||
runs-on: "ubuntu-latest"
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout Grafana repo"
|
- uses: actions/checkout@v4
|
||||||
uses: "actions/checkout@v4"
|
- uses: grafana/writers-toolkit/publish-technical-documentation@publish-technical-documentation/v1 # zizmor: ignore[unpinned-uses]
|
||||||
|
|
||||||
- name: "Clone website-sync Action"
|
|
||||||
# WEBSITE_SYNC_TOKEN is a fine-grained GitHub Personal Access Token that expires.
|
|
||||||
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
|
|
||||||
# GitHub administrator to update the organization secret.
|
|
||||||
# The IT helpdesk can update the organization secret.
|
|
||||||
run: "git clone --single-branch --no-tags --depth 1 -b master https://grafanabot:${{ secrets.WEBSITE_SYNC_TOKEN }}@github.com/grafana/website-sync ./.github/actions/website-sync"
|
|
||||||
|
|
||||||
- name: "Publish to website repository (next)"
|
|
||||||
uses: "./.github/actions/website-sync"
|
|
||||||
id: "publish-next"
|
|
||||||
with:
|
with:
|
||||||
repository: "grafana/website"
|
website_directory: content/docs/grafana/next
|
||||||
branch: "master"
|
|
||||||
host: "github.com"
|
|
||||||
# PUBLISH_TO_WEBSITE_TOKEN is a fine-grained GitHub Personal Access Token that expires.
|
|
||||||
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
|
|
||||||
# GitHub administrator to update the organization secret.
|
|
||||||
# The IT helpdesk can update the organization secret.
|
|
||||||
github_pat: "grafanabot:${{ secrets.PUBLISH_TO_WEBSITE_TOKEN }}"
|
|
||||||
source_folder: "docs/sources"
|
|
||||||
target_folder: "content/docs/grafana/next"
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
name: "publish-technical-documentation-release"
|
name: publish-technical-documentation-release
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- v[0-9]+.[0-9]+.x
|
- release-[0-9]+.[0-9]+.[0-9]+
|
||||||
tags:
|
tags:
|
||||||
- v[0-9]+.[0-9]+.[0-9]+
|
- v[0-9]+.[0-9]+.[0-9]+
|
||||||
paths:
|
paths:
|
||||||
@@ -12,63 +12,19 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
sync:
|
sync:
|
||||||
if: github.repository == 'grafana/grafana'
|
if: github.repository == 'grafana/grafana'
|
||||||
runs-on: "ubuntu-latest"
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout Grafana repo"
|
- uses: actions/checkout@v4
|
||||||
uses: "actions/checkout@v4"
|
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
persist-credentials: false
|
||||||
- name: "Checkout Actions library"
|
- uses: grafana/writers-toolkit/publish-technical-documentation-release@publish-technical-documentation-release/v2 # zizmor: ignore[unpinned-uses]
|
||||||
uses: "actions/checkout@v4"
|
|
||||||
with:
|
with:
|
||||||
repository: "grafana/grafana-github-actions"
|
release_tag_regexp: "^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$"
|
||||||
path: "./actions"
|
release_branch_regexp: "^release-(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$"
|
||||||
|
release_branch_with_patch_regexp: "^release-(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$"
|
||||||
- name: "Install Actions from library"
|
website_directory: content/docs/grafana
|
||||||
run: "npm install --production --prefix ./actions"
|
version_suffix: ""
|
||||||
|
|
||||||
- name: "Determine if there is a matching release tag"
|
|
||||||
id: "has-matching-release-tag"
|
|
||||||
uses: "./actions/has-matching-release-tag"
|
|
||||||
with:
|
|
||||||
ref_name: "${{ github.ref_name }}"
|
|
||||||
release_tag_regexp: "^v(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"
|
|
||||||
release_branch_regexp: "^v(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.x$"
|
|
||||||
|
|
||||||
- name: "Determine technical documentation version"
|
|
||||||
if: "steps.has-matching-release-tag.outputs.bool == 'true'"
|
|
||||||
uses: "./actions/docs-target"
|
|
||||||
id: "target"
|
|
||||||
with:
|
|
||||||
ref_name: "${{ github.ref_name }}"
|
|
||||||
|
|
||||||
- name: "Clone website-sync Action"
|
|
||||||
if: "steps.has-matching-release-tag.outputs.bool == 'true'"
|
|
||||||
# WEBSITE_SYNC_TOKEN is a fine-grained GitHub Personal Access Token that expires.
|
|
||||||
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
|
|
||||||
# GitHub administrator to update the organization secret.
|
|
||||||
# The IT helpdesk can update the organization secret.
|
|
||||||
run: "git clone --single-branch --no-tags --depth 1 -b master https://grafanabot:${{ secrets.WEBSITE_SYNC_TOKEN }}@github.com/grafana/website-sync ./.github/actions/website-sync"
|
|
||||||
|
|
||||||
- name: "Switch to HEAD of version branch for tags"
|
|
||||||
# Tags aren't necessarily made to the HEAD of the version branch.
|
|
||||||
# The documentation to be published is always on the HEAD of the version branch.
|
|
||||||
if: "steps.has-matching-release-tag.outputs.bool == 'true' && github.ref_type == 'tag'"
|
|
||||||
run: "git switch --detach origin/${{ steps.target.outputs.target }}.x"
|
|
||||||
|
|
||||||
- name: "Publish to website repository (release)"
|
|
||||||
if: "steps.has-matching-release-tag.outputs.bool == 'true'"
|
|
||||||
uses: "./.github/actions/website-sync"
|
|
||||||
id: "publish-release"
|
|
||||||
with:
|
|
||||||
repository: "grafana/website"
|
|
||||||
branch: "master"
|
|
||||||
host: "github.com"
|
|
||||||
# PUBLISH_TO_WEBSITE_TOKEN is a fine-grained GitHub Personal Access Token that expires.
|
|
||||||
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
|
|
||||||
# GitHub administrator to update the organization secret.
|
|
||||||
# The IT helpdesk can update the organization secret.
|
|
||||||
github_pat: "grafanabot:${{ secrets.PUBLISH_TO_WEBSITE_TOKEN }}"
|
|
||||||
source_folder: "docs/sources"
|
|
||||||
target_folder: "content/docs/grafana/${{ steps.target.outputs.target }}"
|
|
||||||
|
|||||||
127
.github/workflows/release-comms.yml
vendored
Normal file
127
.github/workflows/release-comms.yml
vendored
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
# This workflow runs whenever the release PR is merged. It includes post-release communication processes like
|
||||||
|
# posting to slack, the website, community forums, etc.
|
||||||
|
# Only things that happen after a release is completed and all of the necessary code changes (like the changelog) are made.
|
||||||
|
name: Post-release
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
dry_run:
|
||||||
|
required: false
|
||||||
|
default: true
|
||||||
|
type: boolean
|
||||||
|
version:
|
||||||
|
required: true
|
||||||
|
latest:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- closed
|
||||||
|
branches:
|
||||||
|
- 'main'
|
||||||
|
- 'release-*.*.*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
setup:
|
||||||
|
if: ${{ github.event_name == 'workflow_dispatch' || (github.event.pull_request.merged == true && startsWith(github.head_ref, 'release/')) }}
|
||||||
|
name: Setup and establish latest
|
||||||
|
outputs:
|
||||||
|
version: ${{ steps.output.outputs.version }}
|
||||||
|
release_branch: ${{ steps.output.outputs.release_branch }}
|
||||||
|
dry_run: ${{ steps.output.outputs.dry_run }}
|
||||||
|
latest: ${{ steps.output.outputs.latest }}
|
||||||
|
env:
|
||||||
|
HEAD_REF: ${{ github.head_ref }}
|
||||||
|
DRY_RUN: ${{ inputs.dry_run }}
|
||||||
|
LATEST: ${{ inputs.latest && '1' || '0' }}
|
||||||
|
VERSION: ${{ inputs.version }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- if: ${{ github.event.pull_request.merged == true && startsWith(github.head_ref, 'release/') }}
|
||||||
|
run: |
|
||||||
|
echo "VERSION=$(echo ${HEAD_REF} | sed -e 's/release\/.*\//v/g')" >> $GITHUB_ENV
|
||||||
|
echo "DRY_RUN=${{ contains(github.event.pull_request.labels.*.name, 'release/dry-run') }}" >> $GITHUB_ENV
|
||||||
|
echo "LATEST=${{ contains(github.event.pull_request.labels.*.name, 'release/latest') && '1' || '0' }}" >> $GITHUB_ENV
|
||||||
|
- id: output
|
||||||
|
run: |
|
||||||
|
echo "dry_run: $DRY_RUN"
|
||||||
|
echo "latest: $LATEST"
|
||||||
|
echo "version: $VERSION"
|
||||||
|
|
||||||
|
echo "release_branch=$(echo $VERSION | sed -s 's/^v/release-/g')" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "dry_run=$DRY_RUN" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "latest=$LATEST" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
||||||
|
create_next_release_branch_grafana:
|
||||||
|
name: Create next release branch (Grafana)
|
||||||
|
needs: setup
|
||||||
|
uses: ./.github/workflows/create-next-release-branch.yml
|
||||||
|
secrets:
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_ID: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_PEM: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
with:
|
||||||
|
ownerRepo: 'grafana/grafana'
|
||||||
|
source: ${{ needs.setup.outputs.release_branch }}
|
||||||
|
create_next_release_branch_enterprise:
|
||||||
|
name: Create next release branch (Grafana Enterprise)
|
||||||
|
needs: setup
|
||||||
|
uses: ./.github/workflows/create-next-release-branch.yml
|
||||||
|
secrets:
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_ID: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_PEM: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
with:
|
||||||
|
ownerRepo: 'grafana/grafana-enterprise'
|
||||||
|
source: ${{ needs.setup.outputs.release_branch }}
|
||||||
|
migrate_prs_grafana:
|
||||||
|
needs:
|
||||||
|
- setup
|
||||||
|
- create_next_release_branch_grafana
|
||||||
|
uses: ./.github/workflows/migrate-prs.yml
|
||||||
|
secrets:
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_ID: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_PEM: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
with:
|
||||||
|
ownerRepo: 'grafana/grafana'
|
||||||
|
from: ${{ needs.setup.outputs.release_branch }}
|
||||||
|
to: ${{ needs.create_next_release_branch_grafana.outputs.branch }}
|
||||||
|
migrate_prs_enterprise:
|
||||||
|
needs:
|
||||||
|
- setup
|
||||||
|
- create_next_release_branch_enterprise
|
||||||
|
uses: ./.github/workflows/migrate-prs.yml
|
||||||
|
secrets:
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_ID: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_PEM: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
with:
|
||||||
|
ownerRepo: 'grafana/grafana-enterprise'
|
||||||
|
from: ${{ needs.setup.outputs.release_branch }}
|
||||||
|
to: ${{ needs.create_next_release_branch_enterprise.outputs.branch }}
|
||||||
|
post_changelog_on_forum:
|
||||||
|
needs: setup
|
||||||
|
uses: ./.github/workflows/community-release.yml
|
||||||
|
secrets:
|
||||||
|
GRAFANA_MISC_STATS_API_KEY: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
|
||||||
|
GRAFANABOT_FORUM_KEY: ${{ secrets.GRAFANABOT_FORUM_KEY }}
|
||||||
|
with:
|
||||||
|
version: ${{ needs.setup.outputs.version }}
|
||||||
|
dry_run: ${{ needs.setup.outputs.dry_run == 'true' }}
|
||||||
|
create_github_release:
|
||||||
|
# a github release requires a git tag
|
||||||
|
# The github-release action retrieves the changelog using the /repos/grafana/grafana/contents/CHANGELOG.md API
|
||||||
|
# endpoint.
|
||||||
|
needs: setup
|
||||||
|
uses: ./.github/workflows/github-release.yml
|
||||||
|
with:
|
||||||
|
version: ${{ needs.setup.outputs.version }}
|
||||||
|
dry_run: ${{ needs.setup.outputs.dry_run == 'true' }}
|
||||||
|
latest: ${{ needs.setup.outputs.latest }}
|
||||||
|
post_on_slack:
|
||||||
|
needs: setup
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
DRY_RUN: ${{ needs.setup.outputs.dry_run }}
|
||||||
|
VERSION: ${{ needs.setup.outputs.version }}
|
||||||
|
steps:
|
||||||
|
- run: |
|
||||||
|
echo announce on slack that $VERSION has been released
|
||||||
|
echo dry run: $DRY_RUN
|
||||||
201
.github/workflows/release-pr.yml
vendored
Normal file
201
.github/workflows/release-pr.yml
vendored
Normal file
@@ -0,0 +1,201 @@
|
|||||||
|
# This workflow creates a new PR in Grafana which is triggered after a release is completed.
|
||||||
|
# It should include all code changes that are needed after a release is done. This includes the changelog update and
|
||||||
|
# version bumps, but could include more in the future.
|
||||||
|
# Please refrain from including any processes that do not result in code changes in this workflow. Instead, they should
|
||||||
|
# either be triggered in the release promotion process or in the release comms process (that is triggered by merging
|
||||||
|
# this PR).
|
||||||
|
name: Grafana Release PR
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
previous_version:
|
||||||
|
type: string
|
||||||
|
required: false
|
||||||
|
description: 'The release version (semver, git tag, branch or commit) to use for comparison'
|
||||||
|
version:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
description: The version of Grafana that is being released
|
||||||
|
target:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
description: The release branch pattern (eg v9.5.x) that these changes are being merged into
|
||||||
|
backport:
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
description: Branch to backport these changes to
|
||||||
|
dry_run:
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
|
latest:
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
push-changelog-to-main:
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
name: Create PR to main to update the changelog
|
||||||
|
uses: ./.github/workflows/changelog.yml
|
||||||
|
with:
|
||||||
|
previous_version: ${{inputs.previous_version}}
|
||||||
|
version: ${{ inputs.version }}
|
||||||
|
latest: ${{ inputs.latest }}
|
||||||
|
dry_run: ${{ inputs.dry_run }}
|
||||||
|
target: main
|
||||||
|
secrets:
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_ID: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_PEM: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
|
||||||
|
create-prs:
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
name: Create Release PR
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.repository == 'grafana/grafana'
|
||||||
|
env:
|
||||||
|
VERSION: ${{ inputs.version }}
|
||||||
|
LATEST: ${{ inputs.latest }}
|
||||||
|
DRY_RUN: ${{ inputs.dry_run }}
|
||||||
|
steps:
|
||||||
|
- name: Get release branch
|
||||||
|
id: branch
|
||||||
|
uses: grafana/grafana-github-actions-go/latest-release-branch@main # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
ownerRepo: 'grafana/grafana'
|
||||||
|
pattern: ${{ inputs.target }}
|
||||||
|
- name: Checkout Grafana
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: ${{ steps.branch.outputs.branch }}
|
||||||
|
fetch-tags: true
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Checkout Grafana (main)
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: main
|
||||||
|
fetch-depth: '0'
|
||||||
|
fetch-tags: 'false'
|
||||||
|
path: .grafana-main
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Setup nodejs environment
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: .nvmrc
|
||||||
|
- name: Configure git user
|
||||||
|
run: |
|
||||||
|
git config --local user.name "github-actions[bot]"
|
||||||
|
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
git config --local --add --bool push.autoSetupRemote true
|
||||||
|
|
||||||
|
- name: Create branch
|
||||||
|
run: git checkout -b "release/${{ github.run_id }}/$VERSION"
|
||||||
|
- name: Generate changelog token
|
||||||
|
id: generate_changelog_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
||||||
|
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
- name: Generate changelog
|
||||||
|
id: changelog
|
||||||
|
uses: ./.grafana-main/.github/actions/changelog
|
||||||
|
with:
|
||||||
|
github_token: ${{ steps.generate_changelog_token.outputs.token }}
|
||||||
|
target: v${{ env.VERSION }}
|
||||||
|
output_file: changelog_items.md
|
||||||
|
- name: Patch CHANGELOG.md
|
||||||
|
run: |
|
||||||
|
# Prepare CHANGELOG.md content with version delimiters
|
||||||
|
(
|
||||||
|
echo
|
||||||
|
echo "# $VERSION ($(date '+%F'))"
|
||||||
|
echo
|
||||||
|
cat changelog_items.md
|
||||||
|
) > CHANGELOG.part
|
||||||
|
|
||||||
|
# Check if a version exists in the changelog
|
||||||
|
if grep -q "<!-- $VERSION START" CHANGELOG.md ; then
|
||||||
|
# Replace the content between START and END delimiters
|
||||||
|
echo "Version $VERSION is found in the CHANGELOG.md, patching contents..."
|
||||||
|
sed -i -e "/$VERSION START/,/$VERSION END/{//!d;}" \
|
||||||
|
-e "/$VERSION START/r CHANGELOG.part" CHANGELOG.md
|
||||||
|
else
|
||||||
|
# Prepend changelog part to the main changelog file
|
||||||
|
echo "Version $VERSION not found in the CHANGELOG.md"
|
||||||
|
(
|
||||||
|
echo "<!-- $VERSION START -->"
|
||||||
|
cat CHANGELOG.part
|
||||||
|
echo "<!-- $VERSION END -->"
|
||||||
|
cat CHANGELOG.md
|
||||||
|
) > CHANGELOG.tmp
|
||||||
|
mv CHANGELOG.tmp CHANGELOG.md
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f CHANGELOG.part changelog_items.md
|
||||||
|
|
||||||
|
git diff CHANGELOG.md
|
||||||
|
- name: "Prettify CHANGELOG.md"
|
||||||
|
run: npx prettier --write CHANGELOG.md
|
||||||
|
- name: Commit CHANGELOG.md changes
|
||||||
|
run: git add CHANGELOG.md && git commit --allow-empty -m "Update changelog" CHANGELOG.md
|
||||||
|
|
||||||
|
- name: Update package.json versions
|
||||||
|
uses: ./.grafana-main/pkg/build/actions/bump-version
|
||||||
|
with:
|
||||||
|
version: 'patch'
|
||||||
|
|
||||||
|
- name: Add package.json changes
|
||||||
|
run: |
|
||||||
|
git add package.json lerna.json yarn.lock packages public
|
||||||
|
test -e e2e/test-plugins && git add e2e/test-plugins
|
||||||
|
git commit -m "Update version to $VERSION"
|
||||||
|
|
||||||
|
- name: Git push
|
||||||
|
if: ${{ inputs.dry_run }} != true
|
||||||
|
run: git push --set-upstream origin "release/${{ github.run_id }}/$VERSION"
|
||||||
|
|
||||||
|
- name: Create PR without backports
|
||||||
|
if: "${{ inputs.backport == '' }}"
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
BRANCH: ${{ steps.branch.outputs.branch }}
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=""
|
||||||
|
if [ "$LATEST" = "true" ]; then
|
||||||
|
LATEST_FLAG='-l "release/latest"'
|
||||||
|
fi
|
||||||
|
gh pr create \
|
||||||
|
$LATEST_FLAG \
|
||||||
|
-l "no-changelog" \
|
||||||
|
--dry-run="$DRY_RUN" \
|
||||||
|
-B "$BRANCH" \
|
||||||
|
--title "Release: $VERSION" \
|
||||||
|
--body "These code changes must be merged after a release is complete"
|
||||||
|
|
||||||
|
- name: Create PR with backports
|
||||||
|
if: "${{ inputs.backport != '' }}"
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
BRANCH: ${{ steps.branch.outputs.branch }}
|
||||||
|
run: |
|
||||||
|
LATEST_FLAG=""
|
||||||
|
if [ "$LATEST" = "true" ]; then
|
||||||
|
LATEST_FLAG='-l "release/latest"'
|
||||||
|
fi
|
||||||
|
gh pr create \
|
||||||
|
$LATEST_FLAG \
|
||||||
|
-l "product-approved" \
|
||||||
|
-l "no-changelog" \
|
||||||
|
--dry-run="$DRY_RUN" \
|
||||||
|
-B "$BRANCH" \
|
||||||
|
--title "Release: $VERSION" \
|
||||||
|
--body "These code changes must be merged after a release is complete"
|
||||||
60
.github/workflows/remove-milestone.yml
vendored
60
.github/workflows/remove-milestone.yml
vendored
@@ -1,60 +0,0 @@
|
|||||||
name: Remove milestone
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
version:
|
|
||||||
required: true
|
|
||||||
description: Needs to match, exactly, the name of a milestone
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
version_call:
|
|
||||||
description: Needs to match, exactly, the name of a milestone
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
config:
|
|
||||||
runs-on: "ubuntu-latest"
|
|
||||||
outputs:
|
|
||||||
has-secrets: ${{ steps.check.outputs.has-secrets }}
|
|
||||||
steps:
|
|
||||||
- name: "Check for secrets"
|
|
||||||
id: check
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ -n "${{ (secrets.GRAFANA_DELIVERY_BOT_APP_ID != '' && secrets.GRAFANA_DELIVERY_BOT_APP_PEM != '') || '' }}" ]; then
|
|
||||||
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
|
|
||||||
fi
|
|
||||||
|
|
||||||
main:
|
|
||||||
needs: config
|
|
||||||
if: needs.config.outputs.has-secrets
|
|
||||||
permissions:
|
|
||||||
issues: write
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout Actions
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
repository: "grafana/grafana-github-actions"
|
|
||||||
path: ./actions
|
|
||||||
ref: main
|
|
||||||
- name: Install Actions
|
|
||||||
run: npm install --production --prefix ./actions
|
|
||||||
- name: "Generate token"
|
|
||||||
id: generate_token
|
|
||||||
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
|
||||||
with:
|
|
||||||
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
|
||||||
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
|
||||||
- name: Remove milestone from open issues (manually invoked)
|
|
||||||
if: ${{ github.event.inputs.version != '' }}
|
|
||||||
uses: ./actions/remove-milestone
|
|
||||||
with:
|
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
|
||||||
- name: Remove milestone from open issues (workflow invoked)
|
|
||||||
if: ${{ inputs.version_call != '' }}
|
|
||||||
uses: ./actions/remove-milestone
|
|
||||||
with:
|
|
||||||
version_call: ${{ inputs.version_call }}
|
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
|
||||||
130
.github/workflows/run-dashboard-search-e2e.yml
vendored
Normal file
130
.github/workflows/run-dashboard-search-e2e.yml
vendored
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
name: run-dashboard-search-e2e
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_run:
|
||||||
|
workflows:
|
||||||
|
- trigger-dashboard-search-e2e
|
||||||
|
types:
|
||||||
|
- completed
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
ARCH: linux-amd64
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
setup:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event.pull_request.draft == false
|
||||||
|
outputs:
|
||||||
|
ini_files: ${{ steps.get_files.outputs.ini_files }}
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Pin Go version to mod file
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version-file: 'go.mod'
|
||||||
|
cache: true
|
||||||
|
- run: go version
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: 'yarn'
|
||||||
|
- name: Cache Node Modules
|
||||||
|
id: cache-node-modules
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
node_modules
|
||||||
|
/home/runner/.cache/Cypress
|
||||||
|
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
|
||||||
|
- name: Install dependencies
|
||||||
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
||||||
|
run: yarn install --immutable
|
||||||
|
- name: Install Cypress dependencies
|
||||||
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
||||||
|
uses: cypress-io/github-action@108b8684ae52e735ff7891524cbffbcd4be5b19f
|
||||||
|
with:
|
||||||
|
runTests: false
|
||||||
|
- name: Cache Grafana Build and Dependencies
|
||||||
|
id: cache-grafana
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
bin/
|
||||||
|
scripts/grafana-server/
|
||||||
|
tools/
|
||||||
|
public/
|
||||||
|
conf/
|
||||||
|
e2e/test-plugins/
|
||||||
|
devenv/
|
||||||
|
key: ${{ runner.os }}-grafana-${{ hashFiles('go.mod', 'package-lock.json', 'Makefile', 'pkg/storage/**/*.go', 'public/app/features/search/**/*.ts', 'public/app/features/search/**/*.tsx') }}
|
||||||
|
# only rebuild grafana if search files have changed ( or dependencies )
|
||||||
|
- name: Build Grafana (Runs Only If Not Cached)
|
||||||
|
if: steps.cache-grafana.outputs.cache-hit != 'true'
|
||||||
|
run: make build
|
||||||
|
|
||||||
|
- name: Get list of .ini files
|
||||||
|
id: get_files
|
||||||
|
run: |
|
||||||
|
INI_FILES=$(ls ${{ github.workspace }}/e2e/dashboards-search-suite/*.ini | jq -R -s -c 'split("\n")[:-1]')
|
||||||
|
echo "ini_files=$INI_FILES" >> $GITHUB_OUTPUT
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
run_tests:
|
||||||
|
needs: setup
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
continue-on-error: true
|
||||||
|
if: github.event.pull_request.draft == false
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
ini_file: ${{ fromJson(needs.setup.outputs.ini_files) }}
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Restore Cached Node Modules
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
node_modules
|
||||||
|
/home/runner/.cache/Cypress
|
||||||
|
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
|
||||||
|
|
||||||
|
- name: Restore Cached Grafana Build and Dependencies
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
bin/
|
||||||
|
scripts/grafana-server/
|
||||||
|
tools/
|
||||||
|
public/
|
||||||
|
conf/
|
||||||
|
e2e/test-plugins/
|
||||||
|
devenv/
|
||||||
|
key: ${{ runner.os }}-grafana-${{ hashFiles('go.mod', 'package-lock.json', 'Makefile', 'pkg/storage/**/*.go', 'public/app/features/search/**/*.ts', 'public/app/features/search/**/*.tsx') }}
|
||||||
|
- name: Set the step name
|
||||||
|
id: set_file_name
|
||||||
|
env:
|
||||||
|
INI_NAME: ${{ matrix.ini_file }}
|
||||||
|
run: |
|
||||||
|
FILE_NAME=$(basename "$env.INI_NAME" .ini)
|
||||||
|
echo "FILE_NAME=$FILE_NAME" >> $GITHUB_OUTPUT
|
||||||
|
- name: Run tests for ${{ steps.set_file_name.outputs.FILE_NAME }}
|
||||||
|
env:
|
||||||
|
INI_NAME: ${{ matrix.ini_file }}
|
||||||
|
run: |
|
||||||
|
cp -rf $INI_NAME ${{ github.workspace }}/scripts/grafana-server/custom.ini
|
||||||
|
yarn e2e:dashboards-search || echo "Test failed but marking as success since unified search is behind a feature flag and should not block PRs"
|
||||||
39
.github/workflows/run-e2e-suite.yml
vendored
Normal file
39
.github/workflows/run-e2e-suite.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
name: e2e suite
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
package:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
suite:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
main:
|
||||||
|
runs-on: ubuntu-latest-8-cores
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ${{ inputs.package }}
|
||||||
|
- uses: dagger/dagger-for-github@e47aba410ef9bb9ed81a4d2a97df31061e5e842e
|
||||||
|
if: inputs.old-arch == false
|
||||||
|
with:
|
||||||
|
verb: run
|
||||||
|
args: go run ./pkg/build/e2e --package=grafana.tar.gz --suite=${{ inputs.suite }}
|
||||||
|
- name: Set suite name
|
||||||
|
id: set-suite-name
|
||||||
|
env:
|
||||||
|
SUITE: ${{ inputs.suite }}
|
||||||
|
run: |
|
||||||
|
echo "suite=$(echo $SUITE | sed 's/\//-/g')" >> $GITHUB_OUTPUT
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
if: ${{ always() && inputs.old-arch != true }}
|
||||||
|
with:
|
||||||
|
name: e2e-${{ steps.set-suite-name.outputs.suite }}-${{github.run_number}}
|
||||||
|
path: videos
|
||||||
|
retention-days: 1
|
||||||
46
.github/workflows/run-schema-v2-e2e.yml
vendored
Normal file
46
.github/workflows/run-schema-v2-e2e.yml
vendored
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
name: Run dashboard schema v2 e2e
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- '**'
|
||||||
|
|
||||||
|
env:
|
||||||
|
ARCH: linux-amd64
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
dashboard-schema-v2-e2e:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
continue-on-error: true
|
||||||
|
if: github.event.pull_request.draft == false
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Pin Go version to mod file
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version-file: 'go.mod'
|
||||||
|
- run: go version
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: 'yarn'
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install --immutable
|
||||||
|
- name: Build grafana
|
||||||
|
run: make build
|
||||||
|
- name: Install Cypress dependencies
|
||||||
|
uses: cypress-io/github-action@108b8684ae52e735ff7891524cbffbcd4be5b19f
|
||||||
|
with:
|
||||||
|
runTests: false
|
||||||
|
- name: Run dashboard scenes e2e
|
||||||
|
run: yarn e2e:schema-v2 || echo "Test failed but marking as success since schema V2 is behind a feature flag and should not block PRs"
|
||||||
|
|
||||||
|
- name: Always succeed # This is a workaround to make the job pass even if the previous step fails
|
||||||
|
if: failure()
|
||||||
|
run: exit 0
|
||||||
20
.github/workflows/sbom-report.yml
vendored
20
.github/workflows/sbom-report.yml
vendored
@@ -1,20 +0,0 @@
|
|||||||
name: syft-sbom-ci
|
|
||||||
|
|
||||||
on:
|
|
||||||
release:
|
|
||||||
types: [created]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
syft-sbom:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Anchore SBOM Action
|
|
||||||
uses: anchore/sbom-action@v0.14.2
|
|
||||||
with:
|
|
||||||
artifact-name: ${{ github.event.repository.name }}-spdx.json
|
|
||||||
|
|
||||||
84
.github/workflows/scripts/crowdin/create-tasks.js
vendored
Normal file
84
.github/workflows/scripts/crowdin/create-tasks.js
vendored
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
const crowdin = require('@crowdin/crowdin-api-client');
|
||||||
|
const TRANSLATED_CONNECTOR_DESCRIPTION = '{{tos_service_type: premium}}';
|
||||||
|
|
||||||
|
const API_TOKEN = process.env.CROWDIN_PERSONAL_TOKEN;
|
||||||
|
if (!API_TOKEN) {
|
||||||
|
console.error('Error: CROWDIN_PERSONAL_TOKEN environment variable is not set');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const PROJECT_ID = process.env.CROWDIN_PROJECT_ID;
|
||||||
|
if (!PROJECT_ID) {
|
||||||
|
console.error('Error: CROWDIN_PROJECT_ID environment variable is not set');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const { tasksApi, projectsGroupsApi, sourceFilesApi } = new crowdin.default({
|
||||||
|
token: API_TOKEN,
|
||||||
|
organization: 'grafana'
|
||||||
|
});
|
||||||
|
|
||||||
|
const languages = await getLanguages();
|
||||||
|
const fileIds = await getFileIds();
|
||||||
|
console.log('Languages: ', languages);
|
||||||
|
console.log('File IDs: ', fileIds);
|
||||||
|
|
||||||
|
// for (const language of languages) {
|
||||||
|
// const { name, id } = language;
|
||||||
|
// await createTask(`Translate to ${name}`, id, fileIds);
|
||||||
|
// }
|
||||||
|
|
||||||
|
async function getLanguages() {
|
||||||
|
try {
|
||||||
|
const project = await projectsGroupsApi.getProject(PROJECT_ID);
|
||||||
|
const languages = project.data.targetLanguages;
|
||||||
|
return languages;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Failed to fetch languages: ', error.message);
|
||||||
|
if (error.response && error.response.data) {
|
||||||
|
console.error('Error details: ', JSON.stringify(error.response.data, null, 2));
|
||||||
|
}
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getFileIds() {
|
||||||
|
try {
|
||||||
|
const response = await sourceFilesApi.listProjectFiles(PROJECT_ID);
|
||||||
|
const files = response.data;
|
||||||
|
const fileIds = files.map(file => file.data.id);
|
||||||
|
return fileIds;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Failed to fetch file IDs: ', error.message);
|
||||||
|
if (error.response && error.response.data) {
|
||||||
|
console.error('Error details: ', JSON.stringify(error.response.data, null, 2));
|
||||||
|
}
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function createTask(title, languageId, fileIds) {
|
||||||
|
try {
|
||||||
|
const taskParams = {
|
||||||
|
title,
|
||||||
|
description: TRANSLATED_CONNECTOR_DESCRIPTION,
|
||||||
|
languageId,
|
||||||
|
type: 2, // Translation by vendor
|
||||||
|
workflowStepId: 78, // Translation step ID
|
||||||
|
skipAssignedStrings: true,
|
||||||
|
fileIds,
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log(`Creating Crowdin task: "${title}" for language ${languageId}`);
|
||||||
|
|
||||||
|
const response = await tasksApi.addTask(PROJECT_ID, taskParams);
|
||||||
|
console.log(`Task created successfully! Task ID: ${response.data.id}`);
|
||||||
|
return response.data;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Failed to create Crowdin task: ', error.message);
|
||||||
|
if (error.response && error.response.data) {
|
||||||
|
console.error('Error details: ', JSON.stringify(error.response.data, null, 2));
|
||||||
|
}
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
import { parse } from 'csv-parse/sync';
|
|
||||||
import fs from 'fs';
|
|
||||||
|
|
||||||
/***
|
|
||||||
* Feauture Flag Structure example
|
|
||||||
* Name: 'disableEnvelopeEncryption',
|
|
||||||
Stage: 'GA',
|
|
||||||
Owner: '@grafana/grafana-as-code',
|
|
||||||
Created: '2022-05-24',
|
|
||||||
requiresDevMode: 'false',
|
|
||||||
RequiresLicense: 'false',
|
|
||||||
RequiresRestart: 'false',
|
|
||||||
FrontendOnly: 'false'
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
export default function cleanupFeatureFlags() {
|
|
||||||
const today = new Date();
|
|
||||||
const sixMonthAgo = today.setMonth(today.getMonth() - 6);
|
|
||||||
const inputFileContents = fs.readFileSync(process.env.FEATURE_TOGGLES_CSV_FILE_PATH);
|
|
||||||
const parsedFeatureFlags = parse(inputFileContents, {
|
|
||||||
columns: true,
|
|
||||||
skip_empty_lines: true,
|
|
||||||
cast: true,
|
|
||||||
cast_date: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
// Here we can have the custom logic of how to handle what type of feature flag - e.g. GA can be treated differently than experimental and so on.
|
|
||||||
for (const flag of parsedFeatureFlags) {
|
|
||||||
if (flag.Created < sixMonthAgo) {
|
|
||||||
console.log(`The flag ${flag.Name} was created more than 6 months ago. It should be checked.`);
|
|
||||||
console.log(flag);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
383
.github/workflows/scripts/kinds/verify-kinds.go
vendored
383
.github/workflows/scripts/kinds/verify-kinds.go
vendored
@@ -1,116 +1,53 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"archive/zip"
|
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"golang.org/x/text/cases"
|
||||||
"net/http"
|
"golang.org/x/text/language"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
|
||||||
"strings"
|
"strings"
|
||||||
"testing/fstest"
|
|
||||||
|
|
||||||
"cuelang.org/go/cue"
|
"cuelang.org/go/cue"
|
||||||
cueformat "cuelang.org/go/cue/format"
|
cueformat "cuelang.org/go/cue/format"
|
||||||
"github.com/google/go-github/github"
|
|
||||||
"github.com/grafana/codejen"
|
"github.com/grafana/codejen"
|
||||||
"github.com/grafana/grafana/pkg/codegen"
|
"github.com/grafana/grafana/pkg/registry/schemas"
|
||||||
"github.com/grafana/grafana/pkg/cuectx"
|
|
||||||
"github.com/grafana/grafana/pkg/plugins/pfs"
|
|
||||||
"github.com/grafana/grafana/pkg/plugins/pfs/corelist"
|
|
||||||
"github.com/grafana/grafana/pkg/registry/corekind"
|
|
||||||
"github.com/grafana/kindsys"
|
|
||||||
"github.com/grafana/thema"
|
|
||||||
"golang.org/x/oauth2"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
var nonAlphaNumRegex = regexp.MustCompile("[^a-zA-Z0-9 ]+")
|
||||||
GITHUB_OWNER = "grafana"
|
|
||||||
GITHUB_REPO = "kind-registry"
|
|
||||||
)
|
|
||||||
|
|
||||||
// main This script verifies that stable kinds are not updated once published (new schemas
|
// main This script verifies that stable kinds are not updated once published (new schemas
|
||||||
// can be added but existing ones cannot be updated).
|
// can be added but existing ones cannot be updated).
|
||||||
// If the env variable CODEGEN_VERIFY is not present, this also generates kind files into a
|
// It generates kind files into a local "next" folder, ready to be published in the kind-registry repo.
|
||||||
// local "next" folder, ready to be published in the kind-registry repo.
|
|
||||||
// If kind names are given as parameters, the script will make the above actions only for the
|
// If kind names are given as parameters, the script will make the above actions only for the
|
||||||
// given kinds.
|
// given kinds.
|
||||||
func main() {
|
func main() {
|
||||||
var corek []kindsys.Kind
|
|
||||||
var compok []kindsys.Composable
|
|
||||||
|
|
||||||
kindRegistry, err := NewKindRegistry()
|
|
||||||
defer kindRegistry.cleanUp()
|
|
||||||
if err != nil {
|
|
||||||
die(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Search for the latest version directory present in the kind-registry repo
|
|
||||||
latestRegistryDir, err := kindRegistry.findLatestDir()
|
|
||||||
if err != nil {
|
|
||||||
die(fmt.Errorf("failed to get latest directory for published kinds: %s", err))
|
|
||||||
}
|
|
||||||
|
|
||||||
errs := make([]error, 0)
|
|
||||||
|
|
||||||
// Kind verification
|
|
||||||
for _, kind := range corekind.NewBase(nil).All() {
|
|
||||||
name := kind.Props().Common().MachineName
|
|
||||||
err := verifyKind(kindRegistry, kind, name, "core", latestRegistryDir)
|
|
||||||
if err != nil {
|
|
||||||
errs = append(errs, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
corek = append(corek, kind)
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, pp := range corelist.New(nil) {
|
|
||||||
for _, kind := range pp.ComposableKinds {
|
|
||||||
si, err := kindsys.FindSchemaInterface(kind.Def().Properties.SchemaInterface)
|
|
||||||
if err != nil {
|
|
||||||
errs = append(errs, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
name := strings.ToLower(fmt.Sprintf("%s/%s", strings.TrimSuffix(kind.Lineage().Name(), si.Name()), si.Name()))
|
|
||||||
err = verifyKind(kindRegistry, kind, name, "composable", latestRegistryDir)
|
|
||||||
if err != nil {
|
|
||||||
errs = append(errs, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
compok = append(compok, kind)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
die(errs...)
|
|
||||||
|
|
||||||
if _, set := os.LookupEnv("CODEGEN_VERIFY"); set {
|
|
||||||
os.Exit(0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// File generation
|
// File generation
|
||||||
jfs := codejen.NewFS()
|
jfs := codejen.NewFS()
|
||||||
outputPath := filepath.Join(".github", "workflows", "scripts", "kinds")
|
outputPath := filepath.Join(".github", "workflows", "scripts", "kinds")
|
||||||
|
|
||||||
coreJennies := codejen.JennyList[kindsys.Kind]{}
|
corekinds, err := schemas.GetCoreKinds()
|
||||||
|
die(err)
|
||||||
|
|
||||||
|
composableKinds, err := schemas.GetComposableKinds()
|
||||||
|
die(err)
|
||||||
|
|
||||||
|
coreJennies := codejen.JennyList[schemas.CoreKind]{}
|
||||||
coreJennies.Append(
|
coreJennies.Append(
|
||||||
KindRegistryJenny(outputPath),
|
CoreKindRegistryJenny(outputPath),
|
||||||
)
|
)
|
||||||
corefs, err := coreJennies.GenerateFS(corek...)
|
corefs, err := coreJennies.GenerateFS(corekinds...)
|
||||||
die(err)
|
die(err)
|
||||||
die(jfs.Merge(corefs))
|
die(jfs.Merge(corefs))
|
||||||
|
|
||||||
composableJennies := codejen.JennyList[kindsys.Composable]{}
|
composableJennies := codejen.JennyList[schemas.ComposableKind]{}
|
||||||
composableJennies.Append(
|
composableJennies.Append(
|
||||||
ComposableKindRegistryJenny(outputPath),
|
ComposableKindRegistryJenny(outputPath),
|
||||||
)
|
)
|
||||||
composablefs, err := composableJennies.GenerateFS(compok...)
|
composablefs, err := composableJennies.GenerateFS(composableKinds...)
|
||||||
die(err)
|
die(err)
|
||||||
die(jfs.Merge(composablefs))
|
die(jfs.Merge(composablefs))
|
||||||
|
|
||||||
@@ -180,101 +117,8 @@ func die(errs ...error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// verifyKind verifies that stable kinds are not updated once published (new schemas
|
// CoreKindRegistryJenny generates kind files into the "next" folder of the local kind registry.
|
||||||
// can be added but existing ones cannot be updated)
|
func CoreKindRegistryJenny(path string) codejen.OneToOne[schemas.CoreKind] {
|
||||||
func verifyKind(registry *kindRegistry, kind kindsys.Kind, name string, category string, latestRegistryDir string) error {
|
|
||||||
oldKindString, err := registry.getPublishedKind(name, category, latestRegistryDir)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
var oldKind kindsys.Kind
|
|
||||||
if oldKindString != "" {
|
|
||||||
switch category {
|
|
||||||
case "core":
|
|
||||||
oldKind, err = loadCoreKind(name, oldKindString)
|
|
||||||
case "composable":
|
|
||||||
oldKind, err = loadComposableKind(name, oldKindString)
|
|
||||||
default:
|
|
||||||
return fmt.Errorf("kind can only be core or composable")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Kind is new - no need to compare it
|
|
||||||
if oldKind == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check that maturity isn't downgraded
|
|
||||||
if kind.Maturity().Less(oldKind.Maturity()) {
|
|
||||||
return fmt.Errorf("kind maturity can't be downgraded once a kind is published")
|
|
||||||
}
|
|
||||||
|
|
||||||
if oldKind.Maturity().Less(kindsys.MaturityStable) {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check that old schemas do not contain updates
|
|
||||||
err = thema.IsAppendOnly(oldKind.Lineage(), kind.Lineage())
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("existing schemas in lineage %s cannot be modified: %w", name, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func isLess(v1 []uint64, v2 []uint64) bool {
|
|
||||||
if len(v1) == 1 || len(v2) == 1 {
|
|
||||||
return v1[0] < v2[0]
|
|
||||||
}
|
|
||||||
|
|
||||||
return v1[0] < v2[0] || (v1[0] == v2[0] && isLess(v1[2:], v2[2:]))
|
|
||||||
}
|
|
||||||
|
|
||||||
func loadCoreKind(name string, kind string) (kindsys.Kind, error) {
|
|
||||||
fs := fstest.MapFS{
|
|
||||||
fmt.Sprintf("%s.cue", name): &fstest.MapFile{
|
|
||||||
Data: []byte(kind),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
rt := cuectx.GrafanaThemaRuntime()
|
|
||||||
|
|
||||||
def, err := cuectx.LoadCoreKindDef(fmt.Sprintf("%s.cue", name), rt.Context(), fs)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("%s is not a valid kind: %w", name, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return kindsys.BindCore(rt, def)
|
|
||||||
}
|
|
||||||
|
|
||||||
func loadComposableKind(name string, kind string) (kindsys.Kind, error) {
|
|
||||||
parts := strings.Split(name, "/")
|
|
||||||
if len(parts) > 1 {
|
|
||||||
name = parts[1]
|
|
||||||
}
|
|
||||||
|
|
||||||
fs := fstest.MapFS{
|
|
||||||
fmt.Sprintf("%s.cue", name): &fstest.MapFile{
|
|
||||||
Data: []byte(kind),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
rt := cuectx.GrafanaThemaRuntime()
|
|
||||||
|
|
||||||
def, err := pfs.LoadComposableKindDef(fs, rt, fmt.Sprintf("%s.cue", name))
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("%s is not a valid kind: %w", name, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return kindsys.BindComposable(rt, def)
|
|
||||||
}
|
|
||||||
|
|
||||||
// KindRegistryJenny generates kind files into the "next" folder of the local kind registry.
|
|
||||||
func KindRegistryJenny(path string) codegen.OneToOne {
|
|
||||||
return &kindregjenny{
|
return &kindregjenny{
|
||||||
path: path,
|
path: path,
|
||||||
}
|
}
|
||||||
@@ -288,35 +132,18 @@ func (j *kindregjenny) JennyName() string {
|
|||||||
return "KindRegistryJenny"
|
return "KindRegistryJenny"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (j *kindregjenny) Generate(kind kindsys.Kind) (*codejen.File, error) {
|
func (j *kindregjenny) Generate(kind schemas.CoreKind) (*codejen.File, error) {
|
||||||
name := kind.Props().Common().MachineName
|
newKindBytes, err := kindToBytes(kind.CueFile)
|
||||||
core, ok := kind.(kindsys.Core)
|
|
||||||
if !ok {
|
|
||||||
return nil, fmt.Errorf("kind sent to KindRegistryJenny must be a core kind")
|
|
||||||
}
|
|
||||||
|
|
||||||
newKindBytes, err := kindToBytes(core.Def().V)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
path := filepath.Join(j.path, "next", "core", name, name+".cue")
|
path := filepath.Join(j.path, "next", "core", kind.Name, kind.Name+".cue")
|
||||||
return codejen.NewFile(path, newKindBytes, j), nil
|
return codejen.NewFile(path, newKindBytes, j), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// kindToBytes converts a kind cue value to a .cue file content
|
|
||||||
func kindToBytes(kind cue.Value) ([]byte, error) {
|
|
||||||
node := kind.Syntax(
|
|
||||||
cue.All(),
|
|
||||||
cue.Schema(),
|
|
||||||
cue.Docs(true),
|
|
||||||
)
|
|
||||||
|
|
||||||
return cueformat.Node(node)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ComposableKindRegistryJenny generates kind files into the "next" folder of the local kind registry.
|
// ComposableKindRegistryJenny generates kind files into the "next" folder of the local kind registry.
|
||||||
func ComposableKindRegistryJenny(path string) codejen.OneToOne[kindsys.Composable] {
|
func ComposableKindRegistryJenny(path string) codejen.OneToOne[schemas.ComposableKind] {
|
||||||
return &ckrJenny{
|
return &ckrJenny{
|
||||||
path: path,
|
path: path,
|
||||||
}
|
}
|
||||||
@@ -330,149 +157,73 @@ func (j *ckrJenny) JennyName() string {
|
|||||||
return "ComposableKindRegistryJenny"
|
return "ComposableKindRegistryJenny"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (j *ckrJenny) Generate(k kindsys.Composable) (*codejen.File, error) {
|
func (j *ckrJenny) Generate(k schemas.ComposableKind) (*codejen.File, error) {
|
||||||
si, err := kindsys.FindSchemaInterface(k.Def().Properties.SchemaInterface)
|
name := strings.ToLower(fmt.Sprintf("%s/%s", k.Name, k.Filename))
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
name := strings.ToLower(fmt.Sprintf("%s/%s", strings.TrimSuffix(k.Lineage().Name(), si.Name()), si.Name()))
|
v := fixComposableKindFormat(k)
|
||||||
|
|
||||||
newKindBytes, err := kindToBytes(k.Def().V)
|
newKindBytes, err := kindToBytes(v)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
newKindBytes = []byte(fmt.Sprintf("package grafanaplugin\n\n%s", newKindBytes))
|
newKindBytes = []byte(fmt.Sprintf("package grafanaplugin\n\n%s", newKindBytes))
|
||||||
|
|
||||||
return codejen.NewFile(filepath.Join(j.path, "next", "composable", name+".cue"), newKindBytes, j), nil
|
return codejen.NewFile(filepath.Join(j.path, "next", "composable", name), newKindBytes, j), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type kindRegistry struct {
|
// kindToBytes converts a kind cue value to a .cue file content
|
||||||
zipDir string
|
func kindToBytes(kind cue.Value) ([]byte, error) {
|
||||||
zipFile *zip.ReadCloser
|
node := kind.Syntax(
|
||||||
|
cue.All(),
|
||||||
|
cue.Schema(),
|
||||||
|
cue.Docs(true),
|
||||||
|
)
|
||||||
|
|
||||||
|
return cueformat.Node(node)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewKindRegistry downloads the archive of the kind-registry GH repository and open it
|
func fixComposableKindFormat(schema schemas.ComposableKind) cue.Value {
|
||||||
func NewKindRegistry() (*kindRegistry, error) {
|
variant := "PanelCfg"
|
||||||
ctx := context.Background()
|
if schema.CueFile.LookupPath(cue.ParsePath("composableKinds.DataQuery")).Exists() {
|
||||||
tc := oauth2.NewClient(ctx, nil)
|
variant = "DataQuery"
|
||||||
client := github.NewClient(tc)
|
|
||||||
|
|
||||||
// Create a temporary file to store the downloaded archive
|
|
||||||
file, err := os.CreateTemp("", "*.zip")
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("failed to create temporary file: %w", err)
|
|
||||||
}
|
|
||||||
defer file.Close()
|
|
||||||
|
|
||||||
// Get the repository archive URL
|
|
||||||
archiveURL, _, err := client.Repositories.GetArchiveLink(ctx, GITHUB_OWNER, GITHUB_REPO, github.Zipball, &github.RepositoryContentGetOptions{})
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("failed to get archive URL: %w", err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Download the archive file
|
newCue := schema.CueFile.Context().CompileString(
|
||||||
httpClient := http.DefaultClient
|
fmt.Sprintf("schemaInterface: %q\n", variant) +
|
||||||
resp, err := httpClient.Get(archiveURL.String())
|
fmt.Sprintf("name: %q + %q\n\n", UpperCamelCase(schema.Name), variant) +
|
||||||
if err != nil {
|
"lineage: _",
|
||||||
return nil, fmt.Errorf("failed to download archive: %w", err)
|
)
|
||||||
}
|
|
||||||
defer resp.Body.Close()
|
|
||||||
|
|
||||||
// Save the downloaded archive to the temporary file
|
lineagePath := cue.MakePath(cue.Str("composableKinds"), cue.Str(variant), cue.Str("lineage"))
|
||||||
_, err = io.Copy(file, resp.Body)
|
return newCue.FillPath(cue.MakePath(cue.Str("lineage")), schema.CueFile.LookupPath(lineagePath))
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("failed to save archive: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Open the zip file for reading
|
|
||||||
zipDir := file.Name()
|
|
||||||
zipFile, err := zip.OpenReader(zipDir)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("failed to open zip file %s: %w", zipDir, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return &kindRegistry{
|
|
||||||
zipDir: zipDir,
|
|
||||||
zipFile: zipFile,
|
|
||||||
}, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// cleanUp removes the archive from the temporary files and closes the zip reader
|
func UpperCamelCase(s string) string {
|
||||||
func (registry *kindRegistry) cleanUp() {
|
s = LowerCamelCase(s)
|
||||||
if registry.zipDir != "" {
|
|
||||||
err := os.Remove(registry.zipDir)
|
// Uppercase the first letter
|
||||||
if err != nil {
|
if len(s) > 0 {
|
||||||
fmt.Fprint(os.Stderr, fmt.Errorf("failed to remove zip archive: %w", err))
|
s = strings.ToUpper(s[:1]) + s[1:]
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if registry.zipFile != nil {
|
return s
|
||||||
err := registry.zipFile.Close()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Fprint(os.Stderr, fmt.Errorf("failed to close zip file reader: %w", err))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// findLatestDir get the latest version directory published in the kind registry
|
func LowerCamelCase(s string) string {
|
||||||
func (registry *kindRegistry) findLatestDir() (string, error) {
|
// Replace all non-alphanumeric characters by spaces
|
||||||
re := regexp.MustCompile(`([0-9]+)\.([0-9]+)\.([0-9]+)`)
|
s = nonAlphaNumRegex.ReplaceAllString(s, " ")
|
||||||
latestVersion := []uint64{0, 0, 0}
|
|
||||||
latestDir := ""
|
|
||||||
|
|
||||||
for _, file := range registry.zipFile.File {
|
// Title case s
|
||||||
if !file.FileInfo().IsDir() {
|
s = cases.Title(language.AmericanEnglish, cases.NoLower).String(s)
|
||||||
continue
|
|
||||||
|
// Remove all spaces
|
||||||
|
s = strings.ReplaceAll(s, " ", "")
|
||||||
|
|
||||||
|
// Lowercase the first letter
|
||||||
|
if len(s) > 0 {
|
||||||
|
s = strings.ToLower(s[:1]) + s[1:]
|
||||||
}
|
}
|
||||||
|
|
||||||
parts := re.FindStringSubmatch(file.Name)
|
return s
|
||||||
if parts == nil || len(parts) < 4 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
version := make([]uint64, len(parts)-1)
|
|
||||||
for i := 1; i < len(parts); i++ {
|
|
||||||
version[i-1], _ = strconv.ParseUint(parts[i], 10, 32)
|
|
||||||
}
|
|
||||||
|
|
||||||
if isLess(latestVersion, version) {
|
|
||||||
latestVersion = version
|
|
||||||
latestDir = file.Name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return latestDir, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// getPublishedKind retrieves the latest published kind from the kind registry
|
|
||||||
func (registry *kindRegistry) getPublishedKind(name string, category string, latestRegistryDir string) (string, error) {
|
|
||||||
if latestRegistryDir == "" {
|
|
||||||
return "", nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var cueFilePath string
|
|
||||||
switch category {
|
|
||||||
case "core":
|
|
||||||
cueFilePath = fmt.Sprintf("%s/%s.cue", name, name)
|
|
||||||
case "composable":
|
|
||||||
cueFilePath = fmt.Sprintf("%s.cue", name)
|
|
||||||
default:
|
|
||||||
return "", fmt.Errorf("kind can only be core or composable")
|
|
||||||
}
|
|
||||||
|
|
||||||
kindPath := filepath.Join(latestRegistryDir, category, cueFilePath)
|
|
||||||
file, err := registry.zipFile.Open(kindPath)
|
|
||||||
if err != nil {
|
|
||||||
return "", fmt.Errorf("failed to open file: %w", err)
|
|
||||||
}
|
|
||||||
defer file.Close()
|
|
||||||
|
|
||||||
data, err := io.ReadAll(file)
|
|
||||||
if err != nil {
|
|
||||||
return "", fmt.Errorf("failed to read file: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return string(data), nil
|
|
||||||
}
|
}
|
||||||
|
|||||||
9
.github/workflows/scripts/pr-get-job-link.js
vendored
9
.github/workflows/scripts/pr-get-job-link.js
vendored
@@ -1,9 +0,0 @@
|
|||||||
|
|
||||||
module.exports = async ({ name, github, context, core }) => {
|
|
||||||
const { owner, repo } = context.repo;
|
|
||||||
const url = `https://api.github.com/repos/${owner}/${repo}/actions/runs/${context.runId}/jobs`
|
|
||||||
const result = await github.request(url);
|
|
||||||
const job = result.data.jobs.find(j => j.name === name);
|
|
||||||
|
|
||||||
core.setOutput('link', `${job.html_url}?check_suite_focus=true`);
|
|
||||||
}
|
|
||||||
106
.github/workflows/skye-add-to-project.yml
vendored
Normal file
106
.github/workflows/skye-add-to-project.yml
vendored
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
name: Add issues and PRs to Skye project board
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
manual_issue_number:
|
||||||
|
description: 'Issue/PR number to add to project'
|
||||||
|
required: false
|
||||||
|
type: number
|
||||||
|
issues:
|
||||||
|
types: [opened]
|
||||||
|
pull_request:
|
||||||
|
types: [opened]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
env:
|
||||||
|
ORGANIZATION: grafana
|
||||||
|
REPO: grafana
|
||||||
|
PROJECT_ID: "PVT_kwDOAG3Mbc4AxfcI" # Retrieved manually from GitHub GraphQL Explorer
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: skye-add-to-project-${{ github.event.number }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
main:
|
||||||
|
if: github.repository == 'grafana/grafana'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: "Get vault secrets"
|
||||||
|
id: vault-secrets
|
||||||
|
uses: grafana/shared-workflows/actions/get-vault-secrets@main # zizmor: ignore[unpinned-uses]
|
||||||
|
with:
|
||||||
|
# Vault secret paths:
|
||||||
|
# - ci/repo/grafana/grafana/plugins_platform_issue_commands_github_bot
|
||||||
|
# - ci/repo/grafana/grafana/frontend_platform_skye_usernames (comma separated list of usernames)
|
||||||
|
repo_secrets: |
|
||||||
|
GH_APP_ID=plugins_platform_issue_commands_github_bot:app_id
|
||||||
|
GH_APP_PEM=plugins_platform_issue_commands_github_bot:app_pem
|
||||||
|
ALLOWED_USERS=frontend_platform_skye_usernames:allowed_users
|
||||||
|
|
||||||
|
- name: Generate token
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
||||||
|
with:
|
||||||
|
app_id: ${{ env.GH_APP_ID }}
|
||||||
|
private_key: ${{ env.GH_APP_PEM }}
|
||||||
|
|
||||||
|
# Check if the user is in the list from the secret
|
||||||
|
- name: Check if user is allowed
|
||||||
|
id: check_user
|
||||||
|
env:
|
||||||
|
ALLOWED_USERS: ${{ env.ALLOWED_USERS }}
|
||||||
|
USERNAME: ${{ github.event.sender.login }}
|
||||||
|
run: |
|
||||||
|
# Convert the comma-separated list to an array
|
||||||
|
IFS=',' read -ra ALLOWED_USERS <<< "$ALLOWED_USERS"
|
||||||
|
|
||||||
|
# Check if user is in the allowed list
|
||||||
|
for allowed_user in "${ALLOWED_USERS[@]}"; do
|
||||||
|
if [ "$allowed_user" = "$USERNAME" ]; then
|
||||||
|
echo "user_allowed=true" >> $GITHUB_OUTPUT
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "user_allowed=false" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
# Convert the issue/PR number to a node ID for the GraphQL API
|
||||||
|
- name: Get node ID for item
|
||||||
|
if: steps.check_user.outputs.user_allowed == 'true'
|
||||||
|
id: get_node_id
|
||||||
|
uses: octokit/graphql-action@51bf543c240dcd14761320e2efc625dc32ec0d32
|
||||||
|
with:
|
||||||
|
query: |
|
||||||
|
query getNodeId($owner: String!, $repo: String!, $number: Int!) {
|
||||||
|
repository(owner: $owner, name: $repo) {
|
||||||
|
issueOrPullRequest(number: $number) {
|
||||||
|
... on Issue { id }
|
||||||
|
... on PullRequest { id }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
variables: |
|
||||||
|
owner: ${{ env.ORGANIZATION }}
|
||||||
|
repo: ${{ env.REPO }}
|
||||||
|
number: ${{ github.event.number || github.event.inputs.manual_issue_number }}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||||
|
|
||||||
|
# Finally, add the issue/PR to the project board
|
||||||
|
- name: Add to project board
|
||||||
|
if: steps.check_user.outputs.user_allowed == 'true'
|
||||||
|
uses: octokit/graphql-action@51bf543c240dcd14761320e2efc625dc32ec0d32
|
||||||
|
with:
|
||||||
|
query: |
|
||||||
|
mutation addItem($projectid: ID!, $itemid: ID!) {
|
||||||
|
addProjectV2ItemById(input: {projectId: $projectid, contentId: $itemid}) {
|
||||||
|
item { id }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
variables: |
|
||||||
|
projectid: ${{ env.PROJECT_ID }}
|
||||||
|
itemid: ${{ fromJSON(steps.get_node_id.outputs.data).repository.issueOrPullRequest.id }}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||||
14
.github/workflows/snyk.yml
vendored
14
.github/workflows/snyk.yml
vendored
@@ -1,14 +0,0 @@
|
|||||||
name: Snyk Monitor Scanning
|
|
||||||
on:
|
|
||||||
release:
|
|
||||||
types: [published]
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'main'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
snyk-scan-ci:
|
|
||||||
uses: 'grafana/security-github-actions/.github/workflows/snyk_monitor.yml@main'
|
|
||||||
secrets:
|
|
||||||
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
|
|
||||||
48
.github/workflows/storybook-verification.yml
vendored
Normal file
48
.github/workflows/storybook-verification.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
name: Verify Storybook
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'packages/grafana-ui/**'
|
||||||
|
- '!docs/**'
|
||||||
|
- '!*.md'
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- 'packages/grafana-ui/**'
|
||||||
|
- '!docs/**'
|
||||||
|
- '!*.md'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
verify-storybook:
|
||||||
|
name: Verify Storybook
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
cache: 'yarn'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install --immutable
|
||||||
|
|
||||||
|
- name: Run Storybook and E2E tests
|
||||||
|
uses: cypress-io/github-action@108b8684ae52e735ff7891524cbffbcd4be5b19f
|
||||||
|
with:
|
||||||
|
browser: chrome
|
||||||
|
start: yarn storybook --quiet
|
||||||
|
wait-on: 'http://localhost:9001'
|
||||||
|
wait-on-timeout: 60
|
||||||
|
command: yarn e2e:storybook
|
||||||
|
install: false
|
||||||
|
env:
|
||||||
|
HOST: localhost
|
||||||
|
PORT: 9001
|
||||||
63
.github/workflows/sync-mirror-event.yml
vendored
Normal file
63
.github/workflows/sync-mirror-event.yml
vendored
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# Owned by grafana-delivery-squad
|
||||||
|
# Intended to be dropped into the base repo, Ex: grafana/grafana
|
||||||
|
name: Dispatch sync to mirror
|
||||||
|
run-name: dispatch-sync-to-mirror-${{ github.ref_name }}
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "main"
|
||||||
|
- "v*.*.*"
|
||||||
|
- "release-*"
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
|
# This is run after the pull request has been merged, so we'll run against the target branch
|
||||||
|
jobs:
|
||||||
|
dispatch-job:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
id-token: write
|
||||||
|
contents: read
|
||||||
|
actions: write
|
||||||
|
env:
|
||||||
|
REF_NAME: ${{ github.ref_name }}
|
||||||
|
REPO: ${{ github.repository }}
|
||||||
|
SHA: ${{ github.sha }}
|
||||||
|
steps:
|
||||||
|
- name: "Get vault secrets"
|
||||||
|
id: vault-secrets
|
||||||
|
uses: grafana/shared-workflows/actions/get-vault-secrets@main
|
||||||
|
with:
|
||||||
|
# Secrets placed in the ci/data/repo/grafana/grafana/delivery-bot-app path in Vault
|
||||||
|
repo_secrets: |
|
||||||
|
GRAFANA_DELIVERY_BOT_APP_PEM=delivery-bot-app:PRIVATE_KEY
|
||||||
|
|
||||||
|
- name: "Generate token"
|
||||||
|
id: generate_token
|
||||||
|
uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a
|
||||||
|
with:
|
||||||
|
# App needs Actions: Read/Write for the grafana/security-patch-actions repo
|
||||||
|
app_id: ${{ vars.DELIVERY_BOT_APP_ID }}
|
||||||
|
private_key: ${{ env.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
||||||
|
|
||||||
|
- uses: actions/github-script@v7
|
||||||
|
if: github.repository == 'grafana/grafana'
|
||||||
|
with:
|
||||||
|
github-token: ${{ steps.generate_token.outputs.token }}
|
||||||
|
script: |
|
||||||
|
const {REF_NAME, REPO, SHA} = process.env;
|
||||||
|
|
||||||
|
await github.rest.actions.createWorkflowDispatch({
|
||||||
|
owner: 'grafana',
|
||||||
|
repo: 'security-patch-actions',
|
||||||
|
workflow_id: 'mirror-branch-and-apply-patches-event.yml',
|
||||||
|
ref: 'main',
|
||||||
|
inputs: {
|
||||||
|
src_ref: REF_NAME,
|
||||||
|
src_repo: REPO,
|
||||||
|
src_sha: SHA,
|
||||||
|
dest_repo: REPO + "-security-mirror",
|
||||||
|
patch_repo: REPO + "-security-patches"
|
||||||
|
}
|
||||||
|
})
|
||||||
25
.github/workflows/sync-mirror.yml
vendored
25
.github/workflows/sync-mirror.yml
vendored
@@ -1,25 +0,0 @@
|
|||||||
# Owned by grafana-release-guild
|
|
||||||
# Intended to be dropped into the base repo, Ex: grafana/grafana
|
|
||||||
name: Sync to mirror
|
|
||||||
run-name: sync-to-mirror-${{ github.ref_name }}
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- "main"
|
|
||||||
- "v*.*.*"
|
|
||||||
- "release-*"
|
|
||||||
|
|
||||||
# This is run after the pull request has been merged, so we'll run against the target branch
|
|
||||||
jobs:
|
|
||||||
trigger_downstream_patch_mirror:
|
|
||||||
concurrency: patch-mirror-${{ github.ref_name }}
|
|
||||||
uses: grafana/security-patch-actions/.github/workflows/mirror-branch-and-apply-patches.yml@main
|
|
||||||
if: github.repository == 'grafana/grafana'
|
|
||||||
with:
|
|
||||||
ref: "${{ github.ref_name }}" # this is the target branch name, Ex: "main"
|
|
||||||
src_repo: "${{ github.repository }}"
|
|
||||||
dest_repo: "${{ github.repository }}-security-mirror"
|
|
||||||
patch_repo: "${{ github.repository }}-security-patches"
|
|
||||||
secrets: inherit
|
|
||||||
|
|
||||||
28
.github/workflows/trigger-dashboard-search-e2e.yml
vendored
Normal file
28
.github/workflows/trigger-dashboard-search-e2e.yml
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
name: trigger-dashboard-search-e2e
|
||||||
|
# triggers the dashboard search e2e tests which runs async
|
||||||
|
# doesn't block prs, allows setting up notifications from grafana
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- public/app/features/search/**/*.ts
|
||||||
|
- public/app/features/search/**/*.tsx
|
||||||
|
- pkg/storage/**/*.go
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- public/app/features/search/**/*.ts
|
||||||
|
- public/app/features/search/**/*.tsx
|
||||||
|
- pkg/storage/**/*.go
|
||||||
|
env:
|
||||||
|
ARCH: linux-amd64
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
trigger-search-e2e:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event.pull_request.draft == false
|
||||||
|
steps:
|
||||||
|
- name: Trigger Dashboard Search E2E
|
||||||
|
run: echo "Triggered Dashboard Search e2e..."
|
||||||
70
.github/workflows/trivy-scan.yml
vendored
Normal file
70
.github/workflows/trivy-scan.yml
vendored
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
name: Trivy Scan
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
# only run on PRs where go.mod/go.sum/etc have been updated
|
||||||
|
paths:
|
||||||
|
- go.*
|
||||||
|
- .github/workflows/trivy-scan.yml
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- go.*
|
||||||
|
- .github/workflows/trivy-scan.yml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
trivy-scan:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Install Trivy
|
||||||
|
uses: aquasecurity/setup-trivy@9ea583eb67910444b1f64abf338bd2e105a0a93d
|
||||||
|
with:
|
||||||
|
version: v0.56.2
|
||||||
|
cache: true
|
||||||
|
- name: Download Trivy DB
|
||||||
|
run: |
|
||||||
|
trivy fs --no-progress --download-db-only --db-repository public.ecr.aws/aquasecurity/trivy-db
|
||||||
|
- name: Run Trivy vulnerability scanner (table output)
|
||||||
|
# Use the trivy binary rather than the aquasecurity/trivy-action action
|
||||||
|
# to avoid a few bugs.
|
||||||
|
#
|
||||||
|
# We scan the file system rather than building the Docker image to only scan
|
||||||
|
# our direct dependencies. The Docker images are still scanned by
|
||||||
|
# Vulnerability Observability:
|
||||||
|
# - OSS: https://ops.grafana-ops.net/a/grafana-vulnerabilityobs-app/projects/sources/1
|
||||||
|
# - Enterprise: https://ops.grafana-ops.net/a/grafana-vulnerabilityobs-app/projects/sources/12
|
||||||
|
# (If these links are outdated, just go to the list and find the images manually.)
|
||||||
|
run: |
|
||||||
|
trivy fs \
|
||||||
|
--scanners vuln \
|
||||||
|
--format table \
|
||||||
|
--exit-code 1 \
|
||||||
|
--ignore-unfixed \
|
||||||
|
--pkg-types os,library \
|
||||||
|
--severity CRITICAL,HIGH \
|
||||||
|
--ignorefile .trivyignore \
|
||||||
|
--skip-files yarn.lock,package.json \
|
||||||
|
--skip-db-update \
|
||||||
|
.
|
||||||
|
- name: Run Trivy vulnerability scanner (SARIF)
|
||||||
|
# Use the trivy binary rather than the aquasecurity/trivy-action action
|
||||||
|
# to avoid a few bugs
|
||||||
|
run: |
|
||||||
|
trivy fs \
|
||||||
|
--scanners vuln \
|
||||||
|
--format sarif \
|
||||||
|
--output trivy-results.sarif \
|
||||||
|
--ignore-unfixed \
|
||||||
|
--pkg-types os,library \
|
||||||
|
--ignorefile .trivyignore \
|
||||||
|
--skip-db-update \
|
||||||
|
.
|
||||||
|
if: always() && github.repository == 'grafana/grafana'
|
||||||
|
- name: Upload Trivy scan results to GitHub Security tab
|
||||||
|
uses: github/codeql-action/upload-sarif@v3
|
||||||
|
with:
|
||||||
|
sarif_file: 'trivy-results.sarif'
|
||||||
|
if: always() && github.repository == 'grafana/grafana'
|
||||||
52
.github/workflows/update-changelog.yml
vendored
52
.github/workflows/update-changelog.yml
vendored
@@ -1,52 +0,0 @@
|
|||||||
name: Update changelog
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
version:
|
|
||||||
required: true
|
|
||||||
description: 'Needs to match, exactly, the name of a milestone. The version to be released please respect: major.minor.patch, major.minor.patch-preview or major.minor.patch-preview<number> format. example: 7.4.3, 7.4.3-preview or 7.4.3-preview1'
|
|
||||||
skip_pr:
|
|
||||||
required: false
|
|
||||||
default: "0"
|
|
||||||
skip_community_post:
|
|
||||||
required: false
|
|
||||||
default: "0"
|
|
||||||
jobs:
|
|
||||||
config:
|
|
||||||
runs-on: "ubuntu-latest"
|
|
||||||
outputs:
|
|
||||||
has-secrets: ${{ steps.check.outputs.has-secrets }}
|
|
||||||
steps:
|
|
||||||
- name: "Check for secrets"
|
|
||||||
id: check
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ -n "${{ (secrets.GRAFANA_DELIVERY_BOT_APP_ID != '' &&
|
|
||||||
secrets.GRAFANA_DELIVERY_BOT_APP_PEM != '' &&
|
|
||||||
secrets.GRAFANA_MISC_STATS_API_KEY != '' &&
|
|
||||||
secrets.GRAFANABOT_FORUM_KEY != ''
|
|
||||||
) || '' }}" ]; then
|
|
||||||
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
|
|
||||||
fi
|
|
||||||
|
|
||||||
main:
|
|
||||||
needs: config
|
|
||||||
if: needs.config.outputs.has-secrets
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: "Generate token"
|
|
||||||
id: generate_token
|
|
||||||
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
|
|
||||||
with:
|
|
||||||
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
|
|
||||||
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
|
|
||||||
- name: Run update changelog (manually invoked)
|
|
||||||
uses: grafana/grafana-github-actions-go/update-changelog@main
|
|
||||||
with:
|
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
|
||||||
version: ${{ inputs.version }}
|
|
||||||
metrics_api_key: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
|
|
||||||
community_api_key: ${{ secrets.GRAFANABOT_FORUM_KEY }}
|
|
||||||
community_api_username: grafanabot
|
|
||||||
skip_pr: ${{ inputs.skip_pr }}
|
|
||||||
skip_community_post: ${{ inputs.skip_community_post }}
|
|
||||||
4
.github/workflows/update-make-docs.yml
vendored
4
.github/workflows/update-make-docs.yml
vendored
@@ -9,7 +9,9 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: grafana/writers-toolkit/update-make-docs@update-make-docs/v1
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- uses: grafana/writers-toolkit/update-make-docs@update-make-docs/v1 # zizmor: ignore[unpinned-uses]
|
||||||
with:
|
with:
|
||||||
pr_options: >
|
pr_options: >
|
||||||
--label 'backport v10.1.x'
|
--label 'backport v10.1.x'
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user