proj-flow 0.9.2__py3-none-any.whl → 0.9.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- proj_flow/__init__.py +1 -1
- proj_flow/api/env.py +7 -2
- proj_flow/api/makefile.py +1 -1
- proj_flow/base/plugins.py +1 -36
- proj_flow/base/registry.py +2 -1
- proj_flow/cli/__init__.py +1 -3
- proj_flow/cli/argument.py +1 -1
- proj_flow/ext/cplusplus/__init__.py +10 -0
- proj_flow/ext/cplusplus/cmake/__init__.py +12 -0
- proj_flow/{plugins → ext/cplusplus}/cmake/context.py +2 -2
- proj_flow/{plugins → ext/cplusplus}/cmake/parser.py +6 -28
- proj_flow/ext/cplusplus/cmake/steps.py +142 -0
- proj_flow/ext/cplusplus/cmake/version.py +35 -0
- proj_flow/{plugins → ext/cplusplus}/conan/__init__.py +2 -1
- proj_flow/{plugins → ext/cplusplus}/conan/_conan.py +7 -2
- proj_flow/ext/github/__init__.py +2 -2
- proj_flow/ext/github/cli.py +11 -2
- proj_flow/{plugins/github.py → ext/github/switches.py} +1 -1
- proj_flow/ext/{markdown_changelist.py → markdown_changelog.py} +2 -1
- proj_flow/ext/python/rtdocs.py +1 -1
- proj_flow/ext/python/version.py +1 -2
- proj_flow/ext/{re_structured_changelist.py → re_structured_changelog.py} +3 -1
- proj_flow/{plugins → ext}/sign/__init__.py +64 -44
- proj_flow/ext/sign/api.py +83 -0
- proj_flow/ext/sign/win32.py +152 -0
- proj_flow/{plugins/store/store_packages.py → ext/store.py} +51 -9
- proj_flow/log/release.py +12 -0
- proj_flow/log/rich_text/markdown.py +1 -1
- proj_flow/log/rich_text/re_structured_text.py +1 -1
- proj_flow/minimal/__init__.py +2 -2
- proj_flow/{plugins → minimal}/base.py +2 -2
- proj_flow/{plugins/commands → minimal}/init.py +1 -1
- {proj_flow-0.9.2.dist-info → proj_flow-0.9.4.dist-info}/METADATA +2 -1
- {proj_flow-0.9.2.dist-info → proj_flow-0.9.4.dist-info}/RECORD +38 -47
- proj_flow/plugins/__init__.py +0 -8
- proj_flow/plugins/cmake/__init__.py +0 -11
- proj_flow/plugins/cmake/build.py +0 -29
- proj_flow/plugins/cmake/config.py +0 -59
- proj_flow/plugins/cmake/pack.py +0 -37
- proj_flow/plugins/cmake/test.py +0 -29
- proj_flow/plugins/commands/__init__.py +0 -12
- proj_flow/plugins/commands/ci/__init__.py +0 -17
- proj_flow/plugins/commands/ci/changelog.py +0 -47
- proj_flow/plugins/commands/ci/matrix.py +0 -46
- proj_flow/plugins/commands/ci/release.py +0 -116
- proj_flow/plugins/sign/win32.py +0 -191
- proj_flow/plugins/store/__init__.py +0 -11
- proj_flow/plugins/store/store_both.py +0 -22
- proj_flow/plugins/store/store_tests.py +0 -21
- /proj_flow/{plugins → ext/cplusplus}/cmake/__version__.py +0 -0
- {proj_flow-0.9.2.dist-info → proj_flow-0.9.4.dist-info}/WHEEL +0 -0
- {proj_flow-0.9.2.dist-info → proj_flow-0.9.4.dist-info}/entry_points.txt +0 -0
- {proj_flow-0.9.2.dist-info → proj_flow-0.9.4.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,34 +1,48 @@
|
|
|
1
|
-
proj_flow/__init__.py,sha256=
|
|
1
|
+
proj_flow/__init__.py,sha256=mb_RaqBK8YLjzInbWdxN7mBDJZ3gqbzxfnHEXvzXbTw,124
|
|
2
2
|
proj_flow/__main__.py,sha256=HUar_qQ9Ndmchmryegtzu__5wukwCLrFN_SGRl5Ol_M,233
|
|
3
3
|
proj_flow/api/__init__.py,sha256=gV2f6kll_5JXtvkGASvnx7CbOWr34PHOdck-4ce-qEk,378
|
|
4
4
|
proj_flow/api/arg.py,sha256=J7_53noW7t8VJ9sfJiX4qaPs7KqWfMHNcrWYe1jIq-g,4097
|
|
5
5
|
proj_flow/api/completers.py,sha256=NapNVu6QAQ_iF6dqcAzOV5kDHKD9MAMVX209Bklq-Mw,2464
|
|
6
6
|
proj_flow/api/ctx.py,sha256=AXZSnfLO9w7Uiqa8VtrTzLnNegVZru2sn1-WON3RIyg,5847
|
|
7
|
-
proj_flow/api/env.py,sha256=
|
|
7
|
+
proj_flow/api/env.py,sha256=4VvSkfA2k6OPrtvkPtEPhb24dDyaqbUoqSznIgvAXNg,11082
|
|
8
8
|
proj_flow/api/init.py,sha256=an0czDiPCDqW4Bp0I8sGQgaAlDAozLO0ZYnP149lWqk,521
|
|
9
|
-
proj_flow/api/makefile.py,sha256=
|
|
9
|
+
proj_flow/api/makefile.py,sha256=AxtGOvmypBtSvoyMEDJq1bGoaVD5yW9YYRZSdunUEeg,3856
|
|
10
10
|
proj_flow/api/release.py,sha256=A-t4qcjeaptEgfBCZs2Q9cOjsGACrNM0CzmCorms0U4,2401
|
|
11
11
|
proj_flow/api/step.py,sha256=PAqLBkQkUVQETrBvHjI6_-PAkh4Q7KLPMBUOWqW_jbk,4580
|
|
12
12
|
proj_flow/base/__init__.py,sha256=RRmqiYjdVlC4i8QijXHNiRh9yzNH8305WXezrSaPjKk,311
|
|
13
13
|
proj_flow/base/cmd.py,sha256=Vo3e8kd4CHRzbsUkO-MnbhQxjLXTczv7YQRUkFlcBQE,1560
|
|
14
14
|
proj_flow/base/inspect.py,sha256=lt5P19rvSZ-wMCTrCYAaQFCt2S9fUjEQXlrKK-Tmvwc,2786
|
|
15
15
|
proj_flow/base/matrix.py,sha256=8XBFGYOwW6Myt_4h3WNk36V2bJ5xeqUv6DvzF4B3q_g,7767
|
|
16
|
-
proj_flow/base/plugins.py,sha256=
|
|
17
|
-
proj_flow/base/registry.py,sha256=
|
|
16
|
+
proj_flow/base/plugins.py,sha256=evn2Dym_NeoBaIZAu2YUtRd--15PCFpHD0h5zSsWkQE,978
|
|
17
|
+
proj_flow/base/registry.py,sha256=oRLGY1QLY306KLEXJU-p5kmTKQPM7xgRpaajdCFg0OQ,3022
|
|
18
18
|
proj_flow/base/uname.py,sha256=7Awb3Es0jTAKMpyRawdrC16xc5X9M97BlPqEfQibqIk,2295
|
|
19
|
-
proj_flow/cli/__init__.py,sha256=
|
|
20
|
-
proj_flow/cli/argument.py,sha256
|
|
19
|
+
proj_flow/cli/__init__.py,sha256=__5sdeicDv3HBEREPwY2FAbLNcI5x8bUDJqmkhH6HJ0,1198
|
|
20
|
+
proj_flow/cli/argument.py,sha256=KnBRmnHfBQHF_rDxtE8HEa01QMIagBxxImq-jGClynE,13690
|
|
21
21
|
proj_flow/cli/finder.py,sha256=5x7H1nH0k63DetDauhB_wABel_f0RQpsZ5YnhPfbkRc,1402
|
|
22
22
|
proj_flow/ext/__init__.py,sha256=XD52rUFTPz3GnyRq6KZUNeWdMce7e0bB19iTx-zU6DE,169
|
|
23
|
-
proj_flow/ext/
|
|
24
|
-
proj_flow/ext/
|
|
25
|
-
proj_flow/ext/
|
|
26
|
-
proj_flow/ext/
|
|
23
|
+
proj_flow/ext/markdown_changelog.py,sha256=fRGL09jojnv2B-8vAX2prvgNp8e7uyq5NxboSZjFCJ8,436
|
|
24
|
+
proj_flow/ext/re_structured_changelog.py,sha256=UF23W9eu_YgPO42MiaoDbEKu8In_48mQg6rH9--mI30,459
|
|
25
|
+
proj_flow/ext/store.py,sha256=yfyIb2G7UhoIkPmVDnp1RPx2fwFZK8FyLZzrMvPlEUM,3681
|
|
26
|
+
proj_flow/ext/cplusplus/__init__.py,sha256=dAmLMyGVQq586jJM_jiAuo5Ecw9U8agpvSRbzzPgh3g,245
|
|
27
|
+
proj_flow/ext/cplusplus/cmake/__init__.py,sha256=f-_gTY_XpIfcKrAj0jhT57DBGeifkW2s7NlSxjpHTMg,366
|
|
28
|
+
proj_flow/ext/cplusplus/cmake/__version__.py,sha256=tmRnT4aUpx4_h-vyWsGyVEeahW49VlLqlsd-o7irmKY,126
|
|
29
|
+
proj_flow/ext/cplusplus/cmake/context.py,sha256=5RPpc0tquh7xDO1_ifgnIdxCbabuZeW-Yw7QjpeazUo,3085
|
|
30
|
+
proj_flow/ext/cplusplus/cmake/parser.py,sha256=ZqQRZqS_VU5VtC8uwax-dknh7sfuLEvtazG8ChSqHDQ,3814
|
|
31
|
+
proj_flow/ext/cplusplus/cmake/steps.py,sha256=Q7HcVlMbKOwrRj-Sms0W7FS027M_shM7s2FJx6rX4KQ,4100
|
|
32
|
+
proj_flow/ext/cplusplus/cmake/version.py,sha256=E0PAUdO9Wg02pxtU4LWYTNoTB-9Oer3Y9zr1lR2zvgw,962
|
|
33
|
+
proj_flow/ext/cplusplus/conan/__init__.py,sha256=Ohcx5DpvI9X3uEhkzcb85otqZPRGqeWw8Mc5HeVvjgs,1967
|
|
34
|
+
proj_flow/ext/cplusplus/conan/_conan.py,sha256=c3rVi4WdmhsO8eqxG2xG4vzgagnOx1HDUOPl3bWxkD0,3357
|
|
35
|
+
proj_flow/ext/github/__init__.py,sha256=Mgx19YS6SYBXYB66_pOgIgwuB2WKRxqp5UGutq0B9Xk,282
|
|
36
|
+
proj_flow/ext/github/cli.py,sha256=tOo65gZR1JRuitQdbs4i9lG0pxlWRXy2bmsaIbfOyUo,4091
|
|
27
37
|
proj_flow/ext/github/hosting.py,sha256=3iW8QjeJk7MyqKNbv92nB-5a_Yn_B5_eEIlw_cdgUT0,519
|
|
38
|
+
proj_flow/ext/github/switches.py,sha256=Sv5NxTOzwatrhCanKM3siKI-NcH9Cwloe-ohWLnIuWg,407
|
|
28
39
|
proj_flow/ext/python/__init__.py,sha256=GbEKEJJZ3PJ4sRHEykAWjGIR6yyyrYdlUFulldvsAGI,252
|
|
29
|
-
proj_flow/ext/python/rtdocs.py,sha256=
|
|
40
|
+
proj_flow/ext/python/rtdocs.py,sha256=idm6DTUnbA18L-EpxQiFVXCz9x8AIRSb52ZPqIXzrf8,6354
|
|
30
41
|
proj_flow/ext/python/steps.py,sha256=pDHGAe_CDzzdRFAzM1AIBvkbc14KB3SNUunusKZAaaY,1815
|
|
31
|
-
proj_flow/ext/python/version.py,sha256=
|
|
42
|
+
proj_flow/ext/python/version.py,sha256=pnyuKATyZwBh1p0gf9KmqbRSZx8hJ5285CiFK_tHEaY,3159
|
|
43
|
+
proj_flow/ext/sign/__init__.py,sha256=yvXpqLdvBwkB0GDBl4yWw--iZ2tFxhx-97EP9OAzx2g,4345
|
|
44
|
+
proj_flow/ext/sign/api.py,sha256=dlnXYYoBDYXx_WWGBQ8ThKmEMYmw2kt6NNZA8j-MXuM,2288
|
|
45
|
+
proj_flow/ext/sign/win32.py,sha256=fV8_Z42KaeDBEf3_5qCzlALb0dy1zN0Pqy8Hr-ZMAQ4,4874
|
|
32
46
|
proj_flow/flow/__init__.py,sha256=Y1MfQsrbk_dIT6pn7c9YIlqsEUZj4Q9n_oIGtbnhIP4,339
|
|
33
47
|
proj_flow/flow/configs.py,sha256=l-pIotrXFm4oMqqpuvKP-RdtlTmDDnK_izhTJfsWbhk,5260
|
|
34
48
|
proj_flow/flow/dependency.py,sha256=5o_-5Soc2e1tOu5mwvkXa6jqDFplZi_chN8edkR6vVY,4644
|
|
@@ -42,43 +56,20 @@ proj_flow/log/error.py,sha256=65Nvhfs_d1xSY4EB-ISdWgjotvg-on3iKjhAWHpsBYM,841
|
|
|
42
56
|
proj_flow/log/fmt.py,sha256=o14aO3iEt5_KKp9SqcfkscqbMKuTI83NBoSXHcrb7Kg,330
|
|
43
57
|
proj_flow/log/format.py,sha256=gp1kUoW0nYj5e7Ysu1c29Fh2ssfE1KBSDIYeUbhzN9g,333
|
|
44
58
|
proj_flow/log/msg.py,sha256=zARmRZHFV3yG-fBnx00wal4Y0O5aGnL-6XcGwNBNKA4,6758
|
|
45
|
-
proj_flow/log/release.py,sha256
|
|
59
|
+
proj_flow/log/release.py,sha256=-wZNv0VVLuTC_ynNaaDPQ1CcEw-5c-l6vzFOxvLVQnM,4160
|
|
46
60
|
proj_flow/log/hosting/__init__.py,sha256=9Teyw8jJcxeWH2MegqYEgW0n5OmSAWC7FFJj2u_UcrM,278
|
|
47
61
|
proj_flow/log/hosting/github.py,sha256=yLjJ9gSuOnnC87phPFNc4N2yWno0iIi7BruhSrYOjEI,7151
|
|
48
62
|
proj_flow/log/rich_text/__init__.py,sha256=D3Y2jy9xlGgnQZdNC_ekoLzQtwkF_NTgLqDTWPvSRUk,279
|
|
49
63
|
proj_flow/log/rich_text/api.py,sha256=PCSAGwkmDUMoVlpN7BDsgIA1AiMZEC0H6TUZXpr_Mg8,3571
|
|
50
|
-
proj_flow/log/rich_text/markdown.py,sha256=
|
|
51
|
-
proj_flow/log/rich_text/re_structured_text.py,sha256=
|
|
52
|
-
proj_flow/minimal/__init__.py,sha256=
|
|
64
|
+
proj_flow/log/rich_text/markdown.py,sha256=jBnNxxhBHzyIZ3Y4HXDfqpl7zlRbbKbKdwdnZwkmNAI,1623
|
|
65
|
+
proj_flow/log/rich_text/re_structured_text.py,sha256=DEl9KjBUF6cxfNWpQ7GVnHi7wKeuFnPGJwxQxjbCsnM,1823
|
|
66
|
+
proj_flow/minimal/__init__.py,sha256=NglaSdKiMebrOqfsqF9ctqi0ZwiiBHOQcUnp3DS8lP0,340
|
|
67
|
+
proj_flow/minimal/base.py,sha256=-J9aEU1R7tJY7hgcODB2o37CYi7v3iWUztuZ2IZF5cQ,740
|
|
53
68
|
proj_flow/minimal/bootstrap.py,sha256=PcZfBsUmj8uDPGBC55iUgD5O7W4VSkpCQb6r9GEyAaQ,556
|
|
69
|
+
proj_flow/minimal/init.py,sha256=3AhICGKG8ZScMG1aVlNOXXM1pGOXayqW9AOmgsYbNAs,2081
|
|
54
70
|
proj_flow/minimal/list.py,sha256=RlOqammE8olNKXsnbv1enF5uriu0MZ2wFbht37Z2ETw,4810
|
|
55
71
|
proj_flow/minimal/run.py,sha256=fkirdYeWb36SFXqIq5NQEflIv0HdjNhaTpmsutzWwXA,4691
|
|
56
72
|
proj_flow/minimal/system.py,sha256=9FliH5TD103JYSAe2O5EU7hkOHDgVzTqu0Exxk-WrXE,1579
|
|
57
|
-
proj_flow/plugins/__init__.py,sha256=nJQiXQU2zOiM_mafqoBsCu3ivpuA_o2vAOPk4HdfBvY,308
|
|
58
|
-
proj_flow/plugins/base.py,sha256=yDAn7417DazBXMzZpZs8wv1DNY_9EjqtkWRq2IOF_Oo,736
|
|
59
|
-
proj_flow/plugins/github.py,sha256=hcC-le-suTxlX929wzwvghtNFSqiVn5VCcVoLDeMHj4,402
|
|
60
|
-
proj_flow/plugins/cmake/__init__.py,sha256=Mk4Rm6Pqv7Jkd27cSfoP90bhVv4fxMcg3Rr0fNNJ63c,386
|
|
61
|
-
proj_flow/plugins/cmake/__version__.py,sha256=tmRnT4aUpx4_h-vyWsGyVEeahW49VlLqlsd-o7irmKY,126
|
|
62
|
-
proj_flow/plugins/cmake/build.py,sha256=3IxHUm2tiTXqrPLwJfgxB5kHwEfQnVXBEf4qij5twCc,796
|
|
63
|
-
proj_flow/plugins/cmake/config.py,sha256=pBI9O-1bUFBSs-cM1maBwCYZJS-q0u0mjuhhjjCcx6w,1722
|
|
64
|
-
proj_flow/plugins/cmake/context.py,sha256=jpySxdeVo-EMeN_Vx8m8n2Z9ZZu3knLqPfR77xlO-aM,3079
|
|
65
|
-
proj_flow/plugins/cmake/pack.py,sha256=2rBaPePbqJn55pFBAkPQSjQJeK14HWfu6ogu9ZtVP_c,1030
|
|
66
|
-
proj_flow/plugins/cmake/parser.py,sha256=MA1PB1lWybDC0YGYhaXEuHawGRPRRsjpJJ4qFqkDf8U,4223
|
|
67
|
-
proj_flow/plugins/cmake/test.py,sha256=POUa5QBb9mTTCYhS7wLjkqtVRiFGoJxD8O556bDYHXs,790
|
|
68
|
-
proj_flow/plugins/commands/__init__.py,sha256=-5jT0bfrrGds3TbAOIRZOFJjH2Q8IUKDzm02Ac7PO_4,298
|
|
69
|
-
proj_flow/plugins/commands/init.py,sha256=MrdxMv9G-0oYZgLk5OOKjd36Z-b55mdJaTV9ix3va9o,2090
|
|
70
|
-
proj_flow/plugins/commands/ci/__init__.py,sha256=4PkKCd2HoCHypAzO7GZatCkrV0fteLWdoICviQXoyAg,369
|
|
71
|
-
proj_flow/plugins/commands/ci/changelog.py,sha256=Q2f-JGuFxmK0IJg7K8RN3z_Rv_29haexgoFQWUysUM0,1296
|
|
72
|
-
proj_flow/plugins/commands/ci/matrix.py,sha256=tjEpyCTdNvIY4xvyGNy5KffCkmOXnVUUXVTds9WeDeA,1362
|
|
73
|
-
proj_flow/plugins/commands/ci/release.py,sha256=F2KRMnc5TWu2-R7K003HWnRBDo9Pl9hfRvROpmtcMMw,3689
|
|
74
|
-
proj_flow/plugins/conan/__init__.py,sha256=YJ9DWfKjKYqgp6zb3gCUnvGC5QKFFs55dSawooGxT0Y,1933
|
|
75
|
-
proj_flow/plugins/conan/_conan.py,sha256=rI_vbM-Zk0yP7XJDM_nX9mXkuSTmeabcLASjJByvT8s,3270
|
|
76
|
-
proj_flow/plugins/sign/__init__.py,sha256=JsAU02LZQS_tRwgpVpzzwLpRToan832VfPrsXHCteSc,3678
|
|
77
|
-
proj_flow/plugins/sign/win32.py,sha256=h6YAtLxX0zM_YLVW60JS1tZZ-_du7I1Ko82M4AdvjN8,5335
|
|
78
|
-
proj_flow/plugins/store/__init__.py,sha256=PyDlpUQFJNT6-_JU8UTDwFAnJsSb6f-wRwPnabX2hBs,326
|
|
79
|
-
proj_flow/plugins/store/store_both.py,sha256=cwZl1WdUKIdCVimi3gN3t1lI4398d3tWUzKc3J67GXM,527
|
|
80
|
-
proj_flow/plugins/store/store_packages.py,sha256=LqVjIfZiOGlLGIzbhw-Li2X7aWSIrzwBl5WnxK8DJM8,2699
|
|
81
|
-
proj_flow/plugins/store/store_tests.py,sha256=0rh9RX-9EOp2pHYA-v_nsuGJJZLadFBFSp12N0EVNcA,567
|
|
82
73
|
proj_flow/template/layers/base.json,sha256=jrlby8FUUwkx4V_EGMix_pkQlWcUCVUgmeoapZaZnt4,3
|
|
83
74
|
proj_flow/template/layers/cmake.json,sha256=KJe9uqTDoGm0ppdNOtniKEv30iNV2K4Yk8hZQetEZ7Y,385
|
|
84
75
|
proj_flow/template/layers/conan.json,sha256=mAhDrxCtDjI_7Rbtr2hlNW5_jZkLdWLiwgfuhRsRuuw,29
|
|
@@ -133,8 +124,8 @@ proj_flow/template/licenses/MIT.mustache,sha256=NncPoQaNsuy-WmRmboik3fyhJJ8m5pc2
|
|
|
133
124
|
proj_flow/template/licenses/Unlicense.mustache,sha256=awOCsWJ58m_2kBQwBUGWejVqZm6wuRtCL2hi9rfa0X4,1211
|
|
134
125
|
proj_flow/template/licenses/WTFPL.mustache,sha256=lvF4V_PrKKfZPa2TC8CZo8tlqaKvs3Bpv9G6XsWWQ4k,483
|
|
135
126
|
proj_flow/template/licenses/Zlib.mustache,sha256=uIj-mhSjes2HJ3rRapyy2ALflKRz4xQgS4mVM9827C0,868
|
|
136
|
-
proj_flow-0.9.
|
|
137
|
-
proj_flow-0.9.
|
|
138
|
-
proj_flow-0.9.
|
|
139
|
-
proj_flow-0.9.
|
|
140
|
-
proj_flow-0.9.
|
|
127
|
+
proj_flow-0.9.4.dist-info/METADATA,sha256=xubfKNSwQpIkuu3Mugzwed5kdO3XhraoEIctZs0ppOI,2863
|
|
128
|
+
proj_flow-0.9.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
129
|
+
proj_flow-0.9.4.dist-info/entry_points.txt,sha256=d_OmGKZzpY7FCWz0sZ4wnBAPZC75oMEzTgJZWtpDELo,49
|
|
130
|
+
proj_flow-0.9.4.dist-info/licenses/LICENSE,sha256=vpOQJ5QlrTedF3coEWvA4wJzVJH304f66ZitR7Od4iU,1068
|
|
131
|
+
proj_flow-0.9.4.dist-info/RECORD,,
|
proj_flow/plugins/__init__.py
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2025 Marcin Zdun
|
|
2
|
-
# This code is licensed under MIT license (see LICENSE for details)
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
The **proj_flow.plugins** provides the runtime comnponents of the *Project Flow*:
|
|
6
|
-
the :class:`initialization helpers <proj_flow.api.init.InitStep>` and
|
|
7
|
-
:class:`run steps <proj_flow.api.step.Step>`.
|
|
8
|
-
"""
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2025 Marcin Zdun
|
|
2
|
-
# This code is licensed under MIT license (see LICENSE for details)
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
The **proj_flow.plugins.cmake** provides ``"CMake"``, ``"Build"``, ``"Pack"`` and
|
|
6
|
-
``"Test"`` steps, as well as CMake-specific initialization context.
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
from . import build, config, context, pack, parser, test
|
|
10
|
-
|
|
11
|
-
__all__ = ["build", "config", "context", "pack", "parser", "test"]
|
proj_flow/plugins/cmake/build.py
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2025 Marcin Zdun
|
|
2
|
-
# This code is licensed under MIT license (see LICENSE for details)
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
The **proj_flow.plugins.cmake.build** provides ``"Build"`` step.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
import os
|
|
9
|
-
|
|
10
|
-
from proj_flow.api import env, step
|
|
11
|
-
|
|
12
|
-
from .__version__ import CMAKE_VERSION
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
@step.register()
|
|
16
|
-
class CMakeBuild:
|
|
17
|
-
"""Builds the project using ``preset`` config."""
|
|
18
|
-
|
|
19
|
-
name = "Build"
|
|
20
|
-
runs_after = ["Conan", "CMake"]
|
|
21
|
-
|
|
22
|
-
def platform_dependencies(self):
|
|
23
|
-
return [f"cmake>={CMAKE_VERSION}"]
|
|
24
|
-
|
|
25
|
-
def is_active(self, config: env.Config, rt: env.Runtime) -> int:
|
|
26
|
-
return os.path.isfile("CMakeLists.txt") and os.path.isfile("CMakePresets.json")
|
|
27
|
-
|
|
28
|
-
def run(self, config: env.Config, rt: env.Runtime) -> int:
|
|
29
|
-
return rt.cmd("cmake", "--build", "--preset", config.preset, "--parallel")
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2025 Marcin Zdun
|
|
2
|
-
# This code is licensed under MIT license (see LICENSE for details)
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
The **proj_flow.plugins.cmake.config** provides ``"CMake"`` step.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
import os
|
|
9
|
-
from typing import Dict, List, cast
|
|
10
|
-
|
|
11
|
-
from proj_flow import api
|
|
12
|
-
|
|
13
|
-
from .__version__ import CMAKE_VERSION
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
@api.step.register
|
|
17
|
-
class CMakeConfig:
|
|
18
|
-
"""Configures the project using ``preset`` config."""
|
|
19
|
-
|
|
20
|
-
name = "CMake"
|
|
21
|
-
runs_after = ["Conan"]
|
|
22
|
-
|
|
23
|
-
def platform_dependencies(self):
|
|
24
|
-
return [f"cmake>={CMAKE_VERSION}"]
|
|
25
|
-
|
|
26
|
-
def is_active(self, config: api.env.Config, rt: api.env.Runtime) -> int:
|
|
27
|
-
return os.path.isfile("CMakeLists.txt") and os.path.isfile("CMakePresets.json")
|
|
28
|
-
|
|
29
|
-
def directories_to_remove(self, config: api.env.Config) -> List[str]:
|
|
30
|
-
return [f"build/{config.build_type}"]
|
|
31
|
-
|
|
32
|
-
def run(self, config: api.env.Config, rt: api.env.Runtime) -> int:
|
|
33
|
-
cmake_vars = cast(Dict[str, str], rt._cfg.get("cmake", {}).get("vars", {}))
|
|
34
|
-
defines: List[str] = []
|
|
35
|
-
for var in cmake_vars:
|
|
36
|
-
value = cmake_vars[var]
|
|
37
|
-
|
|
38
|
-
is_flag = value.startswith("?")
|
|
39
|
-
if is_flag:
|
|
40
|
-
value = value[1:]
|
|
41
|
-
|
|
42
|
-
if value.startswith("config:"):
|
|
43
|
-
value = value[len("config:")]
|
|
44
|
-
value = config.get_path(value)
|
|
45
|
-
elif value.startswith("runtime:"):
|
|
46
|
-
value = value[len("runtime:")]
|
|
47
|
-
value = getattr(rt, value, None)
|
|
48
|
-
|
|
49
|
-
if is_flag:
|
|
50
|
-
value = "ON" if value else "OFF"
|
|
51
|
-
|
|
52
|
-
defines.append(f"-D{var}={value}")
|
|
53
|
-
|
|
54
|
-
return rt.cmd(
|
|
55
|
-
"cmake",
|
|
56
|
-
"--preset",
|
|
57
|
-
f"{config.preset}-{config.build_generator}",
|
|
58
|
-
*defines,
|
|
59
|
-
)
|
proj_flow/plugins/cmake/pack.py
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2025 Marcin Zdun
|
|
2
|
-
# This code is licensed under MIT license (see LICENSE for details)
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
The **proj_flow.plugins.cmake.pack** provides ``"Pack"`` step.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
import os
|
|
9
|
-
|
|
10
|
-
from proj_flow.api import env, step
|
|
11
|
-
|
|
12
|
-
from .__version__ import CMAKE_VERSION
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
@step.register
|
|
16
|
-
class PackStep:
|
|
17
|
-
"""
|
|
18
|
-
Packs archives and installers from ``cpack_generator`` config, using
|
|
19
|
-
``preset`` config.
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
name = "Pack"
|
|
23
|
-
runs_after = ["Build"]
|
|
24
|
-
|
|
25
|
-
def platform_dependencies(self):
|
|
26
|
-
return [f"cmake>={CMAKE_VERSION}", f"cpack>={CMAKE_VERSION}"]
|
|
27
|
-
|
|
28
|
-
def is_active(self, config: env.Config, rt: env.Runtime) -> int:
|
|
29
|
-
return (
|
|
30
|
-
os.path.isfile("CMakeLists.txt")
|
|
31
|
-
and os.path.isfile("CMakePresets.json")
|
|
32
|
-
and len(config.items.get("cpack_generator", [])) > 0
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
def run(self, config: env.Config, rt: env.Runtime) -> int:
|
|
36
|
-
generators = ";".join(config.items.get("cpack_generator", []))
|
|
37
|
-
return rt.cmd("cpack", "--preset", config.preset, "-G", generators)
|
proj_flow/plugins/cmake/test.py
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2025 Marcin Zdun
|
|
2
|
-
# This code is licensed under MIT license (see LICENSE for details)
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
The **proj_flow.plugins.cmake.test** provides ``"Test"`` step.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
import os
|
|
9
|
-
|
|
10
|
-
from proj_flow.api import env, step
|
|
11
|
-
|
|
12
|
-
from .__version__ import CMAKE_VERSION
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
@step.register
|
|
16
|
-
class CMakeTest:
|
|
17
|
-
"""Runs tests in the project using ``preset`` config."""
|
|
18
|
-
|
|
19
|
-
name = "Test"
|
|
20
|
-
runs_after = ["Build"]
|
|
21
|
-
|
|
22
|
-
def platform_dependencies(self):
|
|
23
|
-
return [f"cmake>={CMAKE_VERSION}", f"ctest>={CMAKE_VERSION}"]
|
|
24
|
-
|
|
25
|
-
def is_active(self, config: env.Config, rt: env.Runtime) -> int:
|
|
26
|
-
return os.path.isfile("CMakeLists.txt") and os.path.isfile("CMakePresets.json")
|
|
27
|
-
|
|
28
|
-
def run(self, config: env.Config, rt: env.Runtime) -> int:
|
|
29
|
-
return rt.cmd("ctest", "--preset", config.preset)
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2025 Marcin Zdun
|
|
2
|
-
# This code is licensed under MIT license (see LICENSE for details)
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
The **proj_flow.plugins.commands** package implements various CLI commands.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
import sys
|
|
9
|
-
|
|
10
|
-
from proj_flow.base.plugins import load_module_plugins
|
|
11
|
-
|
|
12
|
-
load_module_plugins(sys.modules[__name__])
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2025 Marcin Zdun
|
|
2
|
-
# This code is licensed under MIT license (see LICENSE for details)
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
The **proj_flow.plugins.commands.ci** implements ``./flow ci`` command.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
from proj_flow.api import arg
|
|
9
|
-
|
|
10
|
-
from . import changelog, matrix, release
|
|
11
|
-
|
|
12
|
-
__all__ = ["changelog", "matrix", "release"]
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
@arg.command("ci")
|
|
16
|
-
def main():
|
|
17
|
-
"""Perform various CI tasks"""
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2025 Marcin Zdun
|
|
2
|
-
# This code is licensed under MIT license (see LICENSE for details)
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
The **proj_flow.plugins.commands.ci.changelog** implements
|
|
6
|
-
``./flow ci changelog`` command.
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
import typing
|
|
10
|
-
|
|
11
|
-
from proj_flow.api import arg, env
|
|
12
|
-
from proj_flow.log import commit, hosting, rich_text
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
@arg.command("ci", "changelog")
|
|
16
|
-
def main(
|
|
17
|
-
rt: env.Runtime,
|
|
18
|
-
rst: typing.Annotated[
|
|
19
|
-
bool,
|
|
20
|
-
arg.FlagArgument(help="Use reStructuredText instead of Markdown."),
|
|
21
|
-
],
|
|
22
|
-
rebuild: typing.Annotated[
|
|
23
|
-
bool,
|
|
24
|
-
arg.FlagArgument(
|
|
25
|
-
help="Recreate entire changelog. Useful, when adapting existing project."
|
|
26
|
-
),
|
|
27
|
-
],
|
|
28
|
-
all: typing.Annotated[
|
|
29
|
-
bool, arg.FlagArgument(help="Take all Conventional Commits.")
|
|
30
|
-
],
|
|
31
|
-
):
|
|
32
|
-
generator = rich_text.select_generator(rst=rst)
|
|
33
|
-
|
|
34
|
-
git = commit.Git(rt)
|
|
35
|
-
tags = git.tag_list()
|
|
36
|
-
gh_links = hosting.github.GitHub.from_repo(git)
|
|
37
|
-
|
|
38
|
-
if rebuild:
|
|
39
|
-
generator.create_changelog(tags, git, gh_links, rt, take_all=all)
|
|
40
|
-
return 0
|
|
41
|
-
|
|
42
|
-
prev_tag = tags[-2] if len(tags) > 1 else None
|
|
43
|
-
curr_tag = tags[-1] if len(tags) > 0 else None
|
|
44
|
-
|
|
45
|
-
setup = commit.LogSetup(gh_links, prev_tag, curr_tag, take_all=all)
|
|
46
|
-
log, _ = git.get_log(setup)
|
|
47
|
-
generator.update_changelog(log, setup, rt)
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2025 Marcin Zdun
|
|
2
|
-
# This code is licensed under MIT license (see LICENSE for details)
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
The **proj_flow.plugins.commands.ci.matrix** implements ``./flow ci matrix`` command.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
import argparse
|
|
9
|
-
import json
|
|
10
|
-
import os
|
|
11
|
-
import sys
|
|
12
|
-
from typing import Annotated, Optional
|
|
13
|
-
|
|
14
|
-
from proj_flow.api import arg, env
|
|
15
|
-
from proj_flow.flow.configs import Configs
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
@arg.command("ci", "matrix")
|
|
19
|
-
def matrix(
|
|
20
|
-
official: Annotated[
|
|
21
|
-
bool, arg.FlagArgument(help="Cut matrix to release builds only")
|
|
22
|
-
],
|
|
23
|
-
rt: env.Runtime,
|
|
24
|
-
):
|
|
25
|
-
"""Supply data for github actions"""
|
|
26
|
-
|
|
27
|
-
configs = Configs(
|
|
28
|
-
rt, argparse.Namespace(configs=[], matrix=True, official=official)
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
usable = [usable.items for usable in configs.usable]
|
|
32
|
-
for config in usable:
|
|
33
|
-
if "--orig-compiler" in config:
|
|
34
|
-
orig_compiler = config["--orig-compiler"]
|
|
35
|
-
del config["--orig-compiler"]
|
|
36
|
-
config["compiler"] = orig_compiler
|
|
37
|
-
if "GITHUB_ACTIONS" in os.environ:
|
|
38
|
-
var = json.dumps({"include": usable})
|
|
39
|
-
GITHUB_OUTPUT = os.environ.get("GITHUB_OUTPUT")
|
|
40
|
-
if GITHUB_OUTPUT is not None:
|
|
41
|
-
with open(GITHUB_OUTPUT, "a", encoding="UTF-8") as github_output:
|
|
42
|
-
print(f"matrix={var}", file=github_output)
|
|
43
|
-
else:
|
|
44
|
-
print(f"matrix={var}")
|
|
45
|
-
else:
|
|
46
|
-
json.dump(usable, sys.stdout)
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2025 Marcin Zdun
|
|
2
|
-
# This code is licensed under MIT license (see LICENSE for details)
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
The **proj_flow.plugins.commands.ci.release** implements
|
|
6
|
-
``./flow ci release`` command.
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
import typing
|
|
10
|
-
|
|
11
|
-
from proj_flow.api import arg, env
|
|
12
|
-
from proj_flow.log import commit, fmt, hosting, release, rich_text
|
|
13
|
-
from proj_flow.plugins import cmake
|
|
14
|
-
|
|
15
|
-
FORCED_LEVEL_CHOICES = list(commit.FORCED_LEVEL.keys())
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def _name_list(names: typing.List[str]) -> str:
|
|
19
|
-
if len(names) == 0:
|
|
20
|
-
return ""
|
|
21
|
-
|
|
22
|
-
prefix = ", ".join(names[:-1])
|
|
23
|
-
if prefix:
|
|
24
|
-
prefix += " and "
|
|
25
|
-
return f"{prefix}{names[-1]}"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def _bump_version(ver: str, level: commit.Level):
|
|
29
|
-
split = ver.split("-", 1)
|
|
30
|
-
if len(split) == 2:
|
|
31
|
-
stability = f"-{split[1]}"
|
|
32
|
-
else:
|
|
33
|
-
stability = ""
|
|
34
|
-
|
|
35
|
-
semver = [int(s) for s in split[0].split(".")]
|
|
36
|
-
while len(semver) < 3:
|
|
37
|
-
semver.append(0)
|
|
38
|
-
semver = semver[:3]
|
|
39
|
-
|
|
40
|
-
if level.value > commit.Level.BENIGN.value:
|
|
41
|
-
# This turns [1, 2, 3] through 4 - x into [3, 2, 1]
|
|
42
|
-
lvl = commit.Level.BREAKING.value - level.value
|
|
43
|
-
semver[lvl] += 1
|
|
44
|
-
for index in range(lvl + 1, len(semver)):
|
|
45
|
-
semver[index] = 0
|
|
46
|
-
|
|
47
|
-
return ".".join(str(v) for v in semver) + stability
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
@arg.command("ci", "release")
|
|
51
|
-
def main(
|
|
52
|
-
rt: env.Runtime,
|
|
53
|
-
all: typing.Annotated[
|
|
54
|
-
bool, arg.FlagArgument(help="Take all Conventional Commits.")
|
|
55
|
-
],
|
|
56
|
-
force: typing.Annotated[
|
|
57
|
-
typing.Optional[str],
|
|
58
|
-
arg.Argument(
|
|
59
|
-
help="Ignore the version change from changelog and instead use this value. "
|
|
60
|
-
f"Allowed values are: {_name_list(FORCED_LEVEL_CHOICES)}",
|
|
61
|
-
meta="level",
|
|
62
|
-
choices=FORCED_LEVEL_CHOICES,
|
|
63
|
-
),
|
|
64
|
-
],
|
|
65
|
-
stability: typing.Annotated[
|
|
66
|
-
typing.Optional[str],
|
|
67
|
-
arg.Argument(help="Change the stability of the version.", meta="value"),
|
|
68
|
-
],
|
|
69
|
-
):
|
|
70
|
-
"""
|
|
71
|
-
Bumps the project version based on current git logs, in a "chore" commit,
|
|
72
|
-
attaches an annotated tag with the version number and pushes it all to , if GitHub CLI
|
|
73
|
-
"""
|
|
74
|
-
generator = rich_text.markdown.ChangelogGenerator()
|
|
75
|
-
|
|
76
|
-
forced_level = commit.FORCED_LEVEL.get(force) if force else None
|
|
77
|
-
|
|
78
|
-
project = cmake.parser.get_project(rt.root)
|
|
79
|
-
if not project:
|
|
80
|
-
rt.fatal("No CMakeLists.txt with project() found.")
|
|
81
|
-
|
|
82
|
-
git = commit.Git(rt)
|
|
83
|
-
tags = git.tag_list(silent=True)
|
|
84
|
-
gh_links = hosting.github.GitHub.from_repo(git)
|
|
85
|
-
|
|
86
|
-
prev_tag = tags[-1] if len(tags) > 0 else None
|
|
87
|
-
|
|
88
|
-
setup = commit.LogSetup(gh_links, prev_tag, None, take_all=all)
|
|
89
|
-
log, log_level = git.get_log(setup)
|
|
90
|
-
|
|
91
|
-
project_version = f"{project.version.value}{project.stability.value}"
|
|
92
|
-
next_version = _bump_version(project_version, forced_level or log_level)
|
|
93
|
-
setup.curr_tag = f"v{next_version}"
|
|
94
|
-
|
|
95
|
-
if setup.curr_tag in tags:
|
|
96
|
-
rt.fatal(f"Tag {setup.curr_tag} already exists.")
|
|
97
|
-
|
|
98
|
-
files_to_commit: typing.List[str] = []
|
|
99
|
-
if not rt.dry_run and project_version != next_version:
|
|
100
|
-
files_to_commit.extend(generator.update_changelog(log, setup, rt))
|
|
101
|
-
files_to_commit.extend(project.set_version(rt.root, next_version))
|
|
102
|
-
# TODO: plugins for other places a version would need to be updated
|
|
103
|
-
|
|
104
|
-
commit_message = f"release {next_version}"
|
|
105
|
-
git.add_files(*files_to_commit)
|
|
106
|
-
git.commit(f"chore: {commit_message}{fmt.format_commit_message(log)}")
|
|
107
|
-
git.annotated_tag(setup.curr_tag, commit_message)
|
|
108
|
-
|
|
109
|
-
if gh_links.is_active:
|
|
110
|
-
draft_url = gh_links.draft_a_release(log, setup, git).draft_url
|
|
111
|
-
if draft_url:
|
|
112
|
-
rt.message("-- Visit draft at", draft_url, level=env.Msg.ALWAYS)
|
|
113
|
-
|
|
114
|
-
print()
|
|
115
|
-
|
|
116
|
-
print(project_version, "->", next_version)
|