Compare commits

...

279 Commits

Author SHA1 Message Date
Kreyren
3f90b17c7e sagag 2020-02-17 19:04:03 +00:00
Kreyren
51c5134ba4 fdhsfhd 2020-02-17 19:01:15 +00:00
Kreyren
e44575155b dsgsdha 2020-02-17 18:48:30 +00:00
Kreyren
a4792f6384 sagasg 2020-02-17 18:32:29 +00:00
Kreyren
d5ce804a97 sagasg 2020-02-17 18:30:01 +00:00
Kreyren
88056fd7b2 sagasg 2020-02-17 18:23:05 +00:00
Kreyren
4401b59879 asgsa 2020-02-17 18:18:22 +00:00
Kreyren
f0330a5046 fdhsfdh 2020-02-17 18:11:12 +00:00
Kreyren
732ea66f3d fjfdgjdf 2020-02-17 14:31:35 +00:00
Kreyren
75a001ea68 sdgag 2020-02-17 13:29:01 +00:00
Kreyren
2b0026a70b asgasga 2020-02-17 13:20:40 +00:00
Kreyren
51c9e529a7 fdjhfg 2020-02-17 12:58:46 +00:00
Kreyren
8b80670f38 fhdf 2020-02-17 12:32:52 +00:00
Kreyren
47e1614ebc shsadh 2020-02-17 12:25:10 +00:00
Kreyren
987b2b35f2 dsgsagd 2020-02-17 12:15:11 +00:00
Kreyren
1537c7a710 fhddfgj 2020-02-17 12:00:37 +00:00
Kreyren
028b604a8e cfghd 2020-02-17 11:59:37 +00:00
Kreyren
01336f5451 gfjfgj 2020-02-17 11:45:38 +00:00
Kreyren
999bd83b36 sgasdg 2020-02-16 19:02:43 +00:00
Kreyren
b807e4bdb7 dsgasg 2020-02-16 18:54:42 +00:00
Kreyren
9abba4ccdd sagasg 2020-02-16 18:45:31 +00:00
Kreyren
463ec08da9 f54hs6f5d4h 2020-02-16 18:32:58 +00:00
Kreyren
4e642dfcfa ffgjfg 2020-02-16 18:08:46 +00:00
Kreyren
cc5ae51e6b asgasg 2020-02-12 22:27:38 +00:00
Kreyren
ba569036d2 safasf 2020-02-12 22:25:45 +00:00
Kreyren
1239ecca3c sagag 2020-02-12 22:21:30 +00:00
Kreyren
3c53a44cf9 saag 2020-02-12 22:17:49 +00:00
Kreyren
bf047bb966 fdhsdh 2020-02-12 22:15:34 +00:00
Kreyren
652a1574fe sdhdfh 2020-02-12 22:11:30 +00:00
Kreyren
21a772f9d2 safsaf 2020-02-12 22:09:13 +00:00
Kreyren
2850d0d73b safasf 2020-02-12 22:06:57 +00:00
Kreyren
bfeb99808b vbbghkk 2020-02-12 22:03:28 +00:00
Kreyren
b8adc7c70b hlj 2020-02-12 21:59:52 +00:00
Kreyren
0317aee4bb ffdjgf 2020-02-12 21:56:49 +00:00
Kreyren
5a6336477e saagg 2020-02-12 21:54:06 +00:00
Kreyren
bb9673ba8a saasg 2020-02-12 21:50:18 +00:00
Kreyren
ea338b03e8 hgkg 2020-02-12 11:27:22 +00:00
Kreyren
94f2cfba3d asasgsagas 2020-02-12 11:15:26 +00:00
Kreyren
e9d180a353 fhdshfd 2020-02-12 10:53:21 +00:00
Kreyren
8b46fd7c95 asgagasg 2020-02-12 10:49:28 +00:00
Kreyren
6cf8d37542 ddfjhfg 2020-02-12 10:16:48 +00:00
Kreyren
a93ddd04eb asgasg 2020-02-12 10:06:32 +00:00
Kreyren
617e1d06b2 khgk 2020-02-11 21:29:18 +00:00
Kreyren
b0380b1f0a dgsgh 2020-02-11 21:16:58 +00:00
Kreyren
5b6afcac8e fdhfgh 2020-02-11 21:03:53 +00:00
Kreyren
b3c34b3bf7 sagasga 2020-02-11 20:49:33 +00:00
Kreyren
1580fa6415 all hail twofifths the savior 2020-02-11 20:03:39 +00:00
Kreyren
0a3a0798a8 hgkkfkg 2020-02-11 19:41:04 +00:00
Kreyren
a30ca16a90 end my suffering 2020-02-11 19:39:10 +00:00
Kreyren
5a48425858 agaahds 2020-02-11 19:10:22 +00:00
Kreyren
81f84ee16c sagasg 2020-02-11 19:01:25 +00:00
Kreyren
01ee789ba0 SAGSAG 2020-02-11 18:59:49 +00:00
Kreyren
e25e23ad9e PLEASE JUST FUCKING WORK 2020-02-11 18:59:11 +00:00
Kreyren
2d9f8a963c fdhjsfdh 2020-02-11 18:56:50 +00:00
Kreyren
69b3745447 safasf 2020-02-11 18:55:15 +00:00
Kreyren
acac403d86 fdhsfdh 2020-02-11 18:49:50 +00:00
Kreyren
4eb42b79f7 sagag 2020-02-11 18:46:39 +00:00
Kreyren
419a010058 safsaf 2020-02-11 18:33:34 +00:00
Kreyren
3fa2dbbdf5 saga 2020-02-11 18:31:44 +00:00
Kreyren
2568e0c5c2 sdgdasg 2020-02-11 18:21:20 +00:00
Kreyren
b81672fe6d hjglh 2020-02-11 17:35:21 +00:00
Kreyren
0e3e5d8d93 jhlgj 2020-02-11 17:31:58 +00:00
Kreyren
adf0e191a8 saksdakhla 2020-02-11 17:29:50 +00:00
Kreyren
f82c4d35c2 Why can't i see the hugging source for this GUI? #ThanksMicrosoft 2020-02-11 18:23:10 +01:00
Kreyren
2982183955 sagasg 2020-02-11 11:01:12 +00:00
Kreyren
8e9475d268 fjdgj 2020-02-10 18:46:00 +00:00
Kreyren
f9027bbbd7 fdjfgj 2020-02-10 18:38:54 +00:00
Kreyren
10d438d797 sasag 2020-02-10 18:34:44 +00:00
Kreyren
e9e0f9e3ec safasf 2020-02-10 18:28:54 +00:00
Kreyren
5e4bed645a asfasf 2020-02-10 18:26:26 +00:00
Kreyren
ea9c954022 sgagsa 2020-02-10 18:24:48 +00:00
Kreyren
d2cece39e0 asgasg 2020-02-10 18:22:54 +00:00
Kreyren
8aeb814b00 hgjl 2020-02-10 17:45:21 +00:00
Kreyren
79638bece0 sag 2020-02-10 17:44:30 +00:00
Kreyren
122a77c380 safasf 2020-02-10 17:42:52 +00:00
Kreyren
9a3e8ce031 sagsag 2020-02-10 17:41:28 +00:00
Kreyren
8b9c7a140e shdfh 2020-02-10 16:56:08 +00:00
Kreyren
45cb1920fb Fix C and adapt more sanity checks 2020-02-10 16:35:31 +00:00
Kreyren
5e32b332bd sagasg 2020-02-10 16:08:57 +00:00
Kreyren
09b4e0edab sagasg 2020-02-10 16:06:51 +00:00
Kreyren
4f01cca7ff fhdfhs 2020-02-10 15:36:34 +00:00
Kreyren
63710ce362 dsfhdsf 2020-02-10 15:14:58 +00:00
Kreyren
7e878ef170 fdfgj 2020-02-10 14:08:42 +00:00
Kreyren
6a5fe45651 sasgd 2020-02-10 14:07:28 +00:00
Kreyren
a3ec275ded asgas 2020-02-10 14:04:23 +00:00
Kreyren
fb0aabe43c RUNALISA! 2020-02-10 14:03:01 +00:00
Kreyren
ee6dd8e50c fhfgjfg 2020-02-09 19:23:49 +00:00
Kreyren
f945b9f0be asgsa 2020-02-09 19:10:44 +00:00
Kreyren
0c0a61ce0e hkgjkgh 2020-02-09 19:03:18 +00:00
Kreyren
814aab09e3 fdhsfdj 2020-02-09 18:53:31 +00:00
Kreyren
5f4667e9c7 dhsfh 2020-02-09 18:48:11 +00:00
Kreyren
0b7c3dbec2 gjghk 2020-02-09 18:44:38 +00:00
Kreyren
4978158fe3 sdgasdg 2020-02-09 18:35:35 +00:00
Kreyren
8490247207 saasga 2020-02-09 18:29:43 +00:00
Kreyren
9ce917d935 jk'jkl' 2020-02-09 18:16:46 +00:00
Kreyren
b5bb810393 kljlk'j 2020-02-09 18:14:32 +00:00
Kreyren
ca38ef44d5 nm,;n 2020-02-09 18:07:18 +00:00
Kreyren
d724458e9c gfjdfgj 2020-02-09 18:02:36 +00:00
Kreyren
1ed8f68e66 gfghkg 2020-02-09 17:58:46 +00:00
Kreyren
9d2fdb1797 jklhj 2020-02-09 17:52:58 +00:00
Kreyren
c0a671f428 gjhlghl 2020-02-09 17:50:14 +00:00
Kreyren
88794e46d2 saagsga 2020-02-09 17:47:20 +00:00
Kreyren
42415d8730 sdgdsfh 2020-02-09 17:44:28 +00:00
Kreyren
6ec1c9a2d2 sagasga 2020-02-09 17:40:39 +00:00
Kreyren
b75dd0317b safsa 2020-02-09 17:38:27 +00:00
Kreyren
414e050084 fhdfjh 2020-02-09 17:32:20 +00:00
Kreyren
f08e44eeed fghkjgh 2020-02-09 17:30:10 +00:00
Kreyren
ca6414bd21 fdhhsf 2020-02-09 17:26:56 +00:00
Kreyren
b8e1dbb060 fgkfhg 2020-02-09 17:24:40 +00:00
Kreyren
d4a408f1a6 dfhfgdj 2020-02-09 17:18:57 +00:00
Kreyren
684695247f gfgj 2020-02-09 17:06:35 +00:00
Kreyren
b0be7a415b shfdhsfd 2020-02-09 16:48:58 +00:00
Kreyren
e986a637e8 IT'S YOUR TURN TRAVIS MUHAHAH 2020-02-09 16:45:47 +00:00
Kreyren
15051a2cf9 gagsd 2020-02-09 15:34:26 +00:00
Kreyren
2ad353e4b0 safsa 2020-02-09 15:29:33 +00:00
Kreyren
4416bb962f asasg 2020-02-09 15:29:08 +00:00
Kreyren
e31e90fa7b sdgasdg 2020-02-08 11:53:54 +00:00
Kreyren
3510e5cd12 djknsfdjknh 2020-02-08 11:26:45 +00:00
Kreyren
d7165bc76b stub 2020-02-08 08:20:16 +00:00
Kreyren
da9321065b gjfkf 2020-02-08 06:19:48 +00:00
Kreyren
279c912d76 safsaf 2020-02-08 06:17:04 +00:00
Kreyren
cfcd9a770c gjkghkf 2020-02-08 06:11:21 +00:00
Kreyren
2289db1b1f sagas 2020-02-08 05:59:15 +00:00
Kreyren
5d9137d54e hghkh 2020-02-08 05:57:42 +00:00
Kreyren
beef2b1bdb dgasdga 2020-02-08 05:55:44 +00:00
Kreyren
cf54385748 sdgsdag 2020-02-08 05:54:03 +00:00
Kreyren
f65c112423 hfgj 2020-02-07 20:39:47 +00:00
Kreyren
2f2927f042 sagag 2020-02-07 20:27:28 +00:00
Kreyren
fe3e9f0cda sagsag 2020-02-07 20:22:43 +00:00
Kreyren
fda3629148 fdhgj 2020-02-07 20:12:07 +00:00
Kreyren
49cb01e2ed dsadsh 2020-02-07 20:09:19 +00:00
Kreyren
5663b7579d
Create jekyll.yml 2020-02-07 21:01:46 +01:00
Kreyren
992d24d9fb
Bump termcolor from 1.0.0 to 1.1.0 2020-02-07 20:53:28 +01:00
Kreyren
d91dd4ed2f
Update cargo-make requirement from 0.26.2 to 0.27.0 2020-02-07 20:52:13 +01:00
Kreyren
3b50b75f9c fdhsfh 2020-02-07 19:51:05 +00:00
dependabot-preview[bot]
9005f623ae
Bump termcolor from 1.0.0 to 1.1.0
Bumps [termcolor](http://pypi.python.org/pypi/termcolor) from 1.0.0 to 1.1.0.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-07 19:48:39 +00:00
Kreyren
40275436ff test 2020-02-07 19:47:32 +00:00
dependabot-preview[bot]
b735429ee2
Update cargo-make requirement from 0.26.2 to 0.27.0
Updates the requirements on [cargo-make](https://github.com/sagiegurari/cargo-make) to permit the latest version.
- [Release notes](https://github.com/sagiegurari/cargo-make/releases)
- [Changelog](https://github.com/sagiegurari/cargo-make/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sagiegurari/cargo-make/compare/0.26.2...0.27.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-07 19:46:18 +00:00
Kreyren
a44cf5723f dfhfgd 2020-02-07 19:41:20 +00:00
Kreyren
3b76728b79 sdagsdag 2020-02-07 19:38:19 +00:00
Kreyren
d1cf4f1a1e shfdh 2020-02-07 19:36:21 +00:00
Kreyren
459e47b983 sdagasdg 2020-02-07 19:30:30 +00:00
Kreyren
7a140c553a vcmvmvb 2020-02-07 19:23:09 +00:00
Kreyren
2c3e50e327 dshas 2020-02-07 18:22:07 +00:00
Kreyren
ab9d973d7c sdgag 2020-02-07 18:17:53 +00:00
Kreyren
7de8bc8376 fghdfgh 2020-02-07 18:15:59 +00:00
Kreyren
7af21dc164 fdhsfdh 2020-02-07 18:14:15 +00:00
Kreyren
9c12c3bd31 fdhfgj 2020-02-07 17:51:12 +00:00
Kreyren
984ef7ba67 hdhsfdh 2020-02-07 17:38:34 +00:00
Kreyren
004aa87a56 jghjfh 2020-02-07 16:44:04 +00:00
Kreyren
344593d3a7 jghkfg 2020-02-07 16:39:02 +00:00
Kreyren
cbe46fb8f3 ffgjghjfgh 2020-02-07 16:32:13 +00:00
Kreyren
2bbaa32d01 agsah 2020-02-07 16:25:07 +00:00
Kreyren
f880b2734f
Update vlang_init.sh 2020-02-07 16:53:28 +01:00
Kreyren
15986f2ff1
Update vlang_init.sh 2020-02-07 16:50:45 +01:00
Kreyren
792541a1b9 ffhdfgj 2020-02-07 15:45:38 +00:00
Kreyren
410b32f1bc hgkgk 2020-02-07 15:37:46 +00:00
Kreyren
88c64cb464 dshsfd 2020-02-07 15:29:16 +00:00
Kreyren
100dc5a376
Update gitpod.Dockerfile 2020-02-07 16:19:18 +01:00
Kreyren
9e901d81e0 dgsdfhsdf 2020-02-07 14:51:14 +00:00
Kreyren
c2bc4a23de hfgdj 2020-02-07 14:43:55 +00:00
Kreyren
999d425555 jfhjgh 2020-02-07 14:38:44 +00:00
Kreyren
25b5465c18 shash 2020-02-07 14:34:42 +00:00
Kreyren
98d4a7db0d sagaga 2020-02-07 14:33:00 +00:00
Kreyren
9af4d019a4 shebang test 2020-02-07 13:42:32 +00:00
Kreyren
2c5daf0d7d dsgasdg 2020-02-07 13:39:56 +00:00
Kreyren
20eee0d278 xdgad 2020-02-07 13:37:52 +00:00
Kreyren
9e6733e0cc gjhfhghk 2020-02-07 13:20:50 +00:00
Kreyren
6e18eb316e
Merge pull request #39 from Klairm/multilang_experiment_C 2020-02-07 13:38:44 +01:00
Kreyren
7425043f68 fixes 2020-02-07 12:37:25 +00:00
Kreyren
20065df6c6
Merge pull request #37 from Uniminin/multilang_experiment 2020-02-07 13:26:14 +01:00
Kreyren
129db45535 fixes 2020-02-07 12:24:03 +00:00
Kreyren
4747aabd2e Merge branch 'multilang_experiment' of https://github.com/RXT0112/Zernit into init-new 2020-02-07 11:53:52 +00:00
Kreyren
7d0a5f6092
Update gitpod.Dockerfile 2020-02-07 11:22:06 +01:00
Kreyren
80be465a99 fdhfhfgj 2020-02-07 10:19:50 +00:00
Kreyren
799806a823 gjfgjfd 2020-02-07 08:34:50 +00:00
Kreyren
4135d1d108 dgsghafh 2020-02-07 08:31:32 +00:00
Kreyren
fb20e55c9d hjfghkf 2020-02-07 08:30:32 +00:00
Kreyren
9c8c9aaab3 gjghfj 2020-02-07 08:26:34 +00:00
Kreyren
a8d65e50b8 sagsdag 2020-02-07 07:59:40 +00:00
Kreyren
c9f4dd043d sdgasdg 2020-02-07 06:17:04 +00:00
Kreyren
80467364c6 hkghkgh 2020-02-07 05:04:02 +00:00
Kreyren
d6b9b7edaf add vlang 2020-02-07 04:53:27 +00:00
Klairm
230b90cecf Adapted code 2020-02-06 14:30:49 +01:00
Kreyren
bdaa0c7cc9 jksdhgjkasdnh 2020-02-06 06:06:53 +00:00
Kreyren
8d773126c1 sgassg 2020-02-06 05:37:28 +00:00
Kreyren
5585484059 fgdfjfghj 2020-02-06 03:32:56 +00:00
Kreyren
5f509b6a13 jghkfghkf 2020-02-06 02:34:01 +00:00
Kreyren
3b692c8a00 fdjfgjdfg 2020-02-06 01:49:13 +00:00
Kreyren
40034b1b89 dsdga 2020-02-06 01:32:59 +00:00
Klairm
d31f2dfcb1 Initial commit 2020-02-05 19:58:05 +01:00
Uniminin
e931843579
Update makefile 2020-02-05 19:41:13 +06:00
Uniminin
e5cabe260b
Create README.md 2020-02-05 19:18:12 +06:00
Kreyren
ebd676f82b fghdfghdfgh 2020-02-05 13:12:24 +00:00
Uniminin
a72e502cc3
Create makefile 2020-02-05 19:12:19 +06:00
Uniminin
2ad3b81fe3
Create zernit.py 2020-02-05 19:10:24 +06:00
Uniminin
0ea413cc68
Delete main.py 2020-02-05 19:10:04 +06:00
Uniminin
be6591da21
Create requirements.txt 2020-02-05 19:09:48 +06:00
Kreyren
bff5e3a3b1 dshfdsh 2020-02-05 13:01:20 +00:00
Kreyren
e379eb0805 dhdfhs 2020-02-05 12:54:19 +00:00
Kreyren
eadd4761c0
Create pythonapp.yml 2020-02-05 13:51:03 +01:00
Kreyren
c30a947156 sdashdh 2020-02-05 12:35:03 +00:00
Kreyren
888a0c105d agadgadg 2020-02-05 12:22:44 +00:00
Kreyren
11c449edd8 ping 2020-02-05 12:17:15 +00:00
Kreyren
6b8bf6b858 dsghasdha 2020-02-05 12:15:02 +00:00
Kreyren
40aa8f3370 fhdfhsj 2020-02-05 11:25:10 +00:00
Kreyren
d2d1a14f7a
actions: ccpp init 2020-02-05 12:17:52 +01:00
Kreyren
a729c90eab
actions: pytest init 2020-02-05 12:16:27 +01:00
Kreyren
a4c9938506
actions: rust ci init 2020-02-05 12:15:39 +01:00
Uniminin
0346f906af
Update main.py 2020-02-05 17:02:42 +06:00
Uniminin
8e66bf1270
idk. 2020-02-05 17:01:55 +06:00
Kreyren
30b9d83dde gjfghkg 2020-02-05 09:19:58 +00:00
Kreyren
09da48eaa7 xcfdh 2020-02-05 09:14:01 +00:00
Kreyren
b3bdeb2021 fhsfhd 2020-02-05 09:13:19 +00:00
Kreyren
7736a7b98f dsagsdag 2020-02-05 09:10:18 +00:00
Kreyren
3cd88eafd3 sagas 2020-02-05 09:06:21 +00:00
Kreyren
302cc1842e shdtuat 2020-02-04 02:38:35 +00:00
Kreyren
4e92724cc1 sdasdh 2020-02-03 09:30:11 +00:00
Kreyren
0b6d0f8e13 fgjghfj 2020-02-03 08:48:17 +00:00
Kreyren
cc34fc23b7 add example of langs 2020-02-03 07:02:47 +00:00
Kreyren
1027b9de85 gitpod: add references to avoid build issues
Reaction on https://github.com/gitpod-io/gitpod/issues/1171
2020-02-03 03:59:00 +00:00
Kreyren
a9d0e8888e
gitpod: Fix docker stuffs
relevant https://github.com/gitpod-io/gitpod/issues/1171
2020-02-03 04:48:21 +01:00
Sean Hellum
1f6b4aa489
Update gitpod.Dockerfile 2020-02-02 20:46:29 -06:00
Sean Hellum
c837e67831
Update gitpod.Dockerfile 2020-02-02 20:45:54 -06:00
Sean Hellum
98c31e7fc6
Update gitpod.Dockerfile 2020-02-02 20:43:01 -06:00
Kreyren
b583dd90b0
Update README.md 2020-02-03 03:30:28 +01:00
Kreyren
ab89261e06 fdhsfh 2020-01-31 09:31:54 +00:00
Kreyren
566203be68 fhdjfg 2020-01-31 06:09:32 +00:00
Kreyren
0cce54368a fdhsfd 2020-01-31 06:06:13 +00:00
Kreyren
e6c096952e Add mindmaster for mindmap 2020-01-31 05:55:23 +00:00
Kreyren
b2ea48bf1d More documentation and stub for alternative repository management 2020-01-31 05:48:58 +00:00
Kreyren
78f55d661d gitpod: fixed syntax err 2020-01-25 16:36:24 +00:00
Kreyren
f60e7866da gitpod: Added xclip and muted sterr of curl 2020-01-25 16:33:29 +00:00
Kreyren
ff67137522 gitpod: add custom functions 2020-01-25 16:30:26 +00:00
Kreyren
964a109f9b gitpod: Added tree command 2020-01-25 16:02:29 +00:00
Kreyren
4279da6684 gitpod: add vnc 2020-01-25 15:45:04 +00:00
Kreyren
ad06db5789 i hate this 2020-01-25 15:44:45 +00:00
Kreyren
91ac248e81 fdhsfdjdgf 2020-01-25 15:02:39 +00:00
Kreyren
754d09698b stub 2020-01-25 14:56:00 +00:00
Kreyren
77a876481b stub 2020-01-25 14:34:43 +00:00
Kreyren
6d9ece6f06 stub 2020-01-20 08:18:18 +00:00
Kreyren
3e5f23550e stub 2020-01-20 07:55:10 +00:00
Kreyren
7adb5e177e stub 2020-01-20 05:51:34 +00:00
Kreyren
c03c7e39c2 stub 2020-01-20 05:21:25 +00:00
Kreyren
3e5b93a629 stub 2020-01-19 16:57:26 +00:00
Kreyren
43e522e563 stub 2020-01-19 14:17:39 +00:00
Kreyren
131dc3e0e3 stub 2020-01-19 06:39:12 +00:00
Kreyren
a52bd65ee9 stub 2020-01-18 11:43:35 +00:00
Kreyren
fb91ff2307
gitpod: minor 2020-01-14 09:17:11 +01:00
Kreyren
9821c8f166 gitpod: Add dependencies for linting 2020-01-14 08:16:11 +00:00
Kreyren
9d034e9f9d submodules: Attempt for hotfix for gitpod
Gitpod doesn't support SSH submodules (https://github.com/gitpod-io/gitpod/issues/1076)
2020-01-14 07:22:36 +00:00
3f1b58e98e git: modules fix 2020-01-14 08:08:13 +01:00
93e5b69aa4 git: Nuked gitignore since it's used in .git/info/exclude now 2020-01-14 07:44:45 +01:00
Kreyren
f17753c7a2 tests: init from HELL 2020-01-14 06:31:47 +00:00
Kreyren
fb29d1d8f9
LICENSE: Adapt markdown formatting
Credit: https://github.com/TheFox/GPLv3.md/blob/master/gplv3.md
2020-01-12 14:05:15 +01:00
Kreyren
7df0826ab1
docs: Move _config.ymp to docs directory 2020-01-12 14:02:24 +01:00
Kreyren
778a304c15
README: Remove unsed file 2020-01-12 14:01:04 +01:00
Kreyren
cef4c85314 src: attempt to make the hierachy more nice 2020-01-12 12:50:51 +00:00
Kreyren
82d0363a39 post-initial commit 2020-01-12 10:24:10 +00:00
Kreyren
987cc3585a Initial commit 2020-01-12 09:53:09 +00:00
Kreyren
dea6ff73ef docs: stub 2020-01-12 09:46:57 +00:00
Kreyren
74efa15353 README: Experimenting with README.md 2020-01-12 09:44:21 +00:00
Kreyren
620422b9a5 minor changes preparing for init release 2020-01-12 09:15:55 +00:00
Kreyren
0a4057e011 Various documentation stubs 2020-01-12 09:13:10 +00:00
Kreyren
33a24de9aa
gitpod: remove bloat and used different port 2020-01-12 09:44:20 +01:00
Kreyren
d4344ab9db
gitpod: fix path for dockerfile 2020-01-12 09:43:12 +01:00
bdde6ab74d test 2020-01-12 08:54:58 +01:00
Kreyren
dc0e0a2fb3 README: stub for open in gitpod 2020-01-12 04:19:06 +00:00
Kreyren
aadb4aebc3 stub for name to support forks 2020-01-12 04:11:45 +00:00
Kreyren
8d7d8a6e65
stale: init 2020-01-12 04:48:03 +01:00
Kreyren
c610dd549f
label: init 2020-01-12 04:47:34 +01:00
Kreyren
cc7a8c3273
greetings: init 2020-01-12 04:47:07 +01:00
Kreyren
4110ee17ef funding: adapt funding 2020-01-12 03:38:35 +00:00
Kreyren
02b7cad533 docs: init 2020-01-12 03:03:58 +00:00
Kreyren
49ff37e302 csdgh 2020-01-12 02:54:14 +00:00
Kreyren
db31105017
Create LICENSE.md 2020-01-12 03:52:04 +01:00
Kreyren
e2f223c093 Add method to handle arguments 2020-01-12 02:33:49 +00:00
Kreyren
c59f3839dc minor 2020-01-12 01:06:16 +00:00
Kreyren
1b119d43e6 init 2020-01-12 00:57:48 +00:00
121 changed files with 15214 additions and 0 deletions

49
.github/CODEOWNERS vendored Normal file

@ -0,0 +1,49 @@
# Reference to configuration - https://github.blog/2017-07-06-introducing-code-owners/
# Relevant https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners
# This file is used to set permission per team or user to allow auto-merging
# Maintainers
* @kreyren @RXT0112/maintainers
# Documentation maintainers
/docs/ @RXT0112/documentators
# Dependencies
Cargo.toml @dependabot-preview
requirements.txt @dependabot-preview
# Legal team
LICENSE.md @kreyren
# Rustlang maintainers
*.rs @RXT0112/rustlang
Cargo.toml @RXT0112/rustlang
# Python maintainers
*.py @RXT0112/python
requirements.txt @RXT0112/python
# Vlang maintainers
*.v @RXT0112/vlang
# Clang maintainers
*.c @RXT0112/clang
# CPP maintainers
*.cpp @RXT0112/cpp
# Shell maintainers
*.sh @RXT0112/shell
# Bash maintainers
*.bash @RXT0112/bash
# Brainfuck maintainers
*.br @RXT0112/brainfuck
# java maintainers
*.jar @RXT0112/java
# csharp maintainers
*.cs @RXT0112/csharp

5
.github/CONTRIBUTING.md vendored Normal file

@ -0,0 +1,5 @@
# Contributing guideliness
FIXME: Preamble needed
FIXME: Do not assign translate variables in fixme messages

19
.github/FUNDING.yml vendored Normal file

@ -0,0 +1,19 @@
# These are supported funding model platforms
# Limited on 4 github-sponsor enabled accounts
github: kreyren
# Patreon of rustlang developers and important contributors (http://aturon.github.io/sponsor/)
patreon: RiXotStudio leodasvacas matklad QuietMisdreavus xanewok stjepang japaric newrustacean hellorust retep998 tomaka
# misc
open_collective: rixotstudio
ko_fi: rixotstudio
tidelift: RiXotStudio/RiXotStudio
community_bridge: rixotstudio
liberapay: RiXotStudio
issuehunt: rixotstudio
otechie: rixotstudio
# Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
custom: https://my.fsf.org/join

27
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file

@ -0,0 +1,27 @@
---
name: Bug report
about: if Something is not working as expected
title: 'bug:'
labels: 'bug'
assignees: '@Zernit/bugwranglers'
---
### Describe the bug
<!-- Give us a **short** summary of what the issue is -->
### To Reproduce
<!-- Provide steps to reproduce otherwise the issue will be considered as invalid -->
1. ...
2. ...
### Expected behavior
<!-- What do you expect to happend instead of current behavior? -->
### Additional context
<!-- Add any other context about the issue here -->

10
.github/ISSUE_TEMPLATE/config.yml vendored Normal file

@ -0,0 +1,10 @@
# Disable blank issues
blank_issues_enabled: false
contact_links:
- name: IRC
url: https://webchat.freenode.net/#zernit
about: For simple questions and brainstorming
- name: Discord
url: https://discord.gg/5V4psY
about: Community maintained support in Zernit section

@ -0,0 +1,20 @@
---
name: Feature request
about: For feature proposals
title: 'REQUEST:'
labels: 'feature-request'
assignees: '@Zernit/bugwranglers'
---
### Describe the feature
<!-- Give us a **short** summary of your proposed feature -->
### Expected behavior
<!-- What do you expect to happend instead of current behavior? -->
### Additional context
<!-- Add any other context about the issue here -->

16
.github/README.md vendored Normal file

@ -0,0 +1,16 @@
**NOTICE:** This project in in "init phase" so everything will be remade into a new orphen branch once methods for quality assurance, documentation, automatization and code is decided to be used as a foundation for new commits
fixme: Source the header in different markdown file to make GitHub README different from GitLab
fixme: Change the name based on repository used.
# Zernit (RXT0112)
System manager of WIP_NAME designed to work cross-platform and using multiple programming languages depending on which one provides the most efficiency per required runtime.
fixme: Change the URL based on the website used<br>
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/RXT0112/RXT0112)
fixme: Add prety button<br>
https://codesandbox.io/s/github/RXT0112/RXT0112

49
.github/label-pr.yml vendored Normal file

@ -0,0 +1,49 @@
# Programming language specific
- regExp: ".*\\.rs+$"
labels: ["rustlang"]
- regExp: ".*\\.py+$"
labels: ["python"]
- regExp: ".*\\.c+$"
labels: ["c-lang"]
- regExp: ".*\\.cpp+$"
labels: ["CPP"]
- regExp: ".*\\.sh+$"
labels: ["shell"]
- regExp: ".*\\.bash+$"
labels: ["bash"]
- regExp: ".*\\.br+$"
labels: ["brainfuck"]
- regExp: ".*\\.jar+$"
labels: ["java"]
- regExp: ".*\\.v+$"
labels: ["vlang"]
- regExp: ".*\\.cs+$"
labels: ["csharp"]
- regExp: "^/tests/.*"
labels: ["tests"]
- regExp: "^/benches/.*"
labels: ["benches"]
- regExp: "^/LICENSE/.*"
labels: ["license"]
- regExp: ".*\\.md+$"
labels: ["markdown"]
- regExp: "^(Cargo\\.toml|requirements\\.txt)$"
labels: ["dependencies"]
# Repository specific
- regExp: "^/docs/.*"
labels: ["docs"]

108
.github/labels.yml vendored Normal file

@ -0,0 +1,108 @@
# This file handles labels on GitHub
# Priority handling
- name: P - SHTF
color: ae00ff
description: "Stop whatever you are doing and focus on this"
- name: P - Very High
color: ff2f00
description: "FIXME"
- name: P - High
color: 910f00
description: "FIXME"
- name: P - Med
color: ffd000
description: "FIXME"
- name: P - Low
color: b3ff00
description: "FIXME"
- name: P - Very Low
color: 73ff00
description: "FIXME"
# MISC
- name: bug
color: d73a4a
description: "Something isn't working"
- name: feature-request
color: 03fc5a
description: "Feature requests"
- name: docs
color: 0075ca
description: "Improvements or additions to documentation"
- name: duplicate
color: cfd8d7
description: "This issue or pull request already exists"
- name: enhancement
color: a22eef
description: "Proposal for code improvement"
- name: license
color: 1a7546
description: "Relevant to licensing"
- name: dependencies
color: ca0ef0
description: "Relevant to dependencies"
- name: tests
color: 8d0fd6
description: "Relevant to tests"
- name: benches
color: cc1250
description: "Relevant to benchmarks"
# Programming language specific
- name: python
color: 00aeff
description: "Relevant to python"
- name: rustlang
color: f58142
description: "Relevant to rustlang"
- name: c-lang
color: 427bf5
description: "Relevant to c-lang"
- name: brainfuck
color: f542c5
description: "Relevant to brainfuck"
- name: shell
color: 74e63c
description: "Relevant to shell"
- name: bash
color: 9dff00
description: "Relevant to bash"
- name: CCP
color: 009dff
description: "Relevant to CCP"
- name: vlang
color: 03cafc
description: "Relevant to vlang"
- name: csharp
color: 08400a
description: "Relevant to csharp"
- name: java
color: ad690a
description: "Relevant to java"
- name: markdown
color: 454545
description: "Relevant to markdown"

176
.github/workflows/CPP.yml vendored Normal file

@ -0,0 +1,176 @@
# Workflow for cpp
name: cpp
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.cpp'
jobs:
# Linting
lint-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Installing dependencies..
run: if ! apt list --installed | grep -qP ".*cppcheck.*"; then sudo apt install -y cppcheck; fi
- name: Linting..
run: cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.cpp$''); do cppcheck "$file"; done
# Kernel specific builds
build-macos-gcc-cpp:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-cpp
build-windows-gcc-cpp:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-cpp
build-macos-clang-cpp:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: building..
run: make build-clang-cpp
build-windows-clang-cpp:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: building..
run: make build-clang-cpp
# Docker builds
## Debian - testing
build-gcc-cpp-debian:
runs-on: ubuntu-latest
steps:
- uses: docker://debian/testing:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-cpp
build-clang-cpp-debian:
runs-on: ubuntu-latest
steps:
- uses: docker://debian/testing:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-cpp
## Fedora - latest
build-gcc-cpp-fedora:
runs-on: ubuntu-latest
steps:
- uses: docker://fedora/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-cpp
build-clang-cpp-fedora:
runs-on: ubuntu-latest
steps:
- uses: docker://fedora/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-cpp
## Archlinux - latest
build-gcc-cpp-archlinux:
runs-on: ubuntu-latest
steps:
- uses: docker://archlinux/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-cpp
build-clang-cpp-archlinux:
runs-on: ubuntu-latest
steps:
- uses: docker://archlinux/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-cpp
## Gentoo stage3-amd64
build-gcc-cpp-gentoo:
runs-on: ubuntu-latest
steps:
- uses: docker://gentoo/stage3-amd64:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-cpp
build-clang-cpp-gentoo:
runs-on: ubuntu-latest
steps:
- uses: docker://gentoo/stage3-amd64:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-cpp
## Exherbo
build-gcc-cpp-exherbo:
runs-on: ubuntu-latest
steps:
- uses: docker://exherbo/exherbo_ci:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-cpp
build-clang-cpp-exherbo:
runs-on: ubuntu-latest
steps:
- uses: docker://exherbo/exherbo_ci:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-cpp
# Run tests
## Exherbo (Linux representative)
check-exherbo-gcc-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- run: make check-gcc-cpp
check-exherbo-clang-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- run: make check-clang-cpp
## Windows
check-windows-gcc-cpp:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- run: make check-gcc-cpp
check-windows-clang-cpp:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- run: make check-clang-cpp
## Darwin
check-darwin-gcc-cpp:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- run: make check-gcc-cpp
check-darwin-clang-cpp:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- run: make check-clang-cpp
# Benchmarks
## Exherbo
bench-exherbo-gcc-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- name: running benchmarks..
run: make bench-gcc-cpp
bench-exherbo-clang-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- name: running benchmarks..
run: make bench-clang-cpp

22
.github/workflows/Jekyll.yml vendored Normal file

@ -0,0 +1,22 @@
# Workflow for CPP
name: Jekyll
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- 'docs/**'
jobs:
jekyll:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Get dependencies (FIXME-UPSTREAM)
run: sudo gem install jekyll
- name: Building..
# FIXME: Avoid using `cd`
run: cd docs && jekyll build

31
.github/workflows/Jekyll_publish.yml vendored Normal file

@ -0,0 +1,31 @@
# Workflow for CPP
name: Jekyll Publish
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
push:
branches:
- master
- init-new
paths:
- 'docs/_posts/**'
jobs:
jekyll:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Get dependencies (FIXME-UPSTREAM)
run: sudo gem install jekyll
- name: Building..
# FIXME: Avoid using `cd`
run: cd docs && jekyll build
- name: Deploying..
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ secrets.GITHUB_REPOSITORY }}
GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }}
uses: BryanSchuetz/jekyll-deploy-gh-pages@master

91
.github/workflows/Vlang.yml vendored Normal file

@ -0,0 +1,91 @@
# Workflow for vlang
name: vlang
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.v'
jobs:
# Kernel specific builds
build-ubuntu-vlang:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
if ! command -v v >/dev/null; then
wget https://github.com/vlang/v/releases/latest/download/v_linux.zip -O "$HOME/.cache/vlang.zip"
[ ! -d /opt/vlang ] && mkdir /opt/vlang
[ ! -d "$HOME/.cache/" ] && mkdir "$HOME/.cache/"
[ ! -f /opt/vlang/v ] && unzip "$HOME/.cache/vlang.zip" -d /opt/vlang/v
[ ! -x /usr/bin/v ] && ln -sf /usr/bin/v /opt/vlang/v
fi
- name: Building..
run: make build-vlang
build-darwin-vlang:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
if ! command -v v >/dev/null; then
wget https://github.com/vlang/v/releases/latest/download/v_linux.zip -O "$HOME/.cache/vlang.zip"
[ ! -d /opt/vlang ] && mkdir /opt/vlang
[ ! -d "$HOME/.cache/" ] && mkdir "$HOME/.cache/"
[ ! -f /opt/vlang/v ] && unzip "$HOME/.cache/vlang.zip" -d /opt/vlang/v
[ ! -x /usr/bin/v ] && ln -sf /usr/bin/v /opt/vlang/v
fi
- name: Building..
run: make build-vlang
build-windows-vlang:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
ECHO fixme
EXIT
- name: Building..
run: make build-vlang
# Docker builds
build-vlang-debian:
runs-on: ubuntu-latest
steps:
- uses: docker://debian/testing:latest
- uses: actions/checkout@v2
- name: building..
run: make build-vlang
build-vlang-fedora:
runs-on: ubuntu-latest
steps:
- uses: docker://fedora/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-vlang
# Run tests
check-vlang:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest, windows-latest, ubuntu-18.04]
steps:
- uses: actions/checkout@v2
- name: running tests..
run: make check-vlang
# Benchmarks
bench-vlang:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest, windows-latest, ubuntu-18.04]
steps:
- uses: actions/checkout@v2
- name: running benchmarks..
run: make bench-vlang

23
.github/workflows/bash.yml vendored Normal file

@ -0,0 +1,23 @@
name: Bash
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.bash'
jobs:
# Linting
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Installing dependencies..
run: if ! apt list --installed 2>/dev/null | grep -q ".*shellcheck.*"; then apt install -y shellcheck; fi
- name: Linting..
run: |
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.bash$'); do
printf 'linting bash file %s' "$file"
shellcheck --external-sources --shell=bash "$file"
done

208
.github/workflows/clang.yml vendored Normal file

@ -0,0 +1,208 @@
# Workflow for CPP
name: C
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.c'
jobs:
# Linting
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Installing dependencies..
run: if ! apt-list --installed cppcheck | grep -q ".*cppcheck.*"; then sudo apt install -y cppcheck; fi
- name: Linting..
run: cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.c$'); do cppcheck "$file"; done
## Valgrind test on gcc
valgrind-gcc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Installing dependencies..
run: if ! apt list --installed | grep -q ".*valgrind.*"; then sudo apt install -y valgrind; fi
- name: Linting..
run: |
make build-gcc-c
# NOTICE: This requires to input the arguments invidually
# FIXME: Use regex to gather arguments
valgrind --leak-check=full -v build/build-gcc-c/zernit-gcc-c -h -unexpected
## Valgrind on clang
valgrind-clang:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Installing dependencies..
run: if ! apt list --installed | grep -qP ".*valgrind.*"; then sudo apt install -y valgrind; fi
- name: Linting..
run: |
make build-clang-c
# NOTICE: This requires to input the arguments invidually
# FIXME: Use regex to gather arguments
valgrind --leak-check=full -v build/build-clang-c/zernit-clang-c -h -unexpected
# Kernel specific builds
build-macos-gcc-c:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-c
build-windows-gcc-c:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-c
build-macos-clang-c:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Building..
run: make build-clang-c
build-windows-clang-c:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Downloading dependencies..
run: Invoke-WebRequest -OutFile LLVM-3.7.0-win64.exe https://releases.llvm.org/3.7.0/LLVM-3.7.0-win64.exe
- name: Install dependencies..
run: |
echo FIXME_INSTALL_CLANG
EXIT
- name: Building..
run: make build-clang-c
# Docker builds
## Debian - testing
build-gcc-c-debian:
runs-on: ubuntu-latest
steps:
- uses: docker://debian/testing:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-c
build-clang-c-debian:
runs-on: ubuntu-latest
steps:
- uses: docker://debian/testing:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-c
## Fedora - latest
build-gcc-c-fedora:
runs-on: ubuntu-latest
steps:
- uses: docker://fedora/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-c
build-clang-c-fedora:
runs-on: ubuntu-latest
steps:
- uses: docker://fedora/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-c
## Archlinux - latest
build-gcc-c-archlinux:
runs-on: ubuntu-latest
steps:
- uses: docker://archlinux/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-c
build-clang-c-archlinux:
runs-on: ubuntu-latest
steps:
- uses: docker://archlinux/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-c
## Gentoo stage3-amd64
build-gcc-c-gentoo:
runs-on: ubuntu-latest
steps:
- uses: docker://gentoo/stage3-amd64:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-c
build-clang-c-gentoo:
runs-on: ubuntu-latest
steps:
- uses: docker://gentoo/stage3-amd64:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-c
## Exherbo
build-gcc-c-exherbo:
runs-on: ubuntu-latest
steps:
- uses: docker://exherbo/exherbo_ci:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-c
build-clang-c-exherbo:
runs-on: ubuntu-latest
steps:
- uses: docker://exherbo/exherbo_ci:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-c
# Run tests
## Exherbo (Linux representative)
check-exherbo-gcc-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- run: make check-gcc-c
check-exherbo-clang-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- run: make check-clang-c
## Windows
check-windows-gcc-cpp:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- run: make check-gcc-c
check-windows-clang-cpp:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- run: make check-clang-c
## Darwin
check-darwin-gcc-cpp:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- run: make check-gcc-c
check-darwin-clang-cpp:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- run: make check-clang-c
# Benchmarks
## Exherbo
bench-exherbo-gcc-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- name: running benchmarks..
run: make bench-gcc-cpp
bench-exherbo-clang-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- name: running benchmarks..
run: make bench-clang-cpp

13
.github/workflows/greetings.yml vendored Normal file

@ -0,0 +1,13 @@
name: ConaIsa
on: [pull_request, issues]
jobs:
greeting:
runs-on: ubuntu-latest
steps:
- uses: actions/first-interaction@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-message: 'FIXME: Message for issues'
pr-message: 'FIXME: Message for merge requests'

23
.github/workflows/label-maker.yml vendored Normal file

@ -0,0 +1,23 @@
name: ConaIsa
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '*.labels\.yml$'
jobs:
labeler:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Assigning labels
if: success()
uses: crazy-max/ghaction-github-labeler@v1
with:
yaml_file: .github/labels.yml
skip_delete: false
dry_run: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

19
.github/workflows/labeler.yml vendored Normal file

@ -0,0 +1,19 @@
# Workflow to associate labels automatically
name: Label management
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
jobs:
label:
runs-on: ubuntu-latest
steps:
# We need to checkout the repository to access the configured file (.github/label-pr.yml)
- uses: actions/checkout@v2
- name: Labeler
uses: docker://decathlon/pull-request-labeler-action:2.0.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Here we can override the path for the action configuration. If none is provided, default one is `.github/label-pr.yml`
CONFIG_PATH: ${{ secrets.GITHUB_WORKSPACE }}/.github/label-pr.yml

23
.github/workflows/markdown.yml vendored Normal file

@ -0,0 +1,23 @@
name: Markdown
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.md'
jobs:
# Linting
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Installing dependencies..
run: if ! command -v markdownlint; then sudo npm install -g markdownlint-cli; fi
- name: Linting..
run: |
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.md$'); do
printf 'linting markdown file %s' "$file"
markdownlint "$file" --ignore node_modules
done

306
.github/workflows/python.yml vendored Normal file

@ -0,0 +1,306 @@
# Workflow for python
name: Python
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.py'
jobs:
# Linting 3.5
lint-linux-python-3_5:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.5
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-macos-python-3_5:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.5
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-window-python-3_5:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.5
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
# Linting 3.6
lint-linux-python-3_6:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.6
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-macos-python-3_6:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.6
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-window-python-3_6:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.6
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
# Linting 3.7
lint-linux-python-3_7:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-macos-python-3_7:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-windows-python-3_7:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
# Linting 3.8
lint-linux-python-3_8:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-macos-python-3_8:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-windows-python-3_8:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done

83
.github/workflows/rustlang.yml vendored Normal file

@ -0,0 +1,83 @@
# Workflow for Rustlang
name: Rustlang
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.rs'
jobs:
# Kernel specific builds
ubuntu-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Building..
run: cargo build
macos-build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Building..
run: cargo build
windows-build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Building..
run: cargo build
# Docker builds
debian-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://debian:testing
- name: Building..
run: cargo build
fedora-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://fedora:latest
- name: Building..
run: cargo build
fedora-next-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://fedora:rawhide
- name: Building..
run: cargo build
archlinux-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://archlinux:latest
- name: Building..
run: cargo build
gentoo-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://gentoo/stage3-amd64:latest
- name: Building..
run: cargo build
# Run tests
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Testing..
run: cargo test
# Benchmarks
bench:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Benchmarking..
run: cargo bench

24
.github/workflows/shell.yml vendored Normal file

@ -0,0 +1,24 @@
name: Shell
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.sh'
jobs:
# Linting
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Installing dependencies..
run: if ! apt list --installed | grep -qP ".*shellcheck.*"; then apt install -y shellcheck; fi
- name: Linting..
# FIXME: False triggers on files which names continues after `.sh` i.e `something.sh.something`
run: |
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.sh$'); do
printf 'linting shell file %s' "$file"
shellcheck --external-sources --shell=sh "$file"
done

17
.github/workflows/stale.yml vendored Normal file

@ -0,0 +1,17 @@
name: Staler
on:
schedule:
- cron: "0 0 * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'Stale issue message'
stale-pr-message: 'Stale pull request message'
stale-issue-label: 'no-issue-activity'
stale-pr-label: 'no-pr-activity'

18
.gitignore vendored Normal file

@ -0,0 +1,18 @@
# FIXME: Move in '.git/info/exclude' once branch is determined ?
# Autogenerated by Cargo no need to keep in repo
Cargo.lock
# Exclude all backup files
*.bak
*.bk
# Exclude build result
/target
/build
# Ignore vendor files
/vendor
# Do not include clap benches in the commits
/benches/rustlang/claprs*

13
.gitpod.yml Normal file

@ -0,0 +1,13 @@
image:
file: gitpod/gitpod.Dockerfile
vscode:
extensions:
- kalitaalexey.vscode-rust@0.4.2:iw09QffwKU6Xcxr7C2zalA==
- Swellaby.vscode-rust-test-adapter@0.11.0:Xg+YeZZQiVpVUsIkH+uiiw==
- bungcip.better-toml@0.3.2:3QfgGxxYtGHfJKQU7H0nEw==
- hbenl.vscode-test-explorer@2.15.0:koqDUMWDPJzELp/hdS/lWw==
- belfz.search-crates-io@1.2.1:kSLnyrOhXtYPjQpKnMr4eQ==
- serayuzgur.crates@0.4.7:HMkoguLcXp9M3ud7ac3eIw==
- timonwong.shellcheck@0.9.0:hsU/Rd39aqPYowTqL+DbXg==
- krosf.vscode-valgrind@0.0.1:YTn5lOY8OnPKJYDqJPr/Sg==

246
.travis.yml.krey Normal file

@ -0,0 +1,246 @@
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# Based in part upon 'travis.yml' from rsplib (https://raw.githubusercontent.com/dreibh/rsplib/master/.travis.yml), which is:
# Copyright (C) 2018-2019 by Thomas Dreibholz <dreibh@iem.uni-due.de> as GPLv3 or any other GPL at your option
sudo: required
# Use matrix to run tests on different environments
matrix:
include:
## BUILD ##
# Exherbo Linux
# Exherbo with GCC
- name: "Exherbo Linux with GCC"
os: linux
dist: bionic
group: exherbo
cache:
directories:
- /var/db/paludis
env:
DOCKER="exherbo_ci:latest"
VARIANT="exherbo"
TOOL="build"
COMPILER_C="gcc"
COMPILER_CXX="g++"
# Exherbo with Clang
- name: "Exherbo Linux with Clang"
os: linux
dist: bionic
group: exherbo
cache:
directories:
- /var/db/paludis
env:
DOCKER="exherbo_ci:latest"
VARIANT="exherbo"
TOOL="build"
COMPILER_C="clang"
COMPILER_CXX="clang++"
# Ubuntu Linux
# Ubuntu 19.10 (Eoan Ermine) with GCC
- name: "Ubuntu 19.10 (Eoan Ermine) with GCC"
os: linux
cache:
directories:
- /var/cache/apt/
dist: bionic
group: travis_latest
env:
DOCKER="ubuntu:eoan"
VARIANT="ubuntu-19.10"
TOOL="build"
COMPILER_C="gcc"
COMPILER_CXX="g++"
REPOSITORY="https://github.com/RXT0112/Zernit.git"
PACKAGES="git make cargo rustc"
# Ubuntu 19.10 (Eoan Ermine) with Clang
- name: "Ubuntu 19.10 (Eoan Ermine) with Clang"
os: linux
cache:
directories:
- /var/cache/apt/
dist: bionic
group: travis_latest
env:
DOCKER="ubuntu:eoan"
VARIANT="ubuntu-19.10"
TOOL="build"
COMPILER_C="clang"
COMPILER_CXX="clang++"
REPOSITORY="https://github.com/RXT0112/Zernit.git"
PACKAGES="git make cargo rustc"
# Debian Linux
# Debian Testing
- name: "Debian Testing with GCC"
os: linux
dist: bionic
group: travis_latest
env:
DOCKER="debian:testing"
VARIANT="debian-testing"
TOOL="build"
COMPILER_C="gcc"
COMPILER_CXX="g++"
REPOSITORY="https://github.com/RXT0112/Zernit.git"
PACKAGES="rustc cargo git make pkg-config libssl-dev"
- name: "Debian Testing with Clang"
os: linux
dist: bionic
group: travis_latest
env:
DOCKER="debian:testing"
VARIANT="debian-testing"
TOOL="build"
COMPILER_C="clang"
COMPILER_CXX="clang++"
REPOSITORY="https://github.com/RXT0112/Zernit.git"
PACKAGES="rustc cargo git make pkg-config libssl-dev"
# # Debian Sid
# - name: "Debian Sid with GCC"
# os: linux
# dist: bionic
# group: travis_latest
# env:
# DOCKER="debian:sid"
# VARIANT="debian"
# TOOL="build"
# COMPILER_C="gcc"
# COMPILER_CXX="g++"
# REPOSITORY="https://github.com/RXT0112/Zernit.git"
# PACKAGES="rustc cargo build-essentials make"
# - name: "Debian Sid with Clang"
# os: linux
# dist: bionic
# group: travis_latest
# env:
# DOCKER="debian:sid"
# VARIANT="debian"
# TOOL="build"
# COMPILER_C="clang"
# COMPILER_CXX="clang++"
# REPOSITORY="https://github.com/RXT0112/Zernit.git"
# PACKAGES="rustc cargo build-essentials make"
# # FreeBSD
# # FreeBSD 12.0-RELEASE
# - name: "FreeBSD 12.0-RELEASE with Clang"
# os: linux
# dist: bionic
# group: travis_latest
# env:
# QEMU="FreeBSD"
# VARIANT="12.0-RELEASE"
# TOOL="build"
# COMPILER_C="clang"
# COMPILER_CXX="clang++"
# - name: "FreeBSD 12.0-RELEASE with GCC"
# os: linux
# dist: bionic
# group: travis_latest
# env:
# QEMU="FreeBSD"
# VARIANT="12.0-RELEASE"
# TOOL="build"
# COMPILER_C="gcc"
# COMPILER_CXX="g++"
# FIXME: MacOS needs refactor of C programs to be compatible (https://travis-ci.org/Kreyrock/Kreyrock/jobs/620509927?utm_medium=notification&utm_source=github_status)
# MacOS X
## MacOS 10.14
- name: "MacOS 10.14, xcode11.2 with clang"
os: osx
cache:
- /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
osx_image: xcode11.2
compiler: clang
group: travis_latest
env:
TOOL="build"
- name: "MacOS 10.14, xcode11.2 with gcc"
os: osx
cache:
- /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
osx_image: xcode11.2
compiler: gcc
group: travis_latest
env:
TOOL="build"
## MacOS 10.14.4
- name: "MacOS 10.14.4, xcode10.3 with clang"
os: osx
cache:
- /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
osx_image: xcode10.3
compiler: clang
group: travis_latest
env:
TOOL="build"
- name: "MacOS 10.14.4, xcode10.3 with gcc"
os: osx
cache:
- /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
osx_image: xcode10.3
compiler: gcc
group: travis_latest
env:
TOOL="build"
## MacOS 10.13
- name: "MacOS 10.13, xcode9.4 with clang"
os: osx
cache:
- /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
osx_image: xcode9.4
compiler: clang
group: travis_latest
env:
TOOL="build"
- name: "MacOS 10.13, xcode9.4 with gcc"
os: osx
cache:
- /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
osx_image: xcode9.4
compiler: gcc
group: travis_latest
env:
TOOL="build"
# Others
# Default linux
- name: "Linux, default check"
os: linux
dist: bionic
group: travis_latest
env:
TOOL="check"
# Windows
# - name: "Windows build"
# os: windows
# env:
# TOOL="build"
before-install:
- QA/travis-ci/before-install.sh
install:
- QA/travis-ci/install.sh
script:
- QA/travis-ci/test.sh
- QA/travis-ci/build.sh

28
Cargo.toml Normal file

@ -0,0 +1,28 @@
# Reference https://doc.rust-lang.org/cargo/reference/manifest.html
[package]
name = "zernit"
description = "FIXME: description needed"
keywords = ["system-manager"]
version = "0.0.0"
authors = ["Kreyren <KostWarCZE@RiXotStudio.cz>"]
edition = "2018"
# FIXME: Implement automation that bumps the dependencies in a new commit to make it easier to track dependency-caused issues
[dependencies]
# FIXME: Replace with latest once development is in gold
clap = "2.33.0"
# Used for repository management as alternative to 'make'
cargo-make = "0.27.0"
# Used for reading toml files
toml = "0.5.6"
# Custom logging solution
zernit-logger = { path = "src/libs/rustlang/zernit-logger" }
[dev-dependencies]
# Used for benchmarking
criterion = "0.3.1"
[[bench]]
name = "example_bench"
harness = false

156
LICENSE/EN-LICENSE.md Normal file

@ -0,0 +1,156 @@
<!--
Expecting
- Paid for commercial use (small fee maybe depending on the amount of employees) unless said person is actively contributing to the repository (free-of-charge)
- Do not allow keeping the source code closed
- Forks are allowed only for contribution unless upstream prevents implementation (excluding changes to the license over which the upstream has full control for obvious reasons, but allow contributions to the license) of a feature for which the fork would be allowed as standalone (This is made to direct the workflow)
- Add method to handle projects that rewrite this in a different programming language -> Host in our organization
- Anyone can request additional rights for the use of this software (We try to make this as free as possible with the option to finance the development)
- Paid for non-contributing users?
- Since non-contributing users are basically investment (usually with low return value) of our resources and to encourage contribution in docummentation, etc..?
-->
# RXT ZERNIT LICENSE (RXT0112-LICENSE)
Version 18061016022020, 20 January 2020
Copyright (C) 2020 [RiXotStudio](http://rixotstudio.cz)<br/>
Copyright (C) 2019 [Jacob Hrbek](mailto:kreyren@rixotstudio.cz)
Redistribution of this license is not allowed unless explicitly stated in the license itself assuming provided conditions met.
<center><h4>Preamble</h4></center>
This license is made to protect the intellectual property and direct workflow of project codenamed as **RXT0112** also known as **Zernit** publicly represented on hyperlink https://github.com/RXT0112/Zernit and understood as original repository where this license is developed based on [GPL-3 license](https://www.gnu.org/licenses/gpl-3.0.en.html) and [Free Software Foundation](https://www.fsf.org) philosophy adapted for commercial use with the intention to avoid segmentation while providing sustainable business plan to provide open-source software for everyone.
License is designed to be community maintained where only the authorized personel further identified in this file are permitted to make changes in the original repository in which this license has been created.
These authorized personel can be also clarified in file located in `.github/CODEOWNERS` with syntax explanation on hyperlink https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners to appropriate GitHub Team or personal to allow making changes in this file which has to be archived using `git` which is version-control system for tracking changes in source code further explained by it's maintainers on hyperlink https://git-scm.com/.
This file is written in markdown syntax further explained on hyperlink https://en.wikipedia.org/wiki/Markdown.
## 0. TERMINOLOGY
This section is dedicated to provide explanation of used terms in this file.
You are encouraged to contribute in case required explanation of used terms is missing or is not sufficient.
### Comments
Comments are a feature in markdown syntax that do not render the appropriate section specified by this syntax on the final version and is not meant to be a part of final version due it's usage for development of this license.
To elaborate further every comment is prefixed with `<!--` and suffixed with `-->` which can be applied through multiple lines.
Example of comments:
<!-- I'm example! :) -->
Notice that said example is not rendered in the final version.
#### FIXME comments
FIXME comments are lines in this documment prefixed with `FIXME:` which are also considered as not part of the final form of this document due to it's usage to direct development of this license.
Example of FIXME comment:
FIXME: Hello, i'm example of FIXME comment
### Source code
Source code is a collection of text recognized by compiler that are used to perform specified action in the hardware itself.
### Repositories
Repositories are a method to provide source code for public which are in our case provided on GitHub presented under hyperlink https://www.github.com/RXT0112/Zernit as of 16.02.2020.
### Upstream
Upstream is original creator of said directory or files used on this project not to be confused with original creator who is understood to be upstrem for this project.
### Paths
Unless it is not obvious paths are representing physicall files or directories in this repository for example:
path `src/bin/main.rs` points to file located in repository use
### Original Creator (or 'OC' for short)
Original Creator of this repository is `Jacob Hrbek <kreyren@rixotstudio.cz>`.
FIXME: Limit my power as you see appropriate, this is done to avoid unexpected abuse of the license in early development which could have kill the project. - Kreyren
OC reserves absolute right for whole repository to decide hierarchy of parties associated in this repository, change of read and write access and revoking of the license for any party with or without provided reason.
### Repository Managers
Repository Managers are defined as service with the ability to provide our project for the general public in on-line form.
### Merge Request
Also wrongly named as 'Pull Requst' by many repository managers is method to submit new changes in the target repository.
#### Draft Merge Requests
Referencing https://github.blog/2019-02-14-introducing-draft-pull-requests/ for upstream (GitHub, Inc.) explanation.
In short this is merge request which is being worked on before it can be submitted for review and considered for merge in target repository.
### Forks
Forks are repository manager's features that allows anyone to make a copy of a repository in their specified profile.
## 1. CONDITIONS
### Conflicts with local laws
This license explicitly does not allow any use of RXT0112's intellectual property in a scenario where license implementation conflicts with local laws in the area of use of said intellectual property.
For the license to grant expected permission you are required to inform the project about said conflicts with proper references and/or submit a merge request with required improvements to allow these expected permissions.
### Your agreenment
You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify, use or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by using, modifying or distributing the intellectual property of project RXT0112 (or any work based on the Program), you indicate your acceptance of this License to do so, and in all of its terms and conditions.
### Contributions
Everyone is allowed to fork this repository as long as the source code stays public with the intention to provide a contribution to the original repository.
Creating standalone forks alike creating standalone fork with the intention to provide unique features that are not developed with the intention to contribute the changes in original repository are not allowed and OC reserves an explicit permission to revoke license of those who violate this condition to the extent permitted by the law with the intention to avoid segmentation.
- If the difference between original repository and standalone fork is a feature which is not beneficial to the original repository decided by OC then the standalone fork is allowed for the period of which this still meets this requirement.
Contributions of new features are expected to be submitted in a form of new merge request set as draft until reviw is requested by switching the contribution from draft to open.
Contributor has the right to specify his own license assuming following methods used:
- License specified as comment in the header (or at the top) of the file which will apply only for specified file
This clarification has to follow this syntax:
```
Created by Jon Doe <jon@doe.wow> using LICENSE (hyperlink://on.theLicense.wow) in 2020
```
- `LICENSE` or `LICENSE.md` file created in the root of directory which will be applied for the whole directory.
All affiliated parties that changed content provided in original repository are required to place following signature in their commit messages to prove that they agree with terms provided in said license and the terms in following versions which they have the right to influence.
```
Signed-off-by: Jon Doe <jondoe@example.foo>
```
### Methods used to maintain this license
This license is based on rolling release development which means that version is made by using following syntax HHMMSSDDMMYY which represents the day on which the license has been updated where the most recent version always replaces the previous version.
Example of syntax used for versioning:
**18061016022020** meaning **16th February of the year 2020 at 18 hours, 6 minutes and 10 seconds**
## 2. Your permission
These permissions are granted as part of our ongoing effort to comply with Free Software Foundation's philosophy, it's as of 17/02/20 is not perfect based on majority of FSF members discussed in https://forum.members.fsf.org/t/help-me-with-gpl-3-inspired-license-designed-for-commercial-use-and-to-avoid-segmentation/1953/59 and we encourage contribution and challenges if you have a better solution since it's in our best interest to provide best possible environment for further development and end-user satisfaction.
### Use of intellectual property for personal use
Assuming that conditions in this license are not breached then you are allowed to use intellectual property of project RXT0112 for personal use unless stated otherwise by other license which use is specified in contributing condition.
### Permission to modify the intellectual property
You are allowed to perform any changes to the intellectual property that does not include features that are suitable for original repository.
You have the right to modify and/or maintain specific section of a project in original repository with official support and guidance from the project for free as long as your contribution passes code quality checks (excluding false trigger caused by a bug) and review from other contributors.
You have the right to use your contribution outside of original repository if maintainers of original repository does not allow for the feature to be implemented.
### Distribution of malware
We do not grant you a permission to distribute our intellectual property with a malicious code that is directly and/or indirectly made to harm the end-user which includes handling of end-user's data without explicit permission by the end-user.
### Usage by whitehat hackers
You have the right to use intellectual property with the intention to fix security issues in our project and other systems as long as your work does not directly harm our project.
White hat hackers are also welcomed by the project and their work is highly appreciated.
### Usage in weapons
We do not grant you a permission to use our intellectual property as a part of a mechanism that is designed to cause a harm to a living organism.
## 3. Warranty
This program is provided without any warranty unless required by law in which case the party which requires said implementation of law in this license is required to inform the project for said laws to be implemented in this license so that the the program can be used legally in their area as stated in conditions above.
Warranty can also be specified based on invidual contract or agreenment with party that requires it.

3
LICENSE/README.md Normal file

@ -0,0 +1,3 @@
This directory contains license used for the whole repository unless defined otherwise in the license itself.
Everyone has the right to propose new changes for review with reasoning to why they should be adapted.

102
LICENSE/license-abstract.md Normal file

@ -0,0 +1,102 @@
The licensing has been discussed in FSF which is due to the activity and info provided getting out of hand for me to process all the informations and resolve duplicate questions thus this file has been created hopefully being usable for the project in the future.
# What is this?
Summary: This is project codenamed as RXT0112 with assigned name Zernit currently hosted on https://github.com/RXT0112/Zernit which is expected to be system/package-manager that is expected to supports any downstream on any kernel with custom dowsntream method.
Project supports all programming languages and it's file hiearchy has been adapted for this workflow
- currently with issues in cargo (rustlang crate manager and compiler) and vlang that are currently in works.
Project currently has 248 checks that trigger based on files changed designed to ensure code quality with option to make custom solution where needed.
Developed with optional GUI to allow software modding (i.e game modding using GUI)
- Due to the usage of games it is designed to allow proprietary software with option to help developers to convert their code on open-source where it would make sense.
Project requires redistribution of downstream so that end-user would be able to download the instructions
- Using mirrors of official downstream
- Using P2P of official and unofficial instructions (using blockchain-like structure so that end-user would be able to download the required instructions without limitations on our end)
- Allows 3rd party sources so that everyone can make their own packages, mods, etc..
Project is planned to have mentoring program for end-users/contributors for free to learn programming language and how to contribute/use the software properly
- Mentoring program will have IRC to Discord to Matrix.org to zulip bridge set up in case end-user requires help through chat
- Forum is expected to be set up for complicated issues only
- Documentation is hosted using jekyll which will be referenced during support in case it mensions the solution with additional support in case the content is not fully understood.
- If the content is not fully understood or documentation is missing required info the supportee will be encouraged to make a contribution (inspired by archlinux/gentoo)
Project expects stable economy that would allow bug bounties and optional method to pay contributors for their productivity.
Original creator plans on making OSS hardware which is expected to be covered by this project as well.
Business plan that would allow for a stable profit is preferred.
This project is designed to be compatible with four freedoms mensioned on https://www.gnu.org/philosophy/free-sw.en.html
## Issues
### Mentoring program
Inspired by exherbo.org approach this project does not expect help-vampires that expects babysitting that would cost the project it's resources
- End-users that are willing to learn and are asking relevant informations are always welcomed and for these we designed this program
- Mentoring program is expected to be for free to avoid placing a paywall on end-user's competence and to avoid mentors rushing through with the education to maximalize their profit while sacrificing the end-user's education.
- Original creator has community of students that are already following this ideology of free education and are expected to perform as mentors on this project.
Based on my understanding and info provided by exherbo and my experience with them i believe that exherbo has implemented what i would call “filtering mechanism” which makes the distro not usable or pain to use for users (confusing the end-user with wrong info, banning end-users, etc… ) and keeps only contributors and developers capable of maintaining it.
Since to use the distro you need an access to repositories and know how to make the downstream in case you encounter blocking bug (which happens a lot) and the initial installation using tarball seems to be made to make the initial compilation painful to do due to the blocks, banned features without which the package manager won’t resolve the packages and requires configuration of /etc/paludis which may take hours-weeks to do without proper documentation and guidance.
For example there were few users enraged by this that they made https://web.archive.org/web/20190302155000/https://exherbo.com/ and pages purposely spreading false informations about the creator one of which is still up https://bryanostergaard.com/ (the creator is friendly and nice guy don’t believe the info provided on mensioned websites).
Which is what inspired this approach, but i want to make it more user-friendly to avoid confused users that are just not willing to learn how to use the software properly that would otherwise cause a segmentation of them making weird forks that has code quality issues and breaks the software in a way that fixes their issue by breaking other X functions.
### Segmentation
Referencing ripple project on https://github.com/osuripple/lets/pull/5 this project is expected to have a method to avoid segmentation of the project to comply with four freedoms it has been developed as such:
- Standalone forks are not allowed unless upstream prevents a feature to be implemented.
- Contribution forks are welcomed assuming that contributor makes a draft merge request to the original repository for the porpose of code-quality and direct upstream support
- Competent and trusted contributors will be able to get write access to relevant files, but reviews will be encouraged even with this access.
### Redistribution
Malware in distributed files is a concern
- Digital distribution is expected to be handled by upstream
- There is expected to be set of rules maintained by upstream and community to ensure that the digital distribution is safe to use
- Project will issue a warning to third party if these rules are not met and do it's best to help with compliance with these rules
- If third party does not comply with these rules even after it has been warned the project will take legal action.
- Digital distribution will always have checksums
- in case upstream gets compromised
- in case repository hoster gets compromised
- in case end-user downloads corrupted file
- Physicall distribution is expected to be handled by upstream and authorised parties
- There is expected to be set of rules maintaned by upstream and community to ensure safety of these physicall copies
- From business point of view upstream expects cut from profit
- Will be bundled with checksum hosted on remote in case the physical device gets corrupted or mishandled
Project is rolling release with version control
- Physical distribution of rolling releases is not allowed to avoid unsable software distribution and outdated software.
### Profit
Project is expected to have stable economy to sustain bug bounties, it's activity and ideally improve wealth of original creator.
- Project is expected to be paid for commercial use
- Project considers paid license for non-contributing members assuming it being implemented in a way that would motivate end-users from being help-vampires without sacrificing four freedoms
- Support provided by the project is expected to be always free.
- It was discussed that offering priority based on end-user's support of the project could be prioritized
- i.e person who donates with money have priority over regular person and person who actively contributes in the source code would have priority over those who donate (possible to reduce help-vampires)
- Project accepts donations
- Project accepts sponsorships
- Project is designed to be for sale for X amount of time inspired by OpenSUSE's approach where original creator would stay in charge to avoid new owner from changing it's components.
- In general more funds without sacrificing four freedoms the better.
## Solutions
### Code-quality
Currently project has around 248 tests set up with expectation on 811 that are going to trigger based on files edited to help with project maintainance.
Project has set up hierarchy for reviewers that are expected to review merge requests before being merged (sourced from original creator's community for a kick-start)
mensioned mentoring project and method to handle contribution forks
### Other plans
#### Free hosting
Project is expected to provide free hosting as a part of mentoring program and to support new developers. (requires funds to handle the server cost)
- VPN hosting not allowed
- Cryptocurrency mining not allowed
- Setting up a rendering farm not allowed
#### OSS hardware development
Project's business plan is expected to handle OSS hardware development
- Currently Portable device (https://github.com/kreyware/RXT0117) and aircraft (https://github.com/kreycraft0) assuming cooperation with EAA (https://www.eaa.org/eaa) in the works.

132
Makefile Normal file

@ -0,0 +1,132 @@
# FIXME: in-code docs needed
# FIXME: Windows doesn't support makefiles natively -> if you have a better method then please MR it or make an issue
## Syntax capture ##
all:
@ printf '%s\n' "Unknown option '$1' parsed in target all"
@ exit 2
## BUILD ##
# All build targets are expected in 'build/build-LANG' where 'LANG' is the unique identifier of the language used
# FIXME: Replace 'exit 1' with helpful messages
build: build-rustlang build-clang-c build-gcc-c build-gcc-ccp build-clang build-brainfuck build-python build-vlang build-golang
@ printf 'WARN: %s\n' "You are abould to build all targets on multilang project"
# FIXME: Build in '$repodir/build/build-rustlang' instead of '$repodir/target' for multilang support
build-rustlang:
@ cargo build --verbose
# FIXME: Add logic
build-clang-c:
@ # Make a build directory
@ [ ! -d build ] && { mkdir build || exit 1 ;} || exit 0
@ [ ! -d build/build-clang-c ] && { mkdir build/build-clang-c || exit 1 ;} || exit 0
@ # Compilation
@ [ ! -f build/build-clang-c/zernit-clang-c ] && { clang src/bin/main.c -o build/build-clang-c/zernit-clang-c || exit 1 ;} || exit 0
@ printf '%s\n' "Compilation of target for clang-c finished"
build-gcc-c:
@ # Make a build directory
@ [ ! -d build ] && { mkdir build || exit 1 ;} || exit 0
@ [ ! -d build/target-gcc-c ] && { mkdir build/build-gcc-c || exit 1 ;} || exit 0
@ # Compilation
@ [ ! -f build/build-gcc-c/zernit-gcc-c ] && { gcc src/bin/main.c -o build/build-gcc-c/zernit-gcc-c || exit 1 ;} || exit 0
@ printf '%s\n' "Compilation of target for gcc-c finished"
# FIXME: Replace 'exit 1' with helpful messages
build-gcc-ccp:
@ # Make a build directory
@ [ ! -d build ] && { mkdir build || exit 1 ;}
@ [ ! -d build/target-gcc ] && { mkdir build/build-gcc || exit 1 ;}
@ # Compilation
@ [ ! -f build/build-gcc ] && { gcc src/bin/main.c -o build/build-gcc/gcc-zernit || exit 1 ;}
@ printf '%s\n' "Compilation of target for gcc finished"
build-clang-ccp:
@ printf 'FIXME: %s\n' "translate zernit in clang"
@ exit 1
build-brainfuck:
@ printf 'FIXME: %s\n' "translate zernit in brainfuck"
@ exit 1
# FIXME: requires python3.6+ and pip3
build-python:
@ pip3 install -r requirements.txt
build-vlang:
@ [ ! -d build ] && mkdir build
@ [ ! -d build/build-vlang ] && mkdir build/build-vlang
@ /opt/vlang/v -o build/build-vlang/zernit-vlang src/bin/main.v
build-golang:
@ [ ! -d build ] && mkdir build
@ [ ! -d build/build-golang ] && mkdir build/build-golang
@ go build -o build/build-golang/zernit-golang src/bin/main.go
## CHECK/TESTS ##
check:
@ printf 'FIXME: %s\n' "Check all targets if executed"
@ exit 1
check-gcc-c:
@ printf 'FIXME: %s\n' "Add tests for gc"
@ exit 1
check-clang-c:
@ printf 'FIXME: %s\n' "Add tests for gcc"
@ exit 1
check-gcc-ccp:
@ printf 'FIXME: %s\n' "Add tests for clang"
@ exit 1
check-python:
@ printf 'FIXME: %s\n' "Add tests for python"
@ exit 1
check-rustlang:
@ printf 'FIXME: %s\n' "Add tests for rustlang"
@ exit 1
check-brainfuck:
@ printf 'FIXME: %s\n' "Add tests for brainfuck"
@ exit 1
check-shell:
@ printf 'FIXME: %s\n' "Add tests for shell"
@ exit 1
check-bash:
@ printf 'FIXME: %s\n' "Add tests for bash"
@ exit 1
check-vlang:
@ printf 'FIXME: %s\n' "Add tests for vlang"
@ exit 1
## BENCHES ##
# FIXME: Run all benches if this is executed
bench: bench-rustlang
# FIXME: Run vendor and
bench-rustlang:
@ cargo bench
## CLEAN ##
clean: clean-vendor clean-benches
@ [ -d build ] && { rm -rf build || exit 1 ;} || exit 0
@ printf '%s\n' "Build directory has been cleaned"
clean-vendor:
@ # FIXME: Output helpful message if directory doesn't exists
@ [ -d vendor ] && { rm -rf vendor || exit 1 ;} || exit 0

1
QA/README.md Normal file

@ -0,0 +1 @@
Backend for Quality Assurance

10
QA/circle-ci/config.yml Normal file

@ -0,0 +1,10 @@
version: 2.1
orbs:
shellcheck: circleci/shellcheck@1.3.15
jobs:
build:
docker:
- image: circleci/node:4.8.2 # the primary container, where your job's commands are run
steps:
- checkout # check out the code in the project directory
- run: make check

13
QA/common/qemu_debian.sh Executable file

@ -0,0 +1,13 @@
#!/bin/sh
die() { printf 'FATAL: %s\n' "$1" && exit 1 ;}
[ ! -e debian.qcow ] && { qemu-img create -f qcow2 debian.qcow 20G || die 1 ;}
#qemu-system-x86_64 -drive format=raw,file=test.img
#qemu-system-x86_64 -hda debian.qcow -m 640, file=test.img
#qemu-system-x86_64 -hda ubuntu.qcow -boot d file=test.img -m 640
qemu-system-x86_64 -hda debian.qcow -boot d -cdrom debian-10.2.0-amd64-netinst.iso -m 640

9
QA/common/qemu_ubuntu.sh Executable file

@ -0,0 +1,9 @@
#!/bin/sh
die() { printf 'FATAL: %s\n' "$1" && exit 1 ;}
[ ! -e ubuntu.qcow ] && { qemu-img create -f qcow2 ubuntu.qcow 20G || die 1 ;}
wget http://releases.ubuntu.com/19.10/ubuntu-19.10-desktop-amd64.iso
qemu-system-x86_64 -hda ubuntu.qcow -boot d -cdrom ubuntu-19.10-desktop-amd64.iso -m 640

@ -0,0 +1,29 @@
FROM debian/debian:testing
USER root
# Define libraries
RUN sh -c " \
fixme() { printf 'FIXME: %s\n' "$1" ;} \
warn() { printf 'WARN: %s\n' "$1" ;} \
die() { \
printf 'FATAL: %s\n' "$1" \
exit 1 \
}"
# Install dependencies
RUN apt install -y meson cppcheck gcc libfuse3-dev gcc libcap-devgit ninja-build bison libtool autoconf pkg-config libcap-dev indent libattr1-dev fakeroot uthash-dev gzip rsync autopoint shellcheck || die "Unable to install all dependencies"
# Install shfmt (Hack!)
RUN sh -c " \
if [ "$(apt-cache search libfuse3-dev | grep -o "shfmt")" != "shfmt" ]; then \
if [ ! -e /usr/bin/shfmt ]; then \
wget https://github.com/mvdan/sh/releases/download/v3.0.0-beta1/shfmt_v3.0.0-beta1_linux_amd64 -O /usr/bin/shfmt \
[ ! -x /usr/bin/shfmt ] && chmod +x /usr/bin/shfmt \
elif [ ! -e /usr/bin/shfmt ]; then \
fi \
elif [ "$(apt-cache search libfuse3-dev | grep -o "shfmt")" = "shfmt" ]; then \
apt install -y shfmt || die "Unable to install shfmt" \
else \
die "Unexpected happend in shfmt hack" \
fi"

@ -0,0 +1,33 @@
FROM exherbo/exherbo_ci:latest
USER root
# Export paludis-config
RUN rm -r /etc/paludis && git clone https://github.com/Kreyrock/paludis-config.git /etc/paludis
# Sync repos
RUN cave sync
# Add required repositories
RUN [ ! -e /etc/paludis/repositories/alip.conf ] && cave resolve -x1 repository/alip
RUN [ ! -e /etc/paludis/repositories/compnerd.conf ] && cave resolve -x1 repository/compnerd
RUN [ ! -e /etc/paludis/repositories/virtualization.conf ] && cave resolve -x1 repository/virtualization
RUN [ ! -e /etc/paludis/repositories/danyspin97.conf ] && cave resolve -x1 repository/danyspin97
RUN [ ! -e /etc/paludis/repositories/python.conf ] && cave resolve -x1 repository/python
RUN [ ! -e /etc/paludis/repositories/perl.conf ] && cave resolve -x1 repository/perl
RUN [ ! -e /etc/paludis/repositories/hasufell.conf ] && cave resolve -x1 repository/hasufell
# Install build dependencies
RUN cave resolve sys-devel/meson sys-devel/clang sys-fs/fuse dev-scm/git sys-devel/ninja sys-devel/bison sys-devel/libtool sys-devel/autoconf dev-util/pkg-config sys-apps/fakeroot app-arch/gzip net-misc/rsync sys-devel/autoconf -x
# Install test dependencies
RUN cave resolve dev-util/cppcheck dev-util/indent dev-util/shellcheck -x
# Purge unwanted packages
RUN cave purge -x
# Remove build instructions
RUN sh -c " \
if [ -d /var/db/paludis ]; then \
rm -r /var/db/paludis || die "Unable to remove"
"

@ -0,0 +1,30 @@
FROM exherbo/exherbo_ci:latest
USER root
# Export paludis-config
RUN rm -r /etc/paludis && git clone https://github.com/Kreyrock/paludis-config.git /etc/paludis
# Sync repos
RUN cave sync
# Add required repositories
RUN [ ! -e /etc/paludis/repositories/alip.conf ] && cave resolve -x1 repository/alip
RUN [ ! -e /etc/paludis/repositories/compnerd.conf ] && cave resolve -x1 repository/compnerd
RUN [ ! -e /etc/paludis/repositories/virtualization.conf ] && cave resolve -x1 repository/virtualization
RUN [ ! -e /etc/paludis/repositories/danyspin97.conf ] && cave resolve -x1 repository/danyspin97
RUN [ ! -e /etc/paludis/repositories/python.conf ] && cave resolve -x1 repository/python
RUN [ ! -e /etc/paludis/repositories/perl.conf ] && cave resolve -x1 repository/perl
RUN [ ! -e /etc/paludis/repositories/hasufell.conf ] && cave resolve -x1 repository/hasufell
# Install build dependencies
RUN cave resolve sys-devel/meson sys-devel/gcc sys-fs/fuse dev-scm/git sys-devel/ninja sys-devel/bison sys-devel/libtool sys-devel/autoconf dev-util/pkg-config sys-apps/fakeroot app-arch/gzip net-misc/rsync sys-devel/autoconf -x
# Install test dependencies
RUN cave resolve dev-util/cppcheck dev-util/indent dev-util/shellcheck -x
# Purge unwanted packages
RUN cave purge -x
# Remove build instructions
RUN rm -r /var/db/paludis

3
QA/sourcehut/README.md Normal file

@ -0,0 +1,3 @@
This is legacy after sourcehut tests that are now blocked by https://github.com/RXT0112/Zernit/issues/51
We decided to stub this here since sourcehut it cool and we would like to use it if these problems are resolved.

26
QA/sourcehut/rustlang.yml Normal file

@ -0,0 +1,26 @@
image: archlinux
packages:
- meson
- scdoc
- wayland-protocols
- wlroots-git
- wayland
- libxkbcommon
- cairo
- cargo
- pango
- gdk-pixbuf2
- pixman
- libinput
- xorg-server-xwayland
sources:
- https://github.com/RXT0112/Zernit
tasks:
- build: |
cd Zernit
if git --no-pager diff --name-only origin/master | grep -q ".*.rs$"; then cargo build; fi
complete-build
- bench: |
cd Zernit
if git --no-pager diff --name-only origin/master | grep -q ".*.rs$"; then cargo bench; fi
complete-build

13
QA/tests/HELL/README.md Normal file

@ -0,0 +1,13 @@
# HELL - Quality assurance for (WIP name)
Welcome to HELL!
![](https://media.giphy.com/media/2U1WOzgmZVw2Y/giphy.gif)
HELL is used for the quality assurance for (WIP name)
FIXME: Documentation here
TODO
- ban echo
- ban cd

@ -0,0 +1,191 @@
#!/bin/sh
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# Based in part upon 'before-install' from rsplib (https://raw.githubusercontent.com/dreibh/rsplib/master/ci/before-install), which is:
# Copyright (C) 2018-2019 by Thomas Dreibholz <dreibh@iem.uni-due.de> as GPLv3 or any other GPL at your option
: '
This file is used to configure backend depending on expected workflow. This is for example installing dependencies for tests.
This file expects following variables:
- KERNEL = Used kernel (linux)
- VARIANT = Name of used distribution (debian)
- IDENTIFIER = name of codename or version ("bullseye" or "11")
In case DOCKER images are used:
- DOCKER = Name of used docker container (exherbo/exherbo_ci:latest)
In case QEMU is used:
- QEMU = Name of (FIXME, not implemented)
TODO
- Implement building of DOCKER images
- Implement QEMU
'
# Configure backend
if [ "$KERNEL" = linux ]; then
# Install all dependencies
info "Installing dependencies for on $KERNEL for $VARIANT-$IDENTIFIER"
case "$VARIANT-$IDENTIFIER" in
ubuntu-bionic|ubuntu-18.04)
# Install all dependencies
apt install -y \
meson cppcheck libcap-dev clang libfuse3-dev gcc git ninja-build bison libtool autoconf pkg-config libcap-dev indent fakeroot libattr1-dev uthash-dev gzip rsync autopoint uthash-dev shellcheck \
|| die "Unable to install all dependencies for $VARIANT-$IDENTIFIER"
# libfuse3-dev hack
if [ "$(apt-cache search libfuse3-dev | grep -o "libfuse3-dev")" != "libfuse3-dev" ]; then
warn "libfuse3-dev is not available on $VARIANT-$IDENTIFIER, trying to resolve manually"
apt install -y ninja-build || die 1 "Unable to install dependencies for hack"
mkdir "$HOME/build/fuse3"
fixme "Export latest fuse3 instead of hard-coded?"
if [ ! -e "$HOME/build/fuse3/fuse-3.6.2.tar.xz" ]; then
wget https://github.com/libfuse/libfuse/releases/download/fuse-3.6.2/fuse-3.6.2.tar.xz -O "$HOME/build/fuse3/fuse-3.6.2.tar.xz" || die 1 "Unable to fetch fuse"
elif [ -e "$HOME/build/fuse3/fuse-3.6.2.tar.xz" ]; then
info "File '$HOME/build/fuse3/fuse-3.6.2.tar.xz' is already fetched"
else
die 255 "Fetching fuse3 tarball"
fi
fixme "Sanitize tarball export (do not export if the tarball already exists)"
tar xpf "$HOME/build/fuse3/fuse-3.6.2.tar.xz" --directory="$HOME/build/fuse3/"
# FIXME: Sanitize - Do not create a build dir if it already exists
mkdir "$HOME/build/fuse3/fuse-3.6.2/build"
fixme "Do not use 'cd'"
cd "$HOME/build/fuse3/fuse-3.6.2/build" || die 1 "Unable to change directory in '$HOME/build/fuse3/fuse-3.6.2/build'"
meson .. --prefix /usr || die 1 "Meson failed, (FIXME: more info required)"
ninja || die 1 "ninja failed, (FIXME: more info required)"
ninja install || die 1 "ninja install failed, (FIXME: more info required)"
elif [ "$(apt-cache search libfuse3-dev | grep -o "libfuse3-dev")" = "libfuse3-dev" ]; then
info "libfuse3-dev is available on this $VARIANT-$IDENTIFIER, no need to install it manually"
apt install -y libfuse3-dev || die 1 "Unable to install libfuse3-dev"
else
die 255 "libfuse3-dev in $VARIANT"
fi
# Hack fof shfmt
if [ "$(apt-cache search shfmt | grep -o "shfmt")" != "shfmt" ]; then
warn "This system doesn't have shfmt in build instructions, trying to resolve.."
if [ -e /usr/bin/shfmt ]; then
info "shfmt is already installed, skipping hack"
elif [ ! -e /usr/bin/shfmt ]; then
info "shfmt is not installed, installing.."
# Sanitized in if statement's expression
wget https://github.com/mvdan/sh/releases/download/v3.0.0-beta1/shfmt_v3.0.0-beta1_linux_amd64 -O /usr/bin/shfmt
# Make sure that it is executable
[ ! -x /usr/bin/shfmt ] && chmod +x /usr/bin/shfmt
else
die 255 "shfmt hack in $VARIANT"
fi
elif [ "$(apt-cache search shfmt | grep -o "shfmt")" = "shfmt" ]; then
info "shfmt is available on this $VARIANT, no need to install it manually"
apt install -y shfmt
else
die 255 "shfmt hack in ubuntu"
fi
;;
ubuntu-*)
apt install -y \
meson cppcheck libcap-dev clang libfuse3-dev gcc git ninja-build bison libtool autoconf pkg-config libcap-dev indent fakeroot libattr1-dev uthash-dev gzip rsync autopoint uthash-dev shellcheck \
|| die 1 "Unable to install all dependencies for $VARIANT-$IDENTIFIER"
# Hack fof shfmt
if [ "$(apt-cache search shfmt | grep -o "shfmt")" != "shfmt" ]; then
warn "This system doesn't have shfmt in build instructions, trying to resolve.."
if [ -e /usr/bin/shfmt ]; then
info "shfmt is already installed, skipping hack"
elif [ ! -e /usr/bin/shfmt ]; then
info "shfmt is not installed, installing.."
wget https://github.com/mvdan/sh/releases/download/v3.0.0-beta1/shfmt_v3.0.0-beta1_linux_amd64 -O /usr/bin/shfmt
[ ! -x /usr/bin/shfmt ] && chmod +x /usr/bin/shfmt
else
die 255 "shfmt hack in $VARIANT"
fi
elif [ "$(apt-cache search shfmt | grep -o "shfmt")" = "shfmt" ]; then
info "shfmt is available on this $VARIANT, no need to install it manually"
apt install -y shfmt
else
die 255 "shfmt hack in $VARIANT"
fi
;;
*) die 2 "Unsupported VARIANT-IDENTIFIER - $VARIANT-$IDENTIFIER"
esac
# Docker backend
if [ -n "$DOCKER" ]; then
info "Preparing the environment to run docker image '$DOCKER'"
# Install docker dependencies
info "Installing dependencies for docker"
case "$VARIANT-$IDENTIFIER" in
ubuntu*|debian*)
apt install -y docker-io || die 1 "Unable to install docker dependencies on $VARIANT-$IDENTIFIER"
;;
*) die 2 "Unsupported VARIABLE-IDENTIFIER has been parsed in resoluting docker dependencies"
esac
case "$VARIANT-$IDENTIFIER" in
debian*|ubuntu*|exherbo*)
docker run -d --name "$DOCKER" || die 1 "Unable to run docker image '$DOCKER' on $VARIANT-$IDENTIFIER"
;;
*) die "Unsupported VARIANT-IDENTIFIER has been parsed - $VARIANT-$IDENTIRIER"
esac
# Get docker image
case "$DOCKER_IMAGE" in
*/*:*|*/*) # Fetch docker image from dockerhub
die fixme "Implement using docker images from dockerhub"
build_*) # Build docker images
info "Preparing to build docker image ${DOCKERIMAGE#build_}"
case ${DOCKER_IMAGE#build_} in
exherbo)
die fixme "Implement building exherbo docker image"
;;
*) die 255 "DOCKER_IMAGE - build"
esac
;;
*) die 255 "DOCKER_IMAGE"
esac
# In case Docker is not used
elif [ -z "$DOCKER" ]; then
info "Docker is not used, skipping configuration"
else
die 255 "Docker backend in $KERNEL"
fi
if [ -n "$QEMU" ]; then
die fixme "Implement tests on QEMU using linux"
elif [ -z "$QEMU" ]; then
info "QEMU is not used, skipping configuration"
else
die 255 "QEMU in $KERNEL"
fi
elif [ "$KERNEL" = darwin ]; then
# Homebrew takes lots of time on runtime due to the cleanup used, this is a hotfix (https://travis-ci.community/t/macosx-brew-update-takes-too-much-time/6295)
HOMEBREW_NO_INSTALL_CLEANUP=1 brew update || die "Unable to update brew repositories"
info "Installing dependencies on $KERNEL"
brew install shellcheck cppcheck shfmt || die "Unable to install dependencies on $KERNEL"
elif [ "$KERNEL" = freebsd ]; then
fixme "$KERNEL is not implemented"
else
die "Unsupported KERNEL used - $KERNEL"
fi

@ -0,0 +1,18 @@
#!/bin/sh
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# Based in part upon 'before-install' from rsplib (https://raw.githubusercontent.com/dreibh/rsplib/master/ci/before-install), which is:
# Copyright (C) 2018-2019 by Thomas Dreibholz <dreibh@iem.uni-due.de> as GPLv3 or any other GPL at your option
# Get KERNEL Variable
if [ -z "$KERNEL"]; then
case "$(uname -s)" in
Linux) KERNEL=linux ;;
Darwin KERNEL=darwin ;;
*) die 255 "Unsupported output of 'uname -s' has been parsed - $(uname -s)"
esac
elif [ -n "$KERNEL"]; then
warn "Variable 'KERNEL' is overwritten on '$KERNEL'"
else
die 255 "Getting KERNEL variable"
fi

72
QA/tests/HELL/backend/output.sh Executable file

@ -0,0 +1,72 @@
#!/bin/sh
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# Based in part upon 'before-install' from rsplib (https://raw.githubusercontent.com/dreibh/rsplib/master/ci/before-install), which is:
# Copyright (C) 2018-2019 by Thomas Dreibholz <dreibh@iem.uni-due.de> as GPLv3 or any other GPL at your option
: '
This file is used for sourcing
Used for output of various messages
- die Outputs a message and exits
- warn Output a warning
- info Output info
'
# Outputs a message and exits
# SYNOPSIS: die [num] (message)
die() {
err_code="$1"
message="$2"
case "$err_code" in
0) true ;;
1)
if [ -z "$message" ]; then
case $LANG in
en*) printf 'FATAL: %s\n' "Script returned true" ;;
# Do not transtale, default message
*) printf 'FATAL: %s\n' "Script returned true"
esac
elif [ -n "$message" ]; then
case $LANG in
en*) printf 'FATAL: %s\n' "$mesage" ;;
# Do not transtale, default message
*) printf 'FATAL: %s\n' "$message"
esac
else
printf 'FATAL: %s\n' "Unexpected happend in die 1"
exit 255
fi
exit $err_code
;;
3)
# FIXME: Implement translate
# FIXME: Implement message handling
printf 'FATAL: %s\n' "This script is expected to be invoked as root"
;;
255)
# FIXME: Implement translate
# FIXME: Implement output for blank $message
printf 'FATAL: %s\n' "Unexpected happend in $message"
exit $err_code
;;
fixme)
# FIXME: Translate
# FIXME: Handle scenarios where message is not parsed
printf 'FIXME: $s\n' "$message"
;;
*) printf 'FATAL: %s\n' "Unexpected argument '$err_code' has been parsed in 'die()'" ; exit 255
esac
unset err_code message
}
warn() { printf 'WARN: %s\n' "$1" ;}
info() { printf 'INFO: %s\n' "$1" ;}
fixme() {
case $1 in
*) printf 'FIXME: %s\n' "$2"
esac
}

17
QA/tests/HELL/hell.sh Executable file

@ -0,0 +1,17 @@
#!/bin/sh
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# Based in part upon 'before-install' from rsplib (https://raw.githubusercontent.com/dreibh/rsplib/master/ci/before-install), which is:
# Copyright (C) 2018-2019 by Thomas Dreibholz <dreibh@iem.uni-due.de> as GPLv3 or any other GPL at your option
# NOT_PRODUCTION_READY
printf 'WARN: %s\n' "This file is not production ready, USE ON YOUR OWN RISK!"
# Get output messages
. QA/tests/HELL/backend/output.sh
# Get Variables
. QA/tests/HELL/backend/get-variables.sh
# Configure backend
. QA/tests/HELL/backend/configure_backend.sh

5
QA/tests/README.md Normal file

@ -0,0 +1,5 @@
# Quality Assurance of (WIP name)
- Check for `shift` and force `shift 1`
- https://github.com/koalaman/shellcheck/wiki/Directive#source -> Check shellcheck version
- Force using '$var' instead of '${var}' where possible

274
QA/tests/backend.sh Normal file

@ -0,0 +1,274 @@
#!/bin/sh
# shellcheck disable=SC1117
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# Based in part upon 'before-install' from rsplib (https://raw.githubusercontent.com/dreibh/rsplib/master/ci/before-install), which is:
# Copyright (C) 2018-2019 by Thomas Dreibholz <dreibh@iem.uni-due.de> as GPLv3 or any other GPL at your option
: '
This file expects following variables:
- KERNEL = Used kernel
- VARIANT = Name of used distribution (lower-case)
- IDENTIFIER = name of codename or version
In case DOCKER images are used:
- DOCKER = Name of used docker container
In case QEMU is used:
- QEMU = Name of (FIXME, not implemented)
TODO
- Implement building of DOCKER images
'
# SYNOPSIS: die [num] (message)
die() {
err_code="$1"
message="$2"
case "$err_code" in
0) true ;;
1)
if [ -z "$message" ]; then
case $LANG in
en*) printf 'FATAL: %s\n' "Script returned true" ;;
# Do not transtale, default message
*) printf 'FATAL: %s\n' "Script returned true"
esac
elif [ -n "$message" ]; then
case $LANG in
en*) printf 'FATAL: %s\n' "$mesage" ;;
# Do not transtale, default message
*) printf 'FATAL: %s\n' "$message"
esac
else
printf 'FATAL: %s\n' "Unexpected happend in die 1"
exit 255
fi
exit $err_code
;;
3)
# FIXME: Implement translate
# FIXME: Implement message handling
printf 'FATAL: %s\n' "This script is expected to be invoked as root"
;;
255)
# FIXME: Implement translate
# FIXME: Implement output for blank $message
printf 'FATAL: %s\n' "Unexpected happend in $message"
exit $err_code
;;
fixme)
# FIXME: Translate
# FIXME: Handle scenarios where message is not parsed
printf 'FIXME: $s\n' "$message"
;;
*) printf 'FATAL: %s\n' "Unexpected argument '$err_code' has been parsed in 'die()'" ; exit 255
esac
unset err_code message
}
warn() { printf 'WARN: %s\n' "$1" ;}
info() { printf 'INFO: %s\n' "$1" ;}
fixme() {
case $1 in
*) printf 'FIXME: %s\n' "$2"
esac
}
# Configure backend
if [ "$KERNEL" = linux ]; then
# Install all dependencies
info "Installing dependencies for on $KERNEL for $VARIANT-$IDENTIFIER"
case "$VARIANT-$IDENTIFIER" in
ubuntu-bionic|ubuntu-18.04)
# Install all dependencies
apt install -y \
meson cppcheck libcap-dev clang libfuse3-dev gcc git ninja-build bison libtool autoconf pkg-config libcap-dev indent fakeroot libattr1-dev uthash-dev gzip rsync autopoint uthash-dev shellcheck \
|| die "Unable to install all dependencies for $VARIANT-$IDENTIFIER"
# libfuse3-dev hack
if [ "$(apt-cache search libfuse3-dev | grep -o "libfuse3-dev")" != "libfuse3-dev" ]; then
warn "libfuse3-dev is not available on $VARIANT-$IDENTIFIER, trying to resolve manually"
apt install -y ninja-build || die 1 "Unable to install dependencies for hack"
mkdir "$HOME/build/fuse3"
fixme "Export latest fuse3 instead of hard-coded?"
if [ ! -e "$HOME/build/fuse3/fuse-3.6.2.tar.xz" ]; then
wget https://github.com/libfuse/libfuse/releases/download/fuse-3.6.2/fuse-3.6.2.tar.xz -O "$HOME/build/fuse3/fuse-3.6.2.tar.xz" || die 1 "Unable to fetch fuse"
elif [ -e "$HOME/build/fuse3/fuse-3.6.2.tar.xz" ]; then
info "File '$HOME/build/fuse3/fuse-3.6.2.tar.xz' is already fetched"
else
die 255 "Fetching fuse3 tarball"
fi
fixme "Sanitize tarball export (do not export if the tarball already exists)"
tar xpf "$HOME/build/fuse3/fuse-3.6.2.tar.xz" --directory="$HOME/build/fuse3/"
# FIXME: Sanitize - Do not create a build dir if it already exists
mkdir "$HOME/build/fuse3/fuse-3.6.2/build"
fixme "Do not use 'cd'"
cd "$HOME/build/fuse3/fuse-3.6.2/build" || die 1 "Unable to change directory in '$HOME/build/fuse3/fuse-3.6.2/build'"
meson .. --prefix /usr || die 1 "Meson failed, (FIXME: more info required)"
ninja || die 1 "ninja failed, (FIXME: more info required)"
ninja install || die 1 "ninja install failed, (FIXME: more info required)"
elif [ "$(apt-cache search libfuse3-dev | grep -o "libfuse3-dev")" = "libfuse3-dev" ]; then
info "libfuse3-dev is available on this $VARIANT-$IDENTIFIER, no need to install it manually"
apt install -y libfuse3-dev || die 1 "Unable to install libfuse3-dev"
else
die 255 "libfuse3-dev in $VARIANT"
fi
# Hack fof shfmt
if [ "$(apt-cache search shfmt | grep -o "shfmt")" != "shfmt" ]; then
warn "This system doesn't have shfmt in build instructions, trying to resolve.."
if [ -e /usr/bin/shfmt ]; then
info "shfmt is already installed, skipping hack"
elif [ ! -e /usr/bin/shfmt ]; then
info "shfmt is not installed, installing.."
# Sanitized in if statement's expression
wget https://github.com/mvdan/sh/releases/download/v3.0.0-beta1/shfmt_v3.0.0-beta1_linux_amd64 -O /usr/bin/shfmt
# Make sure that it is executable
[ ! -x /usr/bin/shfmt ] && chmod +x /usr/bin/shfmt
else
die 255 "shfmt hack in $VARIANT"
fi
elif [ "$(apt-cache search shfmt | grep -o "shfmt")" = "shfmt" ]; then
info "shfmt is available on this $VARIANT, no need to install it manually"
apt install -y shfmt
else
die 255 "shfmt hack in ubuntu"
fi
;;
ubuntu-*)
apt install -y \
meson cppcheck libcap-dev clang libfuse3-dev gcc git ninja-build bison libtool autoconf pkg-config libcap-dev indent fakeroot libattr1-dev uthash-dev gzip rsync autopoint uthash-dev shellcheck \
|| die 1 "Unable to install all dependencies for $VARIANT-$IDENTIFIER"
# Hack fof shfmt
if [ "$(apt-cache search shfmt | grep -o "shfmt")" != "shfmt" ]; then
warn "This system doesn't have shfmt in build instructions, trying to resolve.."
if [ -e /usr/bin/shfmt ]; then
info "shfmt is already installed, skipping hack"
elif [ ! -e /usr/bin/shfmt ]; then
info "shfmt is not installed, installing.."
wget https://github.com/mvdan/sh/releases/download/v3.0.0-beta1/shfmt_v3.0.0-beta1_linux_amd64 -O /usr/bin/shfmt
[ ! -x /usr/bin/shfmt ] && chmod +x /usr/bin/shfmt
else
die 255 "shfmt hack in $VARIANT"
fi
elif [ "$(apt-cache search shfmt | grep -o "shfmt")" = "shfmt" ]; then
info "shfmt is available on this $VARIANT, no need to install it manually"
apt install -y shfmt
else
die 255 "shfmt hack in $VARIANT"
fi
;;
*) die 2 "Unsupported VARIANT-IDENTIFIER - $VARIANT-$IDENTIFIER"
esac
# Docker backend
if [ -n "$DOCKER" ]; then
info "Preparing the environment to run docker image '$DOCKER'"
# Install docker dependencies
info "Installing dependencies for docker"
case "$VARIANT-$IDENTIFIER" in
ubuntu*|debian*)
apt install -y docker-io || die 1 "Unable to install docker dependencies on $VARIANT-$IDENTIFIER"
;;
*) die 2 "Unsupported VARIABLE-IDENTIFIER has been parsed in resoluting docker dependencies"
esac
case "$VARIANT-$IDENTIFIER" in
debian*|ubuntu*|exherbo*)
docker run -d --name "$DOCKER" || die 1 "Unable to run docker image '$DOCKER' on $VARIANT-$IDENTIFIER"
;;
*) die "Unsupported VARIANT-IDENTIFIER has been parsed - $VARIANT-$IDENTIRIER"
esac
# Get docker image
case "$DOCKER_IMAGE" in
*/*:*|*/*) # Fetch docker image from dockerhub
die fixme "Implement using docker images from dockerhub"
build_*) # Build docker images
info "Preparing to build docker image ${DOCKERIMAGE#build_}"
case ${DOCKER_IMAGE#build_} in
exherbo)
die fixme "Implement building exherbo docker image"
;;
*) die 255 "DOCKER_IMAGE - build"
esac
;;
*) die 255 "DOCKER_IMAGE"
esac
# In case Docker is not used
elif [ -z "$DOCKER" ]; then
info "Docker is not used, skipping configuration"
else
die 255 "Docker backend in $KERNEL"
fi
if [ -n "$QEMU" ]; then
die fixme "Implement tests on QEMU using linux"
elif [ -z "$QEMU" ]; then
info "QEMU is not used, skipping configuration"
else
die 255 "QEMU in $KERNEL"
fi
elif [ "$KERNEL" = darwin ]; then
# Homebrew takes lots of time on runtime due to the cleanup used, this is a hotfix (https://travis-ci.community/t/macosx-brew-update-takes-too-much-time/6295)
HOMEBREW_NO_INSTALL_CLEANUP=1 brew update || die "Unable to update brew repositories"
info "Installing dependencies on $KERNEL"
brew install shellcheck cppcheck shfmt || die "Unable to install dependencies on $KERNEL"
elif [ "$KERNEL" = freebsd ]; then
fixme "$KERNEL is not implemented"
else
die "Unsupported KERNEL used - $KERNEL"
fi
# Run tests
if [ "$TEST" = core ]; then
info "Performing core tests.."
make check || die 1 "Tests failed"
elif [ "$TEST" = extensive ]; then
info "Performing extensive tests"
fixme "Implement extensive tests"
make fullcheck || die 1 "Tests failed"
elif [ "$TEST" = skip ]; then
info "Variable 'TEST' stores value 'skip', skipping tests"
elif [ "$TEST" = '' ]; then
warn "Variable 'TEST' is not set, skipping tests"
else
die 255 "Performing tests"
fi
# Build
if [ "$BUILD" = all ]; then
info "Performing build on kernel '$KERNEL' using $VARIANT-$IDENTIFIER"
make SKIPSIGN=true || die 1 "Build failed"
elif [ "$BUILD" = skip ]; then
info "Variable 'BUILD' stores valie 'skip', skipping build"
elif [ "$BUILD" = '' ]; then
warn "Variable 'BUILD' is not set, skipping build"
else
die 255 "Building on $KERNEL"
fi

116
QA/tests/check.sh Executable file

@ -0,0 +1,116 @@
#!/bin/sh
die() {
err_code="$1"
message="$2"
case $err_code in
1)
printf 'FATAL: %s\n' "$message"
exit "$err_code"
;;
lintfail)
printf 'FATAL: %s\n' "Linting file '$file', failed.."
exit 1
;;
255)
printf 'FATAL: %s\n' "$message"
exit "$err_code"
;;
*)
printf 'FATAL: %s\n' "Unrecognized error code argument has been parsed in die function in QA/tests/shell/check.sh"
exit 255
esac
unset err_code message
}
fixme() {
argument="$1"
case $argument in
LintNotImplemented) printf 'FIXME: %s\n' "Unable to check file '$file', $identifier linting is not implemented" ;;
*) printf 'FIXME: %s\n' "$*"
esac
unset argument
}
# shellcheck disable=SC2044 # HOTFIX!
for file in $(find . -not \( \
-path './.git' -prune -o \
-path './vendor' -prune -o \
-name 'LICENSE' -prune -o \
-name '.gitignore' -prune -o \
-name 'os-release' -prune -o \
-name '.keepinfodir' -prune -o \
-name 'include-bedrock' -prune -o \
-name 'lock' -prune \
\) -type f); do
# Identify file
# FIXME: In theory we can use 'file' for this instead
case "$file" in
*.c) identifier="C" ;;
*.sh) identifier="shell" ;;
*.bash) identifier="bash" ;;
*.yml) identifier="yaml" ;;
*.md) identifier="markdown" ;;
*.png) identifier="png" ;;
*.zsh) identifier="zsh" ;;
*.conf) identifier="config" ;;
*.fish) identifier="fish" ;;
*.gpg) identifier="gpg" ;;
*.service) identifier="service" ;;
*.donotcheck|*.disabled) identifier="DoNotCheck" ;;
*.json) identifier="json" ;;
*.Dockerfile) identifier="dockerfile" ;;
*.xml) identifier="xml" ;;
*.fetchnext) identifier="fetchnext" ;;
*/Makefile) identifier="makefile" ;;
*.bak) identifier="backup" ;;
*)
case "$(head -n1 "$file")" in
'#!/'*'/bash'|'#!/'*' bash') identifier="bash" ;;
'#!/'*'/sh'|'#!/'*' sh') identifier="shell" ;;
'#compdef'*) identifier="zsh" ;;
*) die 255 "Unexpected file '$file' has been parsed in tests, unable to resolve for tests"
esac
esac
# Output message about checked file
printf "checking $identifier file %s\\n" "${file#./}"
# Test file based on identifier
case "$identifier" in
C)
cppcheck --error-exitcode=1 "$file" || die lintfail
;;
markdown|yaml|config|makefile|service|gpg|json|xml|dockerfile)
fixme LintNotImplemented
;;
backup|png)
true # Do not check these
;;
DoNotCheck)
printf 'INFO: %s\n' "File $file is set to be ignored by tests"
;;
fetchnext)
printf 'INFO: %s\n' "fetchnext files are stub"
;;
bash)
shellcheck -x -s bash "$file" || die lintfail
;;
shell)
shellcheck -x -s bash "$file" || die lintfail
;;
zsh)
# zsh are apparently tested agains bash in shellcheck (FIXME: Sanity-check)
shellcheck -x -s bash "$file" || die lintfail
;;
fish)
fixme LintNotImplemented
;;
*) die 255 "Unknown identifier for file '$file' has been parsed, unable to resolve.."
esac
done

@ -0,0 +1,25 @@
#!/usr/bin/env bash
# This file has to be bash since we are using non-POSIX regex
# Make it POSIX-compatible - using awk? perl?
# shellcheck source=src/slash-bedrock/lib/shell/common-code.sh
. /bedrock/lib/shell/common-code.sh
file="$1"
syntax_err="$2"
# Die if more then one argument has been parsed
[ -n "$syntax_err" ] && die 1 "Wrong argumnet '$syntax_err' has been parsed in 'shellizator.sh'"
# Shift arguments
while [ $# -gt 1 ]; do shift 1; done
# Convert ${var} -> $var where possible (https://regex101.com/r/J7vfQC/5)
sed -i -E 's:([\/\=\ \"\>\-]|^)(\$)\{([a-zA-Z0-9_]+)\}([\,\ \"\n\,\/\!\:\\\-\.]):\1\2\3\4:' "$file" || die 1 "Unable to convert '\${var}' to '\$var' in $file"
# Convert `if [ "${TRAVIS_OS_NAME}" == "linux" -a "${DOCKER}" == "" -a "${QEMU}" == "" ] ; then` in `if [ "${TRAVIS_OS_NAME}" == "linux" ] && [ "${DOCKER}" == "" ] && [ "${QEMU}" == "" ] ; then`
fixme "Implement shellizator if fixing"
# Remove unnecesary spaces in if statements after the `]` and before 'then' (https://regex101.com/r/XhNCZd/1)
sed -i -E 's:(if[^;]+)\s(\;\sthen):\1\2:gm' "$file" || die 1 "Unable to remove unnecesary spaces in if statements"

214
QA/travis-ci/before-install.sh Executable file

@ -0,0 +1,214 @@
#!/bin/bash
# shellcheck disable=SC1117
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# Based in part upon 'before-install' from rsplib (https://raw.githubusercontent.com/dreibh/rsplib/master/ci/before-install), which is:
# Copyright (C) 2018-2019 by Thomas Dreibholz <dreibh@iem.uni-due.de> as GPLv3 or any other GPL at your option
# shellcheck source=QA/travis-ci/travis-common.sh
. "QA/travis-ci/travis-common.sh"
# shellcheck source=QA/travis-ci/get-container.sh
. "QA/travis-ci/get-container.sh"
fixme "Travis - before-install.sh disables SC1117 as hotfix"
# Linux as-is
if [ "$TRAVIS_OS_NAME" = linux ] && [ -z "$DOCKER" ] && [ -z "$QEMU" ]; then
# Nothing else to do
true
# Linux via Docker
elif [ "$TRAVIS_OS_NAME" = linux ] && [ -n "$DOCKER" ] && [ -z "$QEMU" ]; then
# The build machine therefore needs a sufficient amount of RAM!
[ -e "$CONTAINER" ] && sudo docker rm -f "$CONTAINER"
sudo docker run -d \
--name "$CONTAINER" \
--tmpfs /var/cache/pbuilder:rw,exec,dev,size=4g \
--tmpfs /var/lib/mock:rw,exec,dev,size=4g \
--cap-add=SYS_ADMIN --cap-add=NET_ADMIN \
--security-opt apparmor:unconfined \
-v "$(pwd):/travis" -w /travis \
"$DOCKER" tail -f /dev/null
sudo docker ps
# Exherbo via Docker
elif [ "$TRAVIS_OS_NAME" = 'Exherbo Linux' ] && [ -n "$DOCKER" ] && [ -z "$QEMU" ]; then
# The build machine therefore needs a sufficient amount of RAM!
[ -e "$CONTAINER" ] && sudo docker rm -f "$CONTAINER"
# Run docker
sudo docker run -d \
--name "$CONTAINER" \
--cap-add=SYS_ADMIN --cap-add=NET_ADMIN \
--security-opt apparmor:unconfined \
-v "$(pwd):/travis" -w /travis \
# FreeBSD via QEMU
# QA: Convert on POSIX-compatible
elif [ "$TRAVIS_OS_NAME" = linux ] && [ "$QEMU" = FreeBSD ]; then
if [ -n "$VARIANT" ]; then
sudo mkdir -p /vservers/qemu-freebsd
sudo chown "$USER:$USER" /vservers/qemu-freebsd
mkdir -p /vservers/qemu-freebsd/mnt
cd /vservers/qemu-freebsd || die "Unable to change directory in '/vservers/qemu-freebsd'"
# Download image
imageName="FreeBSD-$VARIANT-amd64.raw"
if [ -e "$imageName.xz" ] && [ ! -e "$imageName" ]; then
printf '%s\n' "Extracting existing $imageName.xz ..."
xz -T0 -dk "$imageName.xz"
elif [ ! -e "$imageName.xz" ] || [ ! -e "$imageName" ]; then
imageURL="https://download.freebsd.org/ftp/releases/VM-IMAGES/$VARIANT/amd64/Latest/$imageName.xz"
info "Downloading FreeBSD VM image from $imageURL ..."
curl "$imageURL" | tee "$imageName.xz.tmp" | xz -T0 -d - ">$imageName"
mv "$imageName.xz.tmp" "$imageName.xz" || die "Unable to rename $imageName.xz.tmp in $imageName.xz"
fi
# Modify FreeBSD image
pushd /vservers/qemu-freebsd/
# Grow image
truncate -s 128G "$imageName"
echo -e "w\nY\nY\n" | LANG=C gdisk "$imageName"
parted -s "$imageName" resizepart 3 100%
parted -s "$imageName" print
# Mount
ls -l "$imageName"
mountPoint="$(pwd)/mnt"
sudo umount "$mountPoint" 2>/dev/null || true
LOOPDEVS="$(sudo losetup -j "$imageName" | awk '{ print $1 }' | sed -e "s/:$//g")"
for loopdev in $LOOPDEVS ;do
sudo losetup -d "$loopdev" || true
done
sudo losetup -P -f "$imageName"
sudo losetup -j "$imageName"
LOOPDEV="$(sudo losetup -j "$imageName" | awk '{ print $1 }' | sed -e "s/:$//g")"
echo "sudo fuse-ufs2/fuse-ufs/fuse-ufs ${LOOPDEV}p3 $mountPoint -o rw"
sudo fuse-ufs2/fuse-ufs/fuse-ufs "${LOOPDEV}p3" "$mountPoint" -o rw
# Modify
# Set up networking:
sudo cp "$mountPoint/etc/rc.conf" .
sudo bash -c "(
echo \"sshd_enable=\\\"YES\\\"\"
echo \"ifconfig_vtnet0=\\\"DHCP\\\"\"
echo \"ifconfig_vtnet1=\\\"inet 192.168.100.100 netmask 255.255.255.0\\\"\"
echo \"nfs_client_enable=\\\"YES\\\"\"
echo \"rpc_lockd_enable=\\\"YES\\\"\"
echo \"rpc_statd_enable=\\\"YES\\\"\"
) >>$mountPoint/etc/rc.conf"
# Make sure that FreeBSD uses the latest packages:
sudo sed -e 's#"pkg+http://pkg.FreeBSD.org/${ABI}/quarterly"#"pkg+http://pkg.FreeBSD.org/${ABI}/latest"#g' -i "$mountPoint/etc/pkg/FreeBSD.conf"
# Make sure that the /usr/ports directory is there.
sudo mkdir -p "$mountPoint/usr/ports"
# Add SSH public key authentication:
sudo mkdir -p "$mountPoint/root/.ssh"
sudo chmod 700 "$mountPoint/root/.ssh"
if [ ! -e "$HOME/.ssh/id_rsa" ]; then
ssh-keygen -t rsa -b 4096 -P "" -f "$HOME/.ssh/id_rsa"
fi
sudo cp "$HOME/.ssh/id_rsa.pub" "$mountPoint/root/.ssh/authorized_keys"
sudo chmod 600 "$mountPoint/root/.ssh/authorized_keys"
sudo bash -c "echo \"PermitRootLogin prohibit-password\" >>$mountPoint/etc/ssh/sshd_config"
# sudo tail -n 6 ${mountPoint}/etc/ssh/sshd_config
# Set up NFS:
sudo mkdir -p "$mountPoint/travis"
sudo sed -e "/^.*\/travis.*$/d" -i~ "$mountPoint/etc/fstab"
sudo bash -c "( echo \"192.168.100.1:/travis /travis nfs rw,soft,async,noatime,nfsv3,rsize=65536,wsize=65536 0 0\" ; echo \"tmpfs /usr/ports tmpfs rw 0 0\" ) >>$mountPoint/etc/fstab"
sudo cat "$mountPoint/etc/fstab"
# Unmount
sudo umount "$mountPoint"
sudo losetup -d "$LOOPDEV"
popd
# Host-only networking
sudo ip link add br0 type bridge || true
sudo ip addr flush dev br0
sudo ip addr add 192.168.100.1/24 brd 192.168.100.255 dev br0
sudo ip tuntap add mode tap
sudo ip link set tap0 master br0
sudo ip link set dev br0 up
sudo ip link set dev tap0 up
sudo iptables -A INPUT -i tap0 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -A OUTPUT -o tap0 -d 192.168.100.0/24 -j ACCEPT
sudo iptables -A INPUT -i br0 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -A OUTPUT -o br0 -d 192.168.100.0/24 -j ACCEPT
sudo iptables -A FORWARD -s 192.168.100.0/24 -d 192.168.100.0/24
# sudo dnsmasq --interface=br0 --bind-interfaces \
# --dhcp-range=192.168.100.2,192.168.100.254 || true
# NFS
sudo mkdir -p /travis
sudo mount --bind "$(pwd)" /travis
sudo bash -c "echo \"/travis 192.168.100.0/24(rw,no_root_squash)\" >/etc/exports"
env LANG=C.UTF-8 ci/retry -t "$RETRY_MAXTRIALS" -p "$RETRY_PAUSE" -- sudo apt-get install -y qemu-kvm nfs-kernel-server
sudo exportfs -v
sudo service nfs-kernel-server restart
# ====== Start VM =====================================================
sudo killall -q qemu-system-x86_64 || true
ssh-keygen -R "[localhost]:8829" -f ~/.ssh/known_hosts
# Non-KVM execution: qemu-system-x86_64 \
sudo qemu-system-x86_64 -machine type=pc,accel=kvm -nographic \
-m 6144 -cpu host -smp "$(nproc)" \
-drive "if=virtio,media=disk,file=/vservers/qemu-freebsd/$imageName,format=raw" \
-netdev user,id=mynet0,hostfwd=tcp:127.0.0.1:8829-:22 -device virtio-net-pci,netdev=mynet0 \
-netdev tap,id=network0,ifname=tap0,script=no,downscript=no -device virtio-net-pci,netdev=network0,mac=00:00:00:00:00:00 \
&
ready=0
trials=20 ; sleep=15
i=0 ; while [ "$i" -lt "$trials" ]; do
# QA: Convert on POSIX compatible
# shellcheck disable=2219
let i=$i+1
echo "$i/$trials: Waiting for VM to boot ..."
sleep "$sleep"
if ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost hostname; then
ready=1
break
fi
done
if [ $ready -eq 0 ]; then
echo >&2 "VM did not boot properly!"
exit 1
fi
# Download fuse-ufs2
# if [ ! -d fuse-ufs2/ ]; then
# info "Downloading fuse-ufs2 ..."
# git clone https://github.com/dreibh/fuse-ufs2 -b dreibh/ubuntu-disco-fix
# # git clone https://github.com/mkatiyar/fuse-ufs2
# fi
# Get repository
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
git clone https://github.com/Kreyrock/Kreyrock.git
unset imageName imageURL
fi
# MacOS X
elif [ "$TRAVIS_OS_NAME" = osx ]; then
# Nothing to be done here.
true
else
die "Invalid setting of TRAVIS_OS_NAME=$TRAVIS_OS_NAME, DOCKER=$DOCKER, QEMU=$QEMU!"
fi

36
QA/travis-ci/build.sh Executable file

@ -0,0 +1,36 @@
#!/usr/bin/env bash
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# shellcheck source=QA/travis-ci/travis-common.sh
. "QA/travis-ci/travis-common.sh"
# shellcheck source=QA/travis-ci/get-container.sh
. "QA/travis-ci/get-container.sh"
# Skip build if not set up
case "$TOOL" in
*build*) true ;;
*) die 0 "Skipping build as instructed"
esac
# Linux as-is
if [ "$TRAVIS_OS_NAME" = linux ] && [ -z "$DOCKER" ] && [ -z "$QEMU" ]; then
make --directory="/travis/Zernit" build-rustlang
# Linux via Docker
elif [ "$TRAVIS_OS_NAME" = linux ] && [ -n "$DOCKER" ] && [ -z "$QEMU" ]; then
sudo docker exec "$CONTAINER" make --directory="/travis/Zernit" build-rustlang
# MacOS X
elif [ "$TRAVIS_OS_NAME" = osx ]; then
make build-rustlang
elif [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$QEMU" = "FreeBSD" ]; then
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
make check
else
die "Invalid setting of TRAVIS_OS_NAME=$TRAVIS_OS_NAME, DOCKER=$DOCKER, QEMU=$QEMU!"
fi

@ -0,0 +1,36 @@
#!/bin/sh
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# Based in part upon 'before-install' from rsplib (https://raw.githubusercontent.com/dreibh/rsplib/master/ci/before-install), which is:
# Copyright (C) 2018-2019 by Thomas Dreibholz <dreibh@iem.uni-due.de> as GPLv3 or any other GPL at your option
# shellcheck source=QA/travis-ci/travis-common.sh
. "QA/travis-ci/travis-common.sh"
if [ -n "$DOCKER" ]; then
# Check configuration
if [ -z "$VARIANT" ] ; then
die "Variable VARIANT is not set"
fi
if [ -z "$TOOL" ] ; then
die "Variable TOOL is not set"
fi
# Get name of package
fixme "Output package name based on repository name"
PACKAGE="Zernit"
# Set container name
CONTAINER=$(printf '%s\n' "$PACKAGE-$DOCKER-$TOOL" | sed -e "s/:/_/g")
if [ -n "$COMPILER_C" ]; then
CONTAINER="$CONTAINER-$COMPILER_C"
fi
export CONTAINER
elif [ -z "$DOCKER" ]; then
info "Docker is not used"
else
die 256 "Unexpected happend while processing DOCKER variable"
fi

132
QA/travis-ci/install.sh Executable file

@ -0,0 +1,132 @@
#!/usr/bin/env bash
# shellcheck disable=SC1117
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# Based in part upon 'install.sh' from rsplib (https://raw.githubusercontent.com/dreibh/rsplib/master/ci/install), which is:
# Copyright (C) 2018-2019 by Thomas Dreibholz <dreibh@iem.uni-due.de> as GPLv3 or any other GPL at your option
# shellcheck source=QA/travis-ci/travis-common.sh
. "QA/travis-ci/travis-common.sh"
# shellcheck source=QA/travis-ci/get-container.sh
. "QA/travis-ci/get-container.sh"
fixme "Travis - install.sh is disabling SC1117 as hotfix"
# Linux as-is
if [ "$TRAVIS_OS_NAME" = linux ] && [ -z "$DOCKER" ] && [ -z "$QEMU" ]; then
# Update repositories based on available package manager
if command -v apt >/dev/null; then
sudo apt update || die 1 "Unable to update repositories on VARIANT '$VARIANT'"
elif command -v cave >/dev/null; then
cave sync || die 1 "Unable to update repositories on paludis"
else
die 256 "Unsupported package manager has been used"
fi
# Install dependencies based on variant used
case "$VARIANT" in
ubuntu-*|debian-*)
# Install dependencies
if [ -n "$PACKAGES" ]; then
sudo apt install -y "$PACKAGES" || die 1 "Unable to install following packages: '$PACKAGES'"
elif [ -z "$PACKAGES" ]; then
info "Dependencies are not specified in PACKAGES variable"
else
die 256 "Unexpected happend while processing PACKAGES variable"
fi
;;
*) die 2 "Unsupported variant '$VARIANT' has been parsed"
esac
# Do not clean repositories since docker images are not saved
# Linux via Docker
elif [ "$TRAVIS_OS_NAME" = linux ] && [ -n "$DOCKER" ] && [ -z "$QEMU" ]; then
fixme "Fix duplicates of repository update"
case "$VARIANT" in
ubuntu-*|debian-*)
# Update repositories
docker exec "$CONTAINER" apt update || die 1 "Unable to update repositories on '$VARIANT' using DOCKER '$DOCKER'"
# Install dependencies
if [ -n "$PACKAGES" ]; then
# NOTICE: DO not double quote PACKAGES
docker exec "$CONTAINER" apt install -y $PACKAGES || die 1 "Unable to install following packages on '$CONTAINER': '$PACKAGES'"
elif [ -z "$PACKAGES" ]; then
true
else
die 256 "Resolving packages for '$CONTAINER'"
fi
;;
*) die 256 "Unsupported variant '$VARIANT' has been parsed in DOCKER '$DOCKER'"
esac
info "Fetching repository for $VARIANT"
sudo docker exec "$CONTAINER" git clone "$REPOSITORY" || die 1 "Unable to fetch '$REPOSITORY'"
# MacOS X
elif [ "$TRAVIS_OS_NAME" = osx ]; then
# Homebrew takes lots of time on runtime due to the cleanup used, this is a hotfix (https://travis-ci.community/t/macosx-brew-update-takes-too-much-time/6295)
HOMEBREW_NO_INSTALL_CLEANUP=1 brew update || die "Unable to update brew"
info "Installing dependencies"
if [ -n "$PACKAGES" ]; then
brew install $PACKAGES || die "Unable to install dependencies on $TRAVIS_OS_NAME"
elif [ -z "$PACKAGES" ]; then
true
else
die 256 "Unexpected happend while installing packages on '$TRAVIS_OS_NAME'"
fi
# FreeBSD via QEMU
elif [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$QEMU" = "FreeBSD" ]; then
if [ -n "$VARIANT" ]; then
# Install packages
# Ensure the file system is true (fuse-ufs2 in write mode is unreliable!)
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
"mount -fr / ; fsck -y /dev/gpt/rootfs ; mount -fw / ; df -h"
# Basic dependencies:
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
env ASSUME_ALWAYS_YES=yes pkg update
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
env ASSUME_ALWAYS_YES=yes pkg install -y bash autoconf meson cppcheck fusefs-libs3 gcc git ninja bison libtool autoconf pkg-config indent fakeroot gzip rsync autopoint shellcheck
# Bash shell:
# Use bash, and make sure it is available under /bin/bash.
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
chsh -s /usr/local/bin/bash
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
ln -s /usr/local/bin/bash /bin/bash || true
# Ports collection:
# This is the slow method via portsnap:
# --- ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
# --- "portsnap --interactive fetch extract | grep -v ^/usr/ports"
# Using Git is much faster:
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
"rm -rf /usr/ports ; git clone --depth=1 --filter=tree:0 https://github.com/freebsd/freebsd-ports /usr/ports"
# Package's dependencies:
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
"cd /travis/freebsd/*/ && ( make build-depends-list && make run-depends-list ) | sed -e 's/^.*\///g' -e 's/glib20/glib/g' | sort -u | xargs -r env ASSUME_ALWAYS_YES=yes pkg install -y"
echo "===== The FreeBSD VM is ready! ====="
elif [ -z "$VARIANT" ]; then
die "Variable VARIANT is not set for FreeBSD via QEMU which is fatal, This should be set in travis.yml"
else
die "Unexpected in FreeBSD using QEMU"
fi
else
die "Invalid setting of TRAVIS_OS_NAME=$TRAVIS_OS_NAME, DOCKER=$DOCKER, QEMU=$QEMU!"
fi

54
QA/travis-ci/retry.sh Executable file

@ -0,0 +1,54 @@
#!/bin/sh
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# Based in part upon 'retry.sh' from rsplib (https://raw.githubusercontent.com/dreibh/rsplib/master/ci/retry), which is:
# Copyright (C) 2018-2019 by Thomas Dreibholz <dreibh@iem.uni-due.de> as GPLv3 or any other GPL at your option
set -e
. QA/travis-ci/travis-common.sh
maxTrials=3
pause=10
while [ $# -gt 1 ] ; do
case "$1" in
-t|--tries)
maxTrials="$2"
shift 2
;;
-p|--pause)
pause="$2"
shift 2
;;
--)
shift
break
;;
*)
die "Usage: $0 [-t|--trials max_trials] [-p|--pause seconds] -- command ..."
esac
done
attempts=1
result=1
command="$*"
while [ "$result" -ne 0 ] && [ "$attempts" -le "$maxTrials" ]; do
if [ "$attempts" -gt 1 ]; then
printf '%s\n' "Sleeping ${pause}s ..."
sleep "$pause"
fi
info "Trying $attempts/$maxTrials: $command"
sh -c "$command" && result=$? || result=$?
if [ "$result" -eq 127 ]; then
# Command not found => no need for a retry!
exit "$result"
elif [ "$result" -ne 0 ]; then
# Attempt failed
attempts="$((attempts=attempts+1))"
fi
done
exit "$result"

35
QA/travis-ci/test.sh Executable file

@ -0,0 +1,35 @@
#!/usr/bin/env bash
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# shellcheck source=QA/travis-ci/travis-common.sh
. "QA/travis-ci/travis-common.sh"
# shellcheck source=QA/travis-ci/get-container.sh
. "QA/travis-ci/get-container.sh"
case "$TOOL" in
*check*) true ;;
*) die 0 "Skipping tests as instructed"
esac
# Linux as-is
if [ "$TRAVIS_OS_NAME" = linux ] && [ -z "$DOCKER" ] && [ -z "$QEMU" ]; then
make test-rustlang
# Linux via Docker
elif [ "$TRAVIS_OS_NAME" = linux ] && [ -n "$DOCKER" ] && [ -z "$QEMU" ]; then
sudo docker exec "$CONTAINER" make --directory="/travis/Zernit" test-rustlang
# MacOS X
elif [ "$TRAVIS_OS_NAME" = osx ]; then
make --directory="/Users/travis/build/Kreyrock/Kreyrock" check
elif [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$QEMU" = "FreeBSD" ]; then
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
make check
else
die "Invalid setting of TRAVIS_OS_NAME=$TRAVIS_OS_NAME, DOCKER=$DOCKER, QEMU=$QEMU!"
fi

17
QA/travis-ci/travis-common.sh Executable file

@ -0,0 +1,17 @@
#!/bin/sh
# Simplified error handling
die() {
printf 'FATAL: %s\n' "$2"
exit "$1"
}
# Simplified QA handling
fixme() {
printf 'FIXME: %s\n' "$1"
}
# Simplified info messages
info() {
printf 'INFO: %s\n' "$1"
}
warn() {
printf 'WARN: %s\n' "$1"
}

3
benches/README.md Normal file

@ -0,0 +1,3 @@
Directory for benchmarks of the source
FIXME: Add benchmarks

22
benches/example_bench.rs Normal file

@ -0,0 +1,22 @@
use criterion::{black_box, criterion_group, criterion_main, Criterion};
/*
This is base benchmark made for consistency
FIXME-BENCH: Make cargo to recognize `benches/rustlang` path instead of `benches/`
*/
fn fibonacci(n: u64) -> u64 {
match n {
0 => 1,
1 => 1,
n => fibonacci(n-1) + fibonacci(n-2),
}
}
fn criterion_benchmark(c: &mut Criterion) {
c.bench_function("fib 20", |b| b.iter(|| fibonacci(black_box(20))));
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);

1
docker/README.md Normal file

@ -0,0 +1 @@
Directory for various Dockerfiles

8
docs/.gitignore vendored Executable file

@ -0,0 +1,8 @@
.jekyll-cache/
!.gitignore
!.gitmodules
*~
components/
_site/

9
docs/.gitpod.yml Normal file

@ -0,0 +1,9 @@
image:
file: gitpod/gitpod.Dockerfile
ports:
- port: 4000
onOpen: open-preview
tasks:
- init: gem install jekyll

21
docs/LICENSE.md Normal file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) [year] [fullname]
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

22
docs/Makefile Normal file

@ -0,0 +1,22 @@
SRC = $(wildcard lib/*/*.js)
HTML = $(wildcard lib/*/*.html)
TEMPLATES = $(HTML:.html=.js)
LESS = $(wildcard lib/*/*.less)
CSS = $(LESS:.less=.css)
build: components $(SRC) $(TEMPLATES) $(CSS)
@component build --verbose --out . --name assets
components: component.json
@component install
%.js: %.html
@component convert $<
%.css: %.less
@lessc $< $@
clean:
rm -fr build components $(TEMPLATES)
.PHONY: clean

68
docs/README.md Executable file

@ -0,0 +1,68 @@
## The "What ?" and the "Why ?"
**Carte** is a simple Jekyll based documentation website for APIs. It is designed as a boilerplate to build your own documentation and is heavily inspired from [Swagger](http://swagger.wordnik.com/) and [I/O docs](http://www.mashery.com/product/io-docs). Fork it, add specifications for your APIs calls and customize the theme. <small>Go ahead, see if we care.</small>
We built **Carte** because the existing options (Swagger and the likes) were trying to do too much and did not match our needs:
1. Most of our API calls are sending JSON objects, as opposed to a series of parameters,
1. Being able to query the real API is nice, but running anything but `GET` calls can get tricky ("What do you mean I deleted my stuff? I was just trying out the API calls!"),
1. Overall, setting up a separate server for what really requires a good static documentation seemed overkill.
The real value of **Carte** is its structure for describing APIs, not its underlying technical stack (or lack-thereof). In a nutshell; **we built a static template for your API documentation, feel free to re-use it**.
## Install
It' Jekyll god dammit:
1. Clone this repository on your local,
1. [Install Jekyll](https://github.com/mojombo/jekyll/wiki/install),
1. Go at the root of the repository and run ```jekyll serve --watch```,
1. Go to http://localhost:4000,
1. [Great success! High five!](http://www.youtube.com/watch?v=wWWyJwHQ-4E)
## How to...
### Adding a new API call
You can add a new API call by simply adding a new post in the `_posts` folder. Jekyll by default forces you to specify a date in the file path: it makes us sad pandas too, but you'll have to stick to this format. You can use dates to control the order in which API calls are displayed in the interface.
Each API call can define a few values in its YAML header:
Variable | Mandatory | Default | Description
--- | --- | --- | ---
``title`` | Y | - | A short description of what that calls does.
``path`` | N | - | The URL for the API call, including potential parameters.
``type`` | N | - | Set it to `PUT`, `GET`, `POST`, `DELETE` or nothing (for parts of your documentation that do not relate to an actual API call).
A typical header:
```
---
path: '/stuff/:id'
title: 'Delete a thing'
type: 'DELETE'
layout: nil
---
```
We then describe the request and response (or whatever else you wish to talk about) in the body of our post. Check the placeholders present in the `_posts` folder to get an idea of what it can look like.
### Grouping calls
Adding a category to your YAML header will allows you to group methods in the navigation. It is particularly helpful as you start having a lot of methods and need to organize them. For example:
```
---
category: Stuff
path: '/stuff/:id'
title: 'Delete a thing'
type: 'DELETE'
layout: nil
---
```
### Edit the design
The default UI is mostly described through the `css/style.css` file and a couple short jQuery scripts in the `/_layouts/default.html` layout. Hack it to oblivion.

6
docs/_config.yml Executable file

@ -0,0 +1,6 @@
---
exclude: ['README.markdown', 'gitpod']
permalink: ':title'
pygments: true
safe: false
title: 'Zernit'

19
docs/_includes/nav.html Normal file

@ -0,0 +1,19 @@
<h1>{{ site.title }}</h1>
<ul id='links'>
{% for post in site.posts %}
{% if post.category == null %}
<li><a href='#{{ post.url }}'>{{ post.title }}</a></li>
{% endif %}
{% endfor %}
{% for category in site.categories %}
<li><h2>{{ category | first }}</h2>
<ul>
{% for posts in category %}
{% for post in posts %}
<li class='{{ post.type }}'><a href='#{{ post.url }}'>{{ post.title }}</a></li>
{% endfor %}
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>

17
docs/_layouts/default.html Executable file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<head>
<title>{{ site.title }}</title>
<meta charset='utf-8'/>
<meta name='description' content='Documentation website'/>
<meta name='viewport' content='width=device-width, initial-scale=1, maximum-scale=1'/>
<link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'/>
<link href='assets.css' rel='stylesheet' type='text/css'>
</head>
<body>
{{ content }}
<!--[if lt IE 9]><script src='http://html5shim.googlecode.com/svn/trunk/html5.js'></script><![endif]-->
<script src='assets.js' type='text/javascript'></script>
<script>require('boot');</script>
</body>
</html>

@ -0,0 +1,9 @@
---
category: Maintainance
title: 'Review process'
layout: nil
---
FIXME-DOCS: preamble
1. Everything has to pass tests unless the merge request is not causing the test failure

@ -0,0 +1,30 @@
---
category: About
title: 'Four freedoms compliance'
layout: nil
---
Disclaimer: This is still part of ongoing effort to make this repository FSF approved while allow for sustainable business plan assuming this repository being expected to be used for commercial use.
Content provided in this post is subject to change and contributions are welcommed where we are welcomming challenges about these decisions and requests to adapt license for your workflow.
Based on feedback from majority of Free Software Foundation members based on discussion in https://forum.members.fsf.org/t/help-me-with-gpl-3-inspired-license-designed-for-commercial-use-and-to-avoid-segmentation/1953/59 this repository does not comply with four freedoms as follows where we are doing our best on ongoing effort to make this project compliant while allowing sustainable business plan:
- The freedom to run the program as you wish, for any purpose (freedom 0).
Usage of software is restricted by the license to direct the workflow in original repository since segmentation as example provided with ripple project on https://github.com/osuripple/lets/pull/5 to avoid segmentation alike https://github.com/light-ripple and many others that based on our point of view only sabotages the original project.
- The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
We believe that this is not restricted since the project is open-source and you are allowed to perform any changes where the features that can be merged in original project are required to be merged where we will grant you write access based on proved competence to maintian said part with planned option to get paid for this service.
If the fork does not have a feature that could be merged in the project itself then we allow this fork.
- The freedom to redistribute copies so you can help others (freedom 2).
This is restricted since spread of malware of outdated versions of this project is a concern.
License is planned to contain conditions to avoid this unwanted behavior.
- The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.
This is not restricted for standalone forks as long as said repositories are not containing features that project finds usefull in which scenario we will provide an official way for said feature to be merged in our upstream without restricting your right to have access in said code assuming that you are competent enough to perform such maintainance. If not we do our best to teach you.

639
docs/assets.css Normal file

@ -0,0 +1,639 @@
/*! normalize.css v2.1.0 | MIT License | git.io/normalize */
/* ==========================================================================
HTML5 display definitions
========================================================================== */
/**
* Correct `block` display not defined in IE 8/9.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
display: block;
}
/**
* Correct `inline-block` display not defined in IE 8/9.
*/
audio,
canvas,
video {
display: inline-block;
}
/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Address styling not present in IE 8/9.
*/
[hidden] {
display: none;
}
/* ==========================================================================
Base
========================================================================== */
/**
* 1. Set default font family to sans-serif.
* 2. Prevent iOS text size adjust after orientation change, without disabling
* user zoom.
*/
html {
font-family: sans-serif; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
-ms-text-size-adjust: 100%; /* 2 */
}
/**
* Remove default margin.
*/
body {
margin: 0;
}
/* ==========================================================================
Links
========================================================================== */
/**
* Address `outline` inconsistency between Chrome and other browsers.
*/
a:focus {
outline: thin dotted;
}
/**
* Improve readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover {
outline: 0;
}
/* ==========================================================================
Typography
========================================================================== */
/**
* Address variable `h1` font-size and margin within `section` and `article`
* contexts in Firefox 4+, Safari 5, and Chrome.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/**
* Address styling not present in IE 8/9, Safari 5, and Chrome.
*/
abbr[title] {
border-bottom: 1px dotted;
}
/**
* Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
*/
b,
strong {
font-weight: bold;
}
/**
* Address styling not present in Safari 5 and Chrome.
*/
dfn {
font-style: italic;
}
/**
* Address differences between Firefox and other browsers.
*/
hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
/**
* Address styling not present in IE 8/9.
*/
mark {
background: #ff0;
color: #000;
}
/**
* Correct font family set oddly in Safari 5 and Chrome.
*/
code,
kbd,
pre,
samp {
font-family: monospace, serif;
font-size: 1em;
}
/**
* Improve readability of pre-formatted text in all browsers.
*/
pre {
white-space: pre-wrap;
}
/**
* Set consistent quote types.
*/
q {
quotes: "\201C" "\201D" "\2018" "\2019";
}
/**
* Address inconsistent and variable font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
/* ==========================================================================
Embedded content
========================================================================== */
/**
* Remove border when inside `a` element in IE 8/9.
*/
img {
border: 0;
}
/**
* Correct overflow displayed oddly in IE 9.
*/
svg:not(:root) {
overflow: hidden;
}
/* ==========================================================================
Figures
========================================================================== */
/**
* Address margin not present in IE 8/9 and Safari 5.
*/
figure {
margin: 0;
}
/* ==========================================================================
Forms
========================================================================== */
/**
* Define consistent border, margin, and padding.
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct `color` not being inherited in IE 8/9.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/
legend {
border: 0; /* 1 */
padding: 0; /* 2 */
}
/**
* 1. Correct font family not being inherited in all browsers.
* 2. Correct font size not being inherited in all browsers.
* 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
*/
button,
input,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 2 */
margin: 0; /* 3 */
}
/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
button,
input {
line-height: normal;
}
/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
* Correct `select` style inheritance in Firefox 4+ and Opera.
*/
button,
select {
text-transform: none;
}
/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
* `input` and others.
*/
button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* 2 */
cursor: pointer; /* 3 */
}
/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
cursor: default;
}
/**
* 1. Address box sizing set to `content-box` in IE 8/9.
* 2. Remove excess padding in IE 8/9.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
* (include `-moz` to future-proof).
*/
input[type="search"] {
-webkit-appearance: textfield; /* 1 */
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box; /* 2 */
box-sizing: content-box;
}
/**
* Remove inner padding and search cancel button in Safari 5 and Chrome
* on OS X.
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Remove inner padding and border in Firefox 4+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/**
* 1. Remove default vertical scrollbar in IE 8/9.
* 2. Improve readability and alignment in all browsers.
*/
textarea {
overflow: auto; /* 1 */
vertical-align: top; /* 2 */
}
/* ==========================================================================
Tables
========================================================================== */
/**
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}
/* GENERAL */
html,
body {
height: 100%;
}
body {
background: #fff;
}
body,
input,
textarea {
color: #191919;
font: 14px/140% 'Open Sans', Arial, sans-serif;
}
a {
color: #119bdf;
text-decoration: none;
}
a:hover {
color: #29aeef;
text-decoration: underline;
}
h1,
h2,
h3,
h4,
p,
ul,
code {
margin: 0 0 20px;
}
code {
font-family: 'Monaco', monospace, sans-serif;
}
/* SIDEBAR */
#sidebar {
background: #191919;
color: #fff;
float: left;
height: 100%;
overflow: auto;
position: fixed;
top: 0;
width: 240px;
}
#sidebar h1 {
background: #111;
font-size: 14px;
margin: 0;
padding: 20px;
text-transform: uppercase;
}
#sidebar h2 {
color: #888;
font-size: 14px;
margin: 0;
}
#sidebar ul {
list-style: none;
margin: 0;
padding: 0;
}
#sidebar ul#links {
padding: 20px;
}
#sidebar ul ul {
padding-left: 20px;
}
#sidebar ul li a {
color: #fff;
display: block;
padding: 0 0 15px;
}
#sidebar ul li a:active,
#sidebar ul li a.active {
text-decoration: underline;
}
#sidebar input {
background: #111;
border: 0;
border-radius: 2px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
-moz-box-shadow: inset 0 1px 5px rgba(0, 0, 0, 0.2);
-webkit-box-shadow: inset 0 1px 5px rgba(0, 0, 0, 0.2);
color: #ddd;
margin-bottom: 20px;
padding: 5px 10px;
}
#sidebar input:active,
#sidebar input:focus {
border-color: #ccc;
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.1);
-moz-box-shadow: inset 0 1px 5px rgba(0, 0, 0, 0.1);
-webkit-box-shadow: inset 0 1px 5px rgba(0, 0, 0, 0.1);
outline: none;
}
/* References */
#content {
padding: 20px;
padding-left: 260px;
max-width: 700px;
}
#content .control {
cursor: pointer;
font-size: 12px;
margin-left: 15px;
}
#content article {
clear: both;
margin: 15px 0;
}
#content article > a {
background: #333;
border-radius: 2px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
cursor: pointer;
display: block;
padding: 15px;
}
#content article > a:hover {
background: #222;
text-decoration: none;
}
#content a h2 {
color: #fff;
font-size: 18px;
font-weight: normal;
margin: 0;
}
#content a h2 code {
float: right;
font-size: 14px;
}
#content a h2 code b {
border-radius: 2px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
color: #fff;
font-weight: normal;
padding: 3px 6px;
}
/* Default */
#content article {
border-color: #e2e7ea;
}
#content article a h2 code {
color: #657e8b;
}
#content article a h2 code b {
background: #657e8b;
text-transform: uppercase;
}
/* GET */
#content article.GET a h2 code {
color: #119bdf;
}
#content article.GET a h2 code b {
background: #119bdf;
}
/* POST */
#content article.POST a h2 code {
color: #52ce0e;
}
#content article.POST a h2 code b {
background: #52ce0e;
}
/* PUT */
#content article.PUT a h2 code {
color: #e08f10;
}
#content article.PUT a h2 code b {
background: #e08f10;
}
/* DELETE */
#content article.DELETE a h2 code {
color: #e02a10;
}
#content article.DELETE a h2 code b {
background: #e02a10;
}
/* Reference's body */
#content h3 {
}
#content .body {
border-top: 1px solid #eef1f2;
display: block;
padding: 15px 15px 0;
}
#content .body code {
border: 1px solid #e2e7ea;
background: #eef1f2;
border-radius: 2px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
color: #546974;
padding: 0 1px;
}
#content .body p > code {
display: block;
padding: 15px;
white-space: pre;
}

9721
docs/assets.js Normal file

File diff suppressed because it is too large Load Diff

7
docs/component.json Normal file

@ -0,0 +1,7 @@
{
"name": "carte",
"description": "Simple API reference",
"version": "0.0.1",
"local": ["boot"],
"paths": ["lib"]
}

@ -0,0 +1,7 @@
FROM gitpod/workspace-full-vnc
USER root
## JEKYLL ##
RUN apt update && apt install -y ruby ruby-dev firefox

18
docs/index.html Executable file

@ -0,0 +1,18 @@
---
layout: default
---
<nav id='sidebar'>
{% include nav.html %}
</nav>
<section id='content'>
{% for post in site.posts %}
<article class='{{ post.type }}'>
<a name='{{ post.url }}' href='#{{ post.url }}'><h2>{% if post.type %}<code><b>{{ post.type }}</b> {{ post.path }}</code> {% endif %}{{ post.title }}</h2></a>
<section class='body'>
{{ post.content }}
</section>
</article>
{% endfor %}
</section>

@ -0,0 +1,11 @@
{
"name": "boot",
"description": "Main app boot component",
"dependencies": {
"necolas/normalize.css": "*",
"component/jquery": "*"
},
"local": ["filter"],
"scripts": ["index.js"],
"styles": ["style.css"]
}

49
docs/lib/boot/index.js Normal file

@ -0,0 +1,49 @@
var $ = require('jquery'),
Filter = require('filter');
// Collapsible articles
$('article').each(function () {
var that = $(this);
var header = that.children('a');
var body = that.children('.body');
body.hide();
header.toggle(
function () { body.slideDown('fast'); that.addClass('active'); },
function () { body.slideUp('fast'); that.removeClass('active'); }
);
});
var anchor = window.location.hash.substring(1);
if (anchor) $('article a[name=' + anchor + ']').trigger('click');
// Expanding the article on link click and scrolling down to it
$('#sidebar a').each(function () {
var that = $(this);
var id = that.attr('href').substring(1);
that.click(function (e) {
var header = $('article a[name="'+ id +'"]')
if (!header.parent().hasClass('active')) header.trigger('click');
$('html, body').animate({ scrollTop: header.offset().top }, 'fast');
});
// If we find a link in the body with similar anchor, add the same behavior
$('.body a[href=#'+ id +']').click(function (e) {
$('#sidebar a[href=#'+ id +']').trigger('click');
});
});
// Hide all/Show all links
var show = $('<a class=\'control show\'>Show all</a>');
show.click(function () {
$('#content article:not(".active") > a').trigger('click');
});
$('#content').prepend(show);
var hide = $('<a class=\'control hide\'>Hide all</a>');
hide.click(function () {
$('#content article.active > a').trigger('click');
});
$('#content').prepend(hide);
// Making our navigation sticky
new Filter($('#sidebar > ul'));

240
docs/lib/boot/style.css Normal file

@ -0,0 +1,240 @@
/* GENERAL */
html,
body {
height: 100%;
}
body {
background: #fff;
}
body,
input,
textarea {
color: #191919;
font: 14px/140% 'Open Sans', Arial, sans-serif;
}
a {
color: #119bdf;
text-decoration: none;
}
a:hover {
color: #29aeef;
text-decoration: underline;
}
h1,
h2,
h3,
h4,
p,
ul,
code {
margin: 0 0 20px;
}
code {
font-family: 'Monaco', monospace, sans-serif;
}
/* SIDEBAR */
#sidebar {
background: #191919;
color: #fff;
float: left;
height: 100%;
overflow: auto;
position: fixed;
top: 0;
width: 240px;
}
#sidebar h1 {
background: #111;
font-size: 14px;
margin: 0;
padding: 20px;
text-transform: uppercase;
}
#sidebar h2 {
color: #888;
font-size: 14px;
margin: 0;
}
#sidebar ul {
list-style: none;
margin: 0;
padding: 0;
}
#sidebar ul#links {
padding: 20px;
}
#sidebar ul ul {
padding-left: 20px;
}
#sidebar ul li a {
color: #fff;
display: block;
padding: 0 0 15px;
}
#sidebar ul li a:active,
#sidebar ul li a.active {
text-decoration: underline;
}
#sidebar input {
background: #111;
border: 0;
border-radius: 2px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
-moz-box-shadow: inset 0 1px 5px rgba(0, 0, 0, 0.2);
-webkit-box-shadow: inset 0 1px 5px rgba(0, 0, 0, 0.2);
color: #ddd;
margin-bottom: 20px;
padding: 5px 10px;
}
#sidebar input:active,
#sidebar input:focus {
border-color: #ccc;
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.1);
-moz-box-shadow: inset 0 1px 5px rgba(0, 0, 0, 0.1);
-webkit-box-shadow: inset 0 1px 5px rgba(0, 0, 0, 0.1);
outline: none;
}
/* References */
#content {
padding: 20px;
padding-left: 260px;
max-width: 700px;
}
#content .control {
cursor: pointer;
font-size: 12px;
margin-left: 15px;
}
#content article {
clear: both;
margin: 15px 0;
}
#content article > a {
background: #333;
border-radius: 2px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
cursor: pointer;
display: block;
padding: 15px;
}
#content article > a:hover {
background: #222;
text-decoration: none;
}
#content a h2 {
color: #fff;
font-size: 18px;
font-weight: normal;
margin: 0;
}
#content a h2 code {
float: right;
font-size: 14px;
}
#content a h2 code b {
border-radius: 2px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
color: #fff;
font-weight: normal;
padding: 3px 6px;
}
/* Default */
#content article {
border-color: #e2e7ea;
}
#content article a h2 code {
color: #657e8b;
}
#content article a h2 code b {
background: #657e8b;
text-transform: uppercase;
}
/* GET */
#content article.GET a h2 code {
color: #119bdf;
}
#content article.GET a h2 code b {
background: #119bdf;
}
/* POST */
#content article.POST a h2 code {
color: #52ce0e;
}
#content article.POST a h2 code b {
background: #52ce0e;
}
/* PUT */
#content article.PUT a h2 code {
color: #e08f10;
}
#content article.PUT a h2 code b {
background: #e08f10;
}
/* DELETE */
#content article.DELETE a h2 code {
color: #e02a10;
}
#content article.DELETE a h2 code b {
background: #e02a10;
}
/* Reference's body */
#content h3 {
}
#content .body {
border-top: 1px solid #eef1f2;
display: block;
padding: 15px 15px 0;
}
#content .body code {
border: 1px solid #e2e7ea;
background: #eef1f2;
border-radius: 2px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
color: #546974;
padding: 0 1px;
}
#content .body p > code {
display: block;
padding: 15px;
white-space: pre;
}

@ -0,0 +1,8 @@
{
"name": "filter",
"description": "Makes lists of links filterable.",
"dependencies": {
"component/jquery": "*"
},
"scripts": ["index.js"]
}

48
docs/lib/filter/index.js Normal file

@ -0,0 +1,48 @@
// Dependencies
var $ = require('jquery');
// Expose `Filter`.
module.exports = Filter;
// Case-insensitive contains()
$.expr[':'].Contains = function(a,i,m){
return (a.textContent || a.innerText || '').toUpperCase().indexOf(m[3].toUpperCase())>=0;
};
/**
* Initialize a filterable list.
*/
function Filter(list) {
this.el = list;
// Filter input
var form = $('<form>').attr({ 'action':'#' });
var input = $('<input>').attr({ 'type':'text', 'placeholder':'Filter by keyword' });
$(form).append(input).prependTo(this.el);
// Filter function
var self = this;
$(input).change(function () {
var filter = $(this).val();
if(filter) {
$(self.el).find('a:not(:Contains(' + filter + '))').parent().hide();
$(self.el).find('a:Contains(' + filter + ')').parent().show();
} else {
$(self.el).find('li').show();
}
// Hide titles when group is empty
$(self.el).find('ul').each(function () {
if (!$(this).find('li:visible').length) {
$(this).prev('h2').hide();
} else {
$(this).prev('h2').show();
}
});
return false;
})
.keyup( function () { $(this).change(); });
return this;
}

2
docs/robots.txt Executable file

@ -0,0 +1,2 @@
User-agent: *
Disallow: /images/

3
gitpod/README.md Normal file

@ -0,0 +1,3 @@
# Configuration for gitpod
This directory is used for various configuration on [gitpod](https://gitpod.io/)

@ -0,0 +1 @@
FROM scratch

39
gitpod/gitpod.Dockerfile Normal file

@ -0,0 +1,39 @@
FROM gitpod/workspace-full-vnc:latest
# To avoid bricked workspaces (https://github.com/gitpod-io/gitpod/issues/1171)
ARG DEBIAN_FRONTEND=noninteractive
# APT management (https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#apt-get)
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - \
&& add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable" \
&& apt-get update \
&& apt-get upgrade -y \
&& curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - \
&& apt dist-upgrade -y \
&& apt-get install -y clang valgrind shellcheck docker-ce docker-ce-cli containerd.io firefox tree xclip umbrello gnuplot fish zsh \
&& rm -rf /var/lib/apt/lists/* \
&& apt autoremove -y
## User config
# USER gitpod
# RUN curl -L https://get.oh-my.fish | fish \
# && sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" \
# && git clone --depth=1 https://github.com/Bash-it/bash-it.git /usr/src/bash-it \
# && /usr/src/bash-it/install.sh
### VLANG ###
USER root
ENV VLANG_VERSION="0.1.24"
COPY gitpod/vlang_init4.sh /usr/bin/vlang_init
RUN chmod +x /usr/bin/vlang_init
RUN vlang_init || exit 1
# Add custom functions
RUN if ! grep -qF 'ix()' /etc/bash.bashrc; then printf '%s\n' \
'# Custom' \
"ix() { curl -F 'f:1=<-' ix.io 2>/dev/null ;}" \
"xcopy() { xclip -se C ;}" \
>> /etc/bash.bashrc; fi

158
gitpod/vlang_init4.sh Normal file

@ -0,0 +1,158 @@
#!/bin/sh
# Created by Jacob Hrbek <kreyren@rixotstudio.cz> under license GPL-3 (https://www.gnu.org/licenses/gpl-3.0.en.html)
# Based in part on https://github.com/JesterOrNot/Gitpod-V which is created by Sean Hellum as unlicense
: "
Initialization script made for gitpod to install vlang backend in gitpod
This script is developed to be POSIX-compatible
Use environment variable '$DEBUG' to output verbose info
CONFIGURATION
- $VLANG_SOURCE = Path used for extraction and keeping of vlang source files
- $VLANG_VERSION = Expected vlang version (value 'latest' is supported through GitHub API)
- $VLANG_GROUP = Group used for those that are expected to have access in vlang
- $CACHEDIR = Path for cache directory, based on FSH3.0 (270120) this should be '$HOME/.cache'
- $VLANG_EXE = Path to which we will extract executable for vlang
"
# Configuration
[ -z "$VLANG_SOURCE" ] && VLANG_SOURCE="/opt/vlang"
[ -z "$VLANG_VERSION" ] && VLANG_VERSION="0.1.24"
[ -z "$VLANG_GROUP" ] && VLANG_GROUP="vlang"
[ -z "$CACHEDIR" ] && CACHEDIR="$HOME/.cache"
[ -z "$VLANG_EXE" ] && VLANG_EXE="/usr/bin/v"
# Simplified die for assertion
die() {
[ -z "$DIE_PREFIX" ] && DIE_PREFIX="FATAL:"
printf "$DIE_PREFIX %s\\n" "$2"
unset VLANG_SOURCE VLANG_VERSION DIE_PREFIX CACHEDIR VLANG_EXE
exit "$1"
}
edebug() {
[ -z "$DEBUG_PREFIX" ] && DEBUG_PREFIX="DEBUG:"
[ -n "$DEBUG" ] && printf "$DEBUG_PREFIX %s\\n" "$1"
}
# checkroot
if [ "$(id -u)" != "0" ]; then
die 3 "Insufficient permission UID '$(id -u)' used for vlang initialization"
elif [ "$(id -u)" = "0" ]; then
edebug "Script has been executed from expected used with UID '$(id -u)'"
else
die 256 "Unexpected happend while checking root"
fi
# Define latest version
case "$VLANG_VERSION" in
[0-9].[0-9].[0-9]|[0-9][0-9].[0-9].[0-9]|[0-9][0-9].[0-9][0-9].[0-9]|[0-9][0-9].[0-9][0-9].[0-9][0-9]|[0-9].[0-9][0-9].[0-9]|[0-9].[0-9].[0-9][0-9]) true ;;
latest)
VLANG_VERSION="$(curl https://api.github.com/repos/vlang/v/releases/latest 2>/dev/null | grep tag_name | sed '/^[[:blank:]]*"tag_name":[[:blank:]]*"\([^"]*\)",[[:blank:]]*$/!d; s//\1/; q' || die 4 "Unable to get latest vlang version for GitHub API")" ;;
*) die 2 "Unsupported vlang version '$VLANG_VERSION' has been parsed in vlang_init script"
esac
# Create cachedir
if [ ! -d "$CACHEDIR" ]; then
mkdir "$CACHEDIR" || die 1 "Unable to make a new directory in '$HOME/.cache' used for caching"
edebug "Created a new directory in '$CACHEDIR' used for caching"
elif [ -d "$CACHEDIR" ]; then
edebug "Directory '$CACHEDIR' already exits, skipping creation"
else
die 256 "Unexpected happend while creating chachedir, bug?"
fi
# Fetch
if [ ! -f "$CACHEDIR/vlang-$VLANG_VERSION.zip" ]; then
wget "https://github.com/vlang/v/releases/download/$VLANG_VERSION/v_linux.zip" -O "$CACHEDIR/vlang-$VLANG_VERSION.zip" || die 1 "Unable to fetch vlang tarball"
edebug "Vlang source tarball has been exported in '$CACHEDIR/vlang-$VLANG_VERSION.zip'"
elif [ -f "$CACHEDIR/vlang-$VLANG_VERSION.zip" ]; then
edebug "File '$CACHEDIR/vlang-$VLANG_VERSION.zip' already exists, skipping fetch"
else
die 256 "Unexpected happend while fetching vlang source tarball in '$CACHEDIR/vlang-$VLANG_VERSION'"
fi
# Create a new directory used for source files
if [ ! -d "$VLANG_SOURCE" ]; then
mkdir "$VLANG_SOURCE" || die 1 "Unable to create a new directory for source extraction of vlang"
edebug "Created a new directory in '$VLANG_SOURCE' used for vlang source files"
elif [ -d "$VLANG_SOURCE" ]; then
edebug "Directory in '$VLANG_SOURCE' is already present, skipping creation"
else
die 256 "Unexpected happend while creating a new directory in '$VLANG_SOURCE'"
fi
# Extract
if [ ! -f "$VLANG_SOURCE/Makefile" ]; then
unzip "$CACHEDIR/vlang-$VLANG_VERSION.zip" -d "$VLANG_SOURCE" || die 1 "Unable to extract vlang source in '$VLANG_SOURCE' directory"
edebug "vlang source files has been extracted in '$VLANG_SOURCE'"
elif [ -f "$VLANG_SOURCE/Makefile" ]; then
edebug "vlang source files are already extracted, skipping extract"
else
die 256 "Unexpected happend while extracting vlang source files"
fi
# Compile
if [ ! -f "$VLANG_SOURCE/v" ]; then
make -C "$VLANG_SOURCE" || die 1 "This system is unable to compile vlang"
edebug "vlang has been sucessfully compiled"
elif [ -f "$VLANG_SOURCE/v" ]; then
edebug "vlang is already compiled, skipping compilation"
else
die 256 "Unexpected happend while compiling vlang source files"
fi
# Export executable
if [ ! -h "$VLANG_EXE" ] && [ ! -f "$VLANG_EXE" ]; then
ln -sf "$VLANG_SOURCE/v" "$VLANG_EXE" || die 1 "Unable to symlink vlang executable in '$VLANG_EXE'"
edebug "Vlang executable has been sucessfully symlinked"
elif [ -f "$VLANG_EXE" ]; then
die 1 "Pathname '$VLANG_EXE' is a file where symlink to compiled vlang compiler is expected"
elif [ -h "$VLANG_EXE" ]; then
edebug "Vlang executable is already symlinked, skipping.."
fi
# Create a new user-group for vlang users
if ! grep -qF vlang /etc/passwd 2>/dev/null; then
groupadd vlang || die 1 "Unable to make a new user-group 'vlang'"
edebug "Created a new user-group 'vlang'"
elif grep -qF vlang /etc/passwd 2>/dev/null; then
edebug "User-group 'vlang' already exists, skipping creation"
else
die 256 "Unexpected happend while creating new user-group 'vlang'"
fi
# Transfer ownership of VLANG_SOURCE to vlang user-group
if [ "$(stat -c '%G' "$VLANG_SOURCE")" != vlang ]; then
chown -R root:vlang "$VLANG_SOURCE" || die 1 "Unable to transfer ownership of '$VLANG_SOURCE' directory to vlang user-group"
edebug "Permission to '$VLANG_SOURCE' directory has been transfered to vlang user-group"
elif [ "$(stat -c '%G' "$VLANG_SOURCE")" = vlang ]; then
edebug "Directory '$VLANG_SOURCE' is already owned by 'vlang' user-group"
else
die 256 "Unexpected happend while transfering '$VLANG_SOURCE' directory to 'vlang' user-group"
fi
# Add gitpod user in vlang group
if ! groups | grep -qF "$VLANG_GROUP"; then
usermod -a -G "$VLANG_GROUP" gitpod || die 1 "Unable to transfer user 'gitpod' in user-group '$VLANG_GROUP'"
chmod -R 0775 "$VLANG_SOURCE" || die 1 "Unable to set ownership to '$VLANG_SOURCE"
edebug "User 'gitpod' has been added in user-group '$VLANG_GROUP'"
elif groups | grep -qF $VLANG_GROUP; then
edebug "User 'gitpod' is already in user-group '$VLANG_GROUP'"
else
die 256 "Unexpected happend while adding user 'gitpod' in user-group '$VLANG_GROUP'"
fi
# Selfcheck
# FIXME: Fix selfcheck
# su gitpod -c "$VLANG_EXE" help 1>/dev/null
# case "$?" in
# 0) printf 'INFO: %s\n' "builtin vlang selfcheck passed" ;;
# *) die "$?" "builtin vlang selfcheck failed"
# esac
# Master unset
unset VLANG_SOURCE VLANG_VERSION DIE_PREFIX CACHEDIR VLANG_EXE

9
po/README.md Normal file

@ -0,0 +1,9 @@
Directory used for translations
files in this directory can be translated in different format on demand if development requires it.
### Abstract
This is expected to be crowd-sourced using Crowdin and alike
Expecting sourcing from various programming languages

2
po/english.toml Normal file

@ -0,0 +1,2 @@
myvar = "test_v"
myvar2 = "test1_v"

3
requirements.txt Normal file

@ -0,0 +1,3 @@
# Dependencies for python
termcolor==1.1.0

12
src/README.md Normal file

@ -0,0 +1,12 @@
# Source code of RXT0112
This is stub file used for various informations about the source that cannot be placed in the files itself
**FIXME:** Add Flow chart
**FIXME:** Add Dependency flow chart
**FIXME:** Add Mindmap
### References
Rust source hierarchy - https://doc.rust-lang.org/cargo/reference/manifest.html#the-project-layout

14
src/bin/README.md Normal file

@ -0,0 +1,14 @@
FIXME: `main` is a place-holder -> Looking for a good name for backend resolver for zernit's backend i.e [paludis](https://paludis.exherbo.org/) using `cave`
---
# Core binary
This directory is used for core binary meaning that this binary is executed first and should resolve to required commands i.e if end-user executes `main help` expecting usage instructions then this binary should resolve the argument and execute `$repodir/src/subcoms/help` in it's appropriate place on the system once compiled (if applies) unless the language has more efficient method to handle this scenario through library alike rustlang's clap that generates the help message based on arguments provided.
## ABSTRACT
Resolve arguments to subcommands and provide backend for libraries/modules if requried
### Practical examples
end-user inputs `main help` through cli -> Display help message
end-user inputs `main resolve app-compat/wine` -> Resolve wine on end-user's system if compatible system and toolchain is used

Binary file not shown.

13
src/bin/main.bash Normal file

@ -0,0 +1,13 @@
#!/bin/bash
printf '%s\n' "ping"
# Argument management
while [ $# -ge 1 ]; do case $1 in
--help|-h|help)
fixme "Help message here"
shift 1
;;
*)
die 2 "FIXME: Syntax error"
esac; done

2
src/bin/main.bf Normal file

@ -0,0 +1,2 @@
[ Refer to documentation of this command for further informations ]
-[------->+<]>---.+++.>+[--->++<]>++.-----------.--------.-----------.[-->+<]>+++.>-[--->+<]>-.-[--->+<]>+.+++[->+++<]>++.+++++++++++++.+++++.-------.-----------.--[--->+<]>-.+++[->+++<]>.--[--->+<]>-.-[->++++<]>--.---[->+++<]>.+++++++++++++.----.-----.+++++++++++.[---->+<]>+++.-[--->++<]>-.+++++.++++++.-----.[--->+<]>-----.[->+++<]>+.-[->+++<]>.[->+++<]>++.[--->+<]>----.+++[->+++<]>++.++++++++.+++++.--------.-[--->+<]>--.+[->+++<]>+.++++++++.

19
src/bin/main.c Normal file

@ -0,0 +1,19 @@
#include <stdio.h>
#include <string.h>
// FIXME: Does not build on clang
// FIXME-TEST: Adapt valgrind
sagag
int main(int argc, char **argv) {
if(argc < 2) {
// FIXME: Source better help message from po depending on language used
printf("%s\n", "Argument(s) required, use -h for display help");
return 2;
} else if(strcmp(argv[1], "-h") == 0) {
printf("FIXME: %s\n", "Add optionsi");
return 1;
} else {
printf("FATAL: %s\n", "Unexpected happend while processing arguments");
return 256;
}
}

9
src/bin/main.cpp Normal file

@ -0,0 +1,9 @@
#include <iostream>
using namespace std;
int main() {
// Refer to the documentation
cout << "FIXME: Translate zernit into a C++++";
return 1;
}

22
src/bin/main.cs Normal file

@ -0,0 +1,22 @@
// C# program to print Hello World!
using System;
// namespace declaration
namespace HelloWorldApp {
// Class declaration
class Geeks {
// Main Method
static void Main(string[] args) {
// statement
// printing Hello World!
Console.WriteLine("Hello World!");
// To prevents the screen from
// running and closing quickly
Console.ReadKey();
}
}
}

11
src/bin/main.go Normal file

@ -0,0 +1,11 @@
package main
import "fmt"
func helloworld() string {
return "Hello World!!"
}
func main() {
fmt.Println(helloworld())
}

12
src/bin/main.jar Normal file

@ -0,0 +1,12 @@
/* This is a simple Java program.
FileName : "HelloWorld.java". */
class HelloWorld
{
// Your program begins with a call to main().
// Prints "Hello, World" to the terminal window.
public static void main(String args[])
{
System.out.println("Hello, World");
}
}

39
src/bin/main.py Normal file

@ -0,0 +1,39 @@
import sys
from termcolor import cprint
"""
FIXME-DOCS: Add documentation
Made for Python 3.6 ~ Python 3.8.1
Requires pip for termcolor
"""
# FIXME: Add logic to generate help message and handle arguments automatically
def cli_arg():
if len(sys.argv) == 1:
cprint("No Arguments Were Passed. Type -h to view basic usage.", "red")
exit()
# sys.arg[1] is the file itself.
elif sys.argv[1].lower() == "-h":
cprint("""
File used as bankend to parse arguments and options into subcommands
SYNOPSIS: command OPTION [SUBCOMS]
OPTIONS:
-G, --gui Open Graphical User Interface
SUBCOMS (Subcommands):
resolve resolve package on the system
""", "green")
else:
cprint("Incorrect Argument! Type -h to view basic usage.", "red")
if __name__ == '__main__':
try:
cli_arg()
except IndexError:
pass

96
src/bin/main.rs Normal file

@ -0,0 +1,96 @@
// Created by Jacob Hrbek <kreyren@rixotstudio.cz> under GPL-3 license (https://www.gnu.org/licenses/gpl-3.0.en.html) in 2020
/*
File used as bankend to parse arguments and options into subcommands
SYNOPSIS: command OPTION [SUBCOMS]
OPTIONS:
-G, --gui Open Graphical User Interface
SUBCOMS (Subcommands):
resolve resolve package on the system
*/
// Sourcing
// FIXME-QA: Is this the best way to do this?
// FIXME: Source the crate based on the name in Cargo.toml
use zernit_logger::fixme;
// For argument management
use clap::{Arg, App, SubCommand};
fn main() {
fixme!("Add method to handle translations");
fixme!("Allow changing name based on config file");
fixme!("Verify that this works on POSIX");
// Capture arguments (https://docs.rs/clap/2.33.0/clap/)
// FIXME-BENCHMARK: Benchmark other option like structOpt (https://docs.rs/structopt/0.3.7/structopt/#subcommands)
// FIXME-TEST: Add test to make sure that clap works the way we want it
let matches = App::new("RXT0112")
.version("INIT_PHASE_VERSION") // Replace with valid versioning
.author("Jacob Hrbek <kreyren@rixotstudio.cz>")
.about("Work in progress package manager expected to support any kernel on any downstream")
.arg(Arg::with_name("gui")
.short("G")
.long("gui")
.multiple(true)
.help("Opens up a Graphical User Interface frontend"))
.arg(Arg::with_name("dev")
.short("D")
.long("development")
.multiple(true)
.help("Perform all following actions in a temporary sandboxed directory used for development"))
// FIXME-QA: Sort subcommands alphabetically
.subcommand(SubCommand::with_name("resolve")
.about("Resolved package to be imported in the system")
.arg_from_usage("<category/package> 'Package identifier'"))
.subcommand(SubCommand::with_name("remove")
.about("Remove package from the system")
.arg_from_usage("-r, remove 'Removing of packages'"))
.subcommand(SubCommand::with_name("list")
.about("Listing of packages")
.arg_from_usage("-l, list 'Listing of packages'"))
.subcommand(SubCommand::with_name("deploy")
.about("deploy (WIP-NAME) on target used for initial instalation")
.arg_from_usage("-l, list 'Listing of packages'"))
// FIXME: Replace with following: .arg_from_usage("deploy 'Deploy (WIP-NAME) on target which creates required file hierarchy and configuration needed for (WIP-NAME)'"))
.subcommand(SubCommand::with_name("hijack")
.about("Import (WIP-NAME) on target system that already exists for (WIP-NAME) to be used as alternative package manager")
.arg_from_usage("-l, list 'Listing of packages'"))
// FIXME: Replace with following: .arg_from_usage("hijack 'Import (WIP-NAME) on target system that already exists for (WIP-NAME) to be used as alternative package manager'"))
.get_matches();
// Manage arguments
// NOTICE: Do not add else statement to catch unexpecteds since this is handled by clap
if matches.is_present("gui") {
unimplemented!("GUI method is not yet implemented");
} else if matches.is_present("dev") {
// WARNING: Has to be implemented prior to implementing other features
// FIXME-TEST: Make a test to ensure that features are not escaping sandbox
// FIXME: Translate in rustlang from english
fixme!("Create a new directory in tmpdir/name-of-project");
//emkdir("$TEMPDIR/RXT0112");
fixme!("Create sandboxed environment for testing of features");
unimplemented!("Development method is not yet supported");
}
// Manage subcommands
// NOTICE: Do not add else statement to catch unexpecteds since this is handled by clap
// FIXME: Convert this on 'for loop' looking for available subcommands to avoid hardcoding
// FIXME-QA: Ugly?
if let Some(_matches) = matches.subcommand_matches("resolve") {
zernit::subcoms::resolve::rustlang::resolve::resolve();
} else if let Some(_matches) = matches.subcommand_matches("list") {
zernit::subcoms::list::rustlang::list::list();
} else if let Some(_matches) = matches.subcommand_matches("deploy") {
zernit::subcoms::deploy::rustlang::deploy::deploy();
} else if let Some(_matches) = matches.subcommand_matches("hijack") {
zernit::subcoms::hijack::rustlang::hijack::hijack();
} else if let Some(_matches) = matches.subcommand_matches("remove") {
zernit::subcoms::remove::rustlang::remove::remove();
}
fixme!("Returns 0 even when no argument was parsed -> Expecting Exit 2 with help message");
}

23
src/bin/main.sh Normal file

@ -0,0 +1,23 @@
#!/bin/sh
printf '%s\n' "ping"
# Simplified assertion
die() {
printf 'FATAL: %s\n' "$2"
exit "$1"
}
fixme() {
[ -z "$IGNORE_FIXME" ] && printf 'FIXME: %s\n' "$1"
}
# Argument management
while [ $# -ge 1 ]; do case $1 in
--help|-h|help)
fixme "Help message here"
shift 1
;;
*)
die 2 "FIXME: Syntax error"
esac; done

Some files were not shown because too many files have changed in this diff Show More