Compare commits
418 Commits
update-nul
...
master
Author | SHA1 | Date |
---|---|---|
Jephté Clain | 0527aee96e | |
Jephté Clain | f156fe0b1e | |
Jephté Clain | 625d5f1d25 | |
Jephté Clain | e30820261a | |
Jephté Clain | 5c03184c94 | |
Jephté Clain | 0ed5ddf6b9 | |
Jephté Clain | f39787c6ec | |
Jephté Clain | 11145f686a | |
Jephté Clain | 21042e4677 | |
Jephté Clain | e4176dfd94 | |
Jephté Clain | 1787aa2310 | |
Jephté Clain | d1f77aa354 | |
Jephté Clain | c2cfd7739a | |
Jephté Clain | e7745c2dd4 | |
Jephté Clain | ce8f541520 | |
Jephté Clain | 30594aa84b | |
Jephté Clain | 2df175ee57 | |
Jephté Clain | fbb05f8dee | |
Jephté Clain | 9d8e3c53d1 | |
Jephté Clain | 2886c40aa2 | |
Jephté Clain | e50a686536 | |
Jephté Clain | 8570d12ce6 | |
Jephté Clain | 5d6c6b4053 | |
Jephté Clain | 90bda71351 | |
Jephté Clain | 7d7b88a427 | |
Jephté Clain | 5cc1826744 | |
Jephté Clain | 0bf0f48ad0 | |
Jephté Clain | b818e11c73 | |
Jephté Clain | ad14de35ea | |
Jephté Clain | 54a5b5485d | |
Jephté Clain | 5a06851b0f | |
Jephté Clain | a855b04c21 | |
Jephté Clain | e5315532a1 | |
Jephté Clain | db1467b8fd | |
Jephté Clain | 3123d8e65e | |
Jephté Clain | d9b1485354 | |
Jephté Clain | 744a3fa0ac | |
Jephté Clain | 2803868e16 | |
Jephté Clain | 4f7bc3f6bf | |
Jephté Clain | 8cdc3cb2bb | |
Jephté Clain | 1b7b2744ba | |
Jephté Clain | b9951d269d | |
Jephté Clain | 4ffd43f2e0 | |
Jephté Clain | ddfbc00f78 | |
Jephté Clain | e33f2a5afe | |
Jephté Clain | f245e17138 | |
Jephté Clain | efe31b8c9d | |
Jephté Clain | 5cb4112cd0 | |
Jephté Clain | f424f41561 | |
Jephté Clain | e5a147351d | |
Jephté Clain | 771bd1c563 | |
Jephté Clain | 776cd96fd7 | |
Jephté Clain | 471315dcbb | |
Jephté Clain | bfdf9b5bef | |
Jephté Clain | 108215fce4 | |
Jephté Clain | 6ddb870a56 | |
Jephté Clain | c0b130fd29 | |
Jephté Clain | ae20e49440 | |
Jephté Clain | 2e5101d6a2 | |
Jephté Clain | cff4833370 | |
Jephté Clain | 9c6e7a8750 | |
Jephté Clain | e9d52d8f35 | |
Jephté Clain | d3d86c6ff9 | |
Jephté Clain | b761cb610c | |
Jephté Clain | 6e36d26471 | |
Jephté Clain | 2344a63da7 | |
Jephté Clain | 61dc4c1154 | |
Jephté Clain | f36be0dfb2 | |
Jephté Clain | 63674ef02b | |
Jephté Clain | ee80091650 | |
Jephté Clain | e5ab8dd240 | |
Jephté Clain | 8b0d4713b5 | |
Jephté Clain | 1025357631 | |
Jephté Clain | 2a023070e7 | |
Jephté Clain | 27a82e439b | |
Jephté Clain | 92157dee42 | |
Jephté Clain | efe9fbbbdb | |
Jephté Clain | dc94b5c0cf | |
Jephté Clain | 5e876652f8 | |
Jephté Clain | 9c1a8e67b2 | |
Jephté Clain | 81cefdc51e | |
Jephté Clain | c5796d6b2d | |
Jephté Clain | 6919352a59 | |
Jephté Clain | 7ba7d1c501 | |
Jephté Clain | 9d7594356e | |
Jephté Clain | c0d4e950e9 | |
Jephté Clain | e071b81ad7 | |
Jephté Clain | d5ff03481d | |
Jephté Clain | 3ecb127f33 | |
Jephté Clain | 432ab6f915 | |
Jephté Clain | 01c14bbeee | |
Jephté Clain | 0913c2ed9f | |
Jephté Clain | 61433fbf9c | |
Jephté Clain | e4e0a55073 | |
Jephté Clain | e08c66bc89 | |
Jephté Clain | 0d1193278c | |
Jephté Clain | 3ead1f37bc | |
Jephté Clain | 93de256914 | |
Jephté Clain | 5e33a36bcd | |
Jephté Clain | 9e1351529a | |
Jephté Clain | c9e8110ece | |
Jephté Clain | c671cb399d | |
Jephté Clain | 1a764f15ff | |
Jephté Clain | 027f9b8c45 | |
Jephté Clain | 2293239614 | |
Jephté Clain | 9fc07bb4e7 | |
Jephté Clain | 7b15f945ba | |
Jephté Clain | f2cfaeef13 | |
Jephté Clain | c36b8fb577 | |
Jephté Clain | 68a42d0f6a | |
Jephté Clain | 306e77f307 | |
Jephté Clain | b006bb44cd | |
Jephté Clain | 6963d4109a | |
Jephté Clain | 9665d5a5d0 | |
Jephté Clain | 137dfa9674 | |
Jephté Clain | 440d2aa1fa | |
Jephté Clain | f4047a3b64 | |
Jephté Clain | af1bdd3ca5 | |
Jephté Clain | 85e77e4bda | |
Jephté Clain | a56ec0e0f1 | |
Jephté Clain | d6e78b9665 | |
Jephté Clain | 1699cc5f44 | |
Jephté Clain | 2ae8406a4b | |
Jephté Clain | 1db7d08e82 | |
Jephté Clain | aba08c2600 | |
Jephté Clain | e83b6d1036 | |
Jephté Clain | af9096df0c | |
Jephté Clain | 89f0c0974d | |
Jephté Clain | fb434c2a96 | |
Jephté Clain | f7ab14ff7e | |
Jephté Clain | f46812f07a | |
Jephté Clain | e76a6a6a84 | |
Jephté Clain | 45bf006040 | |
Jephté Clain | d5cc9ca031 | |
Jephté Clain | 06686d98f1 | |
Jephté Clain | 9a018a6f51 | |
Jephté Clain | a932a1a7cd | |
Jephté Clain | cb09f4db83 | |
Jephté Clain | f8952225cf | |
Jephté Clain | 4f7bcbcede | |
Jephté Clain | 5cdd93d3d8 | |
Jephté Clain | 7030b8783c | |
Jephté Clain | 8a682edade | |
Jephté Clain | a85cdf6ddc | |
Jephté Clain | d75783b0eb | |
Jephté Clain | 11e6021e77 | |
Jephté Clain | 938307cb69 | |
Jephté Clain | 8b49084d91 | |
Jephté Clain | 98c1ac8843 | |
Jephté Clain | 28d42b00f3 | |
Jephté Clain | dfdfd59eae | |
Jephté Clain | 6af03598c8 | |
Jephté Clain | b3a44d07ad | |
Jephté Clain | 111463a861 | |
Jephté Clain | fe839f4c7b | |
Jephté Clain | ba8e1a1dcc | |
Jephté Clain | a75b91e2e9 | |
Jephté Clain | dfb5fc31d8 | |
Jephté Clain | 40c9cb968c | |
Jephté Clain | 580e20b342 | |
Jephté Clain | da28d8b429 | |
Jephté Clain | b03df72236 | |
Jephté Clain | 7a4870f8c8 | |
Jephté Clain | a4ed8d9a45 | |
Jephté Clain | 3d54e3771d | |
Jephté Clain | 4607f0f3c2 | |
deploy | 4bf4f6d1f3 | |
deploy | 47e058330f | |
Jephté Clain | 026b8496fd | |
deploy | 31e43dabd7 | |
Jephté Clain | b191552cb0 | |
Jephté Clain | 1d4c4b4b04 | |
Jephté Clain | b3983edd2a | |
Jephté Clain | 543d2d2f79 | |
Jephté Clain | f1a9c7a5e5 | |
Jephté Clain | ad44a1c2e5 | |
Jephté Clain | 44f719b2e6 | |
Jephté Clain | 40d6605472 | |
Jephté Clain | f64bbbf0ee | |
Jephté Clain | 01e940b953 | |
Jephté Clain | e453ed2533 | |
Jephté Clain | 434a8bce16 | |
Jephté Clain | 337f24c447 | |
Jephté Clain | dac4cb6a73 | |
Jephté Clain | c6d00839d2 | |
Jephté Clain | 24d05192d1 | |
Jephté Clain | 45c40d735b | |
Jephté Clain | c921d2a902 | |
Jephté Clain | edf956f1bb | |
Jephté Clain | 85842f3c41 | |
Jephté Clain | e395720902 | |
Jephté Clain | 4603b1a6a0 | |
Jephté Clain | a91542b47f | |
Jephté Clain | 51c4c3317c | |
Jephté Clain | 82a7952e2a | |
Jephté Clain | d1d32de841 | |
Jephté Clain | 037cb1a9e2 | |
Jephté Clain | 04d037f3ed | |
Jephté Clain | 725ba6d2c2 | |
Jephté Clain | 246b9473aa | |
Jephté Clain | 9555874ec3 | |
Jephté Clain | e2e6b76e4a | |
Jephté Clain | 2ec6c21ec8 | |
Jephté Clain | bc1a740f35 | |
Jephté Clain | ada594a30b | |
Jephté Clain | 856c948eeb | |
Jephté Clain | cc1b45d0fc | |
Jephté Clain | 28ceb74b44 | |
Jephté Clain | 751e372bfd | |
Jephté Clain | c5e15368a1 | |
Jephté Clain | 14beb13b7c | |
Jephté Clain | f474657be6 | |
Jephté Clain | 109797502a | |
Jephté Clain | bb7a4fc84c | |
Jephté Clain | e0e6178aa5 | |
Jephté Clain | 07bea2c842 | |
Jephté Clain | 7254661f45 | |
Jephté Clain | fb285e0319 | |
Jephté Clain | 9d5713c1f9 | |
Jephté Clain | d083d87c93 | |
Jephté Clain | 9ed51b43f8 | |
Jephté Clain | e2b2f49214 | |
Jephté Clain | c147a0cef3 | |
Jephté Clain | 05fd86acc7 | |
Jephté Clain | 10177a16de | |
Jephté Clain | b18b24c22d | |
Jephté Clain | f4f9b69257 | |
Jephté Clain | 74190f7264 | |
Jephté Clain | 9fad9924ef | |
Jephté Clain | 1d7e2d0949 | |
Jephté Clain | 7268cecce6 | |
Jephté Clain | aa269661cb | |
Jephté Clain | f7b3f90ba0 | |
Jephté Clain | 1c4c1c3faf | |
Jephté Clain | ccf3c67278 | |
Jephté Clain | 1b12cee1fb | |
Jephté Clain | 45976f45c2 | |
Jephté Clain | 1960c0c94e | |
Jephté Clain | 4f206d732c | |
Jephté Clain | d666859b83 | |
Jephté Clain | 4ee346b521 | |
Jephté Clain | c9796b2562 | |
Jephté Clain | 668eec1497 | |
Jephté Clain | abd178bf0d | |
Jephté Clain | b0db9af448 | |
Jephté Clain | d7763fd8b7 | |
Jephté Clain | b7492fc34e | |
Jephté Clain | 08c081ac33 | |
Jephté Clain | 98129cd400 | |
Jephté Clain | 99c0ccd66d | |
Jephté Clain | 2283a66201 | |
Jephté Clain | 412ad542f4 | |
Jephté Clain | 8f1810f52b | |
Jephté Clain | 640a2b1158 | |
Jephté Clain | 7f143c0fd4 | |
Jephté Clain | e873ad523e | |
Jephté Clain | 625b45582a | |
Jephté Clain | 300935c83e | |
Jephté Clain | 43330297e3 | |
Jephté Clain | 046ba0d323 | |
Jephté Clain | 7fd6b81742 | |
Jephté Clain | 4ba6909e4b | |
Jephté Clain | 0c21e704c3 | |
Jephté Clain | c8b8f107a1 | |
Jephté Clain | 979c39c01b | |
Jephté Clain | fd5b7872a3 | |
Jephté Clain | ad1898388f | |
Jephté Clain | c33ff4c5ef | |
Jephté Clain | 247b449752 | |
Jephté Clain | 28f4d398c2 | |
Jephté Clain | f28df5266c | |
Jephté Clain | 1210ca7382 | |
Jephté Clain | 46416f713c | |
Jephté Clain | 60a8796f4c | |
Jephté Clain | 6f01bac2be | |
Jephté Clain | 175f6edce6 | |
Jephté Clain | 73db7284cf | |
Jephté Clain | 5fc55cc3e7 | |
Jephté Clain | 21274af799 | |
Jephté Clain | f7f8889bba | |
Jephté Clain | 747c563a2b | |
Jephté Clain | 4fdd23c8eb | |
Jephté Clain | 5457228b02 | |
Jephté Clain | a55f9c4a04 | |
Jephté Clain | ac7efadaae | |
Jephté Clain | 528483893f | |
Jephté Clain | d5c51622c2 | |
Jephté Clain | f7d036a60f | |
Jephté Clain | 87b8d5b5b0 | |
Jephté Clain | 0866bbd4d9 | |
Jephté Clain | 8daf4ec6a1 | |
Jephté Clain | ef1c8f2996 | |
Jephté Clain | 269379f3a2 | |
Jephté Clain | aae3703558 | |
Jephté Clain | f8750935a8 | |
Jephté Clain | c202a279dd | |
Jephté Clain | 921caa1acc | |
Jephté Clain | ce98445e41 | |
Jephté Clain | 2b5ed18ee3 | |
Jephté Clain | 29c54e7548 | |
Jephté Clain | de53bae548 | |
Jephté Clain | 600b8246fa | |
Jephté Clain | 914f635fe1 | |
Jephté Clain | a774497248 | |
Jephté Clain | 5a444a65b9 | |
Jephté Clain | 425e8a5642 | |
Jephté Clain | 52c3d7a690 | |
Jephté Clain | d5f8fa4fff | |
Jephté Clain | 5fe5137328 | |
Jephté Clain | 74cf35b47c | |
Jephté Clain | 046862389d | |
Jephté Clain | 3dfe5427e9 | |
Jephté Clain | 488a2574a8 | |
Jephté Clain | 13ce5b8254 | |
Jephté Clain | d03b04f822 | |
Jephté Clain | 68794910a6 | |
Jephté Clain | 7fad3635e2 | |
Jephté Clain | f65dda68e4 | |
Jephté Clain | bc7eebc487 | |
Jephté Clain | 8af50f4b91 | |
Jephté Clain | 458ccd3df1 | |
Jephté Clain | c97bc6a92e | |
Jephté Clain | ae70f66089 | |
Jephté Clain | f508dae60f | |
Jephté Clain | 60a4c73857 | |
Jephté Clain | 85ac283eff | |
Jephté Clain | 80db4629f6 | |
Jephté Clain | 4400ba758a | |
Jephté Clain | ae7ffeb7b1 | |
Jephté Clain | 9bfd515cac | |
Jephté Clain | a5a41d9b1e | |
Jephté Clain | 7e5859eee5 | |
Jephté Clain | b3429603c9 | |
Jephté Clain | c44d1d31f7 | |
Jephté Clain | aa4eb4a481 | |
Jephté Clain | 4c58b127af | |
Jephté Clain | 991f94b48c | |
Jephté Clain | fb96852bf6 | |
Jephté Clain | 386fc0d070 | |
Jephté Clain | c2f43e6b6d | |
Jephté Clain | 8cb3b2fc57 | |
Jephté Clain | 5967541159 | |
Jephté Clain | d79e218dfc | |
Jephté Clain | ccbfff4366 | |
Jephté Clain | 50dee34e6f | |
Jephté Clain | 99d5069b55 | |
Jephté Clain | a825f3b931 | |
Jephté Clain | 8c143e16c3 | |
Jephté Clain | 7e26ae1e0c | |
Jephté Clain | cbb34ecd3f | |
Jephté Clain | 7524a2869a | |
Jephté Clain | 9b03dcd69f | |
Jephté Clain | c7eca6ae7d | |
Jephté Clain | 8b4067ab49 | |
Jephté Clain | 3971dca710 | |
Jephté Clain | c66eee117e | |
Jephté Clain | 7c135faa60 | |
Jephté Clain | 72c3512072 | |
Jephté Clain | 0891e89278 | |
Jephté Clain | d197fc0420 | |
Jephté Clain | d028c47842 | |
Jephté Clain | b068a12c02 | |
Jephté Clain | d7c981d257 | |
Jephté Clain | 7ec538187b | |
Jephté Clain | 43c5445603 | |
Jephté Clain | 0054d4de70 | |
Jephté Clain | 6a03853aa7 | |
Jephté Clain | 6462bec2c6 | |
Jephté Clain | 7a728a9d34 | |
Jephté Clain | df788f6159 | |
Jephté Clain | edaaec19ee | |
Jephté Clain | 41089f7ed0 | |
Jephté Clain | af2b74f31f | |
Jephté Clain | de5727e7e2 | |
Jephté Clain | 49c8e756e6 | |
Jephté Clain | 71bb5aaaec | |
Jephté Clain | 44b1954a43 | |
Jephté Clain | d70825c296 | |
Jephté Clain | 45d912d495 | |
Jephté Clain | 3292686e33 | |
Jephté Clain | 5139c09d70 | |
Jephté Clain | 25a4f9640d | |
Jephté Clain | ba29496150 | |
Jephté Clain | f72dd86584 | |
Jephté Clain | 01325d0c23 | |
Jephté Clain | 45da726704 | |
Jephté Clain | dcb637e054 | |
Jephté Clain | 9c6f606daa | |
Jephté Clain | 764dd53bf8 | |
Jephté Clain | 307fa4827a | |
Jephté Clain | 45c6422e62 | |
Jephté Clain | a9004fa1d2 | |
Jephté Clain | 434a87019f | |
Jephté Clain | 6d0b122a8f | |
Jephté Clain | af969e4876 | |
Jephté Clain | b0d9cd91bb | |
Jephté Clain | 0c4af8a27a | |
Jephté Clain | 7ff32caed0 | |
Jephté Clain | 3293d09e90 | |
Jephté Clain | e6be47eb32 | |
Jephté Clain | 1151b5c01a | |
Jephté Clain | 2f86786c94 | |
Jephté Clain | e9d0aeebaf | |
Jephté Clain | 0193e7c35d | |
Jephté Clain | 7583dedaea | |
Jephté Clain | 96c146e0c5 | |
Jephté Clain | 4f7cb900d2 | |
Jephté Clain | 9d991e2d43 | |
Jephté Clain | e3ba5800c0 | |
Jephté Clain | 48c662be2e | |
Jephté Clain | 566f1d7afb | |
Jephté Clain | f34b63a51e | |
Jephté Clain | 2873638aa5 | |
Jephté Clain | 3a4cc1258d | |
Jephté Clain | 22adfe63ee | |
Jephté Clain | e74480cccc | |
Jephté Clain | 56b18a4eb6 | |
Jephté Clain | ed180b5bfb |
430
CHANGES.md
430
CHANGES.md
|
@ -1,3 +1,433 @@
|
||||||
|
## Version 11.3.0 du 24/09/2024-16:02
|
||||||
|
|
||||||
|
* `625d5f1` bug mineur
|
||||||
|
* `e308202` dkbuild: améliorer from_glob()
|
||||||
|
* `5c03184` lgrep, lless: modifier la doc pour ne parler que d'un fichier
|
||||||
|
|
||||||
|
## Version 11.2.0 du 21/06/2024-20:34
|
||||||
|
|
||||||
|
* `21042e4` bug
|
||||||
|
* `e4176df` reginc: possibilité de renommer des fichiers
|
||||||
|
* `1787aa2` bug
|
||||||
|
* `d1f77aa` dkbuild: support dist none et tag LATEST
|
||||||
|
* `c2cfd77` bug
|
||||||
|
* `e7745c2` dk: support --plain-output
|
||||||
|
* `ce8f541` dkbuild: -g pour --profile
|
||||||
|
* `30594aa` maj distributions
|
||||||
|
* `2df175e` dkbuild: cosmetic
|
||||||
|
* `fbb05f8` support des versions AMUE
|
||||||
|
|
||||||
|
## Version 11.1.0 du 01/02/2024-20:59
|
||||||
|
|
||||||
|
* `8570d12` pff: les répertoires liés peuvent contenir des fichiers
|
||||||
|
* `5d6c6b4` synchroniser pff et nulib/pff
|
||||||
|
* `90bda71` pff: support des répertoires liés
|
||||||
|
* `7d7b88a` autoriser les feature branches qui commencent par wip/
|
||||||
|
* `5cc1826` dk et dkbuild: support .composer.yaml et setup_image
|
||||||
|
* `0bf0f48` dk: support ~/.dkbuild.env
|
||||||
|
* `b818e11` dkbuild: ajout de --plain
|
||||||
|
* `ad14de3` dkbuild: configuration profil prod par défaut
|
||||||
|
* `54a5b54` Sscreen: support des cas où screen n'est pas dans le PATH
|
||||||
|
* `5a06851` dkbuild: support profil par défaut
|
||||||
|
* `a855b04` dkbuild: les versions de profil sont ordonnées comme les versions de distribution
|
||||||
|
* `e531553` dkbuild: sans --all-profiles, ne build que dans le profil par défaut
|
||||||
|
* `db1467b` bug
|
||||||
|
* `3123d8e` dkbuild: mappings par défaut
|
||||||
|
* `d9b1485` charnière entre java 8 et java 11
|
||||||
|
* `744a3fa` dkbuild: indiquer si la version de Java demandée n'est pas trouvée
|
||||||
|
* `2803868` dkbuild: marquer plus d'action comme étant du build
|
||||||
|
* `4f7bc3f` dkbuild: bug avec -u seul
|
||||||
|
* `8cdc3cb` modifs.mineures sans commentaires
|
||||||
|
|
||||||
|
## Version 11.0.0 du 05/09/2023-14:29
|
||||||
|
|
||||||
|
* `ddfbc00` maj des images par défaut dk et dkbuild
|
||||||
|
* `e33f2a5` ajout registry privé
|
||||||
|
* `f245e17` image par défaut en prod
|
||||||
|
* `efe31b8` support java17
|
||||||
|
* `5cb4112` dkbuild: bug profil unitaire
|
||||||
|
* `f424f41` dkbuild: -u n'implique plus -b
|
||||||
|
* `e5a1473` dkbuild: implémenter -u
|
||||||
|
|
||||||
|
## Version 10.0.0 du 12/08/2023-21:06
|
||||||
|
|
||||||
|
* `bfdf9b5` support système sans python2
|
||||||
|
* `108215f` maj registry pour devel
|
||||||
|
* `6ddb870` dkbuild: support profil nu
|
||||||
|
* `c0b130f` dkbuild: support profil jclain
|
||||||
|
* `ae20e49` modifs.mineures sans commentaires
|
||||||
|
* `2e5101d` ajout de lgrep
|
||||||
|
* `cff4833` ajout de ldiff
|
||||||
|
* `9c6e7a8` renommer less1 en lless
|
||||||
|
* `e9d52d8` ajout de less1 pour lire des fichiers latin1
|
||||||
|
* `d3d86c6` cssh: forcer la désactivation du verrouillage de la session
|
||||||
|
* `b761cb6` Sscreen: désactiver verrouillage de la session
|
||||||
|
|
||||||
|
## Version 9.16.0 du 15/06/2023-15:28
|
||||||
|
|
||||||
|
* `f36be0d` uscrontab: s'assurer que USER est défini
|
||||||
|
* `63674ef` cosmetic
|
||||||
|
* `ee80091` cosmetic
|
||||||
|
|
||||||
|
## Version 9.15.0 du 14/06/2023-15:41
|
||||||
|
|
||||||
|
* `2a02307` update-nutools: prendre le dépôt public par défaut
|
||||||
|
* `27a82e4` ajouter les numéros de version des debian et ubuntu
|
||||||
|
* `92157de` regins: implémentation initiale
|
||||||
|
* `efe9fbb` dk: ajout de XX pour prune-cache
|
||||||
|
* `dc94b5c` dkbuild: bug avec les chemins
|
||||||
|
* `5e87665` dk: X supprimer aussi le cache
|
||||||
|
* `9c1a8e6` dk: composer.phar est cherché dans sbin/ aussi
|
||||||
|
* `81cefdc` regcp: activer support regexp-extended
|
||||||
|
* `c5796d6` modifs.mineures sans commentaires
|
||||||
|
* `6919352` maj du message de commit par défaut
|
||||||
|
* `7ba7d1c` pcxone: correction de l'url généré des dépôts git
|
||||||
|
* `9d75943` repoctl: correction de l'url généré des dépôts git
|
||||||
|
|
||||||
|
## Version 9.14.0 du 15/03/2023-17:48
|
||||||
|
|
||||||
|
* `3ecb127` support docker compose v2
|
||||||
|
* `432ab6f` dkbuild: composer et mvn ne sont lancés qu'en mode build
|
||||||
|
* `01c14bb` regcp: ajout de l'option -n
|
||||||
|
* `0913c2e` upassword: rendre configurable le nombre de blocs
|
||||||
|
* `61433fb` dkbuild: revert image par défaut pour javabuilder
|
||||||
|
* `e4e0a55` pff: support mode vcs offline
|
||||||
|
* `e08c66b` pff: support des archives sh de l'amue
|
||||||
|
* `0d11932` dkbuild: corriger l'image javabuilder par défaut
|
||||||
|
* `3ead1f3` dkbuild: utiliser automatiquement l'image si nécessaire pour composer ou maven
|
||||||
|
* `93de256` ajout de regcp et regmv
|
||||||
|
* `5e33a36` rendre cohérent les en-têtes des scripts
|
||||||
|
* `9e13515` ajout exemple .dkbuild.env
|
||||||
|
* `c9e8110` dkbuild: corriger calcul des tags
|
||||||
|
* `c671cb3` dkbuild: fin support tag & last version
|
||||||
|
* `1a764f1` dkbuild: début support tag & last version
|
||||||
|
* `027f9b8` dkbuild: ajout de from_glob()
|
||||||
|
* `2293239` maj doc
|
||||||
|
* `9fc07bb` dkbuild: ajout build add-tags=
|
||||||
|
* `7b15f94` dkbuild: support préfixe et suffixe pour version
|
||||||
|
* `f2cfaee` dkbuild: calculer extract automatiquement
|
||||||
|
* `c36b8fb` dkbuild: corriger le support des paramètres sans argument
|
||||||
|
* `68a42d0` dkbuild: maj templates
|
||||||
|
* `306e77f` dkbuild: calcul de la version à partir d'un fichier ou d'un chemin
|
||||||
|
* `b006bb4` Maj des fichiers
|
||||||
|
* `6963d41` uproject: push -f force le push
|
||||||
|
* `9665d5a` cx-conndev: maj doc
|
||||||
|
* `137dfa9` repoctl, uproject: ne plus enlever le suffixe .git
|
||||||
|
* `440d2aa` upassword: maj nombre de blocs par défaut
|
||||||
|
* `f4047a3` ipaddr: forcer la sortie couleur
|
||||||
|
* `af1bdd3` Maj des fichiers
|
||||||
|
* `85e77e4` dkbuild: corriger le calcul de la dernière version d'une distribution
|
||||||
|
* `a56ec0e` dkbuild: améliorer clean
|
||||||
|
* `d6e78b9` dkbuild: maj messages debug
|
||||||
|
* `1699cc5` dkbuild: les fichiers d'environnement par défaut ont l'extension .env
|
||||||
|
* `2ae8406` maj doc dkbuild
|
||||||
|
* `1db7d08` maj doc cx-shelldev
|
||||||
|
* `aba08c2` maj update-nutools
|
||||||
|
* `e83b6d1` possibilité de choisir l'adresse IP
|
||||||
|
* `af9096d` ajouter le template fichier vide
|
||||||
|
* `89f0c09` typo
|
||||||
|
* `fb434c2` bug parse_date
|
||||||
|
* `f7ab14f` dkbuild: implémentation initiale
|
||||||
|
* `f46812f` cx-conndev: maj doc
|
||||||
|
|
||||||
|
## Version 9.13.0 du 07/02/2022-22:20
|
||||||
|
|
||||||
|
* `06686d9` pff: support nettoyage wsdl/
|
||||||
|
* `9a018a6` pdev: ajout de --check
|
||||||
|
* `a932a1a` la branche par défaut est master en prod
|
||||||
|
* `cb09f4d` maj template yaml
|
||||||
|
* `f895222` foreach: rendre -g et -S compatibles
|
||||||
|
* `4f7bcbc` maj template CSS
|
||||||
|
* `5cdd93d` upassword: réintégrer password wom
|
||||||
|
* `7030b87` dk: ajouter mvn_action=install
|
||||||
|
* `8a682ed` upassword: changer le générateur aléatoire
|
||||||
|
* `a85cdf6` Maj des fichiers
|
||||||
|
* `d75783b` dmcerts: cosmetic
|
||||||
|
* `11e6021` dmcerts: certificat client avec la même durée que le CA
|
||||||
|
* `938307c` ajout dmcerts
|
||||||
|
* `8b49084` typo
|
||||||
|
* `98c1ac8` ajouter le support de bullseye
|
||||||
|
* `28d42b0` authftp: support des mots de passe avec des caractères spéciaux
|
||||||
|
* `dfdfd59` sélectionner java 1.6 par défaut pour worun
|
||||||
|
* `6af0359` pff: ajout de la commande normalisée new_cmd_amue_clean_libs
|
||||||
|
* `b3a44d0` pff: bug
|
||||||
|
* `111463a` pff: ajout AUTO_CMDS et NEW_CMDS, supprimer MKDIRS
|
||||||
|
* `fe839f4` woinst: bug
|
||||||
|
* `ba8e1a1` upasword: ajout des mot de passe javamonitor de webobjects
|
||||||
|
* `a75b91e` network: utiliser 127.0.1.1 pour dhcp
|
||||||
|
* `dfb5fc3` maj ulib/redhat
|
||||||
|
* `40c9cb9` supprimer docker/ qui est obsolète
|
||||||
|
* `580e20b` supprimer nulib de la distribution de nutools
|
||||||
|
* `da28d8b` pff: changer le format des fichiers de version
|
||||||
|
|
||||||
|
## Version 9.12.0 du 29/03/2021-09:41
|
||||||
|
|
||||||
|
* `3d54e37` pff: bug origext
|
||||||
|
* `4607f0f` possibilité de spécifier compat bash_completion si pas debian
|
||||||
|
* `4bf4f6d` authftp: info pour host key verification failed
|
||||||
|
* `47e0583` forcer l'utilisation de python2
|
||||||
|
* `026b849` dmctl: support de l'import de plusieurs machines avec -l
|
||||||
|
* `31e43da` dk: support de 'system' comme alias de 'none' pour COMPOSER_PHP et MAVEN_JAVA
|
||||||
|
* `b191552` dk: bug dans le mapping par défaut dans le profil test
|
||||||
|
* `1d4c4b4` dk: support COMPOSER_PHP=none
|
||||||
|
* `b3983ed` dk: support des mappings d'hôtes
|
||||||
|
* `543d2d2` dk: mvn est aussi un frontend pour lancer java
|
||||||
|
* `f1a9c7a` dk: début support projets maven
|
||||||
|
* `ad44a1c` dk: support build dans une image pour les projets composer
|
||||||
|
|
||||||
|
## Version 9.11.0 du 11/12/2020-15:43
|
||||||
|
|
||||||
|
* `01e940b` repoctl: permettre create -u
|
||||||
|
* `e453ed2` maj doc
|
||||||
|
* `434a8bc` compileAndGo: support java 11
|
||||||
|
|
||||||
|
## Version 9.10.0 du 12/11/2020-23:05
|
||||||
|
|
||||||
|
* `24d0519` dk: support merge .shared_env et .machine_env
|
||||||
|
* `45c40d7` dk: support de --pull
|
||||||
|
* `c921d2a` pff: support de NOUPSTREAM
|
||||||
|
* `edf956f` dk: BRANCH peut aussi être un ^COMMIT
|
||||||
|
* `85842f3` renommer start-screen en Sscreen
|
||||||
|
* `e395720` maj doc
|
||||||
|
* `4603b1a` bug
|
||||||
|
* `a91542b` maj .gitattributes par défaut
|
||||||
|
* `51c4c33` support sélection java 11
|
||||||
|
* `82a7952` dm: support des aliases pour ssh aussi
|
||||||
|
* `d1d32de` dk: bug avec update-devel
|
||||||
|
* `037cb1a` maj template sql
|
||||||
|
* `04d037f` support rhel8 / ol8
|
||||||
|
* `725ba6d` cssh: donner un nom à la session
|
||||||
|
|
||||||
|
## Version 9.9.0 du 21/09/2020-18:08
|
||||||
|
|
||||||
|
* `2ec6c21` support gros doigt de python2 sur les systèmes modernes
|
||||||
|
* `bc1a740` bug
|
||||||
|
* `ada594a` dm: support des aliases
|
||||||
|
* `856c948` repoctl: ajout de update-origin
|
||||||
|
* `cc1b45d` support de l'option -u
|
||||||
|
* `28ceb74` cosmetic
|
||||||
|
* `751e372` bug
|
||||||
|
* `c5e1536` support de la définition des aliases et des profils dans les répertoires de cluster
|
||||||
|
* `14beb13` dk: support minimal maven
|
||||||
|
* `f474657` dk: ajout de COMPOSER_ARGS
|
||||||
|
* `1097975` cosmetic
|
||||||
|
* `bb7a4fc` foreach: ajout de l'option -S
|
||||||
|
* `e0e6178` dk: support de la sélection d'un service et de la machine sur laquelle tourne un service
|
||||||
|
* `07bea2c` cx-conndev: support klean
|
||||||
|
* `7254661` dk: support du nommage du répertoire pour le checkout
|
||||||
|
* `fb285e0` ne vérifier conndev.php que si c'est nécessaire
|
||||||
|
|
||||||
|
## Version 9.8.0 du 28/04/2020-16:42
|
||||||
|
|
||||||
|
* `e2b2f49` dk: vérifier que le répertoire destination existe avant rsync
|
||||||
|
* `c147a0c` dk: possibilité de spécifier les options de rsync
|
||||||
|
|
||||||
|
## Version 9.7.0 du 17/04/2020-10:20
|
||||||
|
|
||||||
|
* `f4f9b69` dk: bug avec la synchro d'un fichier
|
||||||
|
* `74190f7` dk: par défaut, les suffixes courants sont supprimés
|
||||||
|
* `9fad992` dk: support répertoire/fichier source
|
||||||
|
* `1d7e2d0` bug
|
||||||
|
* `7268cec` pff: workaround pour certaines erreurs de packaging
|
||||||
|
* `aa26966` dk: support build args avec la syntaxe NAME=VALUE
|
||||||
|
* `f7b3f90` dk: augmenter la largeur de la colonne node
|
||||||
|
* `1c4c1c3` dmctl: l'option -a supporte les répertoires
|
||||||
|
* `ccf3c67` dk: aliases de filtres
|
||||||
|
* `1b12cee` dk: afficher un warning si le profil n'est pas défini pour une machine
|
||||||
|
* `45976f4` dk: sta affiche le statut pour tous les services
|
||||||
|
* `1960c0c` dk: implémenter status
|
||||||
|
* `4f206d7` dk: frontend plus 'transparent'
|
||||||
|
* `d666859` dk: supprimer avec image:tag si possible
|
||||||
|
* `4ee346b` maj chemin ip
|
||||||
|
* `c9796b2` ipaddr: frontend pour ip addr
|
||||||
|
* `668eec1` dmctl: possibilité d'importer toutes les machines d'un répertoire
|
||||||
|
|
||||||
|
## Version 9.6.0 du 24/02/2020-09:13
|
||||||
|
|
||||||
|
* `b7492fc` dk: ajout de l'option -e
|
||||||
|
* `08c081a` modification pour support des valeurs spéciales (ne sont pas synchronisées) dans LDAP
|
||||||
|
* `98129cd` passer par un script annexe pour cssh
|
||||||
|
* `99c0ccd` dk: support de PHP_VERSION_MAX
|
||||||
|
|
||||||
|
## Version 9.5.0 du 28/01/2020-14:06
|
||||||
|
|
||||||
|
* `640a2b1` maj doc
|
||||||
|
|
||||||
|
## Version 9.4.4 du 27/01/2020-08:48
|
||||||
|
|
||||||
|
* `300935c` bug
|
||||||
|
|
||||||
|
## Version 9.4.3 du 24/01/2020-13:02
|
||||||
|
|
||||||
|
* `4ba6909` ajouter le support de buster pour la completion
|
||||||
|
|
||||||
|
## Version 9.4.2 du 24/01/2020-08:52
|
||||||
|
|
||||||
|
* `fd5b787` dk: bug
|
||||||
|
* `ad18983` maj de l'image par défaut
|
||||||
|
* `c33ff4c` ajouter le support de buster
|
||||||
|
* `247b449` dk: maj doc
|
||||||
|
* `28f4d39` dk: support de COMPOSER_PHP
|
||||||
|
* `f28df52` maj image composer
|
||||||
|
|
||||||
|
## Version 9.4.1 du 20/01/2020-14:46
|
||||||
|
|
||||||
|
* `6f01bac` dk: si la commande est inconnue, la transmettre à docker
|
||||||
|
* `175f6ed` cssh: traiter le cas où screen n'est pas disponible
|
||||||
|
* `73db728` umail: possibilité de spécifier le type de body
|
||||||
|
* `5fc55cc` dk: support des fonctions de nettoyage par profil
|
||||||
|
* `21274af` dk: APPS peut avoir une valeur dépendante du profil
|
||||||
|
* `f7f8889` support des filtres avec wildcards
|
||||||
|
* `747c563` repoctl: divers bugs
|
||||||
|
* `4fdd23c` dk: support limité de podman
|
||||||
|
* `5457228` dk: support des aliases pour les mappings pff
|
||||||
|
* `a55f9c4` dk: ajout de get-profile
|
||||||
|
* `ac7efad` dk: possibilité de forcer la suppression des images
|
||||||
|
* `5284838` typo
|
||||||
|
* `d5c5162` dk: dans build.env, une variable peut en mentionner une autre
|
||||||
|
* `f7d036a` repoctl: cosmetic
|
||||||
|
* `87b8d5b` Intégration de la branche update-repoctl
|
||||||
|
* `0866bbd` finaliser edit et implémenter get
|
||||||
|
* `8daf4ec` début implémentation edit
|
||||||
|
* `ef1c8f2` utiliser dk composer, et ne pas utiliser de container par défaut
|
||||||
|
* `269379f` dk: rendre le code overridable
|
||||||
|
* `aae3703` bug avec traitement des variables de docker-machine -u
|
||||||
|
* `f875093` dk: par défaut, forcer l'utilisation de la machine locale pour dk composer
|
||||||
|
* `c202a27` dk: support COMPOSER_SETUP et COMPOSER_CMD
|
||||||
|
* `921caa1` dk: le shell est lancé en root
|
||||||
|
* `ce98445` dk: support de composer shell
|
||||||
|
* `2b5ed18` dk: ajouter un frontend pour composer
|
||||||
|
* `29c54e7` dmctl: import/export de docker machines
|
||||||
|
* `de53bae` Intégration de la branche add-repoctl
|
||||||
|
* `600b824` support limité de pcrone et pclone
|
||||||
|
* `914f635` implémentation initiale de create, list, delete
|
||||||
|
* `a774497` squelette
|
||||||
|
* `5a444a6` dk: support pff
|
||||||
|
* `425e8a5` dk: maj format ps
|
||||||
|
* `52c3d7a` dk: ps, ls et rm prennent des filtres. ajout de pull
|
||||||
|
* `d5f8fa4` cx-updatedev: ajout de l'option -g
|
||||||
|
* `5fe5137` dk: support de COMPOSER_ACTION et sqlmig NOFIX
|
||||||
|
* `74cf35b` typo
|
||||||
|
* `0468623` alias pour docer-machine
|
||||||
|
* `3dfe542` dk: support de scripts génériques
|
||||||
|
* `488a257` délai pour éviter les maj intempestives d'eclipse
|
||||||
|
* `13ce5b8` dk: tagger aussi avec la distribution
|
||||||
|
* `d03b04f` dk: ajouter automatiquement le suffixe -$DIST à la version
|
||||||
|
* `6879491` maj doc
|
||||||
|
* `7fad363` cssh: compat avec les vieilles versionsd de linux
|
||||||
|
* `f65dda6` bug
|
||||||
|
* `bc7eebc` ajouter --with-registry-auth à dk update
|
||||||
|
* `8af50f4` nettoyage de logs webobjects
|
||||||
|
* `458ccd3` dk: support de certaines options pour dk run
|
||||||
|
* `c97bc6a` dk: support de la commande run
|
||||||
|
* `ae70f66` synchro des dépendances uniquement pour le type composer
|
||||||
|
* `f508dae` support des mises à jour en mode devel
|
||||||
|
* `60a4c73` cx-conndev: ajouter l'option -d
|
||||||
|
* `85ac283` cx-conndev: renommer l'option en --mysql-cmd
|
||||||
|
* `80db462` cx-conndev: ajout de l'option --cmd
|
||||||
|
* `4400ba7` ajout de ensure-vip
|
||||||
|
* `ae7ffeb` cx-updatedev: remplacer --ru par -w, --ud, --ur en fonction des besoins
|
||||||
|
* `9bfd515` dk -c est auto-complete friendly
|
||||||
|
* `a5a41d9` dk: support de fichiers compose non défaut
|
||||||
|
* `7e5859e` bug
|
||||||
|
* `b342960` bug
|
||||||
|
* `c44d1d3` dk: par défaut, ne pas ajouter le profil au nom de projet
|
||||||
|
* `aa4eb4a` cx-updatedev: ajout des mises à jour récursives
|
||||||
|
|
||||||
|
## Version 9.4.0 du 05/06/2019-10:15
|
||||||
|
|
||||||
|
* `fb96852` Intégration de la branche dk-deploy
|
||||||
|
* `386fc0d` implémenter service, update, scale
|
||||||
|
* `c2f43e6` optimiser l'utilisation de docker-machine
|
||||||
|
* `8cb3b2f` ajouter la commande deploy
|
||||||
|
* `5967541` cx-updatedev: ajouter l'option -j
|
||||||
|
* `d79e218` dk: support de push pour docker-compose
|
||||||
|
* `ccbfff4` dk: simplifier la gestion du nommage des services
|
||||||
|
* `50dee34` dk: support de build d'un service en particulier
|
||||||
|
* `99d5069` bug
|
||||||
|
* `a825f3b` bug
|
||||||
|
* `8c143e1` foreach: ajout de --cc
|
||||||
|
* `7e26ae1` foreach: ajout des raccourcis -G et -C
|
||||||
|
* `cbb34ec` cx-conndev: afficher les erreurs
|
||||||
|
* `7524a28` cosmetic
|
||||||
|
* `9b03dcd` cx-updatedev: ajout de -i et -u
|
||||||
|
* `c7eca6a` cx-updatedev: ajout des options -l et -c
|
||||||
|
* `8b4067a` bug
|
||||||
|
* `3971dca` scripts pour gérer projets composer
|
||||||
|
* `c66eee1` scripts pour gérer projets composer
|
||||||
|
* `7c135fa` fconv, fnconv: support de sed
|
||||||
|
* `72c3512` dk: bug dans la détection du type de projet
|
||||||
|
* `0891e89` sqlmig: corriger la lecture des paramètres
|
||||||
|
* `d197fc0` sqlmig: support de l'importation directe des fichiers csv
|
||||||
|
* `d028c47` dk: maj doc et support d'origine de profil
|
||||||
|
* `b068a12` dk: maj doc et support de branche de profil
|
||||||
|
* `d7c981d` dk: afficher l'adresse ip
|
||||||
|
* `7ec5381` dk: renommer service en systemd-unit
|
||||||
|
|
||||||
|
## Version 9.3.0 du 02/04/2019-16:03
|
||||||
|
|
||||||
|
* `6a03853` ajout de update-apps en natif
|
||||||
|
* `6462bec` dk: ajouter exec, maj doc
|
||||||
|
* `7a728a9` dk: stop, logs et down acceptent maintenant un argument
|
||||||
|
* `df788f6` support mariadb
|
||||||
|
* `edaaec1` bug
|
||||||
|
* `41089f7` dk: ajout de l'action bs
|
||||||
|
* `af2b74f` sqlmig: init crée aussi 02grants.sql
|
||||||
|
|
||||||
|
## Version 9.2.0 du 08/12/2018-11:58
|
||||||
|
|
||||||
|
* `71bb5aa` bug
|
||||||
|
* `44b1954` dk: s'assurer que docker-compose et docker existent quand on crée le service
|
||||||
|
* `d70825c` dk: bug dans la définition du service
|
||||||
|
* `45d912d` EnsureVM: être en mode shared par défaut
|
||||||
|
* `3292686` EnsureVM: ne plus chercher à décharger les modules par défaut
|
||||||
|
|
||||||
|
## Version 9.1.0 du 22/11/2018-15:40
|
||||||
|
|
||||||
|
* `ba29496` dk: génération d'un service systemd
|
||||||
|
* `f72dd86` option -n pour pcrone le clone pas le dépôt nouvellement créé
|
||||||
|
* `01325d0` sqlmig: support chemin config/sqlmig et bug avec csv_null
|
||||||
|
* `45da726` dk: ajout de l'option --fake pour afficher les commandes
|
||||||
|
* `dcb637e` dk: support de --no-cache pour docker-compose build
|
||||||
|
* `9c6f606` Intégration de la branche update-pcrone
|
||||||
|
* `764dd53` maj prefixe et meilleur affichage des erreurs
|
||||||
|
* `307fa48` dk: option -j pour désactiver le cache
|
||||||
|
* `45c6422` profils pour docker-machine
|
||||||
|
* `a9004fa` dk: PROFILE est exporté
|
||||||
|
|
||||||
|
## Version 9.0.0 du 15/11/2018-09:40
|
||||||
|
|
||||||
|
* `af969e4` maj de l'url source de nutools
|
||||||
|
|
||||||
|
## Version 8.3.0 du 15/11/2018-09:32
|
||||||
|
|
||||||
|
* `7ff32ca` dk brd honore les scripts de build
|
||||||
|
* `3293d09` support docker-machine use
|
||||||
|
* `e6be47e` ajouter de nouveaux formats pour parse_date
|
||||||
|
* `1151b5c` latin1compat gère les points de suspension
|
||||||
|
* `2f86786` ajouter le template pour yaml
|
||||||
|
|
||||||
|
## Version 8.2.0 du 02/11/2018-15:06
|
||||||
|
|
||||||
|
* `7583ded` Intégration de la branche update-pff
|
||||||
|
* `96c146e` ajout de l'option NOMERGES pour ne pas tenter de fusionner avec git des fichiers binaires
|
||||||
|
* `4f7cb90` dk: support de .compose.env pour le nom du projet
|
||||||
|
* `9d991e2` pcrone: possibilité de créer des dépôts gogs
|
||||||
|
* `e3ba580` dk: corriger push
|
||||||
|
* `48c662b` gérer les tags autrement. ajouter push
|
||||||
|
* `566f1d7` tailor.py: possibilité de modifier les préréglages par les options
|
||||||
|
* `f34b63a` bug
|
||||||
|
* `2873638` afficher le profil courant
|
||||||
|
|
||||||
|
## Version 8.1.0 du 28/09/2018-08:39
|
||||||
|
|
||||||
|
* `e74480c` dk: action build par défaut
|
||||||
|
* `56b18a4` dk: rendre overridable VERSION
|
||||||
|
* `ed180b5` dk pour faciliter l'utilisation de docker
|
||||||
|
* `4ad84c0` sqlmig: ajout de la restauration de la base test à partir d'une copie de la prod
|
||||||
|
* `a5be8d8` maj gitignore initial
|
||||||
|
* `19267dd` utempl: support du datage automatique des fichiers
|
||||||
|
|
||||||
## Version 8.0.0 du 21/07/2018-10:21
|
## Version 8.0.0 du 21/07/2018-10:21
|
||||||
|
|
||||||
* `a60f23a` maj version ulib
|
* `a60f23a` maj version ulib
|
||||||
|
|
11
EnsureVM
11
EnsureVM
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
urequire DEFAULTS service
|
urequire service
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: s'assurer que les services sont lancés pour un type de virtualisation
|
uecho "$scriptname: s'assurer que les services sont lancés pour un type de virtualisation
|
||||||
|
@ -17,7 +17,7 @@ function ensure_kvm() {
|
||||||
# sont chargés, et que le service libvirt-bin est démarré
|
# sont chargés, et que le service libvirt-bin est démarré
|
||||||
local module modified
|
local module modified
|
||||||
|
|
||||||
if [ -z "$check_only" ]; then
|
if [ -z "$check_only" -a -n "$exclusive" ]; then
|
||||||
# Vérifier que les modules vbox* sont déchargés
|
# Vérifier que les modules vbox* sont déchargés
|
||||||
for module in vboxpci vboxnetadp vboxnetflt vboxdrv; do
|
for module in vboxpci vboxnetadp vboxnetflt vboxdrv; do
|
||||||
if lsmod | quietgrep "$module"; then
|
if lsmod | quietgrep "$module"; then
|
||||||
|
@ -82,7 +82,7 @@ function ensure_virtualbox() {
|
||||||
# sont chargés, et que le service vboxdrv est démarré
|
# sont chargés, et que le service vboxdrv est démarré
|
||||||
local module modified
|
local module modified
|
||||||
|
|
||||||
if [ -z "$check_only" ]; then
|
if [ -z "$check_only" -a -n "$exclusive" ]; then
|
||||||
# Vérifier que kvm{,_intel,_amd} ne sont pas chargés
|
# Vérifier que kvm{,_intel,_amd} ne sont pas chargés
|
||||||
for module in kvm_intel kvm_amd kvm; do
|
for module in kvm_intel kvm_amd kvm; do
|
||||||
if lsmod | quietgrep "$module"; then
|
if lsmod | quietgrep "$module"; then
|
||||||
|
@ -117,9 +117,12 @@ function ensure_virtualbox() {
|
||||||
}
|
}
|
||||||
|
|
||||||
check_only=
|
check_only=
|
||||||
|
exclusive=
|
||||||
parse_opts + "${PRETTYOPTS[@]}" \
|
parse_opts + "${PRETTYOPTS[@]}" \
|
||||||
--help '$exit_with display_help' \
|
--help '$exit_with display_help' \
|
||||||
-c,--check-only,--check check_only=1 \
|
-c,--check-only,--check check_only=1 \
|
||||||
|
-x,--exclusive exclusive=1 \
|
||||||
|
-s,--shared exclusive= \
|
||||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||||
|
|
||||||
run_as_root "$@"
|
run_as_root "$@"
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
# nutools
|
||||||
|
|
||||||
|
nutools est un ensemble d'utilitaires pour faciliter l'utililisation des Unixes,
|
||||||
|
en particulier Linux, mais aussi MacOS X et Cygwin.
|
||||||
|
|
||||||
|
C'est aussi une librairie de scripts shell réutilisables ([ulib](doc/ulib.md))
|
||||||
|
et une librairie de modules python réutilisables (pyulib)
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
~~~sh
|
||||||
|
git clone https://git.univ-reunion.fr/modules/nutools
|
||||||
|
git checkout develop
|
||||||
|
cd nutools
|
||||||
|
./uinst -y
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Dans l'exemple ci-dessous, on installe la branche develop, pour avoir toujours
|
||||||
|
la dernière version des outils.
|
||||||
|
|
||||||
|
Pour mettre à jour, il suffit de mettre à jour le dépôt et de relancer
|
||||||
|
l'installation
|
||||||
|
~~~sh
|
||||||
|
cd nutools
|
||||||
|
git pull
|
||||||
|
./uinst -y
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Alternative, il est possible de demander à nutools à se mettre à jour avec la
|
||||||
|
dernière version
|
||||||
|
~~~sh
|
||||||
|
update-nutools --develop
|
||||||
|
~~~
|
||||||
|
|
||||||
|
## Prérequis
|
||||||
|
|
||||||
|
Python >= 2.3 et GNU Awk sont requis pour que toutes les fonctionnalités soient
|
||||||
|
supportées.
|
||||||
|
* Sous Linux, lors de l'installation du package, les meilleurs efforts sont fait
|
||||||
|
pour que ces packages soient installés.
|
||||||
|
* Sous MacOSX, il faut installer manuellement Fink, DarwinPorts ou Homebrew
|
||||||
|
|
||||||
|
## Outils
|
||||||
|
|
||||||
|
Chaque outil contient une aide intégrée. Il suffit de lancer l'outil avec
|
||||||
|
l'argument `--help` pour avoir une aide détaillée.
|
||||||
|
|
||||||
|
* Déploiement d'un répertoire ou d'une archive
|
||||||
|
* [uinst](doc/tools/uinst): Déploiement local
|
||||||
|
* [mkusfx](doc/tools/mkusfx): Faire une archive auto-installable avec uinst
|
||||||
|
* [ruinst](doc/tools/ruinst): Déploiement distant avec uinst
|
||||||
|
* [runs](doc/tools/runs): Lancer un script avec le protocole RUNS
|
||||||
|
* [rruns](doc/tools/rruns): Déploiement distant avec runs
|
||||||
|
* Librairie réutilisable de scripts shell
|
||||||
|
* [uinc](doc/tools/uinc): Dépliage des inclusions dans un fichier
|
||||||
|
* [ulibsync](doc/tools/ulibsync): Faire une copie locale pour un projet de ulib et/ou pyulib
|
||||||
|
* Autres outils
|
||||||
|
* [udir](doc/tools/udir): Gestion des paramètres d'un répertoire. Ces paramètres sont entre
|
||||||
|
autres utilisés par uinst et uinc.
|
||||||
|
|
||||||
|
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
4
SKvm
4
SKvm
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
urequire DEFAULTS virsh
|
urequire virsh
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: lancer une machine virtuelle kvm
|
uecho "$scriptname: lancer une machine virtuelle kvm
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
urequire DEFAULTS
|
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: lancer une machine virtuelle VirtualBox
|
uecho "$scriptname: lancer une machine virtuelle VirtualBox
|
||||||
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
# désactiver le verrouillage
|
||||||
|
export LOCKPRG=/bin/true
|
||||||
|
|
||||||
|
COULEUR_NORMALE=$'\e[0m'
|
||||||
|
COULEUR_ROUGE=$'\e[31;1m'
|
||||||
|
COULEUR_VERTE=$'\e[32;1m'
|
||||||
|
COULEUR_JAUNE=$'\e[33;1m'
|
||||||
|
COULEUR_BLEUE=$'\e[34;1m'
|
||||||
|
COULEUR_BLANCHE=$'\e[37;1m'
|
||||||
|
|
||||||
|
function __ask() {
|
||||||
|
local r
|
||||||
|
read -p "$1" -t 2 r
|
||||||
|
[ $? -gt 128 -o -z "$r" -o "$r" == "o" -o "$r" == "O" -o "$r" == "y" -o "$r" == "Y" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
function __auto_screen() {
|
||||||
|
# Si on est déjà dans screen, ne rien faire
|
||||||
|
[ -z "$STY" ] || return
|
||||||
|
|
||||||
|
# Si screen pas installé, ne rien faire
|
||||||
|
local dir screen="$(which screen 2>/dev/null)"
|
||||||
|
if [ -z "$screen" ]; then
|
||||||
|
for dir in /usr/local/bin /opt/bin /usr/bin /bin; do
|
||||||
|
if [ -x "$dir/screen" ]; then
|
||||||
|
screen="$dir/screen"
|
||||||
|
PATH="$PATH:$dir"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ -z "$screen" ]; then
|
||||||
|
echo "${COULEUR_JAUNE}WARNING${COULEUR_NORMALE} screen introuvable. une session bash classique sera lancée"
|
||||||
|
exec /bin/bash -l
|
||||||
|
fi
|
||||||
|
|
||||||
|
# corriger TERM pour les vieilles versions de Linux
|
||||||
|
case "$TERM" in
|
||||||
|
xterm*) TERM=xterm;;
|
||||||
|
screen*) TERM=screen;;
|
||||||
|
esac
|
||||||
|
export TERM
|
||||||
|
|
||||||
|
local msgprefix
|
||||||
|
local screens count
|
||||||
|
local session_name="nutools-$USER"
|
||||||
|
|
||||||
|
screens="$(LANG=C screen -ls | grep -Ei "${session_name}.*attached|detached")"
|
||||||
|
if [ -n "$screens" ]; then
|
||||||
|
count="$(echo "$screens" | wc -l)"
|
||||||
|
else
|
||||||
|
count=0
|
||||||
|
fi
|
||||||
|
if [ $count -gt 0 ]; then
|
||||||
|
if [ $count -eq 1 ]; then
|
||||||
|
msgprefix="Il y a ${COULEUR_BLEUE}1 session screen en cours${COULEUR_NORMALE}
|
||||||
|
Cette session"
|
||||||
|
else
|
||||||
|
msgprefix="Il y a ${COULEUR_ROUGE}$count sessions screen en cours${COULEUR_NORMALE}:
|
||||||
|
$screens
|
||||||
|
La première session"
|
||||||
|
fi
|
||||||
|
if __ask "
|
||||||
|
$msgprefix sera reconnectée automatiquent dans 2 secondes
|
||||||
|
Voulez-vous reconnecter la session screen? [On] "; then
|
||||||
|
exec screen -q -s -/bin/bash -xRR -S "$session_name"
|
||||||
|
else
|
||||||
|
exec /bin/bash -l
|
||||||
|
fi
|
||||||
|
elif __ask "
|
||||||
|
Une ${COULEUR_VERTE}nouvelle session screen${COULEUR_NORMALE} sera lancée automatiquement dans 2 secondes
|
||||||
|
Voulez-vous lancer une session screen? [On] "; then
|
||||||
|
exec screen -q -s -/bin/bash -RR -S "$session_name"
|
||||||
|
else
|
||||||
|
exec /bin/bash -l
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -gt 0 ]; then
|
||||||
|
# lancer les commandes fournies avant de lancer SCREEN
|
||||||
|
"$@"
|
||||||
|
fi
|
||||||
|
__auto_screen
|
7
TODO.md
7
TODO.md
|
@ -1,3 +1,10 @@
|
||||||
# TODO
|
# TODO
|
||||||
|
|
||||||
|
dkbuild
|
||||||
|
* setversion peut prendre la version depuis la branche git d'un dépôt
|
||||||
|
* un argument permettrait de spécifier comment la version est calculée à
|
||||||
|
partir du dépôt
|
||||||
|
* si cela a du sens, une commande setlatest qui permet de désigner quelle
|
||||||
|
distribution/version est la dernière
|
||||||
|
|
||||||
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
@ -1 +1 @@
|
||||||
8.0.0
|
11.3.0
|
||||||
|
|
2
_root
2
_root
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/ulib" || exit 1
|
||||||
urequire base
|
urequire base
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
urequire DEFAULTS template apache.tools
|
urequire template apache.tools
|
||||||
apacheconfig_initvars
|
apacheconfig_initvars
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
|
|
18
authftp
18
authftp
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
urequire DEFAULTS
|
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: Se connecter sur un site FTP authentifié
|
uecho "$scriptname: Se connecter sur un site FTP authentifié
|
||||||
|
@ -40,6 +39,14 @@ façon dont le proxy ftp est configuré, il n'est pas possible de se connecter
|
||||||
avec un mot de passe qui contient le caractère @"
|
avec un mot de passe qui contient le caractère @"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function hostkeyfailed_apropos() {
|
||||||
|
eecho "\
|
||||||
|
------------------------------------------------------------------------------------
|
||||||
|
Si le message 'Host key verification failed' apparait, lancer la commande suivante:
|
||||||
|
ssh -o StrictHostKeyChecking=no -o BatchMode=yes $1
|
||||||
|
------------------------------------------------------------------------------------"
|
||||||
|
}
|
||||||
|
|
||||||
AUTHFTP_PROXY_DISABLED=1 # par défaut, ne pas utiliser le proxy
|
AUTHFTP_PROXY_DISABLED=1 # par défaut, ne pas utiliser le proxy
|
||||||
set_defaults proxy
|
set_defaults proxy
|
||||||
set_defaults authftp
|
set_defaults authftp
|
||||||
|
@ -76,19 +83,22 @@ read_value -i "Entrez le chemin" path "$4" N
|
||||||
|
|
||||||
if [ -n "$lftp" ]; then
|
if [ -n "$lftp" ]; then
|
||||||
if [ -n "$noproxy" ]; then
|
if [ -n "$noproxy" ]; then
|
||||||
|
export LFTP_PASSWORD="$password"
|
||||||
if [ -n "$sftp" ]; then
|
if [ -n "$sftp" ]; then
|
||||||
url="sftp://$host/$path"
|
url="sftp://$host/$path"
|
||||||
|
hostkeyfailed_apropos "$login@$host"
|
||||||
else
|
else
|
||||||
url="ftp://$host/$path"
|
url="ftp://$host/$path"
|
||||||
fi
|
fi
|
||||||
exec lftp "${options[@]}" -e "\
|
exec lftp "${options[@]}" -e "\
|
||||||
set ssl:verify-certificate $verify_certificate
|
set ssl:verify-certificate $verify_certificate
|
||||||
open -u $login,$password $url"
|
open -u $login --env-password $url"
|
||||||
else
|
else
|
||||||
|
export LFTP_PASSWORD="${password}@${my_password}"
|
||||||
url="ftp://$AUTHFTP_PROXY_HOST/$path"
|
url="ftp://$AUTHFTP_PROXY_HOST/$path"
|
||||||
exec lftp "${options[@]}" -e "\
|
exec lftp "${options[@]}" -e "\
|
||||||
set ssl:verify-certificate $verify_certificate
|
set ssl:verify-certificate $verify_certificate
|
||||||
open -u ${login}@${my_login}@${host},${password}@${my_password} $url"
|
open -u ${login}@${my_login}@${host} --env-password $url"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [ -n "$noproxy" ]; then
|
if [ -n "$noproxy" ]; then
|
||||||
|
|
3
caturl
3
caturl
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
urequire DEFAULTS
|
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: Afficher une url
|
uecho "$scriptname: Afficher une url
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python2
|
||||||
# -*- coding: utf-8 mode: python -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: python -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
u"""Afficher un chronomètre"""
|
u"""Afficher un chronomètre"""
|
||||||
|
|
|
@ -411,7 +411,7 @@ javac* | jikes*)
|
||||||
fi
|
fi
|
||||||
[[ ! -z "${execute:="${compilerDir}java -cp $cacheDir${classPath:+:$classPath} $mainClass"}" ]]
|
[[ ! -z "${execute:="${compilerDir}java -cp $cacheDir${classPath:+:$classPath} $mainClass"}" ]]
|
||||||
# Prepare to tell javac to compile for the latest language version it supports
|
# Prepare to tell javac to compile for the latest language version it supports
|
||||||
sourceVersion="-source $(${compilerDir}java -version 2>&1 | sed -n '1s,[^"]*"\([1-9][1-9]*\.[1-9][1-9]*\).*,\1,p')"
|
sourceVersion="-source $(${compilerDir}java -version 2>&1 | sed -n '1{s/.*"\(.*\)".*/\1/; s/^1\.//; s/\..*//; p}')"
|
||||||
;;
|
;;
|
||||||
jikes*)
|
jikes*)
|
||||||
if [[ -z "$classPath" && -z "$compilerArgs" && -z "$CLASSPATH" ]] ; then
|
if [[ -z "$classPath" && -z "$compilerArgs" && -z "$CLASSPATH" ]] ; then
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
urequire DEFAULTS
|
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: créer un utilisateur sudoer et lui installer une clé publique ssh
|
uecho "$scriptname: créer un utilisateur sudoer et lui installer une clé publique ssh
|
||||||
|
|
65
cssh
65
cssh
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
urequire DEFAULTS
|
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: Faire une connexion ssh en lançant automatiquement un screen sur l'hôte distant
|
uecho "$scriptname: Faire une connexion ssh en lançant automatiquement un screen sur l'hôte distant
|
||||||
|
@ -23,55 +22,19 @@ vars="$("$scriptdir/ussh" --parse "$@")" || die
|
||||||
eval "$vars"
|
eval "$vars"
|
||||||
[ "${#hosts[*]}" -gt 0 ] || die "Vous devez spécifier l'hôte sur lequel se connecter"
|
[ "${#hosts[*]}" -gt 0 ] || die "Vous devez spécifier l'hôte sur lequel se connecter"
|
||||||
|
|
||||||
cmd="'$(qvals "${args[@]}")
|
[ ${#args[*]} -gt 0 ] && cmd="$(qvals "${args[@]}"); " || cmd=
|
||||||
"'
|
cmd="$cmd
|
||||||
function __ask() {
|
export LOCKPRG=/bin/true; $(<"$scriptdir/Sscreen")"
|
||||||
local r
|
cmd="'${cmd//\'/\'\\\'\'}'"
|
||||||
read -p "$1" -t 2 r
|
|
||||||
[ $? -gt 128 -o -z "$r" -o "$r" == "o" -o "$r" == "O" -o "$r" == "y" -o "$r" == "Y" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
function __auto_screen() {
|
|
||||||
# Si on est déjà dans screen, ne rien faire
|
|
||||||
[ -z "$STY" ] || return
|
|
||||||
|
|
||||||
local msgprefix
|
|
||||||
local screens count
|
|
||||||
|
|
||||||
screens="$(LANG=C screen -ls | grep -Ei "attached|detached")"
|
|
||||||
if [ -n "$screens" ]; then
|
|
||||||
count="$(echo "$screens" | wc -l)"
|
|
||||||
else
|
|
||||||
count=0
|
|
||||||
fi
|
|
||||||
if [ $count -gt 0 ]; then
|
|
||||||
if [ $count -eq 1 ]; then
|
|
||||||
msgprefix="Il y a '"$COULEUR_BLEUE"'1 session screen en cours'"$COULEUR_NORMALE"'
|
|
||||||
Cette session"
|
|
||||||
else
|
|
||||||
msgprefix="Il y a '"$COULEUR_ROUGE"'$count sessions screen en cours'"$COULEUR_NORMALE"':
|
|
||||||
$screens
|
|
||||||
La première session"
|
|
||||||
fi
|
|
||||||
if __ask "
|
|
||||||
$msgprefix sera reconnectée automatiquent dans 2 secondes
|
|
||||||
Voulez-vous reconnecter la session screen? [On] "; then
|
|
||||||
exec screen -q -s -/bin/bash -xRR
|
|
||||||
else
|
|
||||||
exec /bin/bash -l
|
|
||||||
fi
|
|
||||||
elif __ask "
|
|
||||||
Une '"$COULEUR_VERTE"'nouvelle session screen'"$COULEUR_NORMALE"' sera lancée automatiquement dans 2 secondes
|
|
||||||
Voulez-vous lancer une session screen? [On] "; then
|
|
||||||
exec screen -q -s -/bin/bash -RR
|
|
||||||
else
|
|
||||||
exec /bin/bash -l
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
__auto_screen
|
|
||||||
'\'
|
|
||||||
|
|
||||||
for host in "${hosts[@]}"; do
|
for host in "${hosts[@]}"; do
|
||||||
${exec:+exec} "$ssh" "${options[@]}" -t "$host" -- /bin/bash -c "$cmd"
|
"$ssh" \
|
||||||
|
"${options[@]}" -qt "$host" -- \
|
||||||
|
"export LOCKPRG=/bin/true; [ -x /usr/local/nutools/Sscreen ] && exec /usr/local/nutools/Sscreen $(qvals "${args[@]}") || exit 123"
|
||||||
|
if [ $? -eq 123 ]; then
|
||||||
|
# pas de Sscreen en face, le faire à la main
|
||||||
|
${exec:+exec} \
|
||||||
|
"$ssh" "${options[@]}" -t "$host" -- \
|
||||||
|
/bin/bash -c "$cmd"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
|
@ -0,0 +1,124 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
|
|
||||||
|
[ -n "$COMPOSE_V1" ] && DOCKER_COMPOSE=(docker-compose) || DOCKER_COMPOSE=(docker compose)
|
||||||
|
|
||||||
|
function display_help() {
|
||||||
|
uecho "$scriptname: se connecter à la base MySQL
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
$scriptname [DATABASE]
|
||||||
|
$scriptname -d [-uUSER [-pPASSWORD]] DATABASES... >backup.sql
|
||||||
|
$scriptname -c [-uUSER [-pPASSWORD]] <backup.sql
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
--compose-v1
|
||||||
|
Forcer l'utilisation de docker-compose v1
|
||||||
|
-h, -s, --service SERVICE
|
||||||
|
Spécifier le nom du service. La valeur par défaut est db
|
||||||
|
-i, --ipnum IPNUM
|
||||||
|
Si le service est dans plusieurs réseaux, sélectionner le numéro du
|
||||||
|
réseau à attaquer en commençant à 1 (la liste sera affichée si cette
|
||||||
|
option n'est pas spécifiée)
|
||||||
|
-c, --mysql-cmd
|
||||||
|
Lancer 'mysql -hSERVICE_IP' avec les arguments supplémentaires fournis
|
||||||
|
sur la ligne de commande
|
||||||
|
-d, --mysqldump-cmd
|
||||||
|
Lancer 'mysqldump --databases --add-drop-database -hSERVICE_IP' avec
|
||||||
|
les arguments supplémentaires fournis sur la ligne de commande
|
||||||
|
-k, --klean
|
||||||
|
Lancer la commande 'klean' dans le container spécifié (supprime toutes
|
||||||
|
les données et relance le container)
|
||||||
|
-u, --user USER
|
||||||
|
-p, --password PASSWORD
|
||||||
|
Paramètres supplémentaires utilisés uniquement avec les options -c et -d"
|
||||||
|
}
|
||||||
|
|
||||||
|
service=db
|
||||||
|
ipnum=
|
||||||
|
mysql_cmd=
|
||||||
|
mysqldump_cmd=
|
||||||
|
klean=
|
||||||
|
user=
|
||||||
|
password=
|
||||||
|
args=(
|
||||||
|
--help '$exit_with display_help'
|
||||||
|
--compose-v1 '$DOCKER_COMPOSE=(docker-compose)'
|
||||||
|
-h:,-s:,--service: service=
|
||||||
|
-i:,--ipnum: ipnum=
|
||||||
|
-c,--mysql-cmd mysql_cmd=1
|
||||||
|
-d,--mysqldump-cmd mysqldump_cmd=1
|
||||||
|
-k,--klean klean=1
|
||||||
|
-u:,--user: user=
|
||||||
|
-p:,--password: password=
|
||||||
|
)
|
||||||
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
[ -n "$service" ] || die "Vous devez spécifier le nom du service"
|
||||||
|
|
||||||
|
found=
|
||||||
|
first=1
|
||||||
|
while true; do
|
||||||
|
if [ -f composer.json ]; then
|
||||||
|
found=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
first=
|
||||||
|
cd ..
|
||||||
|
if [ "$(pwd)" == "$HOME" ]; then
|
||||||
|
die "Cette commande ne peut être lancée que depuis un projet Composer"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ -z "$first" ]; then
|
||||||
|
enote "Le répertoire du projet est $(ppath . ~)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
function die_not_found() { die "$service: service introuvable. vérifiez que le projet est actuellement up"; }
|
||||||
|
setx cid="${DOCKER_COMPOSE[@]}" ps -q "$service" 2>/dev/null || die_not_found
|
||||||
|
[ -n "$cid" ] || die_not_found
|
||||||
|
edebug "$service id: $cid"
|
||||||
|
|
||||||
|
function die_not_found() { die "$service: $cid: ip introuvable"; }
|
||||||
|
setx ip=docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}},{{end}}' "$cid" || die_not_found
|
||||||
|
[ -n "$ip" ] || die_not_found
|
||||||
|
ipdesc="${ip%,}"
|
||||||
|
if [ -z "$ipnum" ] && [[ "$ipdesc" == *,* ]]; then
|
||||||
|
enote "Le service est accessible sur plusieurs adresses ip: $ipdesc"
|
||||||
|
enote "Pensez à spécifier l'option -i pour désigner l'adresse à utiliser (-i1 pour la première, -i2 pour la seconde, etc.)"
|
||||||
|
fi
|
||||||
|
if [ -n "$ipnum" ]; then
|
||||||
|
let ipnum=ipnum-1
|
||||||
|
while [ $ipnum -gt 0 ]; do
|
||||||
|
ip="${ip#*,}"
|
||||||
|
let ipnum=ipnum-1
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
ip="${ip%%,*}"
|
||||||
|
[ -n "$ip" ] || die_not_found
|
||||||
|
edebug "$service ip: $ip"
|
||||||
|
|
||||||
|
if [ -n "$mysql_cmd" ]; then
|
||||||
|
mysql -h"$ip" ${user:+-u"$user"} ${password:+-p"$password"} "$@"
|
||||||
|
|
||||||
|
elif [ -n "$mysqldump_cmd" ]; then
|
||||||
|
mysqldump --databases --add-drop-database -h"$ip" ${user:+-u"$user"} ${password:+-p"$password"} "$@"
|
||||||
|
|
||||||
|
elif [ -n "$klean" ]; then
|
||||||
|
estep "klean"
|
||||||
|
docker exec "$cid" klean
|
||||||
|
estep "wait 10sec..."
|
||||||
|
sleep 10
|
||||||
|
estep "start"
|
||||||
|
"${DOCKER_COMPOSE[@]}" start "$service"
|
||||||
|
|
||||||
|
else
|
||||||
|
[ -f bin/conndev.php ] || die "Impossible de trouver le script compagnon conndev.php"
|
||||||
|
|
||||||
|
mysql_cmd="$(php bin/conndev.php "$ip" "$@")"
|
||||||
|
edebug "mysql_cmd: $mysql_cmd"
|
||||||
|
|
||||||
|
eval "$mysql_cmd"
|
||||||
|
fi
|
|
@ -0,0 +1,60 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
|
|
||||||
|
[ -n "$COMPOSE_V1" ] && DOCKER_COMPOSE=(docker-compose) || DOCKER_COMPOSE=(docker compose)
|
||||||
|
|
||||||
|
function display_help() {
|
||||||
|
uecho "$scriptname: ouvrir un shell dans le container
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
$scriptname [CMD...]
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
--compose-v1
|
||||||
|
Forcer l'utilisation de docker-compose v1
|
||||||
|
-h, -s, --service SERVICE
|
||||||
|
Spécifier le nom du service sur lequel ouvrir le shell
|
||||||
|
-d, --db
|
||||||
|
équivalent à -s db
|
||||||
|
-w, --web
|
||||||
|
équivalent à -s web (c'est la valeur par défaut)"
|
||||||
|
}
|
||||||
|
|
||||||
|
service=web
|
||||||
|
args=(
|
||||||
|
--help '$exit_with display_help'
|
||||||
|
--compose-v1 '$DOCKER_COMPOSE=(docker-compose)'
|
||||||
|
-h:,-s:,--service: service=
|
||||||
|
-d,--db service=db
|
||||||
|
-w,--web service=web
|
||||||
|
)
|
||||||
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
[ -n "$service" ] || die "Vous devez spécifier le nom du service"
|
||||||
|
|
||||||
|
found=
|
||||||
|
first=1
|
||||||
|
while true; do
|
||||||
|
if [ -f composer.json ]; then
|
||||||
|
found=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
first=
|
||||||
|
cd ..
|
||||||
|
if [ "$(pwd)" == "$HOME" ]; then
|
||||||
|
die "Cette commande ne peut être lancée que depuis un projet Composer"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ -z "$first" ]; then
|
||||||
|
enote "Le répertoire du projet est $(ppath . ~)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
setx cid="${DOCKER_COMPOSE[@]}" ps -q "$service" 2>/dev/null || die "$service: service introuvable"
|
||||||
|
|
||||||
|
cmd=("$@")
|
||||||
|
[ ${#cmd[*]} -gt 0 ] || cmd=(bash)
|
||||||
|
|
||||||
|
"${DOCKER_COMPOSE[@]}" exec "$service" "${cmd[@]}"
|
|
@ -0,0 +1,282 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
|
|
||||||
|
function display_help() {
|
||||||
|
uecho "$scriptname: mettre à jour un module ur/* ou lib/* sans utiliser composer
|
||||||
|
|
||||||
|
ça permet de faire du développement plus rapidement sans utiliser les dépôts de
|
||||||
|
type path
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
$scriptname modules...
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-n, --fake
|
||||||
|
Afficher simplement ce qui serait fait
|
||||||
|
-q, --quiet
|
||||||
|
Ne pas lancer rsync en mode verbose
|
||||||
|
-g, --no-wait
|
||||||
|
Ne pas attendre avant de faire git commit
|
||||||
|
--rsync
|
||||||
|
Mettre à jour les répertoires dans vendor/ qui ne sont pas des liens
|
||||||
|
symboliques à partir des projets dépendants correspondants. Les liens
|
||||||
|
symboliques créés avec --link sont ignorés. C'est l'option par défaut.
|
||||||
|
-l, --link
|
||||||
|
Transformer les clones de dépôts dans vendor/ en liens symboliques vers
|
||||||
|
les projets dépendants correpondants.
|
||||||
|
-k, --copy
|
||||||
|
Transformer les liens symboliques dans vendor/ en copies des projets
|
||||||
|
dépendants correspondants. Les répertoires qui ne sont pas des liens
|
||||||
|
symboliques sont ignorés.
|
||||||
|
Cette option peut être considérée comme le contraire de --link
|
||||||
|
-i, --install
|
||||||
|
Supprimer les répertoires des projets dépendants dans vendor/, qu'il
|
||||||
|
s'agisse de liens symboliques ou de répertoires normaux, puis les faire
|
||||||
|
recréer par 'composer i'
|
||||||
|
Celà permet de ramener le projet à l'état original.
|
||||||
|
-j, --reinstall-link
|
||||||
|
Supprimer les répertoires des projets dépendants dans vendor/ s'il
|
||||||
|
s'agit de liens symboliques, puis les faire recréer par 'composer i'
|
||||||
|
Cette variante est plus rapide que --install puisqu'on ne cherche pas à
|
||||||
|
tout recréer.
|
||||||
|
-u, --update
|
||||||
|
Supprimer les répertoires des projets dépendants dans vendor/, qu'il
|
||||||
|
s'agisse de liens symboliques ou de répertoires normaux, puis les faire
|
||||||
|
recréer par 'composer u'
|
||||||
|
Celà permet de mettre à jour le projet sans les erreurs qui résultent
|
||||||
|
des modifications faites par les autres actions.
|
||||||
|
-w, --update-commit
|
||||||
|
Mettre à jour le projet avec --update puis enregistrer les modifications
|
||||||
|
éventuelles dans git
|
||||||
|
--ud, --update-deps
|
||||||
|
Mettre à jour les projets dépendants avec --update-commit avant de
|
||||||
|
mettre à jour le projet courant.
|
||||||
|
--ur, --update-recursive
|
||||||
|
Mettre à jour de façon récursive tous les projets dépendants.
|
||||||
|
NB: les modifications dans les projets dépendants seront automatiquement
|
||||||
|
enregistrées dans git."
|
||||||
|
}
|
||||||
|
|
||||||
|
fake=
|
||||||
|
verbose=1
|
||||||
|
nowait=
|
||||||
|
action=rsync
|
||||||
|
args=(
|
||||||
|
--help '$exit_with display_help'
|
||||||
|
-d:,--project-dir: projdir=
|
||||||
|
-n,--fake fake=1
|
||||||
|
-q,--quiet verbose=
|
||||||
|
-g,--no-wait nowait=1
|
||||||
|
-l,--link action=link
|
||||||
|
-k,--copy action=copy
|
||||||
|
-i,--install action=install
|
||||||
|
-j,--reinstall-link action=reinstall-link
|
||||||
|
-u,--update action=update
|
||||||
|
-w,--update-commit action=update-commit
|
||||||
|
--ud,--update-deps action=update-deps
|
||||||
|
--ur,--update-recursive action=update-recursive
|
||||||
|
)
|
||||||
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
if [ -d "$projdir" ]; then
|
||||||
|
cd "$projdir"
|
||||||
|
elif [ -e "$projdir" ]; then
|
||||||
|
die "$projdir: répertoire introuvable"
|
||||||
|
fi
|
||||||
|
|
||||||
|
found=
|
||||||
|
first=1
|
||||||
|
while true; do
|
||||||
|
if [ -f composer.json ]; then
|
||||||
|
found=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
first=
|
||||||
|
cd ..
|
||||||
|
if [ "$(pwd)" == "$HOME" ]; then
|
||||||
|
die "Cette commande ne peut être lancée que depuis un projet Composer"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ -z "$first" ]; then
|
||||||
|
enote "Le répertoire du projet est $(ppath . ~)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$action" == update-deps -o "$action" == update-recursive ]; then
|
||||||
|
# avec update-deps et update-recursive, tous les modules doivent être
|
||||||
|
# considérés
|
||||||
|
set --
|
||||||
|
fi
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
setx -a ms=list_dirs vendor "ur/*" "lib/*"
|
||||||
|
set -- "${ms[@]}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
function check_module() {
|
||||||
|
[ -d "../$m" ] || die "$m: module introuvable"
|
||||||
|
}
|
||||||
|
function update_with_rsync() {
|
||||||
|
local -a rsync_args
|
||||||
|
rsync_args=(
|
||||||
|
-a ${fake:+-n} ${verbose:+-v}
|
||||||
|
--delete
|
||||||
|
-f "- /.git/"
|
||||||
|
-f "- /vendor/"
|
||||||
|
"../$m/" "vendor/$p"
|
||||||
|
)
|
||||||
|
rsync "${rsync_args[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
deps=()
|
||||||
|
modules=()
|
||||||
|
for m in "$@"; do
|
||||||
|
m="${m#vendor/}" # pour permettre de spécifier le chemin directement
|
||||||
|
m="${m//\//-}"
|
||||||
|
case "$m" in
|
||||||
|
ur-*|lib-*) ;;
|
||||||
|
*) m="ur-$m";;
|
||||||
|
esac
|
||||||
|
modules+=("$m")
|
||||||
|
p="${m//-/\/}"
|
||||||
|
|
||||||
|
check_module
|
||||||
|
case "$action" in
|
||||||
|
rsync)
|
||||||
|
# Action par défaut: ignorer les liens et synchroniser les copies
|
||||||
|
if [ ! -L "vendor/$p" ]; then
|
||||||
|
etitle "$m"
|
||||||
|
update_with_rsync
|
||||||
|
eend
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
link)
|
||||||
|
# Ignorer les liens et transformer les copies en liens
|
||||||
|
if [ ! -L "vendor/$p" ]; then
|
||||||
|
link="$m"
|
||||||
|
path="/project/vendor/$p"
|
||||||
|
path="${path%/*}"
|
||||||
|
while [ -n "$path" ]; do
|
||||||
|
link="../$link"
|
||||||
|
path="${path%/*}"
|
||||||
|
done
|
||||||
|
|
||||||
|
etitle "$m"
|
||||||
|
estep "suppr. vendor/$p"
|
||||||
|
rm -rf "vendor/$p"
|
||||||
|
mkdirof "vendor/$p"
|
||||||
|
|
||||||
|
estep "vendor/$p --> $link"
|
||||||
|
ln -s "$link" "vendor/$p"
|
||||||
|
eend
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
copy)
|
||||||
|
# Transformer les liens en copie et les synchroniser
|
||||||
|
etitle "$m"
|
||||||
|
if [ -L "vendor/$p" ]; then
|
||||||
|
estep "suppr. vendor/$p"
|
||||||
|
rm -f "vendor/$p"
|
||||||
|
fi
|
||||||
|
update_with_rsync
|
||||||
|
eend
|
||||||
|
;;
|
||||||
|
install)
|
||||||
|
# Supprimer les liens et répertoires...
|
||||||
|
etitle "$m"
|
||||||
|
if [ -e "vendor/$p" ]; then
|
||||||
|
estep "suppr. vendor/$p"
|
||||||
|
rm -rf "vendor/$p"
|
||||||
|
fi
|
||||||
|
array_add deps "$p"
|
||||||
|
eend
|
||||||
|
;;
|
||||||
|
reinstall-link)
|
||||||
|
# Supprimer les liens uniquement...
|
||||||
|
etitle "$m"
|
||||||
|
if [ -L "vendor/$p" ]; then
|
||||||
|
estep "suppr. vendor/$p"
|
||||||
|
rm -f "vendor/$p"
|
||||||
|
fi
|
||||||
|
array_add deps "$p"
|
||||||
|
eend
|
||||||
|
;;
|
||||||
|
update|update-commit|update-deps|update-recursive)
|
||||||
|
# Supprimer les liens et répertoires...
|
||||||
|
etitle "$m"
|
||||||
|
if [ -e "vendor/$p" ]; then
|
||||||
|
estep "suppr. vendor/$p"
|
||||||
|
rm -rf "vendor/$p"
|
||||||
|
fi
|
||||||
|
array_add deps "$p"
|
||||||
|
eend
|
||||||
|
;;
|
||||||
|
*) die "$action: action inconnue";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
case "$action" in
|
||||||
|
install|reinstall-link)
|
||||||
|
# ... puis installer les dépendances
|
||||||
|
estep "Installation des dépendances"
|
||||||
|
"$scriptdir/dk" ci || die
|
||||||
|
;;
|
||||||
|
update|update-commit)
|
||||||
|
# ... puis mettre à jour les dépendances
|
||||||
|
estep "Mise à jour des dépendances"
|
||||||
|
"$scriptdir/dk" cu "${deps[@]}" || die
|
||||||
|
|
||||||
|
if [ "$action" == update-commit ]; then
|
||||||
|
if [ -z "$nowait" ]; then
|
||||||
|
# laisser le temps à @$*! d'eclipse qui met à jour automatiquement le projet...
|
||||||
|
estep "Attendre 10 secondes avant git commit"
|
||||||
|
sleep 10
|
||||||
|
fi
|
||||||
|
|
||||||
|
estep "Enregistrement dans git"
|
||||||
|
pci -A "maj deps"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
update-deps)
|
||||||
|
# mettre à jour les dépendances directes
|
||||||
|
for m in "${modules[@]}"; do
|
||||||
|
etitle "Mise à jour projet dépendant: $m"
|
||||||
|
"$script" -d "../$m" -w
|
||||||
|
eend
|
||||||
|
done
|
||||||
|
|
||||||
|
estep "Mise à jour des dépendances"
|
||||||
|
"$scriptdir/dk" cu || die
|
||||||
|
|
||||||
|
if [ -z "$nowait" ]; then
|
||||||
|
# laisser le temps à @$*! d'eclipse qui met à jour automatiquement le projet...
|
||||||
|
estep "Attendre 10 secondes avant git commit"
|
||||||
|
sleep 10
|
||||||
|
fi
|
||||||
|
|
||||||
|
estep "Enregistrement dans git"
|
||||||
|
pci -A "maj deps"
|
||||||
|
;;
|
||||||
|
update-recursive)
|
||||||
|
# mettre à jour les dépendances de façon récursive
|
||||||
|
for m in "${modules[@]}"; do
|
||||||
|
etitle "Mise à jour récursive: $m"
|
||||||
|
"$script" -d "../$m" --ur
|
||||||
|
eend
|
||||||
|
done
|
||||||
|
|
||||||
|
estep "Mise à jour des dépendances"
|
||||||
|
"$scriptdir/dk" cu || die
|
||||||
|
|
||||||
|
if [ -z "$nowait" ]; then
|
||||||
|
# laisser le temps à @$*! d'eclipse qui met à jour automatiquement le projet...
|
||||||
|
estep "Attendre 10 secondes avant git commit"
|
||||||
|
sleep 10
|
||||||
|
fi
|
||||||
|
|
||||||
|
estep "Enregistrement dans git"
|
||||||
|
pci -A "maj deps"
|
||||||
|
;;
|
||||||
|
esac
|
|
@ -0,0 +1,132 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
|
urequire install
|
||||||
|
|
||||||
|
function display_help() {
|
||||||
|
uecho "$scriptname: gérer les certificats de docker-machine
|
||||||
|
|
||||||
|
Les certificats créés par docker-machine ont une durée trop courte à mon goût.
|
||||||
|
Ce script permet de les recréer avec une durée de 30 ans pour le CA et le
|
||||||
|
certificat client, et de 10 ans pour chaque machine
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
$scriptname [host]"
|
||||||
|
}
|
||||||
|
|
||||||
|
args=(
|
||||||
|
--help '$exit_with display_help'
|
||||||
|
)
|
||||||
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
dmdir="$HOME/.docker/machine"
|
||||||
|
|
||||||
|
cadir="$dmdir/dmcerts"
|
||||||
|
cakey="$cadir/dmca.key"
|
||||||
|
cacsr="$cadir/dmca.csr"
|
||||||
|
cacrt="$cadir/dmca.crt"
|
||||||
|
cacrl="$cadir/dmca.crl"
|
||||||
|
if [ ! -d "$cadir" ]; then
|
||||||
|
enote "Le répertoire $cadir va être créé. Ne faites cela que si c'est la première fois. Sinon, récupérez le répertoire déjà créé par ailleurs"
|
||||||
|
ask_yesno "Voulez-vous continuer?" N || die
|
||||||
|
|
||||||
|
mkdir "$cadir"
|
||||||
|
chmod 700 "$cadir"
|
||||||
|
mkdir "$cadir"/{openssl,newcerts}
|
||||||
|
touch "$cadir/index.txt"
|
||||||
|
echo 01 >"$cadir/serial"
|
||||||
|
|
||||||
|
for src in "$scriptdir"/lib/dmcerts_openssl_*.cnf; do
|
||||||
|
dest="$cadir/openssl/${src#$scriptdir/lib/dmcerts_openssl_}"
|
||||||
|
cp "$src" "$dest"
|
||||||
|
done
|
||||||
|
sed -i "s/^dir = .*/dir = ${cadir//\//\\\/}/" "$cadir/openssl/"*.cnf
|
||||||
|
|
||||||
|
openssl req -config "$cadir/openssl/ca.cnf" -batch -new -nodes -keyout "$cakey" -out "$cacsr" &&
|
||||||
|
openssl ca -config "$cadir/openssl/ca.cnf" -batch -notext -out "$cacrt" -days 10950 -keyfile "$cakey" -selfsign -extensions v3_ca -infiles "$cacsr" &&
|
||||||
|
openssl ca -config "$cadir/openssl/ca.cnf" -batch -gencrl -out "$cacrl" ||
|
||||||
|
die "Une erreur s'est produite. Veuillez supprimer $cadir et recommencer"
|
||||||
|
fi
|
||||||
|
|
||||||
|
clientkey="$cadir/dmclient.key"
|
||||||
|
clientcsr="$cadir/dmclient.csr"
|
||||||
|
clientcrt="$cadir/dmclient.crt"
|
||||||
|
clientcnf="$cadir/openssl/client.cnf"
|
||||||
|
if [ ! -f "$clientcrt" ]; then
|
||||||
|
#sed -i "s/^dir = .*/dir = ${cadir//\//\\\/}/" "$clientcnf"
|
||||||
|
|
||||||
|
subj="/countryName=FR/stateOrProvinceName=La Reunion/localityName=Sainte Clotilde/organizationName=jclain/CN=dmclient/"
|
||||||
|
openssl req -config "$clientcnf" -batch -new -nodes -subj "$subj" -keyout "$clientkey" -out "$clientcsr" &&
|
||||||
|
openssl ca -config "$clientcnf" -batch -keyfile "$cakey" -notext -out "$clientcrt" -infiles "$clientcsr" &&
|
||||||
|
chmod 644 "$clientcrt" &&
|
||||||
|
chmod 600 "$clientkey" &&
|
||||||
|
rm -f "$clientcsr" ||
|
||||||
|
die "Une erreur s'est produite pendant la génération du certificat client"
|
||||||
|
fi
|
||||||
|
|
||||||
|
estep "Vérification certificats locaux"
|
||||||
|
copy_update "$cacrt" "$dmdir/certs/ca.pem"
|
||||||
|
copy_update "$cakey" "$dmdir/certs/ca-key.pem"
|
||||||
|
copy_update "$clientcrt" "$dmdir/certs/cert.pem"
|
||||||
|
copy_update "$clientkey" "$dmdir/certs/key.pem"
|
||||||
|
|
||||||
|
first=1
|
||||||
|
for host in "$@"; do
|
||||||
|
if [ -n "$first" ]; then
|
||||||
|
servercnf="$cadir/openssl/server.cnf"
|
||||||
|
#sed -i "s/^dir = .*/dir = ${cadir//\//\\\/}/" "$servercnf"
|
||||||
|
else
|
||||||
|
first=
|
||||||
|
fi
|
||||||
|
|
||||||
|
etitle "$host"
|
||||||
|
machine="${host%%.*}"
|
||||||
|
machinedir="$dmdir/machines/$machine"
|
||||||
|
if [ ! -d "$machinedir" ]; then
|
||||||
|
eerror "$machine: machine inexistante"
|
||||||
|
fi
|
||||||
|
|
||||||
|
serverkey="${machine}-server.key"
|
||||||
|
servercsr="${machine}-server.csr"
|
||||||
|
servercrt="${machine}-server.crt"
|
||||||
|
if [ ! -f "$servercrt" ]; then
|
||||||
|
subj="/countryName=FR/stateOrProvinceName=La Reunion/localityName=Sainte Clotilde/organizationName=jclain/CN=dmserver-$host/"
|
||||||
|
sans="DNS:$host,DNS:localhost"
|
||||||
|
sed -i "s/^subjectAltName = .*/subjectAltName = $sans/" "$servercnf"
|
||||||
|
openssl req -config "$servercnf" -batch -new -nodes -subj "$subj" -keyout "$serverkey" -out "$servercsr" &&
|
||||||
|
openssl ca -config "$servercnf" -batch -keyfile "$cakey" -notext -out "$servercrt" -infiles "$servercsr" &&
|
||||||
|
chmod 644 "$servercrt" &&
|
||||||
|
chmod 600 "$serverkey" &&
|
||||||
|
rm -f "$servercsr" ||
|
||||||
|
die "Une erreur s'est produite pendant la génération du certificat serveur"
|
||||||
|
fi
|
||||||
|
|
||||||
|
estep "machine: $machine"
|
||||||
|
ask_yesno "Voulez-vous remplacer les certificats distants et locaux?" O || continue
|
||||||
|
|
||||||
|
estep "Copie distante"
|
||||||
|
scp "$cacrt" "root@$host:/etc/docker/ca.pem" || die
|
||||||
|
scp "$servercrt" "root@$host:/etc/docker/server.pem" || die
|
||||||
|
scp "$serverkey" "root@$host:/etc/docker/server-key.pem" || die
|
||||||
|
|
||||||
|
estep "Redémarrage docker distant"
|
||||||
|
ssh "root@$host" "service docker restart" || die
|
||||||
|
|
||||||
|
estep "Copie locale"
|
||||||
|
copy_update "$cacrt" "$machinedir/ca.pem"
|
||||||
|
copy_update "$cakey" "$machinedir/ca-key.pem"
|
||||||
|
copy_update "$clientcrt" "$machinedir/cert.pem"
|
||||||
|
copy_update "$clientkey" "$machinedir/key.pem"
|
||||||
|
copy_update "$servercrt" "$machinedir/server.pem"
|
||||||
|
copy_update "$serverkey" "$machinedir/server-key.pem"
|
||||||
|
|
||||||
|
estep "Test de l'accès au serveur"
|
||||||
|
setx env=docker-machine env "$machine" || die
|
||||||
|
eval "$env"
|
||||||
|
echo "$machine docker version: $(docker system info -f '{{.ServerVersion}}')"
|
||||||
|
|
||||||
|
estep "Suppression des fichiers temporaires"
|
||||||
|
rm -f "$servercrt" "$serverkey"
|
||||||
|
done
|
||||||
|
|
||||||
|
enote "N'oubliez pas de re-exporter les docker-machines qui ont été regénérées"
|
|
@ -0,0 +1,160 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
|
|
||||||
|
function display_help() {
|
||||||
|
uecho "$scriptname: import/exporter une docker-machine
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
$scriptname -d NAME
|
||||||
|
$scriptname -l ARCHIVE
|
||||||
|
$scriptname -a ARCHIVEs...
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-d, --dump
|
||||||
|
Exporter la machine
|
||||||
|
-l, --load
|
||||||
|
Importer la machine à partir de l'archive spécifiée
|
||||||
|
-a, --load-all
|
||||||
|
Importer toutes les machines depuis le répertoire spécifié"
|
||||||
|
}
|
||||||
|
|
||||||
|
function dump_machine() {
|
||||||
|
local name srcdir workdir destdir archive i
|
||||||
|
|
||||||
|
name="$1"
|
||||||
|
[ -n "$name" ] || die "Vous devez spécifier le nom de la machine"
|
||||||
|
|
||||||
|
srcdir="$HOME/.docker/machine/machines/$name"
|
||||||
|
[ -d "$srcdir" ] || die "$name: nom de machine incorrect"
|
||||||
|
|
||||||
|
ac_set_tmpdir workdir
|
||||||
|
destdir="$workdir/$name"
|
||||||
|
|
||||||
|
archive="${name}-machine.tar.gz"
|
||||||
|
|
||||||
|
estep "Copie des fichiers"
|
||||||
|
cp -r "$srcdir" "$workdir" || die
|
||||||
|
for i in ca-key.pem ca.pem key.pem cert.pem; do
|
||||||
|
[ -f "$destdir/$i" ] || {
|
||||||
|
cp "$HOME/.docker/machine/certs/$i" "$destdir" || die
|
||||||
|
}
|
||||||
|
done
|
||||||
|
|
||||||
|
estep "Correction des chemins"
|
||||||
|
sed -i "\
|
||||||
|
s|$HOME/.docker/machine|DOCKER_MACHINE_HOME|g
|
||||||
|
s|DOCKER_MACHINE_HOME/certs/|DOCKER_MACHINE_HOME/machines/$name/|g
|
||||||
|
" "$destdir/config.json" || die
|
||||||
|
|
||||||
|
estep "Génération de $archive"
|
||||||
|
tar czf "$archive" -C "$workdir" "$name" || die
|
||||||
|
|
||||||
|
ac_clean "$workdir"
|
||||||
|
}
|
||||||
|
|
||||||
|
function load_machine() {
|
||||||
|
local archive archivename destdir machinedir origdir workdir srcdir
|
||||||
|
|
||||||
|
archive="$1"
|
||||||
|
[ -n "$archive" ] || die "Vous devez spécifier l'archive à importer"
|
||||||
|
|
||||||
|
setx archivename=basename -- "$archive"
|
||||||
|
if [[ "$archivename" == *-machine.tar.gz ]]; then
|
||||||
|
name="${archivename%-machine.tar.gz}"
|
||||||
|
else
|
||||||
|
die "$archive: n'est pas une archive docker-machine"
|
||||||
|
fi
|
||||||
|
|
||||||
|
destdir="$HOME/.docker/machine/machines"
|
||||||
|
machinedir="$destdir/$name"
|
||||||
|
origdir="$HOME/${name}-machine.orig"
|
||||||
|
if [ -d "$machinedir" ]; then
|
||||||
|
if [ -n "$NOCLOBBER" ]; then
|
||||||
|
ewarn "$name: cette machine existe déjà"
|
||||||
|
return
|
||||||
|
else
|
||||||
|
ewarn "$name: une machine du même nom existe déjà"
|
||||||
|
ask_yesno "Voulez-vous l'écraser?" N || die
|
||||||
|
|
||||||
|
[ -d "$origdir" ] && rm -rf "$origdir"
|
||||||
|
mv "$machinedir" "$origdir"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
ac_set_tmpdir workdir
|
||||||
|
srcdir="$workdir/$name"
|
||||||
|
|
||||||
|
estep "Extraction de l'archive"
|
||||||
|
tar xzf "$archive" -C "$workdir"
|
||||||
|
|
||||||
|
[ -d "$srcdir" ] || die "L'archive n'est pas pour la machine $name"
|
||||||
|
|
||||||
|
estep "Corriger les chemins"
|
||||||
|
sed -i "\
|
||||||
|
s|DOCKER_MACHINE_HOME|$HOME/.docker/machine|g
|
||||||
|
" "$srcdir/config.json" || die
|
||||||
|
|
||||||
|
estep "Installation de la machine"
|
||||||
|
mkdir -p "$destdir"
|
||||||
|
mv "$srcdir" "$destdir"
|
||||||
|
|
||||||
|
if [ -d "$origdir" ]; then
|
||||||
|
enote "Une fois que la machine aura été testée, vous pouvez supprimer ce répertoire:
|
||||||
|
$origdir"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ac_clean "$workdir"
|
||||||
|
}
|
||||||
|
|
||||||
|
# faut-il ignorer les machines existantes
|
||||||
|
NOCLOBBER=
|
||||||
|
|
||||||
|
action=
|
||||||
|
args=(
|
||||||
|
--help '$exit_with display_help'
|
||||||
|
-d,--dump,-x,--export,-s,--save action=dump
|
||||||
|
-l,--load,-i,--import action=load
|
||||||
|
-a,--all,--load-all,--import-all action=loadall
|
||||||
|
)
|
||||||
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
if [ -z "$action" ]; then
|
||||||
|
case "$1" in
|
||||||
|
d|dump|x|export|s|save) action=dump; shift;;
|
||||||
|
l|load|i|import) action=load; shift;;
|
||||||
|
a|all|loadall|importall) action=loadall; shift;;
|
||||||
|
*) die "Vous devez spécifier l'action à effectuer";;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$action" in
|
||||||
|
dump)
|
||||||
|
dump_machine "$1"
|
||||||
|
;;
|
||||||
|
load)
|
||||||
|
for archive in "$@"; do
|
||||||
|
etitle "$archive"
|
||||||
|
load_machine "$archive"
|
||||||
|
eend
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
loadall)
|
||||||
|
[ $# -gt 0 ] || set -- .
|
||||||
|
archives=()
|
||||||
|
for file in "$@"; do
|
||||||
|
if [ -d "$file" ]; then
|
||||||
|
NOCLOBBER=1
|
||||||
|
array_lsfiles files "$file" "*-machine.tar.gz"
|
||||||
|
array_extend archives files
|
||||||
|
else
|
||||||
|
archives+=("$file")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
for archive in "${archives[@]}"; do
|
||||||
|
etitle "$archive"
|
||||||
|
load_machine "$archive"
|
||||||
|
eend
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
35
doc/index.md
35
doc/index.md
|
@ -1,35 +0,0 @@
|
||||||
# Présentation
|
|
||||||
|
|
||||||
nutools est un ensemble d'utilitaires pour faciliter l'utililisation des Unixes,
|
|
||||||
en particulier Linux, mais aussi MacOS X et Cygwin.
|
|
||||||
|
|
||||||
C'est aussi une librairie de scripts shell réutilisables ([ulib]()) et une
|
|
||||||
librairie de modules python réutilisables (pyulib)
|
|
||||||
|
|
||||||
# Prérequis
|
|
||||||
|
|
||||||
Python >= 2.3 et GNU Awk sont requis pour que toutes les fonctionnalités soient
|
|
||||||
supportées.
|
|
||||||
* Sous Linux, lors de l'installation du package, les meilleurs efforts sont fait
|
|
||||||
pour que ces packages soient installés.
|
|
||||||
* Sous MacOSX, il faut installer manuellement Fink, DarwinPorts ou Homebrew
|
|
||||||
|
|
||||||
# Outils
|
|
||||||
|
|
||||||
Chaque outil contient une aide intégrée. Il suffit de lancer l'outil avec
|
|
||||||
l'argument `--help` pour avoir une aide détaillée.
|
|
||||||
|
|
||||||
* Déploiement d'un répertoire ou d'une archive
|
|
||||||
* [uinst](tools/uinst): Déploiement local
|
|
||||||
* [mkusfx](tools/mkusfx): Faire une archive auto-installable avec uinst
|
|
||||||
* [ruinst](tools/ruinst): Déploiement distant avec uinst
|
|
||||||
* [runs](tools/runs): Lancer un script avec le protocole RUNS
|
|
||||||
* [rruns](tools/rruns): Déploiement distant avec runs
|
|
||||||
* Librairie réutilisable de scripts shell
|
|
||||||
* [uinc](tools/uinc): Dépliage des inclusions dans un fichier
|
|
||||||
* [ulibsync](tools/ulibsync): Faire une copie locale pour un projet de ulib et/ou pyulib
|
|
||||||
* Autres outils
|
|
||||||
* [udir](tools/udir): Gestion des paramètres d'un répertoire. Ces paramètres sont entre
|
|
||||||
autres utilisés par uinst et uinc.
|
|
||||||
|
|
||||||
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
17829
doc/nutools.html
17829
doc/nutools.html
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
||||||
/b/t/
|
|
|
@ -1,2 +0,0 @@
|
||||||
/b/
|
|
||||||
/build.env.local
|
|
|
@ -1,12 +0,0 @@
|
||||||
FROM ur/d9base
|
|
||||||
|
|
||||||
ARG date
|
|
||||||
ARG version
|
|
||||||
LABEL date=$date version=$version
|
|
||||||
|
|
||||||
ENV I=/install/nutools
|
|
||||||
COPY . $I
|
|
||||||
RUN $I/uinst -y $I && rm -rf $I
|
|
||||||
|
|
||||||
ENV PATH="$PATH:/usr/local/nutools"
|
|
||||||
CMD ["/bin/bash", "-il"]
|
|
72
docker/build
72
docker/build
|
@ -1,72 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
source /etc/ulibauto || exit 1
|
|
||||||
|
|
||||||
function display_help() {
|
|
||||||
uecho "$scriptname: construire $NAME
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
$scriptname [options]
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-b, --build
|
|
||||||
-n, --no-cache"
|
|
||||||
}
|
|
||||||
|
|
||||||
function do_prereqs() {
|
|
||||||
:
|
|
||||||
}
|
|
||||||
function do_build() {
|
|
||||||
local date; local -a args
|
|
||||||
setx date=date +%y%m%d
|
|
||||||
args=(
|
|
||||||
-f Dockerfile
|
|
||||||
-t $NAME:latest
|
|
||||||
--build-arg "date=$date"
|
|
||||||
${no_cache:+--no-cache}
|
|
||||||
)
|
|
||||||
|
|
||||||
etitle "Création de l'image docker $NAME" \
|
|
||||||
docker build "${args[@]}" "$CTXDIR"
|
|
||||||
}
|
|
||||||
function do_run() {
|
|
||||||
docker run -it --rm "$NAME"
|
|
||||||
}
|
|
||||||
|
|
||||||
cd "$scriptdir"
|
|
||||||
source ./build.env || die "Impossible de trouver build.env"
|
|
||||||
[ -f build.env.local ] && source build.env.local
|
|
||||||
|
|
||||||
auto=1
|
|
||||||
prereqs=
|
|
||||||
build=
|
|
||||||
no_cache=
|
|
||||||
run=
|
|
||||||
args=(
|
|
||||||
--help '$exit_with display_help'
|
|
||||||
--prereqs '$prereqs=1; auto='
|
|
||||||
-b,--build '$build=1; auto='
|
|
||||||
-n,--no-cache no_cache=1
|
|
||||||
-r,--run '$run=1; auto='
|
|
||||||
)
|
|
||||||
parse_args "$@"; set -- "${args[@]}"
|
|
||||||
|
|
||||||
if [ -n "$prereqs" ]; then
|
|
||||||
build=
|
|
||||||
run=
|
|
||||||
elif [ -n "$auto" ]; then
|
|
||||||
build=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$prereqs" ]; then
|
|
||||||
do_prereqs "$@" || die
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$build" ]; then
|
|
||||||
do_build "$@" || die
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$run" ]; then
|
|
||||||
do_run "$@" || die
|
|
||||||
fi
|
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
# Nom de l'image
|
|
||||||
NAME=ur/nutools
|
|
||||||
# Build context pour docker
|
|
||||||
CTXDIR=..
|
|
||||||
# Répertoire contenant les fichiers nécessaire au build
|
|
||||||
BUILDDIR=b
|
|
||||||
# Répertoire temporaire pour construire les fichiers de BUILDDIR. Ce répertoire
|
|
||||||
# n'est pas transmis au daemon docker
|
|
||||||
TRANSDIR=b/t
|
|
||||||
|
|
||||||
# Fonctions spécifiques
|
|
||||||
#function do_prereqs() { :; }
|
|
||||||
#function do_build() { :; }
|
|
||||||
#function do_run() { :; }
|
|
|
@ -11,7 +11,7 @@ if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/ulib" || exit 1
|
||||||
urequire base
|
urequire base
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
urequire DEFAULTS
|
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: afficher les connexions TCP entrantes sur un port
|
uecho "$scriptname: afficher les connexions TCP entrantes sur un port
|
||||||
|
|
|
@ -0,0 +1,122 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
|
urequire ipcalc
|
||||||
|
|
||||||
|
function display_help() {
|
||||||
|
uecho "$scriptname: s'assurer que l'hôte courant a l'adresse IP spécifiée
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
$scriptname IPs...
|
||||||
|
|
||||||
|
NB: ce script ne supporte que la modification d'interfaces qui ne sont pas des
|
||||||
|
bridges. il est conçu avant tout pour utilisation sur un serveur, pas un poste
|
||||||
|
de travail.
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-i, --ignore-iface IFACE
|
||||||
|
Ajouter une interface à la liste des interfaces à ignorer. Si cette
|
||||||
|
option est utilisée, la liste par défaut n'est pas utilisée, sauf si
|
||||||
|
l'option -d est utilisée aussi.
|
||||||
|
-d, --defaults
|
||||||
|
Ajouter les valeurs suivantes à liste des interfaces à ignorer:
|
||||||
|
${DEFAULT_IGNORE_IFACES[*]}
|
||||||
|
Cette option est automatiquement activée si l'option -i n'est pas
|
||||||
|
utilisée
|
||||||
|
-n, --fake
|
||||||
|
Afficher simplement les modification à effectuer"
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFAULT_IGNORE_IFACES=(
|
||||||
|
"docker*"
|
||||||
|
"br-*"
|
||||||
|
"veth*"
|
||||||
|
)
|
||||||
|
DEFAULT_PROFILES=(prod test devel)
|
||||||
|
|
||||||
|
ignore_ifaces=()
|
||||||
|
fake=
|
||||||
|
args=(
|
||||||
|
--help '$exit_with display_help'
|
||||||
|
-i:,--ignore-iface: ignore_ifaces
|
||||||
|
-d,--defaults '$array_extend ignore_ifaces DEFAULT_IGNORE_IFACES'
|
||||||
|
-n,--fake fake=1
|
||||||
|
)
|
||||||
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
require_debian
|
||||||
|
|
||||||
|
for vip in "$@"; do
|
||||||
|
[ "${vip%/*}" != "$vip" ] || vip="$vip/32"
|
||||||
|
vips+=("$vip")
|
||||||
|
done
|
||||||
|
|
||||||
|
array_fix_paths ignore_ifaces
|
||||||
|
[ ${#ignore_ifaces[*]} -gt 0 ] || ignore_ifaces=("${DEFAULT_IGNORE_IFACES[@]}")
|
||||||
|
|
||||||
|
if [ -n "$fake" ]; then
|
||||||
|
set_verbosity --debug
|
||||||
|
__NETWORK_DEVEL_SHOW_MODIFS=1
|
||||||
|
__DEBIAN_NETWORK_DEVEL_SHOW_MODIFS=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# réimplémentation "corrigée" de network_config_partial()
|
||||||
|
|
||||||
|
nifile="$__DEBIAN_NETWORK_INTERFACES"
|
||||||
|
|
||||||
|
network_set_confips
|
||||||
|
network_set_confbrs
|
||||||
|
tmpconfips=()
|
||||||
|
for confip in "${confips[@]}"; do
|
||||||
|
network_parse_confip "$confip" iface gateway ipsuffixes
|
||||||
|
continue=
|
||||||
|
for ignore_iface in "${ignore_ifaces[@]}"; do
|
||||||
|
if eval "[[ \"\$iface\" == $(qwc "$ignore_iface") ]]"; then
|
||||||
|
continue=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
[ -n "$continue" ] && continue
|
||||||
|
|
||||||
|
tmpconfips+=("$confip")
|
||||||
|
network_parse_ipsuffix "${ipsuffixes[0]}" mainip suffix
|
||||||
|
for vip in "${vips[@]}"; do
|
||||||
|
if [ "${vip%.*}" == "${mainip%.*}" ]; then
|
||||||
|
tmpconfips+=("$iface:$vip")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
confips=("${tmpconfips[@]}")
|
||||||
|
confbrs=()
|
||||||
|
network_fix_confs
|
||||||
|
|
||||||
|
network_config "" confips confbrs || exit 0
|
||||||
|
|
||||||
|
# des modifications ont eu lieu, tenter de configurer les nouvelles adresses
|
||||||
|
# d'abord calculer les adresses ips qui sont activées
|
||||||
|
network_set_confips
|
||||||
|
for confip in "${confips[@]}"; do
|
||||||
|
network_parse_confip "$confip" iface gateway ipsuffixes
|
||||||
|
for ipsuffix in "${ipsuffixes[@]}"; do
|
||||||
|
network_parse_ipsuffix "$ipsuffix" ip suffix
|
||||||
|
array_addu ips "$ip"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
# puis lister les commandes correspondant aux adresses ips non activées
|
||||||
|
array_from_lines ups "$(awkrun <"$nifile" -f ips[@] '
|
||||||
|
$1 == "up" && $2 == "ip" && $3 == "addr" && $4 == "add" {
|
||||||
|
ip = $5; sub(/(\/[0-9.]+)?$/, "", ip) # enlever suffixe
|
||||||
|
if (! in_array(ip, ips)) {
|
||||||
|
$1 = ""
|
||||||
|
print
|
||||||
|
}
|
||||||
|
}')"
|
||||||
|
if [ ${#ups[*]} -gt 0 ]; then
|
||||||
|
etitle "Configuration des nouvelles adresses"
|
||||||
|
for up in "${ups[@]}"; do
|
||||||
|
estep "$up"
|
||||||
|
eval "$up"
|
||||||
|
done
|
||||||
|
eend
|
||||||
|
fi
|
7
fconv
7
fconv
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
urequire DEFAULTS
|
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: convertir un fichier ou les fichiers d'un répertoire
|
uecho "$scriptname: convertir un fichier ou les fichiers d'un répertoire
|
||||||
|
@ -54,6 +53,8 @@ COMMANDES
|
||||||
Transformer certains caratères UTF-8 en équivalents qui existent en Latin1
|
Transformer certains caratères UTF-8 en équivalents qui existent en Latin1
|
||||||
na, noaccents
|
na, noaccents
|
||||||
Transformer les caractères accentués en caractères non accentués
|
Transformer les caractères accentués en caractères non accentués
|
||||||
|
[sed] s/from/to/opts
|
||||||
|
Filtrer avec l'expression régulière de sed 's/from/to/opts'
|
||||||
sort [-u]
|
sort [-u]
|
||||||
Trier le fichier avec la commande sort. Attention! Il ne faut utiliser
|
Trier le fichier avec la commande sort. Attention! Il ne faut utiliser
|
||||||
que les options de sort qui agissent sur un flux e.g. -u pour trier les
|
que les options de sort qui agissent sur un flux e.g. -u pour trier les
|
||||||
|
@ -151,6 +152,8 @@ function parse_cmd() {
|
||||||
cr) echo _nl2cr;;
|
cr) echo _nl2cr;;
|
||||||
latin1compat|lc) echo _latin1compat;;
|
latin1compat|lc) echo _latin1compat;;
|
||||||
noaccents|na|fixchars|fc) echo _noaccents;;
|
noaccents|na|fixchars|fc) echo _noaccents;;
|
||||||
|
s/*) qvals sed "$cmd" "$@";;
|
||||||
|
sed) qvals sed "$@";;
|
||||||
sort) qvals sort "$@";;
|
sort) qvals sort "$@";;
|
||||||
*)
|
*)
|
||||||
echo "$cmd: commande invalide"
|
echo "$cmd: commande invalide"
|
||||||
|
|
9
fnconv
9
fnconv
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
urequire DEFAULTS
|
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: renommer un fichier ou les fichiers d'un répertoire
|
uecho "$scriptname: renommer un fichier ou les fichiers d'un répertoire
|
||||||
|
@ -51,7 +50,9 @@ COMMANDES
|
||||||
u, uppercase
|
u, uppercase
|
||||||
Transformer le nom en majuscule
|
Transformer le nom en majuscule
|
||||||
f, fixcase
|
f, fixcase
|
||||||
Transformer le nom en minuscule s'il est entièrement en majuscule"
|
Transformer le nom en minuscule s'il est entièrement en majuscule
|
||||||
|
[sed] s/from/to/opts
|
||||||
|
Renommer le fichier avec l'expression régulière de sed 's/from/to/opts'"
|
||||||
}
|
}
|
||||||
|
|
||||||
function _lowercase() {
|
function _lowercase() {
|
||||||
|
@ -163,6 +164,8 @@ function parse_cmd() {
|
||||||
lowercase|lower|l) echo _lowercase;;
|
lowercase|lower|l) echo _lowercase;;
|
||||||
uppercase|upper|u) echo _uppercase;;
|
uppercase|upper|u) echo _uppercase;;
|
||||||
fixcase|fix|f) echo _fixcase;;
|
fixcase|fix|f) echo _fixcase;;
|
||||||
|
s/*) qvals sed "$cmd" "$@";;
|
||||||
|
sed) qvals sed "$@";;
|
||||||
*)
|
*)
|
||||||
echo "$cmd: commande invalide"
|
echo "$cmd: commande invalide"
|
||||||
return 1
|
return 1
|
||||||
|
|
3
fndate
3
fndate
|
@ -11,8 +11,7 @@ if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
urequire DEFAULTS
|
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: manipuler des noms de fichier pour les dater
|
uecho "$scriptname: manipuler des noms de fichier pour les dater
|
||||||
|
|
73
foreach
73
foreach
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
urequire DEFAULTS
|
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: lancer une commande pour un ensemble d'arguments
|
uecho "$scriptname: lancer une commande pour un ensemble d'arguments
|
||||||
|
@ -74,10 +73,23 @@ OPTIONS
|
||||||
Si l'expansion est désactivée, il faut protéger le caractère \$ pour
|
Si l'expansion est désactivée, il faut protéger le caractère \$ pour
|
||||||
qu'il soit traité, e.g, avec les examples ci-dessus:
|
qu'il soit traité, e.g, avec les examples ci-dessus:
|
||||||
$scriptname -n '*.c' 'cp \"\$item\" dest/dir'
|
$scriptname -n '*.c' 'cp \"\$item\" dest/dir'
|
||||||
-t, --title
|
--title
|
||||||
--no-title
|
--pt, --parent-title
|
||||||
|
--nt, --no-title
|
||||||
Afficher (resp. ne pas afficher) chaque correspondance avant de lancer
|
Afficher (resp. ne pas afficher) chaque correspondance avant de lancer
|
||||||
la commande. Par défaut, l'affichage est effectué."
|
la commande. Par défaut, l'affichage est effectué.
|
||||||
|
Avec --parent-title, pour chaque correspondance afficher plutôt le
|
||||||
|
répertoire parent (valide uniquement avec l'option -p)
|
||||||
|
-S, --git-status
|
||||||
|
Equivalent à spécifier la commande 'git status --p'
|
||||||
|
Utiliser par exemple avec -g, -G ou -C
|
||||||
|
-G, --git-projects
|
||||||
|
Equivalent à '--ptitle -p */.git --' e.g '$scriptname -G git pull' pour
|
||||||
|
mettre à jour les dépôts situés dans un répertoire
|
||||||
|
-C, --composer-projects
|
||||||
|
Equivalent à '--ptitle -p */composer.json --'
|
||||||
|
--cc, --composer-cmd
|
||||||
|
Equivalent à '--ptitle -p */composer.json -- dk composer'"
|
||||||
}
|
}
|
||||||
|
|
||||||
basedir=
|
basedir=
|
||||||
|
@ -85,7 +97,9 @@ match=auto
|
||||||
changedir=
|
changedir=
|
||||||
parentdir=
|
parentdir=
|
||||||
expand=1
|
expand=1
|
||||||
title=1
|
title=auto
|
||||||
|
command=
|
||||||
|
shortcut=
|
||||||
args=(+
|
args=(+
|
||||||
--help '$exit_with display_help'
|
--help '$exit_with display_help'
|
||||||
-b:,--basedir: basedir=
|
-b:,--basedir: basedir=
|
||||||
|
@ -97,18 +111,47 @@ args=(+
|
||||||
-s,--string match=string
|
-s,--string match=string
|
||||||
-x,--expand expand=1
|
-x,--expand expand=1
|
||||||
-n,--no-expand expand=
|
-n,--no-expand expand=
|
||||||
-t,--title title=1
|
--title title=1
|
||||||
--no-title title=
|
--pt,--parent-title title=p
|
||||||
|
--nt,--no-title title=
|
||||||
|
-S,--git-status command=git-status-p
|
||||||
|
-G,--git-projects shortcut=git
|
||||||
|
-C,--composer-projects shortcut=composer
|
||||||
|
--cc,--composer-cmd shortcut=composer-cmd
|
||||||
)
|
)
|
||||||
parse_args "$@"; set -- "${args[@]}"
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
if [ "$match" == auto ]; then
|
case "$command" in
|
||||||
if [ -n "$changedir" ]; then
|
git-status-p)
|
||||||
match=dir
|
if [ -n "$shortcut" ]; then
|
||||||
|
set -- git status --p "$@"
|
||||||
else
|
else
|
||||||
match=all
|
set -- "$@" -- git status --p
|
||||||
fi
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
case "$shortcut" in
|
||||||
|
git)
|
||||||
|
set -- */.git -- "$@"
|
||||||
|
parentdir=1
|
||||||
|
[ "$title" == auto ] && title=p
|
||||||
|
;;
|
||||||
|
composer)
|
||||||
|
set -- */composer.json -- "$@"
|
||||||
|
parentdir=1
|
||||||
|
[ "$title" == auto ] && title=p
|
||||||
|
;;
|
||||||
|
composer-cmd)
|
||||||
|
set -- */composer.json -- "$scriptdir/dk" composer "$@"
|
||||||
|
parentdir=1
|
||||||
|
[ "$title" == auto ] && title=p
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ "$match" == auto ]; then
|
||||||
|
[ -n "$changedir" ] && match=dir || match=all
|
||||||
fi
|
fi
|
||||||
|
[ "$title" == auto ] && title=1
|
||||||
|
|
||||||
alt_syntax=
|
alt_syntax=
|
||||||
for sep in "$@"; do
|
for sep in "$@"; do
|
||||||
|
@ -175,7 +218,11 @@ fi
|
||||||
[ -n "$title" ] && einfo "${#items[@]} correspondance(s) trouvée(s)"
|
[ -n "$title" ] && einfo "${#items[@]} correspondance(s) trouvée(s)"
|
||||||
let index=0
|
let index=0
|
||||||
for item in "${items[@]}"; do
|
for item in "${items[@]}"; do
|
||||||
[ -n "$title" ] && etitle "$item"
|
if [ -n "$parentdir" -a "$title" == p ]; then
|
||||||
|
etitle "$(dirname -- "$item")"
|
||||||
|
elif [ -n "$title" ]; then
|
||||||
|
etitle "$item"
|
||||||
|
fi
|
||||||
i="$item"
|
i="$item"
|
||||||
setx file=abspath "$item"
|
setx file=abspath "$item"
|
||||||
setx dir=dirname -- "$file"
|
setx dir=dirname -- "$file"
|
||||||
|
|
3
geturl
3
geturl
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
||||||
urequire DEFAULTS
|
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: Télécharger un fichier avec wget ou curl
|
uecho "$scriptname: Télécharger un fichier avec wget ou curl
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
# frontend pour 'ip addr' qui formatte l'affichage pour prendre moins de place
|
||||||
|
|
||||||
|
if [ -x /usr/bin/ip ]; then IP=/usr/bin/ip
|
||||||
|
elif [ -x /bin/ip ]; then IP=/bin/ip
|
||||||
|
else IP=ip
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "IPADDR_COLOR" ]; then isatty=1
|
||||||
|
else tty -s <&1 && isatty=1 || isatty=
|
||||||
|
fi
|
||||||
|
|
||||||
|
"$IP" addr "$@" | awk -v isatty="$isatty" '
|
||||||
|
isatty && $0 ~ /^[0-9]/ {
|
||||||
|
$0 = gensub(/: ([^:]+):/, ": \x1B[32m\\1\x1B[0m:", 1)
|
||||||
|
}
|
||||||
|
isatty && $1 == "inet" {
|
||||||
|
$0 = gensub(/inet ([^ ]+) /, "inet \x1B[34m\\1\x1B[0m ", 1)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
if ($1 == "inet" || $1 == "inet6") {
|
||||||
|
printf "%s -- ", $0
|
||||||
|
getline
|
||||||
|
sub(/^ +/, "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{ print }'
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
source "$(dirname "$0")/lib/ulib/auto" || exit 1
|
||||||
|
|
||||||
|
function display_help() {
|
||||||
|
uecho "$scriptname: frontend de diff pour comparer deux fichiers encodés en latin1
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
$scriptname [options] Lfile Rfile
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-u, -U, --unified N
|
||||||
|
-w, --ignore-all-space
|
||||||
|
-B, --ignore-blank-lines
|
||||||
|
options de diff qui sont reprises telles quelles"
|
||||||
|
}
|
||||||
|
|
||||||
|
diffopts=()
|
||||||
|
args=(
|
||||||
|
--help '$exit_with display_help'
|
||||||
|
-u '$diffopts+=(-u)'
|
||||||
|
-U:,--unified: '$diffopts+=(-U "$value_")'
|
||||||
|
-w,--ignore-all-space '$diffopts+=(-w)'
|
||||||
|
-B,--ignore-blank-lines '$diffopts+=(-B)'
|
||||||
|
)
|
||||||
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
Lfile="$1"
|
||||||
|
Rfile="$2"
|
||||||
|
[ -n "$Lfile" -a -n "$Rfile" ] || die "vous devez spécifier les deux fichiers"
|
||||||
|
[ -d "$Lfile" -o -d "$Rfile" ] && die "il faut absolument comparer deux fichiers"
|
||||||
|
|
||||||
|
diff "${diffopts[@]}" <(iconv -f latin1 -t utf-8 "$Lfile") <(iconv -f latin1 -t utf-8 "$Rfile")
|
|
@ -0,0 +1,41 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
source "$(dirname "$0")/lib/ulib/auto" || exit 1
|
||||||
|
|
||||||
|
function display_help() {
|
||||||
|
uecho "$scriptname: frontend de grep pour chercher dans un fichier encodé en latin1
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
$scriptname [options] FILE
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
options de grep qui sont reprises telles quelles"
|
||||||
|
}
|
||||||
|
|
||||||
|
grepopts=()
|
||||||
|
args=(
|
||||||
|
--help '$exit_with display_help'
|
||||||
|
-E,--extended-regexp '$grepopts+=(-E)'
|
||||||
|
-F,--fixed-strings '$grepopts+=(-F)'
|
||||||
|
-G,--basic-regexp '$grepopts+=(-G)'
|
||||||
|
-P,--perl-regexp '$grepopts+=(-P)'
|
||||||
|
-i,--ignore-case '$grepopts+=(-i)'
|
||||||
|
-v,--invert-match '$grepopts+=(-v)'
|
||||||
|
-L,--files-without-match '$grepopts+=(-L)'
|
||||||
|
-l,--files-with-matches '$grepopts+=(-l)'
|
||||||
|
-q,--quiet,--silent '$grepopts+=(-q)'
|
||||||
|
-s,--no-messages '$grepopts+=(-s)'
|
||||||
|
-H,--with-filename '$grepopts+=(-H)'
|
||||||
|
-h,--no-filename '$grepopts+=(-h)'
|
||||||
|
-a,--text '$grepopts+=(-a)'
|
||||||
|
-r,--recursive '$grepopts+=(-r)'
|
||||||
|
-R,--dereference-recursive '$grepopts+=(-R)'
|
||||||
|
)
|
||||||
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
pattern="$1"
|
||||||
|
args=("${@:2}")
|
||||||
|
#XXX ajouter le support de -r, -h, -H, notamment si ${args[@]} contient un
|
||||||
|
# répertoire
|
||||||
|
|
||||||
|
iconv -f latin1 -t utf-8 "${args[@]}" | grep "${grepopts[@]}" "$pattern"
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python2
|
||||||
# -*- coding: utf-8 mode: python -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: python -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
u"""%(scriptname)s: afficher le hash SHA-1 d'un fichier exprimé en base 36
|
u"""%(scriptname)s: afficher le hash SHA-1 d'un fichier exprimé en base 36
|
||||||
|
|
|
@ -4,22 +4,25 @@
|
||||||
if [ -n "$UTOOLS_BASH_COMPLETION" ]; then
|
if [ -n "$UTOOLS_BASH_COMPLETION" ]; then
|
||||||
function __bash_completion_enabled() { return 1; }
|
function __bash_completion_enabled() { return 1; }
|
||||||
function __bash_completion_module_enabled() { return 1; }
|
function __bash_completion_module_enabled() { return 1; }
|
||||||
if [ -f /etc/debian_version ]; then
|
_file=
|
||||||
|
if [ -n "$UTOOLS_BASH_COMPLETION_COMPAT" ]; then
|
||||||
|
_file="@@dest@@/lib/ulib/$UTOOLS_BASH_COMPLETION_COMPAT/bash_completion"
|
||||||
|
elif [ -f /etc/debian_version ]; then
|
||||||
case "$(</etc/debian_version)" in
|
case "$(</etc/debian_version)" in
|
||||||
6*|squeeze*)
|
6*|squeeze*)
|
||||||
# le code suivant n'est compatible qu'avec debian squeeze (plus
|
# le code suivant n'est compatible qu'avec debian squeeze (plus
|
||||||
# exactement, avec bash 4.0)
|
# exactement, avec bash 4.0)
|
||||||
_file="@@dest@@/lib/ulib/bash40/bash_completion"
|
_file="@@dest@@/lib/ulib/bash40/bash_completion"
|
||||||
;;
|
;;
|
||||||
7*|wheezy*|8*|jessie*|9*|stretch*)
|
7*|wheezy*|8*|jessie*|9*|stretch*|10*|buster*)
|
||||||
# le code suivant n'est compatible qu'avec debian wheezy et
|
# le code suivant n'est compatible qu'avec debian wheezy et
|
||||||
# supérieur (plus exactement, avec bash 4.1)
|
# supérieur (plus exactement, avec bash 4.1)
|
||||||
_file="@@dest@@/lib/ulib/bash41/bash_completion"
|
_file="@@dest@@/lib/ulib/bash41/bash_completion"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
[ -f "$_file" ] && source "$_file"
|
|
||||||
unset _file
|
|
||||||
fi
|
fi
|
||||||
|
[ -f "$_file" ] && source "$_file"
|
||||||
|
unset _file
|
||||||
if __bash_completion_enabled; then
|
if __bash_completion_enabled; then
|
||||||
for i in "@@dest@@/lib/completion.d/"*; do
|
for i in "@@dest@@/lib/completion.d/"*; do
|
||||||
[ -f "$i" ] || continue
|
[ -f "$i" ] || continue
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
if [ -n "$UTOOLS_DOCKER_ALIASES" ]; then
|
||||||
|
#if [ "$DOCKER_MACHINE_WRAPPED" == true ]; then
|
||||||
|
# alias dm=__docker_machine_wrapper
|
||||||
|
#else
|
||||||
|
# alias dm=docker-machine
|
||||||
|
#fi
|
||||||
|
function dm() {
|
||||||
|
case "$1" in
|
||||||
|
use|ssh)
|
||||||
|
if [ -n "$2" -a -f ~/etc/default/dk ]; then
|
||||||
|
# chercher les aliases éventuels
|
||||||
|
local cmd="$1"; shift
|
||||||
|
local machine="$1"; shift
|
||||||
|
machine="$(
|
||||||
|
CLUSTERDIRS=()
|
||||||
|
DM_ALIASES=()
|
||||||
|
source ~/etc/default/dk
|
||||||
|
for alias_machine in "${DM_ALIASES[@]}"; do
|
||||||
|
if [ "${alias_machine%%:*}" == "$machine" ]; then
|
||||||
|
echo "${alias_machine#*:}"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
for clusterdir in "${CLUSTERDIRS[@]}"; do
|
||||||
|
if [ -f "$clusterdir/0config/configure.conf" ]; then
|
||||||
|
DM_ALIASES=()
|
||||||
|
source "$clusterdir/0config/configure.conf"
|
||||||
|
for alias_machine in "${DM_ALIASES[@]}"; do
|
||||||
|
if [ "${alias_machine%%:*}" == "$machine" ]; then
|
||||||
|
echo "${alias_machine#*:}"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "$machine"
|
||||||
|
)"
|
||||||
|
set -- "$cmd" "$machine" "$@"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if [ "$DOCKER_MACHINE_WRAPPED" == true ]; then
|
||||||
|
__docker_machine_wrapper "$@"
|
||||||
|
else
|
||||||
|
docker-machine "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -n "$UTOOLS_BASH_COMPLETION" ]; then
|
||||||
|
complete -F _docker_machine dm
|
||||||
|
fi
|
||||||
|
fi
|
|
@ -9,8 +9,12 @@
|
||||||
|
|
||||||
# Activer l'auto complétion de bash pour les outils de nutools
|
# Activer l'auto complétion de bash pour les outils de nutools
|
||||||
#export UTOOLS_BASH_COMPLETION=1
|
#export UTOOLS_BASH_COMPLETION=1
|
||||||
|
#export UTOOLS_BASH_COMPLETION_COMPAT=bash41
|
||||||
|
|
||||||
# utools utilise su plutôt que sudo pour la fonction run_as_root et le script
|
# utools utilise su plutôt que sudo pour la fonction run_as_root et le script
|
||||||
# _root. Par défaut, ce n'est le cas que si sudo n'est pas installé. Si sudo est
|
# _root. Par défaut, ce n'est le cas que si sudo n'est pas installé. Si sudo est
|
||||||
# configuré, il est préférable de ne pas utiliser su.
|
# configuré, il est préférable de ne pas utiliser su.
|
||||||
#export UTOOLS_USES_SU=false
|
#export UTOOLS_USES_SU=false
|
||||||
|
|
||||||
|
# Activer les aliases pour l'utilisation de docker
|
||||||
|
#export UTOOLS_DOCKER_ALIASES=1
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
# Profil par défaut
|
||||||
|
#PROFILE=prod
|
||||||
|
|
||||||
|
# Aliases pour docker-machine
|
||||||
|
#DM_ALIASES=(alias:name)
|
||||||
|
|
||||||
|
# Profiles pour docker-machine
|
||||||
|
#DM_PROFILES=(name:profile...)
|
||||||
|
|
||||||
|
# Répertoires de gestion de cluster. Dans chacun de ces répertoires, le fichier
|
||||||
|
# 0config/configure.conf est sourcé à la recherche de définitions de profils et
|
||||||
|
# d'aliases
|
||||||
|
#CLUSTERDIRS=(~/wop/containers/*.univ.run)
|
||||||
|
|
||||||
|
# Répertoire de base par défaut des projets en mode devel
|
||||||
|
#DEFAULT_DEVEL_SRCDIR="$HOME/wop"
|
||||||
|
#COMPOSER_DEVEL_SRCDIR="$HOME/wop/php"
|
||||||
|
#MAVEN_DEVEL_SRCDIR="$HOME/wop/sn"
|
||||||
|
|
||||||
|
# Image à utiliser pour les builds
|
||||||
|
#DEFAULT_COMPOSER_IMAGE=pubdocker.univ-reunion.fr/image/php:d11
|
||||||
|
#DEFAULT_MAVEN_IMAGE=pubdocker.univ-reunion.fr/image/javabuilder:d11
|
|
@ -0,0 +1,35 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
# Liste de préfixes permettant de taper le nom d'un dépôt plus rapidement e.g
|
||||||
|
# repoctl create g/ssi-php/myproj
|
||||||
|
# repoctl create v:modules/myproj
|
||||||
|
# sont équivalents à
|
||||||
|
# repoctl create https://git.univ-reunion.fr/ssi-php/myproj
|
||||||
|
# repoctl create git@vcs.univ.run:modules/myproj
|
||||||
|
# Le format est ALIAS=ACTUAL
|
||||||
|
#
|
||||||
|
# Ces définitions fonctionnent aussi pour tous les scripts qui utilisent
|
||||||
|
# repoctl, dont notamment pclone et pcrone
|
||||||
|
REPO_PREFIXES=(
|
||||||
|
s:=git@git.univ-reunion.fr:
|
||||||
|
g/=https://git.univ-reunion.fr/
|
||||||
|
v:=git@vcs.univ.run: av/=https://vcs.univ-reunion.fr/anongit/
|
||||||
|
p:=pgit@vcs.univ.run: ap/=https://pvcs.univ-reunion.fr/anongit/
|
||||||
|
j/=https://git.jclain.fr/
|
||||||
|
)
|
||||||
|
|
||||||
|
# Définitions des types de dépôt. Le format est NAME:TYPE:PREFIX
|
||||||
|
# * NAME est utilisé pour définir des configurations supplémentaires
|
||||||
|
# * TYPE peut valoir gitolite ou gogs (ou gitea qui est un alias de gogs). Le
|
||||||
|
# type par défaut est 'gitolite'
|
||||||
|
REPO_TYPES=(
|
||||||
|
ur:gitea:https://git.univ-reunion.fr/
|
||||||
|
jclain:gitea:https://git.jclain.fr/
|
||||||
|
)
|
||||||
|
|
||||||
|
# Configuration de l'accès à l'API gogs
|
||||||
|
# un nom de dépôt est de la forme user/repo. Si user != $GOGS_USER alors on crée
|
||||||
|
# dans une organisation
|
||||||
|
#ur_GOGS_URL=https://git.univ-reunion.fr
|
||||||
|
#ur_GOGS_USER="$USER"
|
||||||
|
#ur_GOGS_KEY=
|
|
@ -0,0 +1,20 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
default_profile "${DKBUILD_PROFILE:-prod}"
|
||||||
|
|
||||||
|
if profile jclain; then
|
||||||
|
setenv REGISTRY=docker.jclain.fr
|
||||||
|
setenv PRIVAREG=docker.jclain.fr
|
||||||
|
elif profile prod test; then
|
||||||
|
setenv REGISTRY=pubdocker.univ-reunion.fr
|
||||||
|
setenv PRIVAREG=pridocker.univ-reunion.fr
|
||||||
|
host_mappings=(
|
||||||
|
pridocker.univ-reunion.fr:10.85.1.56
|
||||||
|
pubdocker.univ-reunion.fr:10.85.1.57
|
||||||
|
repos.univ-reunion.fr:10.85.1.57
|
||||||
|
git.univ-reunion.fr:10.85.1.55
|
||||||
|
)
|
||||||
|
default docker host-mappings="${host_mappings[*]}"
|
||||||
|
elif profile devel; then
|
||||||
|
setenv REGISTRY=docker.devel.self
|
||||||
|
setenv PRIVAREG=docker.devel.self
|
||||||
|
fi
|
|
@ -0,0 +1 @@
|
||||||
|
php
|
|
@ -0,0 +1,3 @@
|
||||||
|
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tar.gz filter=lfs diff=lfs merge=lfs -text
|
|
@ -0,0 +1,2 @@
|
||||||
|
.~lock*#
|
||||||
|
.*.swp
|
|
@ -0,0 +1,3 @@
|
||||||
|
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
FROM $REGISTRY/debian/min:$DIST
|
||||||
|
#RUN /debian/pkg i
|
|
@ -0,0 +1,2 @@
|
||||||
|
/b/t/
|
||||||
|
**/.git/
|
|
@ -0,0 +1,3 @@
|
||||||
|
/b/
|
||||||
|
/Dockerfile
|
||||||
|
# autogénéré
|
|
@ -0,0 +1,11 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
setdists d11
|
||||||
|
|
||||||
|
# fichiers communs
|
||||||
|
copy ../common/ ./ gitignore=.
|
||||||
|
|
||||||
|
dockerfile "" Dockerfile.in sed="
|
||||||
|
s/\\\$REGISTRY/$REGISTRY/
|
||||||
|
s/\\\$DIST/$DIST/
|
||||||
|
"
|
||||||
|
build
|
|
@ -0,0 +1 @@
|
||||||
|
../dkbuild.env
|
|
@ -0,0 +1,9 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
dists=(
|
||||||
|
d11
|
||||||
|
)
|
||||||
|
setdists "${dists[@]}"
|
||||||
|
|
||||||
|
if dist d11; then
|
||||||
|
include d11
|
||||||
|
fi
|
|
@ -0,0 +1,3 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
setenv REGISTRY=pubdocker.univ-reunion.fr
|
||||||
|
setenv IMAGE=$REGISTRY/GROUP/NAME
|
|
@ -0,0 +1,3 @@
|
||||||
|
/Dockerfile
|
||||||
|
.~lock*#
|
||||||
|
.*.swp
|
|
@ -0,0 +1,25 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
if profile prod; then
|
||||||
|
default checkout branch=master
|
||||||
|
elif profile test devel; then
|
||||||
|
default checkout branch=develop
|
||||||
|
fi
|
||||||
|
default composer image=$REGISTRY/image/phpbuilder:$DIST
|
||||||
|
|
||||||
|
## web ########################################################################
|
||||||
|
checkout https://git.univ-reunion.fr/sda-php/NAME-app b/web
|
||||||
|
composer b/web
|
||||||
|
|
||||||
|
dockerfile
|
||||||
|
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
FROM $REGISTRY/image/apache-php-myiccas:$DIST
|
||||||
|
#RUN /debian/pkg i
|
||||||
|
|
||||||
|
#ENV MSMTP_ENABLE=1
|
||||||
|
#COPY b/web/config/msmtp /msmtp-config
|
||||||
|
COPY b/web/config/ssl /ssl-config
|
||||||
|
COPY b/web/config/apache /apache-config
|
||||||
|
COPY b/web/config/php /php-config
|
||||||
|
#COPY b/web/config/before-start-apache /
|
||||||
|
COPY b/web /var/www/app
|
||||||
|
build
|
|
@ -0,0 +1,4 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
setenv REGISTRY=pubdocker.univ-reunion.fr
|
||||||
|
setenv IMAGE=$REGISTRY/GROUP/NAME
|
||||||
|
setenv DIST=d11
|
|
@ -0,0 +1,6 @@
|
||||||
|
/docker-compose.yml
|
||||||
|
/docker-compose.*.yml
|
||||||
|
/web/Dockerfile
|
||||||
|
/db/Dockerfile
|
||||||
|
.~lock*#
|
||||||
|
.*.swp
|
|
@ -0,0 +1,37 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
setprofiles prod test devel
|
||||||
|
|
||||||
|
if profile prod; then
|
||||||
|
default checkout branch=master
|
||||||
|
elif profile test devel; then
|
||||||
|
default checkout branch=develop
|
||||||
|
fi
|
||||||
|
default composer image=$REGISTRY/image/phpbuilder:$DIST
|
||||||
|
|
||||||
|
## web ########################################################################
|
||||||
|
|
||||||
|
checkout https://git.univ-reunion.fr/sda-php/NAME-app web/b/web
|
||||||
|
composer web/b/web
|
||||||
|
|
||||||
|
dockerfile context=web
|
||||||
|
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
FROM $REGISTRY/image/apache-php-myiccas:$DIST
|
||||||
|
#RUN /debian/pkg i
|
||||||
|
|
||||||
|
#ENV MSMTP_ENABLE=1
|
||||||
|
#COPY b/web/config/msmtp /msmtp-config
|
||||||
|
COPY b/web/config/ssl /ssl-config
|
||||||
|
COPY b/web/config/apache /apache-config
|
||||||
|
COPY b/web/config/php /php-config
|
||||||
|
#COPY b/web/config/before-start-apache /
|
||||||
|
COPY b/web /var/www/app
|
||||||
|
|
||||||
|
## db #########################################################################
|
||||||
|
|
||||||
|
copy web/b/web/config/sqlmig db/config/mariadb/sqlmig
|
||||||
|
|
||||||
|
dockerfile context=db
|
||||||
|
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
FROM $REGISTRY/image/mariadb:$DIST
|
||||||
|
|
||||||
|
COPY config/mariadb /mariadb-config
|
|
@ -0,0 +1,4 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
setenv REGISTRY=pubdocker.univ-reunion.fr
|
||||||
|
setenv IMAGE=$REGISTRY/GROUP/NAME
|
||||||
|
setenv DIST=d11
|
|
@ -0,0 +1,12 @@
|
||||||
|
# -*- coding: utf-8 mode: yaml -*- vim:sw=2:sts=2:et:ai:si:sta:fenc=utf-8
|
||||||
|
version: "3.7"
|
||||||
|
|
||||||
|
services:
|
||||||
|
db:
|
||||||
|
image: $REGISTRY/devel/GROUP/NAME-db
|
||||||
|
|
||||||
|
web:
|
||||||
|
image: $REGISTRY/devel/GROUP/NAME-web
|
||||||
|
environment:
|
||||||
|
- APP_PROFILE=devel
|
||||||
|
- BASE_URL=http://NAME.self
|
|
@ -0,0 +1,14 @@
|
||||||
|
# -*- coding: utf-8 mode: yaml -*- vim:sw=2:sts=2:et:ai:si:sta:fenc=utf-8
|
||||||
|
version: "3.7"
|
||||||
|
|
||||||
|
services:
|
||||||
|
db:
|
||||||
|
image: $REGISTRY/GROUP/NAME-db
|
||||||
|
|
||||||
|
web:
|
||||||
|
image: $REGISTRY/GROUP/NAME-web
|
||||||
|
environment:
|
||||||
|
- APP_PROFILE=prod
|
||||||
|
- BASE_URL=https://NAME.univ-reunion.fr
|
||||||
|
extra_hosts:
|
||||||
|
- "casn.univ-reunion.fr:10.85.1.15"
|
|
@ -0,0 +1,14 @@
|
||||||
|
# -*- coding: utf-8 mode: yaml -*- vim:sw=2:sts=2:et:ai:si:sta:fenc=utf-8
|
||||||
|
version: "3.7"
|
||||||
|
|
||||||
|
services:
|
||||||
|
db:
|
||||||
|
image: $REGISTRY/test/GROUP/NAME-db
|
||||||
|
|
||||||
|
web:
|
||||||
|
image: $REGISTRY/test/GROUP/NAME-web
|
||||||
|
environment:
|
||||||
|
- APP_PROFILE=test
|
||||||
|
- BASE_URL=https://NAME-test.univ-reunion.fr
|
||||||
|
extra_hosts:
|
||||||
|
- "casn.univ-reunion.fr:10.85.1.15"
|
|
@ -0,0 +1,34 @@
|
||||||
|
# -*- coding: utf-8 mode: yaml -*- vim:sw=2:sts=2:et:ai:si:sta:fenc=utf-8
|
||||||
|
version: "3.7"
|
||||||
|
|
||||||
|
services:
|
||||||
|
db:
|
||||||
|
build: db
|
||||||
|
volumes:
|
||||||
|
- db-data:/var/lib/mysql
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
aliases:
|
||||||
|
- NAMEdb
|
||||||
|
deploy:
|
||||||
|
update_config:
|
||||||
|
order: stop-first
|
||||||
|
|
||||||
|
web:
|
||||||
|
build: web
|
||||||
|
volumes:
|
||||||
|
- log-data:/var/log/apache2
|
||||||
|
- session-data:/var/lib/php/sessions
|
||||||
|
extra_hosts:
|
||||||
|
- "smtp.univ.run:10.82.70.46"
|
||||||
|
- "vs-apoprod-bdd.univ.run:10.82.91.11"
|
||||||
|
- "vs-apotest-bdd.univ.run:10.82.91.13"
|
||||||
|
- "vs-apodevp-bdd.univ.run:10.82.91.15"
|
||||||
|
deploy:
|
||||||
|
update_config:
|
||||||
|
order: start-first
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
db-data:
|
||||||
|
log-data:
|
||||||
|
session-data:
|
|
@ -0,0 +1,8 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
# Description des templates de ce répertoire
|
||||||
|
|
||||||
|
TEMPLATES=(
|
||||||
|
[image]="Image générique basée sur debian"
|
||||||
|
[php]="Application web PHP"
|
||||||
|
[php_db]="Application web PHP avec base de données"
|
||||||
|
)
|
|
@ -0,0 +1,5 @@
|
||||||
|
/Dockerfile
|
||||||
|
/src
|
||||||
|
/dest
|
||||||
|
/srcdir/
|
||||||
|
/destdir/
|
|
@ -0,0 +1,8 @@
|
||||||
|
# tests
|
||||||
|
|
||||||
|
Lancer un test de cette façon
|
||||||
|
~~~sh
|
||||||
|
../../../dkbuild -j test-xxx
|
||||||
|
~~~
|
||||||
|
|
||||||
|
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
@ -0,0 +1,2 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
setenv REGISTRY=docker.jclain.fr
|
|
@ -0,0 +1,16 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
section "variables de build"
|
||||||
|
setarg A="arg A"
|
||||||
|
resetarg B="arg B"
|
||||||
|
|
||||||
|
info "A=${ARGS[A]}, B=${ARGS[B]}"
|
||||||
|
if [ "${ARGS[A]}" != x ]; then
|
||||||
|
note "\
|
||||||
|
Essayer de relancer avec
|
||||||
|
$(qvals dkbuild -j "$(relpath "$DKBUILD")" --arg A=x --arg B=y)
|
||||||
|
on ne devrait pas pouvoir modifier la valeur de B"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# pas de build automatique
|
||||||
|
AUTOBUILD=
|
|
@ -0,0 +1,13 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
setenv REGISTRY=pubdocker.univ-reunion.fr
|
||||||
|
setenv IMAGE=$REGISTRY/group/name
|
||||||
|
|
||||||
|
info "IMAGE=$IMAGE"
|
||||||
|
if [ "$REGISTRY" == pubdocker.univ-reunion.fr ]; then
|
||||||
|
note "\
|
||||||
|
Essayer de relancer avec
|
||||||
|
$(qvals dkbuild -j "$(relpath "$DKBUILD")" -c registry.env)
|
||||||
|
La valeur de IMAGE devrait changer"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AUTOBUILD=
|
|
@ -0,0 +1,15 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
run rm -rf src dest srcdir destdir
|
||||||
|
|
||||||
|
run mkdir srcdir
|
||||||
|
genfile srcdir/src <<<"file"
|
||||||
|
run ln -s src srcdir/link
|
||||||
|
|
||||||
|
copy srcdir destdir
|
||||||
|
if run; then
|
||||||
|
[ -f destdir/src ] || die "destdir/src n'a pas été créé"
|
||||||
|
diff -qr srcdir destdir || die "srcdir et destdir ne sont pas identiques"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AUTOBUILD=
|
|
@ -0,0 +1,13 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
run rm -rf src dest srcdir destdir
|
||||||
|
|
||||||
|
run mkdir srcdir
|
||||||
|
genfile srcdir/src <<<"file"
|
||||||
|
run ln -s src srcdir/link
|
||||||
|
genfile dest <<<"dest"
|
||||||
|
|
||||||
|
copy srcdir dest
|
||||||
|
info "on ne devrait pas arriver ici"
|
||||||
|
|
||||||
|
AUTOBUILD=
|
|
@ -0,0 +1,20 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
setdists v1-d11 v2-d11 v1-d10
|
||||||
|
setenv IMAGE=dkbuild-tests/distversions
|
||||||
|
|
||||||
|
dockerfile
|
||||||
|
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
FROM scratch
|
||||||
|
ENV var=$DIST-$VERSION
|
||||||
|
build
|
||||||
|
|
||||||
|
info "vérifier les images construites avec
|
||||||
|
dk ls dkbuild-tests/distversions
|
||||||
|
on devrait avoir les images suivantes:
|
||||||
|
dkbuild-tests/distversions:v1-d10
|
||||||
|
dkbuild-tests/distversions:d10 -> v1-d10
|
||||||
|
dkbuild-tests/distversions:v1-d11
|
||||||
|
dkbuild-tests/distversions:v2-d11
|
||||||
|
dkbuild-tests/distversions:d11 -> v2-d11
|
||||||
|
dkbuild-tests/distversions:latest -> v2-d11
|
||||||
|
"
|
|
@ -0,0 +1,14 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
run rm -rf src dest srcdir destdir
|
||||||
|
|
||||||
|
genfile src <<<"file"
|
||||||
|
run mkdir destdir
|
||||||
|
|
||||||
|
copy src destdir
|
||||||
|
if run; then
|
||||||
|
[ -f destdir/src ] || die "destdir/src n'a pas été créé"
|
||||||
|
diff -q src destdir/src || die "src et destdir/src ne sont pas identiques"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AUTOBUILD=
|
|
@ -0,0 +1,13 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
run rm -rf src dest srcdir destdir
|
||||||
|
|
||||||
|
genfile src <<<"file"
|
||||||
|
|
||||||
|
copy src dest
|
||||||
|
if run; then
|
||||||
|
[ -f dest ] || die "dest n'a pas été créé"
|
||||||
|
diff -q src dest || die "src et dest ne sont pas identiques"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AUTOBUILD=
|
|
@ -0,0 +1,27 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
run rm -rf src dest srcdir destdir
|
||||||
|
|
||||||
|
run mkdir srcdir
|
||||||
|
genfile srcdir/src <<<"file"
|
||||||
|
run ln -s src srcdir/link
|
||||||
|
|
||||||
|
run mkdir destdir
|
||||||
|
genfile destdir/.gitignore <<<"/a/"
|
||||||
|
|
||||||
|
copy srcdir destdir/a gitignore=destdir
|
||||||
|
copy srcdir destdir/b gitignore=destdir
|
||||||
|
if run; then
|
||||||
|
[ -f destdir/a/src ] || die "destdir/a/src n'a pas été créé"
|
||||||
|
[ -f destdir/b/src ] || die "destdir/b/src n'a pas été créé"
|
||||||
|
[ -L destdir/a/link ] || die "destdir/a/link n'a pas été créé"
|
||||||
|
[ -L destdir/b/link ] || die "destdir/b/link n'a pas été créé"
|
||||||
|
ignored="$(<destdir/.gitignore)"
|
||||||
|
expected="\
|
||||||
|
/a/
|
||||||
|
/b/link
|
||||||
|
/b/src"
|
||||||
|
[ "$ignored" == "$expected" ] || die "les fichiers n'ont pas été ignorés"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AUTOBUILD=
|
|
@ -0,0 +1,13 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
setdists d11 d10
|
||||||
|
setprofiles prod test
|
||||||
|
|
||||||
|
if dist LATEST; then
|
||||||
|
info "$DIST est la distribution la plus récente"
|
||||||
|
fi
|
||||||
|
if profile DEFAULT; then
|
||||||
|
info "$PROFILE est le profil par défaut"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# pas de build automatique
|
||||||
|
AUTOBUILD=
|
|
@ -0,0 +1,10 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
setdists v1-d11 v2-d11 v1-d10
|
||||||
|
|
||||||
|
if dist LATEST; then
|
||||||
|
info "$DIST est la distribution la plus récente"
|
||||||
|
fi
|
||||||
|
info "version=$VERSION"
|
||||||
|
|
||||||
|
# pas de build automatique
|
||||||
|
AUTOBUILD=
|
|
@ -0,0 +1,10 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
setprofiles v1-prod v2-prod test
|
||||||
|
|
||||||
|
if profile DEFAULT; then
|
||||||
|
info "$PROFILE est le profil par défaut"
|
||||||
|
fi
|
||||||
|
info "version=$VERSION"
|
||||||
|
|
||||||
|
# pas de build automatique
|
||||||
|
AUTOBUILD=
|
|
@ -0,0 +1,16 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
if machine fast5; then
|
||||||
|
setprofiles prod
|
||||||
|
elif machine fast4; then
|
||||||
|
setprofiles test
|
||||||
|
else
|
||||||
|
setprofiles devel test prod
|
||||||
|
fi
|
||||||
|
|
||||||
|
if run; then
|
||||||
|
echo "PROFILE=$PROFILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# pas de build automatique
|
||||||
|
AUTOBUILD=
|
|
@ -0,0 +1,16 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
section "première section"
|
||||||
|
note "une note"
|
||||||
|
info "une première info"
|
||||||
|
info "une deuxième info"
|
||||||
|
debug "message de debug"
|
||||||
|
|
||||||
|
section "deuxième section"
|
||||||
|
note "une note"
|
||||||
|
info "une première info"
|
||||||
|
info "une deuxième info"
|
||||||
|
debug "message de debug"
|
||||||
|
|
||||||
|
# pas de build automatique
|
||||||
|
AUTOBUILD=
|
|
@ -0,0 +1,8 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
setenv IMAGE=dkbuild-tests/tags0
|
||||||
|
|
||||||
|
dockerfile
|
||||||
|
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
FROM scratch
|
||||||
|
ENV var=empty
|
||||||
|
build
|
|
@ -0,0 +1,9 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
setprofiles v1-prod v2-prod
|
||||||
|
setenv IMAGE=dkbuild-tests/tags1
|
||||||
|
|
||||||
|
dockerfile
|
||||||
|
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
FROM scratch
|
||||||
|
ENV var=empty
|
||||||
|
build
|
|
@ -0,0 +1,16 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
section "variables d'environnement"
|
||||||
|
setenv A="env A"
|
||||||
|
resetenv B="env B"
|
||||||
|
|
||||||
|
info "A=$A, B=$B"
|
||||||
|
if [ "$A" != x ]; then
|
||||||
|
note "\
|
||||||
|
Essayer de relancer avec
|
||||||
|
$(qvals dkbuild -j "$(relpath "$DKBUILD")" -e A=x -e B=y)
|
||||||
|
on ne devrait pas pouvoir modifier la valeur de B"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# pas de build automatique
|
||||||
|
AUTOBUILD=
|
|
@ -0,0 +1,106 @@
|
||||||
|
# -*- coding: utf-8 mode: conf -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
[ca]
|
||||||
|
default_ca = dmca
|
||||||
|
|
||||||
|
[dmca]
|
||||||
|
dir = @@cadir@@
|
||||||
|
certs = $dir/certs
|
||||||
|
crl_dir = $dir/crl
|
||||||
|
database = $dir/index.txt
|
||||||
|
unique_subject = no
|
||||||
|
new_certs_dir = $dir/newcerts
|
||||||
|
|
||||||
|
certificate = $dir/dmca.crt
|
||||||
|
serial = $dir/serial
|
||||||
|
crl = $dir/dmca.crl
|
||||||
|
private_key = $dir/dmca.key
|
||||||
|
RANDFILE = $dir/private/.rand
|
||||||
|
|
||||||
|
x509_extensions = usr_cert
|
||||||
|
|
||||||
|
name_opt = ca_default
|
||||||
|
cert_opt = ca_default
|
||||||
|
|
||||||
|
default_days = 10950
|
||||||
|
default_crl_days = 30
|
||||||
|
default_md = sha256
|
||||||
|
preserve = no
|
||||||
|
|
||||||
|
policy = policy_match
|
||||||
|
|
||||||
|
[policy_match]
|
||||||
|
countryName = match
|
||||||
|
stateOrProvinceName = match
|
||||||
|
organizationName = match
|
||||||
|
organizationalUnitName = optional
|
||||||
|
commonName = supplied
|
||||||
|
emailAddress = optional
|
||||||
|
|
||||||
|
[req]
|
||||||
|
default_bits = 2048
|
||||||
|
default_md = sha256
|
||||||
|
default_keyfile = privkey.pem
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
attributes = req_attributes
|
||||||
|
x509_extensions = v3_ca
|
||||||
|
string_mask = utf8only
|
||||||
|
|
||||||
|
[req_distinguished_name]
|
||||||
|
countryName = Country Name (2 letter code)
|
||||||
|
countryName_default = FR
|
||||||
|
countryName_min = 2
|
||||||
|
countryName_max = 2
|
||||||
|
|
||||||
|
stateOrProvinceName = State or Province Name (full name)
|
||||||
|
stateOrProvinceName_default = La Reunion
|
||||||
|
|
||||||
|
localityName = Locality Name (eg, city)
|
||||||
|
localityName_default = Sainte-Clotilde
|
||||||
|
|
||||||
|
0.organizationName = Organization Name (eg, company)
|
||||||
|
0.organizationName_default = jclain
|
||||||
|
|
||||||
|
organizationalUnitName = Organizational Unit Name (eg, section)
|
||||||
|
organizationalUnitName_default =
|
||||||
|
|
||||||
|
commonName = Common Name (eg, your name or your server\'s hostname)
|
||||||
|
commonName_default = dmca
|
||||||
|
commonName_max = 64
|
||||||
|
|
||||||
|
emailAddress = Email Address
|
||||||
|
emailAddress_default = jephte.clain@univ-reunion.fr
|
||||||
|
emailAddress_max = 64
|
||||||
|
|
||||||
|
[req_attributes]
|
||||||
|
challengePassword = A challenge password
|
||||||
|
challengePassword_min = 4
|
||||||
|
challengePassword_max = 20
|
||||||
|
|
||||||
|
unstructuredName = dmca
|
||||||
|
|
||||||
|
[usr_cert]
|
||||||
|
|
||||||
|
basicConstraints=CA:FALSE
|
||||||
|
|
||||||
|
nsComment = "dmca certificate"
|
||||||
|
|
||||||
|
subjectKeyIdentifier=hash
|
||||||
|
authorityKeyIdentifier=keyid,issuer:always
|
||||||
|
|
||||||
|
[v3_req]
|
||||||
|
|
||||||
|
basicConstraints = CA:FALSE
|
||||||
|
keyUsage = nonRepudiation,digitalSignature,keyEncipherment
|
||||||
|
|
||||||
|
[v3_ca]
|
||||||
|
|
||||||
|
#subjectKeyIdentifier=hash
|
||||||
|
#authorityKeyIdentifier=keyid:always,issuer
|
||||||
|
basicConstraints = critical,CA:true
|
||||||
|
keyUsage = critical,keyCertSign,digitalSignature,keyEncipherment,keyAgreement
|
||||||
|
|
||||||
|
[crl_ext]
|
||||||
|
|
||||||
|
#issuerAltName=issuer:copy
|
||||||
|
authorityKeyIdentifier=keyid:always
|
|
@ -0,0 +1,99 @@
|
||||||
|
# -*- coding: utf-8 mode: conf -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
[ca]
|
||||||
|
default_ca = dmca
|
||||||
|
|
||||||
|
[dmca]
|
||||||
|
dir = @@cadir@@
|
||||||
|
certs = $dir/certs
|
||||||
|
crl_dir = $dir/crl
|
||||||
|
database = $dir/index.txt
|
||||||
|
unique_subject = no
|
||||||
|
new_certs_dir = $dir/newcerts
|
||||||
|
|
||||||
|
certificate = $dir/dmca.crt
|
||||||
|
serial = $dir/serial
|
||||||
|
crl = $dir/dmca.crl
|
||||||
|
private_key = $dir/dmca.key
|
||||||
|
RANDFILE = $dir/private/.rand
|
||||||
|
|
||||||
|
x509_extensions = usr_ext
|
||||||
|
|
||||||
|
name_opt = ca_default
|
||||||
|
cert_opt = ca_default
|
||||||
|
|
||||||
|
copy_extensions = copy
|
||||||
|
|
||||||
|
default_days = 10950
|
||||||
|
default_crl_days = 30
|
||||||
|
default_md = sha256
|
||||||
|
preserve = no
|
||||||
|
|
||||||
|
policy = policy_match
|
||||||
|
|
||||||
|
[policy_match]
|
||||||
|
#countryName = match
|
||||||
|
#stateOrProvinceName = match
|
||||||
|
#organizationName = match
|
||||||
|
countryName = supplied
|
||||||
|
stateOrProvinceName = supplied
|
||||||
|
organizationName = supplied
|
||||||
|
organizationalUnitName = optional
|
||||||
|
commonName = supplied
|
||||||
|
emailAddress = optional
|
||||||
|
|
||||||
|
[req]
|
||||||
|
default_bits = 2048
|
||||||
|
default_md = sha256
|
||||||
|
default_keyfile = privkey.pem
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
attributes = req_attributes
|
||||||
|
x509_extensions = usr_ext
|
||||||
|
string_mask = utf8only
|
||||||
|
|
||||||
|
#input_password = secret
|
||||||
|
#output_password = secret
|
||||||
|
|
||||||
|
[req_distinguished_name]
|
||||||
|
countryName = Country Name (2 letter code)
|
||||||
|
countryName_default = FR
|
||||||
|
countryName_min = 2
|
||||||
|
countryName_max = 2
|
||||||
|
|
||||||
|
stateOrProvinceName = State or Province Name (full name)
|
||||||
|
stateOrProvinceName_default = La Reunion
|
||||||
|
|
||||||
|
localityName = Locality Name (eg, city)
|
||||||
|
localityName_default = Sainte-Clotilde
|
||||||
|
|
||||||
|
0.organizationName = Organization Name (eg, company)
|
||||||
|
0.organizationName_default = jclain
|
||||||
|
|
||||||
|
organizationalUnitName = Organizational Unit Name (eg, section)
|
||||||
|
organizationalUnitName_default =
|
||||||
|
|
||||||
|
commonName = Common Name (eg, your name or your server\'s hostname)
|
||||||
|
commonName_max = 64
|
||||||
|
|
||||||
|
emailAddress = Email Address
|
||||||
|
emailAddress_max = 64
|
||||||
|
|
||||||
|
[req_attributes]
|
||||||
|
challengePassword = A challenge password
|
||||||
|
challengePassword_min = 4
|
||||||
|
challengePassword_max = 20
|
||||||
|
|
||||||
|
unstructuredName = jclain
|
||||||
|
|
||||||
|
[usr_ext]
|
||||||
|
|
||||||
|
basicConstraints=critical,CA:FALSE
|
||||||
|
#subjectKeyIdentifier=hash
|
||||||
|
#authorityKeyIdentifier=keyid,issuer:always
|
||||||
|
keyUsage = critical,digitalSignature
|
||||||
|
extendedKeyUsage = clientAuth
|
||||||
|
|
||||||
|
[crl_ext]
|
||||||
|
|
||||||
|
#issuerAltName=issuer:copy
|
||||||
|
authorityKeyIdentifier=keyid:always
|
|
@ -0,0 +1,101 @@
|
||||||
|
# -*- coding: utf-8 mode: conf -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
[ca]
|
||||||
|
default_ca = dmca
|
||||||
|
|
||||||
|
[dmca]
|
||||||
|
dir = @@cadir@@
|
||||||
|
certs = $dir/certs
|
||||||
|
crl_dir = $dir/crl
|
||||||
|
database = $dir/index.txt
|
||||||
|
unique_subject = no
|
||||||
|
new_certs_dir = $dir/newcerts
|
||||||
|
|
||||||
|
certificate = $dir/dmca.crt
|
||||||
|
serial = $dir/serial
|
||||||
|
crl = $dir/dmca.crl
|
||||||
|
private_key = $dir/dmca.key
|
||||||
|
RANDFILE = $dir/private/.rand
|
||||||
|
|
||||||
|
x509_extensions = usr_ext
|
||||||
|
|
||||||
|
name_opt = ca_default
|
||||||
|
cert_opt = ca_default
|
||||||
|
|
||||||
|
copy_extensions = copy
|
||||||
|
|
||||||
|
default_days = 3650
|
||||||
|
default_crl_days = 30
|
||||||
|
default_md = sha256
|
||||||
|
preserve = no
|
||||||
|
|
||||||
|
policy = policy_match
|
||||||
|
|
||||||
|
[policy_match]
|
||||||
|
#countryName = match
|
||||||
|
#stateOrProvinceName = match
|
||||||
|
#organizationName = match
|
||||||
|
countryName = supplied
|
||||||
|
stateOrProvinceName = supplied
|
||||||
|
organizationName = supplied
|
||||||
|
organizationalUnitName = optional
|
||||||
|
commonName = supplied
|
||||||
|
emailAddress = optional
|
||||||
|
|
||||||
|
[req]
|
||||||
|
default_bits = 2048
|
||||||
|
default_md = sha256
|
||||||
|
default_keyfile = privkey.pem
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
attributes = req_attributes
|
||||||
|
x509_extensions = usr_ext
|
||||||
|
string_mask = utf8only
|
||||||
|
|
||||||
|
#input_password = secret
|
||||||
|
#output_password = secret
|
||||||
|
|
||||||
|
[req_distinguished_name]
|
||||||
|
countryName = Country Name (2 letter code)
|
||||||
|
countryName_default = FR
|
||||||
|
countryName_min = 2
|
||||||
|
countryName_max = 2
|
||||||
|
|
||||||
|
stateOrProvinceName = State or Province Name (full name)
|
||||||
|
stateOrProvinceName_default = La Reunion
|
||||||
|
|
||||||
|
localityName = Locality Name (eg, city)
|
||||||
|
localityName_default = Sainte-Clotilde
|
||||||
|
|
||||||
|
0.organizationName = Organization Name (eg, company)
|
||||||
|
0.organizationName_default = jclain
|
||||||
|
|
||||||
|
organizationalUnitName = Organizational Unit Name (eg, section)
|
||||||
|
organizationalUnitName_default =
|
||||||
|
|
||||||
|
commonName = Common Name (eg, your name or your server\'s hostname)
|
||||||
|
commonName_max = 64
|
||||||
|
|
||||||
|
emailAddress = Email Address
|
||||||
|
emailAddress_max = 64
|
||||||
|
|
||||||
|
[req_attributes]
|
||||||
|
challengePassword = A challenge password
|
||||||
|
challengePassword_min = 4
|
||||||
|
challengePassword_max = 20
|
||||||
|
|
||||||
|
unstructuredName = jclain
|
||||||
|
|
||||||
|
[usr_ext]
|
||||||
|
|
||||||
|
basicConstraints = critical,CA:FALSE
|
||||||
|
#subjectKeyIdentifier=hash
|
||||||
|
#authorityKeyIdentifier=keyid,issuer:always
|
||||||
|
keyUsage = critical,digitalSignature,keyEncipherment,keyAgreement
|
||||||
|
extendedKeyUsage = serverAuth
|
||||||
|
|
||||||
|
subjectAltName = DNS:localhost
|
||||||
|
|
||||||
|
[crl_ext]
|
||||||
|
|
||||||
|
#issuerAltName=issuer:copy
|
||||||
|
authorityKeyIdentifier=keyid:always
|
|
@ -1,17 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>nulib</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.python.pydev.PyDevBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.python.pydev.pythonNature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
|
@ -1,8 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<?eclipse-pydev version="1.0"?><pydev_project>
|
|
||||||
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python interpreter</pydev_property>
|
|
||||||
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
|
|
||||||
<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
|
|
||||||
<path>/${PROJECT_DIR_NAME}/python</path>
|
|
||||||
</pydev_pathproperty>
|
|
||||||
</pydev_project>
|
|
|
@ -1,5 +0,0 @@
|
||||||
eclipse.preferences.version=1
|
|
||||||
encoding//python/nulib/web/bootstrap.py=utf-8
|
|
||||||
encoding//python/nulib/web/model.py=utf-8
|
|
||||||
encoding//python/nulib/web/ui.py=utf-8
|
|
||||||
encoding/<project>=UTF-8
|
|
|
@ -1,2 +0,0 @@
|
||||||
eclipse.preferences.version=1
|
|
||||||
line.separator=\n
|
|
|
@ -1,4 +0,0 @@
|
||||||
global-include *
|
|
||||||
global-exclude *.pyc
|
|
||||||
exclude MANIFEST
|
|
||||||
prune dist
|
|
|
@ -1,180 +0,0 @@
|
||||||
# TODO
|
|
||||||
|
|
||||||
## Améliorer rtoinst
|
|
||||||
|
|
||||||
ajouter le support de pffprofile pour deploydb
|
|
||||||
|
|
||||||
## Refaire/repenser les fonctions evalX
|
|
||||||
|
|
||||||
dans chaque exemple, on affiche l'invocation de evalX suivi de l'équivalent en
|
|
||||||
syntaxe standard
|
|
||||||
|
|
||||||
- evala permet de traiter des tableaux
|
|
||||||
~~~
|
|
||||||
evala with array // add a b c
|
|
||||||
array=("${array[@]}" a b c)
|
|
||||||
~~~
|
|
||||||
les fonctions à utiliser pour le traitement sont configurées avec des
|
|
||||||
variables spéciales. par exemple, on peut indiquer que la commande add
|
|
||||||
ci-dessus est en réalité gérée par la fonction array_add et que c'est une
|
|
||||||
commande de type modify qui prend en premier argument le nom du tableau:
|
|
||||||
~~~
|
|
||||||
__evala_add_func=array_add
|
|
||||||
__evala_add_type=m
|
|
||||||
__evala_add_arg=first
|
|
||||||
~~~
|
|
||||||
en fonction du type de fonction, les arguments supplémentaires supportés sont
|
|
||||||
différents. par défaut, la fonction à utiliser est du même nom que la
|
|
||||||
commande, est du type scalar, et prend comme argument @
|
|
||||||
Ainsi les deux commandes suivantes sont équivalentes:
|
|
||||||
~~~
|
|
||||||
evala with array // echo
|
|
||||||
echo "${array[@]}"
|
|
||||||
~~~
|
|
||||||
et assument les définitions suivantes:
|
|
||||||
~~~
|
|
||||||
__evala_echo_func=echo
|
|
||||||
__evala_echo_type=s
|
|
||||||
__evala_echo_arg=@
|
|
||||||
~~~
|
|
||||||
|
|
||||||
- evalx permet d'utiliser toutes ces fonctions ensemble
|
|
||||||
~~~
|
|
||||||
evalx seq 5 //p grep -v 3 //a prepend prefix // append suffix //c echo
|
|
||||||
array=($(seq 5 | grep -v 3)); array=(prefix "${array[@]}"); array=("${array[@]}" suffix); echo "${array[@]}"
|
|
||||||
|
|
||||||
# à partir du mode evala, on peut exécuter directement les arguments du
|
|
||||||
# tableau comme une commande en terminant par //c
|
|
||||||
evalx -a with array // prepend echo //c
|
|
||||||
array=(echo "${array[@]}"); "${array[@]}"
|
|
||||||
~~~
|
|
||||||
evalx commence par défaut en mode evalc. il est possible avec les options -i,
|
|
||||||
-s, -a, -c, -p, -m de forcer respectivement evali, evals, evala, evalc, evalp,
|
|
||||||
evalm
|
|
||||||
|
|
||||||
- Il faudra réfléchir à comment sortir du mode evalm pour utilisation avec
|
|
||||||
evalx. ou alors on part du principe que evalm est toujours en fin de chaine.
|
|
||||||
|
|
||||||
## Faire la fonction cmdx
|
|
||||||
|
|
||||||
cmdx permet de lancer une commande avec les arguments qui sont générés par
|
|
||||||
evalx. cmdx commence par défaut en mode evalm. Par exemple, les deux commandes
|
|
||||||
suivantes sont équivalentes:
|
|
||||||
~~~
|
|
||||||
cmdx etitle //"Copie de " basename "$src" //" vers " ppath "$dest"
|
|
||||||
etitle "Copie de $(basename "$src") vers $(ppath "$dest")"
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Comme pour evalx, les options -i, -s, -a, -c, -p, -m permettent de forcer
|
|
||||||
respectivement les modes evali, evals, evala, evalc, evalp, evalm. Par exemple
|
|
||||||
les deux commandes suivantes sont équivalentes:
|
|
||||||
~~~
|
|
||||||
cmdx -c echo a // b
|
|
||||||
echo "$(b "$(a)")"
|
|
||||||
~~~
|
|
||||||
|
|
||||||
## Faire la fonction checkx
|
|
||||||
|
|
||||||
checkx permet de tester le résultat d'une commande evalx. elle s'utilise de
|
|
||||||
cette manière:
|
|
||||||
~~~
|
|
||||||
checkx cmds... OP VALUE
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Les opérateurs sont de la forme:
|
|
||||||
~~~
|
|
||||||
is -n|notempty
|
|
||||||
is -z|empty
|
|
||||||
is ok
|
|
||||||
is ko
|
|
||||||
== value
|
|
||||||
!= value
|
|
||||||
etc.
|
|
||||||
~~~
|
|
||||||
|
|
||||||
checkx remplace testx avec une syntaxe plus naturelle. si aucun script
|
|
||||||
n'utilise les fonctions testx, peut-être peut-on simplement supprimer les
|
|
||||||
fonctions testx et renommer checkx en testx
|
|
||||||
|
|
||||||
Comme pour evalx, les options -i, -s, -a, -c, -p, -m permettent de forcer
|
|
||||||
respectivement les modes evali, evals, evala, evalc, evalp, evalm. Par exemple
|
|
||||||
les deux commandes suivantes sont équivalentes:
|
|
||||||
~~~
|
|
||||||
checkx -p a // b == c
|
|
||||||
[ "$(evalp a // b)" == c ]
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Les commande suivantes sont équivalentes deux à deux:
|
|
||||||
~~~
|
|
||||||
checkx cmd is -z
|
|
||||||
[ -z "$(evalx cmd)" ]
|
|
||||||
|
|
||||||
checkx cmd is ok
|
|
||||||
evalx cmd; [ $? -eq 0 ]
|
|
||||||
|
|
||||||
checkx cmd is ko
|
|
||||||
evalx cmd; [ $? -ne 0 ]
|
|
||||||
|
|
||||||
checkx cmd == value
|
|
||||||
[ "$(evalx cmd)" == value ]
|
|
||||||
~~~
|
|
||||||
|
|
||||||
## Faire la fonction storex
|
|
||||||
|
|
||||||
storex permet de mettre le résultat d'une fonction evalx dans une variable ou de
|
|
||||||
l'ajouter à un tableau. l'idée est d'avoir la même syntaxe que checkx. je ne
|
|
||||||
suis pas encore tout à fait sûr que ce soit une bonne chose.
|
|
||||||
|
|
||||||
Les commande suivantes sont équivalentes deux à deux:
|
|
||||||
~~~
|
|
||||||
storex cmd to var
|
|
||||||
var="$(evalx cmd)"
|
|
||||||
|
|
||||||
storex cmd to var
|
|
||||||
setx var=cmd
|
|
||||||
|
|
||||||
storex -a cmd to array
|
|
||||||
array_add array "$(evalx cmd)"
|
|
||||||
|
|
||||||
storex -r cmd from array
|
|
||||||
array_del array "$(evalx cmd)"
|
|
||||||
~~~
|
|
||||||
|
|
||||||
syntaxes alternatives
|
|
||||||
~~~
|
|
||||||
storex cmd to var
|
|
||||||
addx cmd to array
|
|
||||||
removex cmd from array
|
|
||||||
~~~
|
|
||||||
|
|
||||||
alternatives
|
|
||||||
~~~
|
|
||||||
setx var=cmd
|
|
||||||
evalx cmd // array_add array
|
|
||||||
evalx cmd // array_del array
|
|
||||||
~~~
|
|
||||||
|
|
||||||
note: il ne semble pas nécessaire au vu de l'alternative d'implémenter storex,
|
|
||||||
addx, removex.
|
|
||||||
|
|
||||||
par contre, il faut corriger un bug d'evalc: la dernière commande doit être
|
|
||||||
exécutée telle quelle. en effet,
|
|
||||||
~~~
|
|
||||||
evalc a // b
|
|
||||||
~~~
|
|
||||||
devrait être équivalent à
|
|
||||||
~~~
|
|
||||||
b "$(a)"
|
|
||||||
~~~
|
|
||||||
mais en fait c'est plutôt
|
|
||||||
~~~
|
|
||||||
echo "$(b "$(a)")"
|
|
||||||
~~~
|
|
||||||
et ça pose problème, notamment si b initialise des variables, etc.
|
|
||||||
|
|
||||||
## Fonctions diverses
|
|
||||||
|
|
||||||
`retcode cmd`
|
|
||||||
: affiche le code de retour de cmd. équivalent à `cmd; echo $?`
|
|
||||||
|
|
||||||
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
|
@ -1,157 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: awk -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
|
|
||||||
function mkindices(values, indices, i, j) {
|
|
||||||
array_new(indices);
|
|
||||||
j = 1;
|
|
||||||
for (i in values) {
|
|
||||||
indices[j++] = int(i);
|
|
||||||
}
|
|
||||||
return asort(indices);
|
|
||||||
}
|
|
||||||
function array_new(dest) {
|
|
||||||
dest[0] = 0; # forcer awk à considérer dest comme un tableau
|
|
||||||
delete dest;
|
|
||||||
}
|
|
||||||
function array_newsize(dest, size, i) {
|
|
||||||
dest[0] = 0; # forcer awk à considérer dest comme un tableau
|
|
||||||
delete dest;
|
|
||||||
size = int(size);
|
|
||||||
for (i = 1; i <= size; i++) {
|
|
||||||
dest[i] = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function array_len(values, count, i) {
|
|
||||||
# length(array) a un bug sur awk 3.1.5
|
|
||||||
# cette version est plus lente mais fonctionne toujours
|
|
||||||
count = 0;
|
|
||||||
for (i in values) {
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
function array_copy(dest, src, count, indices, i) {
|
|
||||||
array_new(dest);
|
|
||||||
count = mkindices(src, indices);
|
|
||||||
for (i = 1; i <= count; i++) {
|
|
||||||
dest[indices[i]] = src[indices[i]];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function array_getlastindex(src, count, indices) {
|
|
||||||
count = mkindices(src, indices);
|
|
||||||
if (count == 0) return 0;
|
|
||||||
return indices[count];
|
|
||||||
}
|
|
||||||
function array_add(dest, value, lastindex) {
|
|
||||||
lastindex = array_getlastindex(dest);
|
|
||||||
dest[lastindex + 1] = value;
|
|
||||||
}
|
|
||||||
function array_deli(dest, i, l) {
|
|
||||||
i = int(i);
|
|
||||||
if (i == 0) return;
|
|
||||||
l = array_len(dest);
|
|
||||||
while (i < l) {
|
|
||||||
dest[i] = dest[i + 1];
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
delete dest[l];
|
|
||||||
}
|
|
||||||
function array_del(dest, value, ignoreCase, i) {
|
|
||||||
do {
|
|
||||||
i = key_index(value, dest, ignoreCase);
|
|
||||||
if (i != 0) array_deli(dest, i);
|
|
||||||
} while (i != 0);
|
|
||||||
}
|
|
||||||
function array_extend(dest, src, count, lastindex, indices, i) {
|
|
||||||
lastindex = array_getlastindex(dest);
|
|
||||||
count = mkindices(src, indices);
|
|
||||||
for (i = 1; i <= count; i++) {
|
|
||||||
dest[lastindex + i] = src[indices[i]];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function array_fill(dest, i) {
|
|
||||||
array_new(dest);
|
|
||||||
for (i = 1; i <= NF; i++) {
|
|
||||||
dest[i] = $i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function array_getline(src, count, indices, i, j) {
|
|
||||||
$0 = "";
|
|
||||||
count = mkindices(src, indices);
|
|
||||||
for (i = 1; i <= count; i++) {
|
|
||||||
j = indices[i];
|
|
||||||
$j = src[j];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function array_appendline(src, count, indices, i, nf, j) {
|
|
||||||
count = mkindices(src, indices);
|
|
||||||
nf = NF;
|
|
||||||
for (i = 1; i <= count; i++) {
|
|
||||||
j = nf + indices[i];
|
|
||||||
$j = src[indices[i]];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function in_array(value, values, ignoreCase, i) {
|
|
||||||
if (ignoreCase) {
|
|
||||||
value = tolower(value);
|
|
||||||
for (i in values) {
|
|
||||||
if (tolower(values[i]) == value) return 1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (i in values) {
|
|
||||||
if (values[i] == value) return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
function key_index(value, values, ignoreCase, i) {
|
|
||||||
if (ignoreCase) {
|
|
||||||
value = tolower(value);
|
|
||||||
for (i in values) {
|
|
||||||
if (tolower(values[i]) == value) return int(i);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (i in values) {
|
|
||||||
if (values[i] == value) return int(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
function array2s(values, prefix, sep, suffix, noindices, first, i, s) {
|
|
||||||
if (!prefix) prefix = "[";
|
|
||||||
if (!sep) sep = ", ";
|
|
||||||
if (!suffix) suffix = "]";
|
|
||||||
s = prefix;
|
|
||||||
first = 1;
|
|
||||||
for (i in values) {
|
|
||||||
if (first) first = 0;
|
|
||||||
else s = s sep;
|
|
||||||
if (!noindices) s = s "[" i "]=";
|
|
||||||
s = s values[i];
|
|
||||||
}
|
|
||||||
s = s suffix;
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
function array2so(values, prefix, sep, suffix, noindices, count, indices, i, s) {
|
|
||||||
if (!prefix) prefix = "[";
|
|
||||||
if (!sep) sep = ", ";
|
|
||||||
if (!suffix) suffix = "]";
|
|
||||||
s = prefix;
|
|
||||||
count = mkindices(values, indices);
|
|
||||||
for (i = 1; i <= count; i++) {
|
|
||||||
if (i > 1) s = s sep;
|
|
||||||
if (!noindices) s = s "[" indices[i] "]=";
|
|
||||||
s = s values[indices[i]];
|
|
||||||
}
|
|
||||||
s = s suffix;
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
function array_join(values, sep, prefix, suffix, count, indices, i, s) {
|
|
||||||
s = prefix;
|
|
||||||
count = mkindices(values, indices);
|
|
||||||
for (i = 1; i <= count; i++) {
|
|
||||||
if (i > 1) s = s sep;
|
|
||||||
s = s values[indices[i]];
|
|
||||||
}
|
|
||||||
s = s suffix;
|
|
||||||
return s;
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: awk -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
@include "base.core.awk"
|
|
||||||
@include "base.array.awk"
|
|
||||||
@include "base.date.awk"
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue