Compare commits
770 Commits
runsmod-ge
...
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 | |
Jephté Clain | 4ad84c0c47 | |
Jephté Clain | a5be8d8770 | |
Jephté Clain | 19267dd993 | |
Jephté Clain | dbf965db90 | |
Jephté Clain | 3ac0859c0a | |
Jephté Clain | a60f23a2af | |
Jephté Clain | 6cfb62b92d | |
Jephté Clain | 305a1808bf | |
Jephté Clain | 6184fde5a2 | |
Jephté Clain | 7676c7635a | |
Jephté Clain | 775bc8eee6 | |
Jephté Clain | d620760681 | |
Jephté Clain | fe0e2718d8 | |
Jephté Clain | 300d42ab04 | |
Jephté Clain | 16114f54d6 | |
Jephté Clain | 827dd141b7 | |
Jephté Clain | e78ec7f61c | |
Jephté Clain | 0ae44bd3ed | |
Jephté Clain | 1a2f6c4335 | |
Jephté Clain | cdd152f716 | |
Jephté Clain | 04e37db5cb | |
Jephté Clain | 75385a76bf | |
Jephté Clain | c1d98a01dc | |
Jephté Clain | ba2c8063a8 | |
Jephté Clain | e621a5671e | |
Jephté Clain | 6f1b8b4926 | |
Jephté Clain | a88c24e747 | |
Jephté Clain | bad6c4811a | |
Jephté Clain | 4b85c93251 | |
Jephté Clain | 9600fb801a | |
Jephté Clain | 7181725056 | |
Jephté Clain | 6a6b2a5f32 | |
Jephté Clain | e0d6910271 | |
Jephté Clain | c7286d1406 | |
Jephté Clain | 4d2bf89e23 | |
Jephté Clain | 0bbcef690b | |
Jephté Clain | 51f4e92c3d | |
Jephté Clain | 8b8cffd9f8 | |
Jephté Clain | d4137906be | |
Jephté Clain | 6e142b7e61 | |
Jephté Clain | 1a3550ed9a | |
Jephté Clain | c58a6ccaf7 | |
Jephté Clain | 7bc3af2869 | |
Jephté Clain | 4c43b01739 | |
Jephté Clain | 174c08759e | |
Jephté Clain | e493b49811 | |
Jephté Clain | 66e1674c00 | |
Jephté Clain | f1dca506fb | |
Jephté Clain | b5e2417514 | |
Jephté Clain | 7f503ae2ab | |
Jephté Clain | 96449de8d6 | |
Jephté Clain | 6e45dfe457 | |
Jephté Clain | 60f3e4d344 | |
Jephté Clain | a3c5ffbd88 | |
Jephté Clain | 4535b67045 | |
Jephté Clain | 7356c1da73 | |
Jephté Clain | 1c3c07f8b2 | |
Jephté Clain | db57d7958f | |
Jephté Clain | a4e758ec5d | |
Jephté Clain | 777bb1fc68 | |
Jephté Clain | 9c86a6ff6e | |
Jephté Clain | f9d3f906f2 | |
Jephté Clain | fa6e87a425 | |
Jephté Clain | 5f68f3eb50 | |
Jephté Clain | 33b7dbabd8 | |
Jephté Clain | 49df32157d | |
Jephté Clain | daafe41e63 | |
Jephté Clain | 3c8b6f8d5f | |
Jephté Clain | 045885c77a | |
Jephté Clain | 1b1589e046 | |
Jephté Clain | 13440e2fd9 | |
Jephté Clain | ee3b58354c | |
Jephté Clain | 56972a669c | |
Jephté Clain | 952b4edcef | |
Jephté Clain | 51109be813 | |
Jephté Clain | 82c366957f | |
Jephté Clain | 2fa28d5cd3 | |
Jephté Clain | af006c4db9 | |
Jephté Clain | e20757b45e | |
Jephté Clain | cb21c53895 | |
Jephté Clain | 04f2f91d08 | |
Jephté Clain | 4bc810843e | |
Jephté Clain | 7299aeb98c | |
Jephté Clain | eee9a65c70 | |
Jephté Clain | 6b33929b17 | |
Jephté Clain | 2b1ad2b531 | |
Jephté Clain | a0752e9d94 | |
Jephté Clain | ad303993e0 | |
Jephté Clain | 7408760ca7 | |
Jephté Clain | 1ec281d746 | |
Jephté Clain | 5d828c4894 | |
Jephté Clain | 9481cad10c | |
Jephté Clain | f17dccaaf9 | |
Jephté Clain | a61452c816 | |
Jephté Clain | 86963ec09f | |
Jephté Clain | 9eaed33548 | |
Jephté Clain | 70165cb09f | |
Jephté Clain | ed0659f2a1 | |
Jephté Clain | f0ae5ae118 | |
Jephté Clain | 9a37329cc1 | |
Jephté Clain | 6f6fc747e2 | |
Jephté Clain | 7954e7fcc8 | |
Jephté Clain | ab535b759b | |
Jephté Clain | 625f93d80e | |
Jephté Clain | 4a8c5d1e3d | |
Jephté Clain | 151e083a49 | |
Jephté Clain | 7c86854605 | |
Jephté Clain | 20d083b4f7 | |
Jephté Clain | 4a46cd33f0 | |
Jephté Clain | bdd859c5ae | |
Jephté Clain | bda961fc5b | |
Jephté Clain | f35e9e8560 | |
Jephté Clain | bc4c8cbb81 | |
Jephté Clain | be4985f61a | |
Jephté Clain | 0e6f55abb9 | |
Jephté Clain | 191d3c223d | |
Jephté Clain | 2d84c44c5b | |
Jephté Clain | b40388f3a5 | |
Jephté Clain | 48e43599b8 | |
Jephté Clain | a7e6228669 | |
Jephté Clain | 0b595837ba | |
Jephté Clain | 4f520db786 | |
Jephté Clain | 4f11cc40d6 | |
Jephté Clain | 9132d6d6ec | |
Jephté Clain | b07b894e01 | |
Jephté Clain | 72d7d15cca | |
Jephté Clain | 9fb19b4cef | |
Jephté Clain | 6c3ae24a67 | |
Jephté Clain | 528a281e30 | |
Jephté Clain | 489b31ded9 | |
Jephté Clain | 7bd0a95b3e | |
Jephté Clain | 6130c2ff7f | |
Jephté Clain | 9c5b46b372 | |
Jephté Clain | f31f5f72ad | |
Jephté Clain | ab8ede8c28 | |
Jephté Clain | 312c7dcc1b | |
Jephté Clain | 5bf55e5999 | |
Jephté Clain | b6ff411b8f | |
Jephté Clain | 1569bfb29a | |
Jephté Clain | 45573e23f7 | |
Jephté Clain | 1e576da4ae | |
Jephté Clain | eeef48dfe1 | |
Jephté Clain | ea45055864 | |
Jephté Clain | efc60b36ab | |
Jephté Clain | 36eec4a517 | |
Jephté Clain | 2afffefa75 | |
Jephté Clain | 6ec37f6af4 | |
Jephté Clain | 6e8c200803 | |
Jephté Clain | cf629e62e1 | |
Jephté Clain | a66c0c231f | |
Jephté Clain | 52e838e383 | |
Jephté Clain | 8ad2e4c1e1 | |
Jephté Clain | 7fb81a0bc9 | |
Jephté Clain | dbc3daa737 | |
Jephté Clain | aff1c15931 | |
Jephté Clain | 8e17fb1fb3 | |
Jephté Clain | a916180ef2 | |
Jephté Clain | 0372a5c44c | |
Jephté Clain | 7d1ec90345 | |
Jephté Clain | c9886925a3 | |
Jephté Clain | 72e0c369c3 | |
Jephté Clain | f4725018aa | |
Jephté Clain | 1267056d2f | |
Jephté Clain | 3f105f12d5 | |
Jephté Clain | f131e21177 | |
Jephté Clain | d99718e692 | |
Jephté Clain | 1aee0cb4e6 | |
Jephté Clain | f05382cdac | |
Jephté Clain | 747c056aec | |
Jephté Clain | 1ee4de04c4 | |
Jephté Clain | e4f154efc6 | |
Jephté Clain | ef00e07b21 | |
Jephté Clain | 377ca5e82f | |
Jephté Clain | 2f448d542d | |
Jephté Clain | 2cc24119b5 | |
Jephté Clain | 65bd363a13 | |
Jephté Clain | 0b39b2324b | |
Jephté Clain | d1a1d4d664 | |
Jephté Clain | 46fbec7974 | |
Jephté Clain | c541958828 | |
Jephté Clain | e2ea2ead3c | |
Jephté Clain | eacc23902f | |
Jephté Clain | 8e404c4f65 | |
Jephté Clain | 1b922757c0 | |
Jephté Clain | 70fedc230c | |
Jephté Clain | eca8c11900 | |
Jephté Clain | ce52d25855 | |
Jephté Clain | a76d28e9fd | |
Jephté Clain | 070f5bfff6 | |
Jephté Clain | 3f464145aa | |
Jephté Clain | 335ca05aaa | |
Jephté Clain | 04717850a5 | |
Jephté Clain | c659159188 | |
Jephté Clain | e3344f512e | |
Jephté Clain | f663e59746 | |
Jephté Clain | 796898b528 | |
Jephté Clain | 4f9939715b | |
Jephté Clain | 80ae9d74bd | |
Jephté Clain | 2a6cd4ddec | |
Jephté Clain | 1f4362c226 | |
Jephté Clain | 6df782178d | |
Jephté Clain | 302986d345 | |
Jephté Clain | e1311bb5c5 | |
Jephté Clain | 63ab5fe49c | |
Jephté Clain | f9f0ffc4ab | |
Jephté Clain | d4591dfe8e | |
Jephté Clain | bef927cc3b | |
Jephté Clain | 5d3f576994 | |
Jephté Clain | 084b96a65b | |
Jephté Clain | 8b3a7a2cac | |
Jephté Clain | c25160c63b | |
Jephté Clain | d5f4ae25c0 | |
Jephté Clain | f8f731e3ed | |
Jephté Clain | e4b7714799 | |
Jephté Clain | 6f1d5e5947 | |
Jephté Clain | 4aaded5ab9 | |
Jephté Clain | f20cc48176 | |
Jephté Clain | 9e4ccaef00 | |
Jephté Clain | 8f9ddb5bb2 | |
Jephté Clain | e01cabb65d | |
Jephté Clain | 8482d61288 | |
Jephté Clain | a264b3e484 | |
Jephté Clain | 262048fee5 | |
Jephté Clain | 8c22012d13 | |
Jephté Clain | dec100b23b | |
Jephté Clain | c82c90840e | |
Jephté Clain | d535df3629 | |
Jephté Clain | 0365c5483c | |
Jephté Clain | 8ce9821095 | |
Jephté Clain | 5b0f13dde1 | |
Jephté Clain | fec6b2fb8b | |
Jephté Clain | 151433b85c | |
Jephté Clain | a99f313014 | |
Jephté Clain | 540e718180 | |
Jephté Clain | 78e0a8e99c | |
Jephté Clain | 027b416398 | |
Jephté Clain | c03411536e | |
Jephté Clain | 1dbe02f6af | |
Jephté Clain | 2394edf7da | |
Jephté Clain | fc467cb250 | |
Jephté Clain | 9d8b32bcd1 | |
Jephté Clain | 9084e7eb34 | |
Jephté Clain | a84775ce48 | |
Jephté Clain | 3bbabbf811 | |
Jephté Clain | c1a536be52 | |
Jephté Clain | 2daf190c60 | |
Jephté Clain | 0b468307f7 | |
Jephté Clain | 836c933949 | |
Jephté Clain | 2991e63d5b | |
Jephté Clain | 52bb0d584f | |
Jephté Clain | bab9c501e5 | |
Jephté Clain | 4593ad8f8e | |
Jephté Clain | 8e5ad225f1 | |
Jephté Clain | a4b83564c8 | |
Jephté Clain | b3e6ff6092 | |
Jephté Clain | ee2e411856 | |
Jephté Clain | e44003526f | |
Jephté Clain | 396728a5d8 | |
Jephté Clain | a6160b308a | |
Jephté Clain | 2fb17f7402 | |
Jephté Clain | 42c6fa6218 | |
Jephté Clain | 5061d4b6e4 | |
Jephté Clain | 14c56673a1 | |
Jephté Clain | a2480ec269 | |
Jephté Clain | 95aa12fb25 | |
Jephté Clain | f233ae1bca | |
Jephté Clain | f908e1ce1d | |
Jephté Clain | 999fb7f78d | |
Jephté Clain | 37a2dce795 | |
Jephté Clain | ab4148c0ac | |
Jephté Clain | 6970b5dcec | |
Jephté Clain | 37a2ff3d8d | |
Jephté Clain | 8f4a5acb06 | |
Jephté Clain | 4a7b14b929 | |
Jephté Clain | 8a6678cc0c | |
Jephté Clain | e9b574d83d | |
Jephté Clain | 2561f67213 | |
Jephté Clain | 38f21aa312 | |
Jephté Clain | d5846bab1d | |
Jephté Clain | 8fa58e24e3 | |
Jephté Clain | 20df6c462f | |
Jephté Clain | 3a24e8301e | |
Jephté Clain | 31fb39d642 | |
Jephté Clain | 528d5795ec | |
Jephté Clain | a43359c760 | |
Jephté Clain | 2177e6acc6 | |
Jephté Clain | 9a777b3307 | |
Jephté Clain | a5fcf7858f | |
Jephté Clain | af3bb37f3d | |
Jephté Clain | fbad98660d | |
Jephté Clain | f570438117 | |
Jephté Clain | 3d1b826976 | |
Jephté Clain | e800376e40 | |
Jephté Clain | 0805f4f522 | |
Jephté Clain | 225060c0b1 | |
Jephté Clain | ad88c99fc5 | |
Jephté Clain | 532d21d2a4 | |
Jephté Clain | c52031b38a | |
Jephté Clain | ca4de19902 | |
Jephté Clain | 02f52af289 | |
Jephté Clain | f2b6381943 | |
Jephté Clain | 6192c0ab25 | |
Jephté Clain | 7a385357de | |
Jephté Clain | b6b7fa94ca | |
Jephté Clain | e58ff74d83 | |
Jephté Clain | c6d0fe5e95 | |
Jephté Clain | c5ef5ceea6 | |
Jephté Clain | 5411b3b1f9 | |
Jephté Clain | 748c2f7ab0 | |
Jephté Clain | 367acfe620 | |
Jephté Clain | ad19121f6b | |
Jephté Clain | feb00bcf11 | |
Jephté Clain | fa3d3b48b1 | |
Jephté Clain | b266663d8a | |
Jephté Clain | 286d1fe959 | |
Jephté Clain | 67f29ddea4 | |
Jephté Clain | a8fa7227b8 | |
Jephté Clain | e9e4e6a56e | |
Jephté Clain | e5f0df2e18 | |
Jephté Clain | 27a2ab0c01 | |
Jephté Clain | 11b87fdfd1 | |
Jephté Clain | 87edaad648 | |
Jephté Clain | 83d6db3072 | |
Jephté Clain | f34f32a7a3 | |
Jephté Clain | 35a55f07d1 | |
Jephté Clain | 5524d3f245 | |
Jephté Clain | e6e73bb8aa | |
Jephté Clain | e79658e0c5 | |
Jephté Clain | 04681449a0 | |
Jephté Clain | 96447b9430 | |
Jephté Clain | 739a94d44d | |
Jephté Clain | a7767f7983 | |
Jephté Clain | 683d5df062 | |
Jephté Clain | ed1633a30b | |
Jephté Clain | b920641fca | |
Jephté Clain | fd9105fa44 | |
Jephté Clain | 6366256c52 | |
Jephté Clain | fbc1a5cc9b | |
Jephté Clain | e3cd3cec3f | |
Jephté Clain | c552d2de56 | |
Jephté Clain | 62a59e51f4 | |
Jephté Clain | 4b7d4f4c04 | |
Jephté Clain | c95d1cd39a | |
Jephté Clain | 4e1e5a44ca | |
Jephté Clain | 5aa60a3367 | |
Jephté Clain | 6a4e6a7146 | |
Jephté Clain | 24a8839fec | |
Jephté Clain | 24812c1795 | |
Jephté Clain | 390233a4a2 | |
Jephté Clain | 2425cbe0f8 | |
Jephté Clain | 96b1866049 | |
Jephté Clain | a7ee78fb7f |
4
.udir
4
.udir
|
@ -16,8 +16,10 @@ rm_utools=
|
||||||
kvm_service=
|
kvm_service=
|
||||||
# Faut-il installer le service openvz-fix-etchosts?
|
# Faut-il installer le service openvz-fix-etchosts?
|
||||||
openvz_service=
|
openvz_service=
|
||||||
|
# Faut-il installer le service kill-ssh-user-sessions?
|
||||||
|
ksus_service=
|
||||||
|
|
||||||
configure_variables=(dest uninst_utools rm_utools kvm_service openvz_service)
|
configure_variables=(dest uninst_utools rm_utools kvm_service openvz_service ksus_service)
|
||||||
configure_dest_for=(bashrc profile lib/uinst/conf lib/uinst/rootconf lib/profile.d/nutools.shared lib/bashrc.d/bash_completion.shared lib/init.d/kvm-stop-all legacy/sysinc/utools legacy/sysinc/system_caps legacy/sysinc/private/init)
|
configure_dest_for=(bashrc profile lib/uinst/conf lib/uinst/rootconf lib/profile.d/nutools.shared lib/bashrc.d/bash_completion.shared lib/init.d/kvm-stop-all legacy/sysinc/utools legacy/sysinc/system_caps legacy/sysinc/private/init)
|
||||||
config_scripts=(lib/uinst/conf lib/uinst/system_caps.legacy)
|
config_scripts=(lib/uinst/conf lib/uinst/system_caps.legacy)
|
||||||
install_profiles=true
|
install_profiles=true
|
||||||
|
|
808
CHANGES.md
808
CHANGES.md
|
@ -1,3 +1,811 @@
|
||||||
|
## 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
|
||||||
|
|
||||||
|
* `a60f23a` maj version ulib
|
||||||
|
* `6cfb62b` sqlmig: ignorer les opérations de maintenance
|
||||||
|
* `305a180` bug
|
||||||
|
* `6184fde` tailor.py: avec le preset php, traiter \n
|
||||||
|
* `7676c76` tailor.py: ajouter l'analyse de php fatal error
|
||||||
|
* `775bc8e` tailor.py: préréglages pour apache et php
|
||||||
|
* `d620760` sqlmig: support des préfixes alphanumériques pour les fichiers csv
|
||||||
|
* `fe0e271` maj doc
|
||||||
|
* `300d42a` cosmetic
|
||||||
|
* `16114f5` maj doc
|
||||||
|
* `827dd14` sqlmig: l'option -f supporte plusieurs fichiers
|
||||||
|
* `e78ec7f` sqlmig: support des préfixes avec '.' pour les conversions csv --> sql
|
||||||
|
* `0ae44bd` maj scripts docker
|
||||||
|
* `1a2f6c4` maj docker
|
||||||
|
* `cdd152f` maj docker
|
||||||
|
* `04e37db` docker: ajout run
|
||||||
|
* `75385a7` cosmetic
|
||||||
|
* `c1d98a0` interpréteur interactif sous docker
|
||||||
|
* `ba2c806` image docker
|
||||||
|
* `e621a56` sqlmig: possibilité de spécifier csv_null pour la conversion des fichiers csv
|
||||||
|
* `6f1b8b4` mysqlloadcsv: bug avec les valeurs de la forme 00+
|
||||||
|
* `a88c24e` sqlmig: ajout de l'option --connect
|
||||||
|
* `bad6c48` sqlmig: corriger le suivi des maj admin
|
||||||
|
* `4b85c93` sqlmig: support des suffixes pour les noms de base de données
|
||||||
|
* `9600fb8` sqlmig: bug avec option conflictuelle
|
||||||
|
* `7181725` sqlmig: ajout de l'option --update-one
|
||||||
|
* `6a6b2a5` sqlmig: mode fake pour afficher les opérations qui doivent être faites
|
||||||
|
* `e0d6910` nulib: afficher les lignes d'action
|
||||||
|
* `c7286d1` nulib: corriger l'affichage du menu
|
||||||
|
* `4d2bf89` settings pour projet eclipse
|
||||||
|
* `0bbcef6` nulib: génération d'une table
|
||||||
|
* `51f4e92` ajouter projet pydev pour nulib
|
||||||
|
* `8b8cffd` mysqlloadcsv: insérer les valeurs dans une transaction
|
||||||
|
* `d413790` ulib/web: possibilité d'avoir un container non fluid pour menu
|
||||||
|
* `6e142b7` bug
|
||||||
|
* `1a3550e` nulib/web: ajout de redirect() et set_profile(). améliorer la lisibilité des arguments
|
||||||
|
* `c58a6cc` sqlmig: ne pas utiliser truncate par défaut
|
||||||
|
* `7bc3af2` sqlmig: conversion automatique des fichiers *.csv en *.sql
|
||||||
|
* `4c43b01` sqlmig: mode dépendant du profil
|
||||||
|
* `174c087` sqlmig: support des fichiers spécifique au mode devel
|
||||||
|
* `e493b49` sqlmig: support des profils
|
||||||
|
* `66e1674` pff: support de DISTTYPE
|
||||||
|
* `f1dca50` sqlmig: support des mises à jour administratives
|
||||||
|
* `b5e2417` création de sqlmig pour gérer les mises à jour sur une base de données
|
||||||
|
* `7f503ae` pff: utiliser git diff pour la colorisation
|
||||||
|
* `96449de` base: page_maybe() affiche les codes couleurs
|
||||||
|
* `6e45dfe` pff: bug avec filtres
|
||||||
|
* `60f3e4d` Intégration de la branche nulib-experiment
|
||||||
|
* `a3c5ffb` maj logo univ2017
|
||||||
|
* `4535b67` support deploydb et pffprofile
|
||||||
|
* `7356c1d` déploiement d'application webpyapp
|
||||||
|
* `1c3c07f` début d'implémentation nulib
|
||||||
|
* `db57d79` mysqlloadcsv: support de l'option --prefix
|
||||||
|
* `a4e758e` pff: afficher la version du projet
|
||||||
|
* `777bb1f` Intégration de la branche update-pff
|
||||||
|
* `9c86a6f` début du support de la variable PROTECTS
|
||||||
|
* `f9d3f90` après Commit, vérifier qu'il n'y a pas encore des marques de conflit
|
||||||
|
* `fa6e87a` possibilité de spécifier merge_strategy pour les conflits
|
||||||
|
* `5f68f3e` l'utilisateur doit faire Commit ou Abort. sinon lui demander son choix
|
||||||
|
* `33b7dba` chrono.py: ajouter le bouton pause
|
||||||
|
* `49df321` uinst: support des exclusions pour chmod et chown
|
||||||
|
* `daafe41` pcrone: créer les fichiers .gitignore et .gitattributes
|
||||||
|
* `3c8b6f8` norm_properties: supprimer les espaces de fin
|
||||||
|
* `045885c` les fichiers properties sont parfois considérés comme binaires
|
||||||
|
* `1b1589e` pff: ne pousser que si un remote est défini pour la branche
|
||||||
|
* `13440e2` pff: support des filtres à l'intégration
|
||||||
|
* `ee3b583` pff: support du paramètre MKDIRS
|
||||||
|
* `56972a6` toinst: ajouter l'option --ct
|
||||||
|
* `952b4ed` pff: raccourcis pour abort() et done()
|
||||||
|
* `51109be` pff: forcer le mode des fichiers du profil Base parce que git n'enregistre pas les autorisations
|
||||||
|
* `82c3669` pff: les fichiers du profil Base sont en lecture seule
|
||||||
|
* `2fa28d5` pff: honorer l'ordre de .pff.conf pour le premier profil
|
||||||
|
* `af006c4` pff: sélectionner le premier profil par défaut
|
||||||
|
* `e20757b` Intégration de la branche update-pff
|
||||||
|
* `cb21c53` finaliser l'implémentation de patch_cmd()
|
||||||
|
* `04f2f91` intervertir les options -a et -b. en effet, -a est susceptible d'être plus utilisé et est plus naturel
|
||||||
|
* `4bc8108` corriger l'affichage de diff_cmd()
|
||||||
|
* `7299aeb` suite implémentation patch_cmd()
|
||||||
|
* `eee9a65` support de l'édition dans le profil ALL et rajouter les raccourcis -P, -T, -A
|
||||||
|
* `6b33929` début d'implémentation de patch_cmd()
|
||||||
|
* `2b1ad2b` implémenter l'option -p avec edit_cmd()
|
||||||
|
* `a0752e9` maj doc
|
||||||
|
* `ad30399` Intégration de la branche update-pu
|
||||||
|
* `7408760` finaliser l'implémentation
|
||||||
|
* `1ec281d` début d'implémentation
|
||||||
|
* `5d828c4` pff: créer automatiquement le profil Common
|
||||||
|
* `9481cad` pff: bug avec l'intégration de fichier origines locaux
|
||||||
|
* `f17dcca` maj des logos de l'université
|
||||||
|
* `a61452c` pff: enregistrer les profils définis et les créer sans confirmation si nécessaire
|
||||||
|
* `86963ec` pff: cosmetic
|
||||||
|
* `9eaed33` pff -d: ajout de --list-names pour afficher seulement les noms de fichiers
|
||||||
|
* `70165cb` pff: ajout de --diff et --infos -l
|
||||||
|
* `ed0659f` pff: améliorer l'affichage de pff --infos
|
||||||
|
* `f0ae5ae` Intégration de la branche update-pff
|
||||||
|
* `9a37329` utiliser le profil Common par défaut
|
||||||
|
* `6f6fc74` maj doc
|
||||||
|
* `7954e7f` pff: support des projets pff déployés avec toinst
|
||||||
|
* `ab535b7` toinst: exclure le répertoire des profils pff
|
||||||
|
* `625f93d` Intégration de la branche add-pff
|
||||||
|
* `4a8c5d1` completion automatique
|
||||||
|
* `151e083` multiconf: ajout de conf_update()
|
||||||
|
* `7c86854` maj du prompt
|
||||||
|
* `20d083b` implémentation initiale
|
||||||
|
* `4a46cd3` maj sqlcsv
|
||||||
|
* `bdd859c` bug avec l'utilisation de gensub()
|
||||||
|
* `bda961f` update-nutools: support de l'option --devel
|
||||||
|
* `f35e9e8` ufile: ajouter le mode local uniquement
|
||||||
|
* `bc4c8cb` Intégration de la branche ufile-named-rules
|
||||||
|
* `be4985f` possibilité de choisir la réponse par défaut pour copy_update_ask et conf_install
|
||||||
|
* `0e6f55a` support des variables
|
||||||
|
* `191d3c2` ufile: support des règles nommées
|
||||||
|
|
||||||
|
## Version 7.4.0 du 20/12/2017-19:01
|
||||||
|
|
||||||
|
* `48e4359` sqlcsv: possibilité de spécifier le chemin de chargement des drivers jdbc
|
||||||
|
* `a7e6228` ufile: par défaut -c ne charge que le fichier spécifié
|
||||||
|
* `0b59583` support de quelques combinaisons de diacritiques
|
||||||
|
* `4f520db` authftp: support préliminaire de --sftp
|
||||||
|
* `4f11cc4` ufile: possibilité d'écraser les fichiers sans confirmation
|
||||||
|
|
||||||
|
## Version 7.3.0 du 19/10/2017-12:12
|
||||||
|
|
||||||
|
* `72d7d15` maj version ulib
|
||||||
|
* `9fb19b4` ulib/multiconf: améliorer conf_install()
|
||||||
|
* `6c3ae24` openurl: supprimer la sortie erreur pour cacher les warnings GTK
|
||||||
|
* `528a281` em: supprimer la sortie d'erreur par défaut. rendre configurable la géométrie
|
||||||
|
* `489b31d` moiso: améliorer l'ergonomie pour le démontage
|
||||||
|
* `7bd0a95` ufile: support des pattern regex
|
||||||
|
* `6130c2f` chrono.py: 0 est équivalent à la chaine vide
|
||||||
|
* `9c5b46b` pyulib: ajouter ShConfig
|
||||||
|
* `f31f5f7` corriger un problème de compilation sur OL6
|
||||||
|
* `ab8ede8` awk: support du format dd/mm/yy
|
||||||
|
* `312c7dc` ajouter des fonctions pour simplifier le check de la version de l'os et l'installation de paquets
|
||||||
|
* `5bf55e5` bug
|
||||||
|
* `b6ff411` maj doc uscrontab
|
||||||
|
|
||||||
|
## Version 7.2.0 du 26/09/2017-17:01
|
||||||
|
|
||||||
|
* `1e576da` multiconf: rajouter conf_upgrade() dans conf_auto()
|
||||||
|
* `eeef48d` Intégration de la branche update-config
|
||||||
|
* `ea45055` implémentation simplifiée avec conf_upgrade()
|
||||||
|
* `efc60b3` description des modifications
|
||||||
|
* `36eec4a` Intégration de la branche update-ufile
|
||||||
|
* `2afffef` ne pas implémenter la recherche automatique de fichier de configuration
|
||||||
|
* `6ec37f6` ufile: implémenter l'option -r
|
||||||
|
* `6e8c200` maj TODO
|
||||||
|
* `cf629e6` uscrontab: support des oneshot vars
|
||||||
|
* `a66c0c2` uscrontab: ajout des options -@, -H, -M
|
||||||
|
* `52e838e` uwatch: ajouter les options -w et -p pour attendre la disparition d'un fichier ou d'un processus
|
||||||
|
* `8ad2e4c` lftp ne supporte pas l'utilisation des guillemets
|
||||||
|
* `7fb81a0` désactiver la vérification du certificat par défaut
|
||||||
|
* `dbc3daa` multiconf: bug
|
||||||
|
* `aff1c15` multiconf: support des variables de type path et compatibilité avec bash 4.3
|
||||||
|
* `8e17fb1` Intégration de la branche add-multiconf
|
||||||
|
* `a916180` ajouter conf_install pour installer les fichiers de configuration dans un répertoire standardisé
|
||||||
|
* `0372a5c` ufile charge les fichiers de ~/etc/ufile.d/
|
||||||
|
* `7d1ec90` simplifier l'API
|
||||||
|
* `c988692` fin implémentation
|
||||||
|
* `72e0c36` maj doc
|
||||||
|
* `f472501` squelette initial
|
||||||
|
|
||||||
|
## Version 7.1.0 du 10/09/2017-19:20
|
||||||
|
|
||||||
|
* `f131e21` uwatch: ajout de l'option -r
|
||||||
|
* `d99718e` cosmetic
|
||||||
|
* `1aee0cb` maj sqlcsv
|
||||||
|
|
||||||
|
## Version 7.0.0 du 25/08/2017-15:53
|
||||||
|
|
||||||
|
* `e4f154e` uawk: possibilité de lancer les versions locale-aware
|
||||||
|
* `ef00e07` bug
|
||||||
|
* `377ca5e` implémenter awkcsv2fsv. corriger un bug avec les outils qui utilisaient cawkrun à l'intérieur d'une fonction l*
|
||||||
|
* `2f448d5` ussh: problèmes de compatibilité
|
||||||
|
* `2cc2411` bug potentiel
|
||||||
|
* `65bd363` webpyapp: réorganiser les fichiers pour supporter des librairies locales
|
||||||
|
* `0b39b23` webpyapp: les variables de server.conf sont configurables
|
||||||
|
* `d1a1d4d` webpyapp: cosmetic
|
||||||
|
* `46fbec7` webpyapp: bootstrap facilité des sessions
|
||||||
|
* `c541958` webpyapp: support du mode développement
|
||||||
|
* `e2ea2ea` ufile: ajout de --force-cp
|
||||||
|
|
||||||
|
## Version 6.7.0 du 19/07/2017-15:45
|
||||||
|
|
||||||
|
* `1b92275` apacheconfig: support d'un script post-update.sh
|
||||||
|
* `70fedc2` webpyapp: support de bootstrapcss
|
||||||
|
* `eca8c11` webpyapp: installation du service
|
||||||
|
* `ce52d25` support de l'activation de services systemd uniquement
|
||||||
|
* `a76d28e` webpy: chargement automatique de la configuration depuis server.conf
|
||||||
|
* `070f5bf` début de template webpyapp
|
||||||
|
* `3f46414` web.py: ajout de la fonction _utf8plaintext()
|
||||||
|
* `335ca05` compatibilité avec les vieilles versions de bash
|
||||||
|
* `0471785` support de stretch pour la completion
|
||||||
|
* `c659159` corriger le calcul de la version de tomcat à sélectionner
|
||||||
|
* `e3344f5` bug
|
||||||
|
* `f663e59` pdev: ajout de l'option -n
|
||||||
|
* `796898b` apacheconfig: destdir n'est peut-être pas spécifié
|
||||||
|
* `4f99397` apacheconfig: mettre à jour le dépôt avant de charger la configuration
|
||||||
|
* `80ae9d7` apacheconfig -up met à jour le dépôt avant le déploiement
|
||||||
|
* `2a6cd4d` javaproperties: support de l'échappement de : et =
|
||||||
|
|
||||||
|
## Version 6.6.0 du 10/06/2017-11:22
|
||||||
|
|
||||||
|
* `302986d` maj dépot jclain.fr en repos.ct
|
||||||
|
|
||||||
|
## Version 6.5.0 du 30/05/2017-17:12
|
||||||
|
|
||||||
|
* `f9f0ffc` toinst: les options -r et -B ne requièrent pas que la webapp source existe
|
||||||
|
* `d4591df` rtoinst: ne pas copier les fichiers de VCS lors du déploiement
|
||||||
|
* `bef927c` umirror: ajouter les options -g et -n pour faciliter le téléchargement des livraisons APOGEE
|
||||||
|
* `5d3f576` upassword: nouvelles options -m et -n pour la gestion des salts
|
||||||
|
|
||||||
|
## Version 6.4.0 du 05/05/2017-16:50
|
||||||
|
|
||||||
|
* `c25160c` fndate: maj doc et améliorations ergonomiques
|
||||||
|
* `d5f4ae2` pclone: filtrer les projets de type wildcard
|
||||||
|
* `f8f731e` support de la complétion pour rwoinst -w
|
||||||
|
* `e4b7714` tailor.py et chrono.py: améliorer l'affichage de l'aide
|
||||||
|
* `6f1d5e5` Intégration de la branche rwoinst-updates
|
||||||
|
* `4aaded5` support des répertoires source maven et de l'interrogation de deploy pour: profil, déploiement des resources web, variables bounce, notag, exec, dbconfig, dbconfigmap
|
||||||
|
* `f20cc48` rwoinst: ajouter l'option -w qui peut être spécifiée en parallèle de -h pour déployer les resources web vers un serveur différent
|
||||||
|
* `9e4ccae` woinst: support des préfixes dans les variables
|
||||||
|
* `8f9ddb5` uinst.sh et woinst.sh: améliorer la comptabilité
|
||||||
|
* `e01cabb` makeself: retourner le code d'erreur même avec un auto-extractible temporaire
|
||||||
|
* `8482d61` pclone: ajouter l'option --master
|
||||||
|
* `a264b3e` pclone: implémenter le clonage récursif avec -r ainsi que les options -n et -u
|
||||||
|
* `262048f` ufile: possibilité de classer vers plusieurs destinations
|
||||||
|
* `8c22012` ufile: copier en local sans utiliser scp si possible
|
||||||
|
* `dec100b` ufile: support du classement par scp
|
||||||
|
* `c82c908` ufile: support des inclusions, d'un fichier de configuration alternatif
|
||||||
|
* `d535df3` ufile: le code de retour de renamef peut annuler une règle
|
||||||
|
* `0365c54` améliorer l'ergonomie de ruinst, rwoinst, toinst: pas la peine de confirmer le répertoire courant s'il est déployé sur un hôte
|
||||||
|
* `8ce9821` fndate: améliorer l'ergonomie de l'option -@
|
||||||
|
* `5b0f13d` ufile: changer la sémantique de renamef
|
||||||
|
* `fec6b2f` pu: support du scenario ou la branche de feature distante a été supprimée
|
||||||
|
* `151433b` ufile: ajout des options --list et --edit
|
||||||
|
* `a99f313` ufile: classement automatique de fichiers
|
||||||
|
* `540e718` base.core: qwc supporte les classes de caractères
|
||||||
|
* `78e0a8e` cosmetic
|
||||||
|
* `027b416` ppath2() est plus approprié dans certaines circonstances
|
||||||
|
* `c034115` revert 9d8b32bcd118ca9194b2d134e51a078d16b1c18d: la correction du bug était incorrecte
|
||||||
|
* `1dbe02f` Intégration de la branche tomcat-deploy
|
||||||
|
* `2394edf` toinst: implémenter la sauvegarde
|
||||||
|
* `fc467cb` finaliser le support de .toinst.conf et traiter les options --exclude, --protect et --rsync-option
|
||||||
|
* `9d8b32b` parse_args: bug avec la fonction reset
|
||||||
|
* `9084e7e` début du support de .toinst.conf
|
||||||
|
* `a84775c` support des options --wamap et --protect depuis la configuration locale de déploiement
|
||||||
|
* `3bbabbf` deploy: support des options --of, --df, --lf
|
||||||
|
* `c1a536b` deploy: support des options -old pour afficher des informations supplémentaires
|
||||||
|
* `2daf190` quelques améliorations dont support du profil de déploiement
|
||||||
|
* `0b46830` implémenter toinst et rtoinst
|
||||||
|
* `836c933` maj doc ruinst et désactiver déploiement de clé par rwoinst
|
||||||
|
* `2991e63` deploy: requête récursive par défaut
|
||||||
|
* `52bb0d5` base.core: ajout de la fonction echo_setv2() pendant de echo_seta2()
|
||||||
|
* `bab9c50` tailor.py: suivre un fichier est optionnel
|
||||||
|
* `4593ad8` ajout de tailor.py: affichage d'un fichier en mettant en surbrillance certains patterns
|
||||||
|
|
||||||
|
## Version 6.3.1 du 06/04/2017-22:34
|
||||||
|
|
||||||
|
* `b3e6ff6` cgilsxml.py: maj doc
|
||||||
|
* `ee2e411` cgilsxml.py: bug
|
||||||
|
|
||||||
|
## Version 6.3.0 du 04/04/2017-04:04
|
||||||
|
|
||||||
|
* `2fb17f7` implémenter dumpcsv --awk-map
|
||||||
|
* `42c6fa6` ne pas activer git-ssh.userconf par défaut
|
||||||
|
* `5061d4b` bug dans les règles par défaut de mssh
|
||||||
|
* `14c5667` mssh: portage générique de mfssh pour choisir l'exécutable ssh en fonction du réseau source et destination
|
||||||
|
* `a2480ec` apacheconfig: *.conf matche aussi *.ssl.conf et *-certs.conf
|
||||||
|
* `95aa12f` Intégration de la branche update-apacheconfig
|
||||||
|
* `f233ae1` support de l'option -p pour traiter les ligne de la forme <VirtualBox *:PORT>#*ip:IP
|
||||||
|
* `f908e1c` support de SITE_IP
|
||||||
|
* `999fb7f` bug
|
||||||
|
* `37a2dce` apacheconfig -K: support de plus de patterns pour le fichier modèle
|
||||||
|
* `ab4148c` cgilsxml.py: nouvelles options --first-spec et all-specs
|
||||||
|
|
||||||
|
## Version 6.2.0 du 13/03/2017-11:27
|
||||||
|
|
||||||
|
* `4a7b14b` ajouter un argument force à testupdated et testnewer
|
||||||
|
* `8a6678c` ruinst et rwoinst: piloter l'interaction distante à partir du paramétrage local
|
||||||
|
* `e9b574d` rwoinst: intégrer des fonctionnalités de ruinst; support préliminaire de deploy
|
||||||
|
* `2561f67` ruinst: utiliser la configuration ruinst par défaut pour deploy
|
||||||
|
* `38f21aa` ruinst: support de deploy pour calculer l'hôte pour le déploiement
|
||||||
|
* `d5846ba` deploy: possibilité de filtrer les variables à afficher. en cas d'échec, afficher false pour faciliter l'utilisation avec eval()
|
||||||
|
* `8fa58e2` quelques corrections sur deploy
|
||||||
|
* `20df6c4` support du depot deploy
|
||||||
|
* `3a24e83` régression dans set_array_cmd()
|
||||||
|
* `31fb39d` réorganiser certaines fonctions
|
||||||
|
* `528d579` ajout des fonctions seta(), _seta(), echo_seta()
|
||||||
|
* `a43359c` maj doc
|
||||||
|
* `2177e6a` cesser d'utiliser des fonctions obsolètes
|
||||||
|
* `9a777b3` cosmetic
|
||||||
|
* `a5fcf78` ajout de evali()
|
||||||
|
* `af3bb37` ajout de evals()
|
||||||
|
* `fbad986` corriger un problème potentiel avec should_quote()
|
||||||
|
* `f570438` bug avec recho -n; maj doc
|
||||||
|
* `3d1b826` cosmetic
|
||||||
|
* `e800376` cosmetic
|
||||||
|
* `0805f4f` SVirtualBox: ajout de l'option -r pour relancer avec restauration du snapshot
|
||||||
|
* `225060c` utempl/www: correction des options et modification cosmétique
|
||||||
|
* `ad88c99` Intégration de la branche update-templates
|
||||||
|
* `532d21d` support de la génération de pages html avec bootstrap
|
||||||
|
* `c52031b` maj de la description
|
||||||
|
* `ca4de19` Intégration de la branche update-apacheconfig
|
||||||
|
* `02f52af` afficher un menu si plusieurs répertoires de templates sont disponibles
|
||||||
|
* `6192c0a` description des modifications à apporter
|
||||||
|
* `f2b6381` SVirtualBox: démarrer en mode separate par défaut
|
||||||
|
* `7a38535` support des hôtes de l'université
|
||||||
|
* `b6b7fa9` uscrontab: support de l'option -G pour les tests
|
||||||
|
* `e58ff74` maj du template pour runs
|
||||||
|
|
||||||
|
## Version 6.1.0 du 13/02/2017-17:06
|
||||||
|
|
||||||
|
* `748c2f7` Intégration de la branche update-network
|
||||||
|
* `367acfe` marquer les fichiers à ignorer pour les projets dépendants
|
||||||
|
* `ad19121` ipcalc: utiliser ip route au lieu de route
|
||||||
|
* `feb00bc` support de libvirt sur jessie
|
||||||
|
* `fa3d3b4` début de réorganisation des fonctions
|
||||||
|
* `b266663` uproject push: support des options -abt avec des arguments
|
||||||
|
* `286d1fe` pcrone: support des dépôt en http
|
||||||
|
* `67f29dd` ulib/sysinfos: implémenter dump_sysinfos, unsupported_system, require_sysinfos
|
||||||
|
* `a8fa722` ulib/runs: quelques corrections mineures
|
||||||
|
* `e9e4e6a` correction mineure avec les options de yum
|
||||||
|
* `e5f0df2` ulib/sysinfos: support de oracle linux; correction d'un bug pour macosx
|
||||||
|
* `27a2ab0` pyulib: ajouter l'argument nocopy=False à seqof() pour éviter des bugs subtils
|
||||||
|
* `11b87fd` ajout de netconfig: gestion des interfaces réseaux
|
||||||
|
* `87edaad` Intégration de la branche better-umountr
|
||||||
|
* `83d6db3` auto-complétion pour umountr
|
||||||
|
* `f34f32a` support des options --[no-]recursive et --[no-]poweroff
|
||||||
|
* `a7ee78f` description branche
|
||||||
|
* `35a55f0` ajout du script create-user, pour créer un utilisateur sudoer et lui installer une clé publique ssh
|
||||||
|
|
||||||
|
## Version 6.0.1 du 30/12/2016-18:39
|
||||||
|
|
||||||
|
* `e79658e` maj de la doc
|
||||||
|
|
||||||
|
## Version 6.0.0 du 30/12/2016-18:26
|
||||||
|
|
||||||
|
* `a7767f7` Intégration de la branche better-apacheconfig
|
||||||
|
* `683d5df` pour simplifier le débuggage, set -x est désactivé pour les fonction urequire(), parse_args() et awkdef()
|
||||||
|
* `ed1633a` module template: support de variables supplémentaires avec TEMPLATE_USER_VARS et de la description des variables dans le fichier de configuration
|
||||||
|
* `b920641` l'installation distante de modules uinst par rruns se fait par défaut sans confirmation
|
||||||
|
* `fd9105f` bug dans le module base.num: 'is*num -' était vrai
|
||||||
|
* `6366256` module ipcalc: ajout de ipcalc_network()
|
||||||
|
* `fbc1a5c` mise à jour du module debian
|
||||||
|
* `e3cd3ce` diverses modification de apacheconfig et apache.tools
|
||||||
|
* `c552d2d` corriger le module python ulib.ext.xpath
|
||||||
|
* `62a59e5` kill-ssh-user-sessions.service: laisser un peu de temps pour que le client soit notifié
|
||||||
|
* `4b7d4f4` ajouter une option pour installer le service kill-ssh-user-sessions
|
||||||
|
* `c95d1cd` ajouter un service pour tuer les sessions ssh lors de l'arrêt de la machine
|
||||||
|
* `4e1e5a4` ruinst: tracer la collecte d'informations sur l'hôte distant
|
||||||
|
* `5aa60a3` désactiver la création du lien pour xpathtool.py, qui ne fonctionne qu'à partir de lib/ulib/support
|
||||||
|
* `6a4e6a7` foreach: ajouter une syntaxe alternative pour lister directement les éléments
|
||||||
|
* `24a8839` update-nutools: possibilité de cloner la branche develop avec l'option --develop
|
||||||
|
* `24812c1` initialiser PYTHONIOENCODING pour faciliter l'exécution de scripts python
|
||||||
|
* `390233a` modification pour afficher l'aide même si certains outils requis sont absents
|
||||||
|
* `2425cbe` maj de l'arborescence de la doc
|
||||||
|
* `96b1866` prel: support du fichier .prel-noauto pour interdire les releases automatiques
|
||||||
|
* `b278b17` prel: mise à jour de la commande par défaut pour les dépendances
|
||||||
|
* `9983e49` pver: support des aliases D et P pour .pver-map
|
||||||
|
* `e37cc8f` pver et prel utilisent -p par défaut pour le support maven
|
||||||
|
* `2980d15` pver supporte la gestion des versions maven
|
||||||
|
* `190519d` pxs ne requière plus la présence du remote origin
|
||||||
|
* `4a4094c` déplacement de is_defined() et is_array() dans base.core
|
||||||
|
* `d735b7b` ulib: strops: ajout des opération mid et repl
|
||||||
|
* `8d486dc` ulib: ajouter la fonction strops
|
||||||
|
* `db24c70` ulib: ajout de la fonction is_array()
|
||||||
|
* `3ccd4ed` apacheconfig: ne pas chercher à utiliser site-certs.conf s'il n'y a pas les variables @@{cert,key,ca}@@
|
||||||
|
* `b9dc5ca` bug dans apacheconfig
|
||||||
|
* `b4ade73` TODO de branche
|
||||||
|
* `44fe622` chrono.py: chronomètre graphique
|
||||||
|
* `2a6d089` ulib/base: implémenter ask_any()
|
||||||
|
* `94615de` conversion de CHANGES.txt en CHANGES.md
|
||||||
|
* `d2a56d6` prel: ajout de l'option --uc pour convertir CHANGES.txt en CHANGES.md
|
||||||
|
* `f3ba5e3` prel: générer un fichier CHANGES.md par défaut avec une syntaxe un peu différente
|
||||||
|
* `40babfe` sqlcsv: l'option -l supporte une url jdbc, et la recherche de sqlcsv.properties se fait dans tous les répertoires parent jusqu'à $HOME
|
||||||
|
|
||||||
## Version 5.3.0 du 28/09/2016-23:31
|
## Version 5.3.0 du 28/09/2016-23:31
|
||||||
|
|
||||||
* `5c466d8` ldif et ldap: match des suffixes sans tenir compte de la casse. modrdn prend un nouvel argument SUFFIX
|
* `5c466d8` ldif et ldap: match des suffixes sans tenir compte de la casse. modrdn prend un nouvel argument SUFFIX
|
||||||
|
|
20
EnsureVM
20
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
|
||||||
|
@ -54,19 +54,24 @@ function ensure_kvm() {
|
||||||
[ -n "$modified" ] && sleep 1
|
[ -n "$modified" ] && sleep 1
|
||||||
|
|
||||||
service=
|
service=
|
||||||
if check_sysinfos -d redhatlike; then
|
function __guess_service() {
|
||||||
for i in libvirtd libvirtd-bin; do
|
for i in libvirtd libvirtd-bin; do
|
||||||
[ -f "/etc/init.d/$i" ] && {
|
[ -f "/etc/init.d/$i" ] && {
|
||||||
service="$i"
|
service="$i"
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
done
|
done
|
||||||
|
}
|
||||||
|
if check_sysinfos -d redhatlike; then
|
||||||
|
__guess_service
|
||||||
|
elif check_sysinfos -d debian -v jessie+; then
|
||||||
|
__guess_service
|
||||||
elif check_sysinfos -d debianlike; then
|
elif check_sysinfos -d debianlike; then
|
||||||
service=libvirt-bin
|
service=libvirt-bin
|
||||||
fi
|
fi
|
||||||
if [ -n "$service" ]; then
|
if [ -n "$service" ]; then
|
||||||
# s'assurer que le service tourne
|
# s'assurer que le service tourne
|
||||||
service libvirt-bin startm
|
service "$service" startm
|
||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
@ -77,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
|
||||||
|
@ -112,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
|
||||||
|
|
83
SVirtualBox
83
SVirtualBox
|
@ -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
|
||||||
|
@ -10,19 +9,38 @@ USAGE
|
||||||
$scriptname [options] vmName
|
$scriptname [options] vmName
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-n Ne rien faire excepté s'assurer que les modules VirtualBox sont chargés
|
-n, --nop
|
||||||
-l Lister les machines virtuelles
|
Ne rien faire excepté s'assurer que les modules VirtualBox sont chargés
|
||||||
-s Démarrer la machine virtuelle (par défaut)
|
-l, --list
|
||||||
|
Lister les machines virtuelles
|
||||||
|
-s, --start
|
||||||
|
Démarrer la machine virtuelle. C'est l'action par défaut.
|
||||||
Si le nom de la machine virtuelle n'est pas spécifiée, un menu est
|
Si le nom de la machine virtuelle n'est pas spécifiée, un menu est
|
||||||
affiché
|
affiché
|
||||||
-b Démarrer la VM sans interface graphique. Cette option n'est valide
|
-x, --gui
|
||||||
qu'avec -s
|
-b, --headless
|
||||||
-k Arrêter la machine virtuelle (par ACPI)
|
--separate
|
||||||
-p Mettre en veille la machine virtuelle (par ACPI)
|
Ces options ne sont valides qu'avec -s et permettent de spécifier le
|
||||||
-H Arrêter sauvagement la machine virtuelle
|
type de démarrage: 'gui' permet d'afficher une fenêtre complète dans
|
||||||
-R Redémarrer sauvagement la machine virtuelle
|
laquelle l'accélération graphique est supportée, headless démarre la
|
||||||
-S Enregistrer l'état de la machine virtuelle
|
machine en tâche de fond, et separate affiche une fenêtre qui attaque la
|
||||||
-g Afficher le gestionnaire de machines virtuelle"
|
machine démarrée en tâche de fond. --separate est l'option par défaut.
|
||||||
|
-k, -t, --stop
|
||||||
|
Arrêter la machine virtuelle. Les options -p, -H, -R, -S et -r
|
||||||
|
permettent de spécifier le type d'arrêt de la machine virtuelle
|
||||||
|
-p, --sleep
|
||||||
|
Mettre en veille la machine virtuelle (par ACPI)
|
||||||
|
-H, --poweroff
|
||||||
|
Arrêter sauvagement la machine virtuelle
|
||||||
|
-R, --reset
|
||||||
|
Redémarrer sauvagement la machine virtuelle
|
||||||
|
-S, --savestate
|
||||||
|
Enregistrer l'état de la machine virtuelle
|
||||||
|
-r, --rrestart
|
||||||
|
Arrêter la machine, restaurer l'état du dernier snapshot puis la
|
||||||
|
relancer.
|
||||||
|
-g, --gui
|
||||||
|
Afficher le gestionnaire de machines virtuelle"
|
||||||
}
|
}
|
||||||
|
|
||||||
function build_arrays() {
|
function build_arrays() {
|
||||||
|
@ -62,20 +80,24 @@ function start_virtualbox() {
|
||||||
}
|
}
|
||||||
|
|
||||||
action=start
|
action=start
|
||||||
|
type=separate
|
||||||
stopaction=acpipowerbutton
|
stopaction=acpipowerbutton
|
||||||
headless=
|
restore=
|
||||||
parse_opts + "${PRETTYOPTS[@]}" \
|
parse_opts + "${PRETTYOPTS[@]}" \
|
||||||
--help '$exit_with display_help' \
|
--help '$exit_with display_help' \
|
||||||
-n action=nop \
|
-n,--nop action=nop \
|
||||||
-l,--list action=list \
|
-l,--list action=list \
|
||||||
-s,--start action=start \
|
-s,--start action=start \
|
||||||
-b,--background,--headless headless=1 \
|
-x,--gui type=gui \
|
||||||
|
-b,--background,--headless type=headless \
|
||||||
|
--separate type=separate \
|
||||||
-k,-t,--stop '$action=stop; stopaction=acpipowerbutton' \
|
-k,-t,--stop '$action=stop; stopaction=acpipowerbutton' \
|
||||||
-p,--sleep '$action=stop; stopaction=acpisleepbutton' \
|
-p,--sleep '$action=stop; stopaction=acpisleepbutton' \
|
||||||
-H '$action=stop; stopaction=poweroff' \
|
-H,--poweroff '$action=stop; stopaction=poweroff' \
|
||||||
-R '$action=stop; stopaction=reset' \
|
-R,--reset '$action=stop; stopaction=reset' \
|
||||||
-S '$action=stop; stopaction=savestate' \
|
-S,--savestate '$action=stop; stopaction=savestate' \
|
||||||
-g action=gui \
|
-r,--rrestart '$action=stop; restore=1' \
|
||||||
|
-g,--gui action=gui \
|
||||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||||
|
|
||||||
"$scriptdir/EnsureVM" virtualbox || die
|
"$scriptdir/EnsureVM" virtualbox || die
|
||||||
|
@ -110,8 +132,8 @@ $(array_join rvms "
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$vm" ]; then
|
if [ -n "$vm" ]; then
|
||||||
estep "Démarrage de $vm${headless:+ en tâche de fond}"
|
estep "Démarrage de $vm de type $type"
|
||||||
VBoxManage -q startvm ${headless:+--type headless} "$vm" "$@"
|
VBoxManage -q startvm --type "$type" "$vm" "$@"
|
||||||
else
|
else
|
||||||
ewarn "Aucune VM à démarrer n'a été trouvée"
|
ewarn "Aucune VM à démarrer n'a été trouvée"
|
||||||
fi
|
fi
|
||||||
|
@ -120,10 +142,23 @@ elif [ "$action" == stop ]; then
|
||||||
if [ -z "$vm" -a "${rvms[*]}" ]; then
|
if [ -z "$vm" -a "${rvms[*]}" ]; then
|
||||||
select_vm rvms vm "Choisissez la VM à arrêter avec la méthode $stopaction"
|
select_vm rvms vm "Choisissez la VM à arrêter avec la méthode $stopaction"
|
||||||
fi
|
fi
|
||||||
|
[ -n "$vm" ] || die
|
||||||
|
|
||||||
if [ -n "$vm" ]; then
|
|
||||||
estep "Arrêt de $vm avec la méthode $stopaction"
|
estep "Arrêt de $vm avec la méthode $stopaction"
|
||||||
VBoxManage -q controlvm "$vm" "$stopaction"
|
VBoxManage -q controlvm "$vm" "$stopaction" || die
|
||||||
|
if [ -n "$restore" ]; then
|
||||||
|
ebegin "Attente de l'arrêt"
|
||||||
|
while true; do
|
||||||
|
build_arrays
|
||||||
|
array_contains svms "$vm" && break
|
||||||
|
edot 0
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
eend
|
||||||
|
estep "Restauration du snapshot"
|
||||||
|
VBoxManage -q snapshot "$vm" restorecurrent || die
|
||||||
|
estep "Démarrage"
|
||||||
|
VBoxManage -q startvm --type "$type" "$vm"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
elif [ "$action" == gui ]; then
|
elif [ "$action" == gui ]; then
|
||||||
|
|
|
@ -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 @@
|
||||||
5.3.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() {
|
||||||
|
|
264
apacheconfig
264
apacheconfig
|
@ -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() {
|
||||||
|
@ -16,6 +16,19 @@ OPTIONS
|
||||||
Créer un nouveau répertoire de configuration pour un hôte
|
Créer un nouveau répertoire de configuration pour un hôte
|
||||||
-d, --destdir DESTDIR[=$TEMPLATECTL_NAME]
|
-d, --destdir DESTDIR[=$TEMPLATECTL_NAME]
|
||||||
Nom du répertoire local de configuration.
|
Nom du répertoire local de configuration.
|
||||||
|
-f,--full
|
||||||
|
--partial
|
||||||
|
Indiquer respectivement que la configuration est complète ou partielle.
|
||||||
|
Avec la configuration complète, le serveur peut être complètement
|
||||||
|
configuré avec tous les fichiers présents. Avec la configuration
|
||||||
|
partielle, uniquement les informations spécifiques à un service en
|
||||||
|
particulier sont disponibles.
|
||||||
|
Cette option est utilisée avec --create. Par défaut, la configuration
|
||||||
|
est partielle.
|
||||||
|
Pour le moment, la seule différence est que --full crée un fichier de
|
||||||
|
configuration nommé .apacheconfig alors que --partial crée un fichier
|
||||||
|
nommé apacheconfig.conf qui est visible et donc découvrable et éditable
|
||||||
|
plus facilement
|
||||||
|
|
||||||
-t, --template [OPT]
|
-t, --template [OPT]
|
||||||
Gérer les fichiers du répertoire local avec templatectl. La valeur de
|
Gérer les fichiers du répertoire local avec templatectl. La valeur de
|
||||||
|
@ -46,9 +59,23 @@ OPTIONS
|
||||||
Lors du déploiement de la configuration, les valeurs des variables
|
Lors du déploiement de la configuration, les valeurs des variables
|
||||||
dynamiques sont remplacées dans les fichiers destination.
|
dynamiques sont remplacées dans les fichiers destination.
|
||||||
Les arguments qui restent sont passés tels quels à apache_autoconf
|
Les arguments qui restent sont passés tels quels à apache_autoconf
|
||||||
|
-p, --pull
|
||||||
|
Faire 'git pull' avant --update
|
||||||
|
-F, --fix-ip
|
||||||
|
Corriger les lignes de la forme '<VirtualHost *:PORT>#*ip:IP' et les
|
||||||
|
remplacer par '<VirtualHost IP:PORT>'
|
||||||
|
Cela permet de déployer une version de production des fichiers de
|
||||||
|
configuration.
|
||||||
|
-N, --network-config
|
||||||
|
Mettre aussi à jour la configuration réseau.
|
||||||
|
--no-post-update
|
||||||
|
Ne pas lancer le script post-update.sh après le déploiement s'il existe.
|
||||||
|
Le script est lancé avec les mêmes arguments que apacheconfig_deploy()
|
||||||
|
la fonction définie dans le module apache.tools
|
||||||
-r, --certsdir CERTSDIR
|
-r, --certsdir CERTSDIR
|
||||||
Spécifier le cas échéant le répertoire contenant les certificats à
|
Spécifier le cas échéant le répertoire contenant les certificats à
|
||||||
déployer. Cet argument est requis si le répertoire certsconf/ existe.
|
déployer. Cet argument est requis si le répertoire certsconf/ existe,
|
||||||
|
sauf si les certificats sont déjà déployés.
|
||||||
|
|
||||||
--localhosts
|
--localhosts
|
||||||
Créer dans le fichier /etc/hosts tous les noms d'hôte ayant un suffixe
|
Créer dans le fichier /etc/hosts tous les noms d'hôte ayant un suffixe
|
||||||
|
@ -63,24 +90,48 @@ OPTIONS
|
||||||
-S, --one-site SITE
|
-S, --one-site SITE
|
||||||
Ne déployer que le fichier de site spécifié. Cette option est utilisée
|
Ne déployer que le fichier de site spécifié. Cette option est utilisée
|
||||||
avec --deploy ou --localhosts et est utile pour le développement et les
|
avec --deploy ou --localhosts et est utile pour le développement et les
|
||||||
tests."
|
tests.
|
||||||
|
|
||||||
|
-k, --new-site HOST.TLD
|
||||||
|
Créer une définition pour un nouveau site à partir des fichiers du
|
||||||
|
répertoires templates/
|
||||||
|
-K, --new-site-templatedir TEMPLATEDIR
|
||||||
|
Spécifier le répertoire source pour les templates de site utilisés par
|
||||||
|
l'option --new-site. Par défaut, utiliser le répertoire templates/ situé
|
||||||
|
dans le répertoire de configuration.
|
||||||
|
Si TEMPLATEDIR est un nom simple sans séparateur de chemin '/' et qu'un
|
||||||
|
répertoire templates/TEMPLATEDIR existe, alors prendre ce répertoire-là
|
||||||
|
comme source.
|
||||||
|
--new-site-force
|
||||||
|
Avec --new-site, utiliser le nom d'hôte fourni même s'il n'est pas
|
||||||
|
pleinement qualifié"
|
||||||
}
|
}
|
||||||
|
|
||||||
action=
|
action=
|
||||||
destdir=
|
destdir=
|
||||||
nohideconfig=
|
nohideconfig=auto
|
||||||
templateopt=
|
templateopt=
|
||||||
|
FULLCONF=
|
||||||
|
pull=
|
||||||
|
fixip=
|
||||||
|
netconf=
|
||||||
|
no_post_update=
|
||||||
aac_certsdir=
|
aac_certsdir=
|
||||||
bits=
|
bits=
|
||||||
oneconf=
|
oneconf=
|
||||||
onemodule=
|
onemodule=
|
||||||
onesite=
|
onesite=
|
||||||
|
site_host=
|
||||||
|
site_templdir=
|
||||||
|
site_force=
|
||||||
args=(
|
args=(
|
||||||
--help '$exit_with display_help'
|
--help '$exit_with display_help'
|
||||||
-c,--create action=create
|
-c,--create action=create
|
||||||
-d:,--destdir: destdir=
|
-d:,--destdir: destdir=
|
||||||
--no-hideconfig nohideconfig=1
|
--no-hideconfig nohideconfig=1
|
||||||
--hideconfig nohideconfig=
|
--hideconfig nohideconfig=
|
||||||
|
-f,--full FULLCONF=1
|
||||||
|
--partial FULLCONF=
|
||||||
-t::,--template:: '$set@ templateopt; action=template'
|
-t::,--template:: '$set@ templateopt; action=template'
|
||||||
--help-template '$templateopt=-help; action=template'
|
--help-template '$templateopt=-help; action=template'
|
||||||
-l,--list '$templateopt=l; action=template'
|
-l,--list '$templateopt=l; action=template'
|
||||||
|
@ -96,15 +147,36 @@ args=(
|
||||||
-8,--jessie '$array_add TEMPLATECTL_VARS sysver=jessie'
|
-8,--jessie '$array_add TEMPLATECTL_VARS sysver=jessie'
|
||||||
--bits: bits=
|
--bits: bits=
|
||||||
-u,--update,--deploy action=deploy
|
-u,--update,--deploy action=deploy
|
||||||
|
-p,--pull pull=1
|
||||||
|
-F,--fix-ip fixip=1
|
||||||
|
-N,--network-config netconf=1
|
||||||
|
--no-post-update no_post_update=1
|
||||||
-r:,--certsdir: aac_certsdir=
|
-r:,--certsdir: aac_certsdir=
|
||||||
--localhosts action=localhosts
|
--localhosts action=localhosts
|
||||||
-C:,--one-conf: oneconf=
|
-C:,--one-conf: oneconf=
|
||||||
-M:,--one-module: onemodule=
|
-M:,--one-module: onemodule=
|
||||||
-S:,--one-site: onesite=
|
-S:,--one-site: onesite=
|
||||||
|
-k:,--new-site: '$action=new-site; set@ site_host'
|
||||||
|
-K:,--new-site-templatedir: site_templdir=
|
||||||
|
--new-site-force site_force=
|
||||||
)
|
)
|
||||||
parse_args "$@"; set -- "${args[@]}"
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
apacheconfig_loadconf "$destdir" || die
|
if [ "$nohideconfig" == auto ]; then
|
||||||
|
[ -n "$FULLCONF" ] && nohideconfig= || nohideconfig=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$pull" ]; then
|
||||||
|
estep "Mise à jour du dépôt"
|
||||||
|
if [ -n "$destdir" ]; then
|
||||||
|
[ -d "$destdir" ] || die "$destdir: répertoire introuvable"
|
||||||
|
(cd "$destdir" && git pull) || die
|
||||||
|
else
|
||||||
|
git pull || die
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
apacheconfig_loadconf "$destdir" "$nohideconfig" || die
|
||||||
apacheconfig_sysinfos "$sysname" "$sysdist" "$sysver" "$bits"
|
apacheconfig_sysinfos "$sysname" "$sysdist" "$sysver" "$bits"
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -128,7 +200,7 @@ if [ "$action" == create ]; then
|
||||||
ask_yesno "Le fichier $(ppath "$config") sera écrasé. Voulez-vous continuer?" O || die
|
ask_yesno "Le fichier $(ppath "$config") sera écrasé. Voulez-vous continuer?" O || die
|
||||||
rm -f "$config" || die
|
rm -f "$config" || die
|
||||||
fi
|
fi
|
||||||
templatectl -d "$destdir" --config "$config" --no-load-vars -m --write-vars
|
templatectl -d "$destdir" --config "$config" ${nohideconfig:+--no-hide-config} --no-load-vars -m --write-vars
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
elif [ "$action" == template ]; then
|
elif [ "$action" == template ]; then
|
||||||
|
@ -142,7 +214,11 @@ elif [ "$action" == deploy -o "$action" == localhosts ]; then
|
||||||
[ -d "$destdir" ] || die "$destdir: répertoire introuvable"
|
[ -d "$destdir" ] || die "$destdir: répertoire introuvable"
|
||||||
|
|
||||||
args=(
|
args=(
|
||||||
-d "$destdir" --$action ${aac_certsdir:+-r "$aac_certsdir"}
|
-d "$destdir" --$action
|
||||||
|
${fixip:+--fix-ip}
|
||||||
|
${netconf:+--network-config}
|
||||||
|
${no_post_update:+--no-post-update}
|
||||||
|
${aac_certsdir:+-r "$aac_certsdir"}
|
||||||
${oneconf:+--one-conf "$oneconf"}
|
${oneconf:+--one-conf "$oneconf"}
|
||||||
${onemodule:+--one-module "$onemodule"}
|
${onemodule:+--one-module "$onemodule"}
|
||||||
${onesite:+--one-site "$onesite"}
|
${onesite:+--one-site "$onesite"}
|
||||||
|
@ -160,11 +236,179 @@ elif [ "$action" == deploy -o "$action" == localhosts ]; then
|
||||||
apacheconfig_deploy \
|
apacheconfig_deploy \
|
||||||
"$destdir" "$aac_certsdir" \
|
"$destdir" "$aac_certsdir" \
|
||||||
"$config" "$oneconf" "$onemodule" "$onesite" \
|
"$config" "$oneconf" "$onemodule" "$onesite" \
|
||||||
"$custom_sysinfos" "$sysname" "$sysdist" "$sysver" "$bits" || die
|
"$custom_sysinfos" "$sysname" "$sysdist" "$sysver" "$bits" \
|
||||||
|
"$netconf" "$fixip" "$no_post_update" || die
|
||||||
eend
|
eend
|
||||||
elif [ "$action" == localhosts ]; then
|
elif [ "$action" == localhosts ]; then
|
||||||
etitle "Mise à jour de /etc/hosts"
|
etitle "Mise à jour de /etc/hosts"
|
||||||
apacheconfig_deploy_localhosts "$destdir" "$aac_certsdir" "$onesite" || die
|
apacheconfig_localhosts "$destdir" "$aac_certsdir" "$onesite" || die
|
||||||
eend
|
eend
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
elif [ "$action" == new-site ]; then
|
||||||
|
host="$site_host"
|
||||||
|
templdir="$site_templdir"
|
||||||
|
|
||||||
|
if [ -z "$templdir" -a -d "$destdir/templates" ]; then
|
||||||
|
# si on ne précise pas le template à utiliser, alors afficher
|
||||||
|
# éventuellement un menu si plusieurs templates sont disponibles
|
||||||
|
templdirs=()
|
||||||
|
if [ -n "$(list_all "$destdir/templates" "*SITE*")" ]; then
|
||||||
|
array_add templdirs templates
|
||||||
|
templdir=templates
|
||||||
|
fi
|
||||||
|
array_from_lines stempldirs "$(list_dirs "$destdir/templates" | grep -v SITE)"
|
||||||
|
for stempldir in "${stempldirs[@]}"; do
|
||||||
|
if [ -n "$(list_all "$destdir/templates/$stempldir" "*SITE*")" ]; then
|
||||||
|
array_add templdirs "templates/$stempldir"
|
||||||
|
[ -n "$templdir" ] || templdir="templates/$stempldir"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ ${#templdirs[*]} -gt 1 ]; then
|
||||||
|
simple_menu templdir templdirs -t "Choix du répertoire des modèles" -m "Veuillez choisir le modèle à utiliser"
|
||||||
|
fi
|
||||||
|
templdir="$destdir/$templdir"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$templdir" != */* ]] && [ -d "$destdir/templates/$templdir" ]; then
|
||||||
|
templdir="$destdir/templates/$templdir"
|
||||||
|
elif [ -z "$templdir" ]; then
|
||||||
|
templdir="$destdir/templates"
|
||||||
|
fi
|
||||||
|
[ -d "$templdir" ] || die "$templdir: répertoire introuvable"
|
||||||
|
force="$site_force"
|
||||||
|
|
||||||
|
clrtempl=
|
||||||
|
ssltempl=
|
||||||
|
certstempl=
|
||||||
|
wwwtempl=
|
||||||
|
array_from_lines clrtempls "$(list_files "$templdir" "*SITE*.conf")"
|
||||||
|
array_from_lines ssltempls "$(list_files "$templdir" "*SITE*.ssl.conf")"
|
||||||
|
array_from_lines certstempls "$(list_files "$templdir" "*SITE*-certs.conf")"
|
||||||
|
for xtempl in "${ssltempls[@]}" "${certstempls[@]}"; do
|
||||||
|
array_del clrtempls "$xtempl"
|
||||||
|
done
|
||||||
|
[ ${#clrtempls[*]} -gt 0 ] && clrtempl="${clrtempls[0]}"
|
||||||
|
[ ${#ssltempls[*]} -gt 0 ] && ssltempl="${ssltempls[0]}"
|
||||||
|
[ ${#certstempls[*]} -gt 0 ] && certstempl="${certstempls[0]}"
|
||||||
|
array_from_lines wwwtempls "$(list_dirs "$templdir" "*SITE*")"
|
||||||
|
[ ${#wwwtempls[*]} -gt 0 ] && wwwtempl="${wwwtempls[0]}"
|
||||||
|
|
||||||
|
found=
|
||||||
|
for i in "$clrtempl" "$ssltempl" "$certstempl" "$wwwtempl"; do
|
||||||
|
[ -n "$i" ] && { found=1; break; }
|
||||||
|
done
|
||||||
|
[ -n "$found" ] || die "Aucun template disponible"
|
||||||
|
|
||||||
|
if [ -z "$force" ] && [[ "$host" != *.* ]]; then
|
||||||
|
die "$host n'est pas un nom d'hôte pleinement qualifié"
|
||||||
|
fi
|
||||||
|
|
||||||
|
hostip=
|
||||||
|
for i in "$clrtempl" "$ssltempl"; do
|
||||||
|
[ -n "$i" -a -f "$templdir/$i" ] || continue
|
||||||
|
quietgrep SITE_IP "$templdir/$i" && { hostip=1; break; }
|
||||||
|
done
|
||||||
|
if [ -n "$hostip" ]; then
|
||||||
|
# Il y a un champ SITE_IP, il faut demander à l'utilisateur l'adresse ip
|
||||||
|
# correspondante
|
||||||
|
[[ "$host" == *.* ]] && hostdomain="${host#*.}" || hostdomain=
|
||||||
|
pri=
|
||||||
|
hostip=
|
||||||
|
i=0
|
||||||
|
while [ $i -lt ${#PUBDOMAINS[*]} ]; do
|
||||||
|
if [ "${PUBDOMAINS[$i]}" == "$hostdomain" ]; then
|
||||||
|
pri="$VSPREFIX${host%$hostdomain}${PRIDOMAINS[$i]}"
|
||||||
|
resolv_ips ips "$pri"
|
||||||
|
if [ -n "$ips" ]; then
|
||||||
|
hostip="${ips[0]}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
i=$(($i + 1))
|
||||||
|
done
|
||||||
|
if [ -z "$hostip" ]; then
|
||||||
|
pri="$VSPREFIX$host"
|
||||||
|
resolv_ips ips "$pri"
|
||||||
|
[ -n "$ips" ] && hostip="${ips[0]}"
|
||||||
|
fi
|
||||||
|
if [ -n "$pri" -a -n "$hostip" ]; then
|
||||||
|
enote "Correspondance automatique $host --> $pri"
|
||||||
|
read_value "Veuillez confirmer l'adresse IP d'écoute" hostip "$hostip" N
|
||||||
|
else
|
||||||
|
enote "Vous devez saisir l'adresse IP privée correspondant à $host"
|
||||||
|
read_value "Veuillez entrer l'adresse IP *privée* d'écoute" hostip "" N
|
||||||
|
fi
|
||||||
|
[ -n "$hostip" ] || ewarn "Vous avez choisi de ne pas spécifier d'adresse IP d'écoute. Il faudra corriger manuellement les fichiers générés"
|
||||||
|
fi
|
||||||
|
|
||||||
|
etitle "$host"
|
||||||
|
hostname="${host%%.*}"
|
||||||
|
clrconf="${clrtempl/SITE/$hostname}"
|
||||||
|
sslconf="${ssltempl/SITE/$hostname}"
|
||||||
|
certsconf="${certstempl/SITE/$hostname}"
|
||||||
|
wwwdir="${wwwtempl/SITE/$hostname}"
|
||||||
|
|
||||||
|
mkdir -p "$destdir/certsconf"
|
||||||
|
mkdir -p "$destdir/sites"
|
||||||
|
|
||||||
|
sedscript=
|
||||||
|
[ -n "$hostip" ] && sedscript="$sedscript
|
||||||
|
s/SITE_IP/$hostip/g"
|
||||||
|
sedscript="$sedscript
|
||||||
|
s/SITE.TLD/$host/g
|
||||||
|
s/SITE/$hostname/g"
|
||||||
|
|
||||||
|
if [ -z "$clrtempl" ]; then
|
||||||
|
:
|
||||||
|
elif [ ! -f "$templdir/$clrtempl" ]; then
|
||||||
|
ewarn "Le fichier $(ppath "$templdir/$clrtempl") n'existe pas. La copie ne sera pas complète"
|
||||||
|
elif [ -f "$destdir/sites/$clrconf" ]; then
|
||||||
|
ewarn "Le fichier sites/$clrconf existe déjà. Il ne sera pas écrasé."
|
||||||
|
else
|
||||||
|
estep "sites/$clrconf"
|
||||||
|
sed "$sedscript" "$templdir/$clrtempl" >"$destdir/sites/$clrconf" || die
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$ssltempl" ]; then
|
||||||
|
:
|
||||||
|
elif [ ! -f "$templdir/$ssltempl" ]; then
|
||||||
|
ewarn "Le fichier $(ppath "$templdir/$ssltempl") n'existe pas. La copie ne sera pas complète"
|
||||||
|
elif [ -f "$destdir/sites/$sslconf" ]; then
|
||||||
|
ewarn "Le fichier sites/$sslconf existe déjà. Il ne sera pas écrasé."
|
||||||
|
else
|
||||||
|
estep "sites/$sslconf"
|
||||||
|
sed "$sedscript" "$templdir/$ssltempl" >"$destdir/sites/$sslconf" || die
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$certstempl" ]; then
|
||||||
|
:
|
||||||
|
elif [ ! -f "$templdir/$certstempl" ]; then
|
||||||
|
ewarn "Le fichier $(ppath "$templdir/$certstempl") n'existe pas. La copie ne sera pas complète"
|
||||||
|
elif [ -f "$destdir/certsconf/$certsconf" ]; then
|
||||||
|
ewarn "Le fichier certsconf/$certsconf exite déjà. Il ne sera pas écrasé."
|
||||||
|
else
|
||||||
|
estep "certsconf/$certsconf"
|
||||||
|
sed "$sedscript" "$templdir/$certstempl" >"$destdir/certsconf/$certsconf" || die
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$wwwtempl" ]; then
|
||||||
|
:
|
||||||
|
elif [ ! -d "$templdir/$wwwtempl" ]; then
|
||||||
|
ewarn "Le répertoire $(ppath "$templdir/$wwwtempl") n'existe pas. La copie ne sera pas complète"
|
||||||
|
elif [ -d "$destdir/$wwwdir" ]; then
|
||||||
|
ewarn "Le répertoire $wwwdir existe déjà. Il ne sera pas écrasé."
|
||||||
|
else
|
||||||
|
estep "$wwwdir"
|
||||||
|
cpdirnovcs "$templdir/$wwwtempl" "$destdir/$wwwdir" || die
|
||||||
|
sed -i "$sedscript" "$destdir/$wwwdir/.udir" || die
|
||||||
|
fi
|
||||||
|
|
||||||
|
eend
|
||||||
|
|
||||||
|
if [ -n "$wwwtempl" ]; then
|
||||||
|
eimportant "Ne pas oublier le cas échéant de mettre à jour HTDMAPPINGS dans $(ppath "$config") e.g.
|
||||||
|
HTDMAPPINGS=($wwwdir)"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
40
authftp
40
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é
|
||||||
|
@ -28,6 +27,11 @@ OPTIONS
|
||||||
--tls
|
--tls
|
||||||
Indiquer que la connexion se fera en TLS. Implique --lftp puisque ncftp
|
Indiquer que la connexion se fera en TLS. Implique --lftp puisque ncftp
|
||||||
ne le supporte pas.
|
ne le supporte pas.
|
||||||
|
--verify-certificate
|
||||||
|
Avec la connexion --tls, forcer la vérification du certificat, qui est
|
||||||
|
désactivée par défaut.
|
||||||
|
--sftp
|
||||||
|
Indiquer que la connexion se fait via SFTP. Implique --lftp --noproxy
|
||||||
|
|
||||||
note: A cause d'une limitation de lftp, ce n'est pas possible de se connecter
|
note: A cause d'une limitation de lftp, ce n'est pas possible de se connecter
|
||||||
automatiquement avec lftp si le mot de passe contient une virgule. A cause de la
|
automatiquement avec lftp si le mot de passe contient une virgule. A cause de la
|
||||||
|
@ -35,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
|
||||||
|
@ -43,6 +55,8 @@ noproxy="$AUTHFTP_PROXY_DISABLED"
|
||||||
lftp=
|
lftp=
|
||||||
options=()
|
options=()
|
||||||
tls=
|
tls=
|
||||||
|
verify_certificate=no
|
||||||
|
sftp=
|
||||||
parse_opts "${PRETTYOPTS[@]}" \
|
parse_opts "${PRETTYOPTS[@]}" \
|
||||||
--help '$exit_with display_help' \
|
--help '$exit_with display_help' \
|
||||||
-p,--proxy noproxy= \
|
-p,--proxy noproxy= \
|
||||||
|
@ -50,6 +64,8 @@ parse_opts "${PRETTYOPTS[@]}" \
|
||||||
-l,--lftp lftp=1 \
|
-l,--lftp lftp=1 \
|
||||||
-o:,--option: options \
|
-o:,--option: options \
|
||||||
--tls tls=1 \
|
--tls tls=1 \
|
||||||
|
--verify-certificate verify_certificate=yes \
|
||||||
|
--sftp sftp=1 \
|
||||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||||
|
|
||||||
[ -n "$noproxy" -o -n "$AUTHFTP_PROXY_HOST" ] || die "AUTHFTP_PROXY_HOST doit être défini"
|
[ -n "$noproxy" -o -n "$AUTHFTP_PROXY_HOST" ] || die "AUTHFTP_PROXY_HOST doit être défini"
|
||||||
|
@ -62,13 +78,27 @@ read_value -i "Entrez l'identifiant de connexion" login "$2"
|
||||||
read_value -i "Entrez le mot de passe" password "$3"
|
read_value -i "Entrez le mot de passe" password "$3"
|
||||||
read_value -i "Entrez le chemin" path "$4" N
|
read_value -i "Entrez le chemin" path "$4" N
|
||||||
|
|
||||||
[ -n "$tls" ] && lftp=1
|
[ -n "$tls" -o -n "$sftp" ] && lftp=1
|
||||||
|
[ -n "$sftp" ] && noproxy=1
|
||||||
|
|
||||||
if [ -n "$lftp" ]; then
|
if [ -n "$lftp" ]; then
|
||||||
if [ -n "$noproxy" ]; then
|
if [ -n "$noproxy" ]; then
|
||||||
exec lftp -u "$login,$password" "${options[@]}" "ftp://$host/$path"
|
export LFTP_PASSWORD="$password"
|
||||||
|
if [ -n "$sftp" ]; then
|
||||||
|
url="sftp://$host/$path"
|
||||||
|
hostkeyfailed_apropos "$login@$host"
|
||||||
else
|
else
|
||||||
exec lftp -u "${login}@${my_login}@${host},${password}@${my_password}" "${options[@]}" "ftp://$AUTHFTP_PROXY_HOST/$path"
|
url="ftp://$host/$path"
|
||||||
|
fi
|
||||||
|
exec lftp "${options[@]}" -e "\
|
||||||
|
set ssl:verify-certificate $verify_certificate
|
||||||
|
open -u $login --env-password $url"
|
||||||
|
else
|
||||||
|
export LFTP_PASSWORD="${password}@${my_password}"
|
||||||
|
url="ftp://$AUTHFTP_PROXY_HOST/$path"
|
||||||
|
exec lftp "${options[@]}" -e "\
|
||||||
|
set ssl:verify-certificate $verify_certificate
|
||||||
|
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
|
||||||
|
|
179
chrono.py
179
chrono.py
|
@ -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"""
|
||||||
|
@ -32,6 +32,12 @@ def playSound(name=None):
|
||||||
|
|
||||||
def isnum(i):
|
def isnum(i):
|
||||||
return type(i) in (IntType, LongType)
|
return type(i) in (IntType, LongType)
|
||||||
|
RE_NUM = re.compile(r'\d+$')
|
||||||
|
def numof(s):
|
||||||
|
if isnum(s): return s
|
||||||
|
elif s is None: return None
|
||||||
|
elif RE_NUM.match(str(s)) is not None: return int(str(s))
|
||||||
|
else: return s
|
||||||
|
|
||||||
DEFAULT_TIMEOUT = '5'
|
DEFAULT_TIMEOUT = '5'
|
||||||
|
|
||||||
|
@ -77,13 +83,24 @@ def parse_timeout(s):
|
||||||
return h * 3600 + m * 60 + s
|
return h * 3600 + m * 60 + s
|
||||||
|
|
||||||
class Chrono:
|
class Chrono:
|
||||||
|
MODE_MINUTEUR = 'M'
|
||||||
|
MODE_CHRONOMETRE = 'C'
|
||||||
|
STATE_STARTED = 'started'
|
||||||
|
STATE_PAUSED = 'paused'
|
||||||
|
STATE_STOPPED = 'stopped'
|
||||||
|
|
||||||
|
ZERO = None
|
||||||
|
|
||||||
|
state = None
|
||||||
|
mode = None
|
||||||
timeout = None
|
timeout = None
|
||||||
|
elapsed = None
|
||||||
date_start = None
|
date_start = None
|
||||||
date_end = None
|
max_elapsed = None
|
||||||
initial = None
|
initial = None
|
||||||
started = None
|
|
||||||
|
|
||||||
def __init__(self, timeout=None, start=False):
|
def __init__(self, timeout=None, start=False):
|
||||||
|
self.ZERO = self.__delta(0)
|
||||||
self.set_timeout(timeout)
|
self.set_timeout(timeout)
|
||||||
if start: self.start()
|
if start: self.start()
|
||||||
|
|
||||||
|
@ -99,37 +116,76 @@ class Chrono:
|
||||||
return Timedelta(seconds=timeout)
|
return Timedelta(seconds=timeout)
|
||||||
|
|
||||||
def set_timeout(self, timeout=None):
|
def set_timeout(self, timeout=None):
|
||||||
|
if timeout == '': timeout = None
|
||||||
if timeout is not None and not isnum(timeout):
|
if timeout is not None and not isnum(timeout):
|
||||||
tmp = parse_desthour(str(timeout))
|
tmp = parse_desthour(str(timeout))
|
||||||
if tmp is None: tmp = parse_timeout(timeout)
|
if tmp is None: tmp = parse_timeout(timeout)
|
||||||
if tmp is None: tmp = int(timeout) * 60
|
if tmp is None: tmp = int(timeout) * 60
|
||||||
timeout = tmp
|
timeout = tmp
|
||||||
|
if timeout == 0: timeout = None
|
||||||
self.timeout = timeout
|
self.timeout = timeout
|
||||||
if timeout is None: self.initial = '00:00'
|
self.elapsed = self.ZERO
|
||||||
else: self.initial = self.__format(self.__delta(timeout))
|
self.state = self.STATE_STOPPED
|
||||||
|
if timeout is None:
|
||||||
|
self.mode = self.MODE_CHRONOMETRE
|
||||||
|
self.initial = self.__format(self.ZERO)
|
||||||
|
else:
|
||||||
|
self.mode = self.MODE_MINUTEUR
|
||||||
|
self.max_elapsed = self.__delta(timeout)
|
||||||
|
self.initial = self.__format(self.max_elapsed)
|
||||||
|
|
||||||
|
def is_chronometre(self):
|
||||||
|
return self.mode == self.MODE_CHRONOMETRE
|
||||||
|
|
||||||
|
def is_minuteur(self):
|
||||||
|
return self.mode == self.MODE_MINUTEUR
|
||||||
|
|
||||||
|
def get_elapsed(self):
|
||||||
|
if self.date_start is None: return self.ZERO
|
||||||
|
delta = Datetime.today() - self.date_start
|
||||||
|
return self.elapsed + delta
|
||||||
|
|
||||||
def start(self, timeout=None):
|
def start(self, timeout=None):
|
||||||
if timeout is None: timeout = self.timeout
|
if timeout is None: timeout = self.timeout
|
||||||
|
self.elapsed = self.ZERO
|
||||||
self.date_start = Datetime.today()
|
self.date_start = Datetime.today()
|
||||||
if timeout is None: self.date_end = None
|
self.state = self.STATE_STARTED
|
||||||
else: self.date_end = self.date_start + self.__delta(timeout)
|
|
||||||
self.started = True
|
|
||||||
|
|
||||||
def stop(self):
|
|
||||||
self.started = False
|
|
||||||
|
|
||||||
def is_started(self):
|
def is_started(self):
|
||||||
return self.started
|
return self.state == self.STATE_STARTED
|
||||||
|
|
||||||
|
def pause(self):
|
||||||
|
if self.state == self.STATE_PAUSED:
|
||||||
|
self.date_start = Datetime.today()
|
||||||
|
self.state = self.STATE_STARTED
|
||||||
|
else:
|
||||||
|
self.elapsed = self.get_elapsed()
|
||||||
|
self.state = self.STATE_PAUSED
|
||||||
|
|
||||||
|
def is_paused(self):
|
||||||
|
return self.state == self.STATE_PAUSED
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
self.elapsed = self.get_elapsed()
|
||||||
|
self.state = self.STATE_STOPPED
|
||||||
|
|
||||||
|
def is_stopped(self):
|
||||||
|
return self.state == self.STATE_STOPPED
|
||||||
|
|
||||||
def is_end(self):
|
def is_end(self):
|
||||||
return self.started and self.date_end is not None and Datetime.today() >= self.date_end
|
if not self.is_started(): return False
|
||||||
|
if not self.is_minuteur(): return False
|
||||||
|
elapsed = self.get_elapsed()
|
||||||
|
return elapsed >= self.max_elapsed
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
now = Datetime.today()
|
elapsed = self.get_elapsed() if self.is_started() else self.elapsed
|
||||||
if self.date_end is None: delta = now - self.date_start
|
if self.is_minuteur():
|
||||||
elif now > self.date_end: delta = Timedelta()
|
delta = self.max_elapsed - elapsed
|
||||||
else: delta = self.date_end - now
|
if delta < self.ZERO: delta = self.ZERO
|
||||||
return self.__format(delta)
|
return self.__format(delta)
|
||||||
|
else:
|
||||||
|
return self.__format(elapsed)
|
||||||
|
|
||||||
def run_chronometre(timeout=None, autostart=False):
|
def run_chronometre(timeout=None, autostart=False):
|
||||||
from Tkinter import Tk, Toplevel, Frame, Label, Entry, Button
|
from Tkinter import Tk, Toplevel, Frame, Label, Entry, Button
|
||||||
|
@ -209,11 +265,9 @@ def run_chronometre(timeout=None, autostart=False):
|
||||||
class Application(Frame):
|
class Application(Frame):
|
||||||
root = None
|
root = None
|
||||||
chrono = None
|
chrono = None
|
||||||
stop = None
|
|
||||||
|
|
||||||
def __init__(self, timeout=None, autostart=False, **kw):
|
def __init__(self, timeout=None, autostart=False, **kw):
|
||||||
self.chrono = Chrono(timeout)
|
self.chrono = Chrono(timeout)
|
||||||
self.stop = False
|
|
||||||
|
|
||||||
root = Tk()
|
root = Tk()
|
||||||
root.title("Chronomètre")
|
root.title("Chronomètre")
|
||||||
|
@ -221,6 +275,8 @@ def run_chronometre(timeout=None, autostart=False):
|
||||||
root.rowconfigure(0, weight=1)
|
root.rowconfigure(0, weight=1)
|
||||||
root.bind("c", lambda event: self.do_config())
|
root.bind("c", lambda event: self.do_config())
|
||||||
root.bind("s", lambda event: self.do_start())
|
root.bind("s", lambda event: self.do_start())
|
||||||
|
root.bind("p", lambda event: self.do_pause())
|
||||||
|
root.bind("<space>", lambda event: self.do_pause())
|
||||||
root.bind("q", lambda event: self.quit())
|
root.bind("q", lambda event: self.quit())
|
||||||
self.root = root
|
self.root = root
|
||||||
|
|
||||||
|
@ -228,19 +284,22 @@ def run_chronometre(timeout=None, autostart=False):
|
||||||
Frame.__init__(self, **kw)
|
Frame.__init__(self, **kw)
|
||||||
|
|
||||||
self.TIME = Label(self, width=10, height=2, text=self.chrono.initial, padx=30, pady=10, font=('Helvetica', 18, "normal"))
|
self.TIME = Label(self, width=10, height=2, text=self.chrono.initial, padx=30, pady=10, font=('Helvetica', 18, "normal"))
|
||||||
self.START = Button(self, text="Démarrer", command=self.do_start)
|
self.START = Button(self, text="Start", command=self.do_start)
|
||||||
|
self.PAUSE = Button(self, text="Pause", command=self.do_pause, state="disabled")
|
||||||
self.CONFIG = Button(self, text="Config", command=self.do_config)
|
self.CONFIG = Button(self, text="Config", command=self.do_config)
|
||||||
self.QUIT = Button(self, text="Quitter", command=self.quit)
|
self.QUIT = Button(self, text="Quit", command=self.quit)
|
||||||
|
|
||||||
self.grid(column=0, row=0, sticky='nsew')
|
self.grid(column=0, row=0, sticky='nsew')
|
||||||
self.TIME.grid(column=0, row=0, columnspan=3, sticky='nsew')
|
self.TIME.grid(column=0, row=0, columnspan=4, sticky='nsew')
|
||||||
self.START.grid(column=0, row=1, sticky='ew')
|
self.START.grid(column=0, row=1, sticky='ew')
|
||||||
self.CONFIG.grid(column=1, row=1, sticky='ew')
|
self.PAUSE.grid(column=1, row=1, sticky='ew')
|
||||||
self.QUIT.grid(column=2, row=1, sticky='ew')
|
self.CONFIG.grid(column=2, row=1, sticky='ew')
|
||||||
|
self.QUIT.grid(column=3, row=1, sticky='ew')
|
||||||
|
|
||||||
self.columnconfigure(0, weight=2)
|
self.columnconfigure(0, weight=2)
|
||||||
self.columnconfigure(1, weight=1)
|
self.columnconfigure(1, weight=2)
|
||||||
self.columnconfigure(2, weight=2)
|
self.columnconfigure(2, weight=1)
|
||||||
|
self.columnconfigure(3, weight=1)
|
||||||
self.rowconfigure(0, weight=1)
|
self.rowconfigure(0, weight=1)
|
||||||
|
|
||||||
if autostart: self.do_start()
|
if autostart: self.do_start()
|
||||||
|
@ -255,15 +314,27 @@ def run_chronometre(timeout=None, autostart=False):
|
||||||
self.root.after(300, self.update_time)
|
self.root.after(300, self.update_time)
|
||||||
|
|
||||||
def do_start(self):
|
def do_start(self):
|
||||||
|
self.PAUSE.configure(state="normal", text="Pause")
|
||||||
|
self.START.configure(text="reStart")
|
||||||
self.chrono.start()
|
self.chrono.start()
|
||||||
self.update_time()
|
self.update_time()
|
||||||
|
|
||||||
|
def do_pause(self):
|
||||||
|
self.chrono.pause()
|
||||||
|
if self.chrono.is_paused():
|
||||||
|
self.PAUSE.configure(text="unPause")
|
||||||
|
else:
|
||||||
|
self.PAUSE.configure(text="Pause")
|
||||||
|
self.update_time()
|
||||||
|
|
||||||
def do_config(self):
|
def do_config(self):
|
||||||
chrono = self.chrono
|
chrono = self.chrono
|
||||||
chrono.stop()
|
chrono.stop()
|
||||||
config = Config(self.root)
|
config = Config(self.root)
|
||||||
if config.have_result:
|
if config.have_result:
|
||||||
try:
|
try:
|
||||||
|
self.PAUSE.configure(text="Pause", state="disabled")
|
||||||
|
self.START.configure(text="Start")
|
||||||
chrono.set_timeout(config.result)
|
chrono.set_timeout(config.result)
|
||||||
self.TIME.configure(text=chrono.initial)
|
self.TIME.configure(text=chrono.initial)
|
||||||
except:
|
except:
|
||||||
|
@ -273,26 +344,55 @@ def run_chronometre(timeout=None, autostart=False):
|
||||||
Application(timeout, autostart).mainloop()
|
Application(timeout, autostart).mainloop()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
from argparse import ArgumentParser, RawTextHelpFormatter
|
from argparse import ArgumentParser, HelpFormatter
|
||||||
|
if sys.argv[1:2] == ['--compat']:
|
||||||
|
# Avec l'argument --compat, désactiver la classe FancyHelpFormatter qui
|
||||||
|
# se base sur une API non documentée
|
||||||
|
sys.argv = sys.argv[0:1] + sys.argv[2:]
|
||||||
|
FancyHelpFormatter = HelpFormatter
|
||||||
|
else:
|
||||||
|
class FancyHelpFormatter(HelpFormatter):
|
||||||
|
"""Comme HelpFormatter, mais ne touche pas aux lignes qui commencent par les
|
||||||
|
caractères '>>>'. Cela permet de mixer du texte formaté et du texte non
|
||||||
|
formaté.
|
||||||
|
"""
|
||||||
|
def _fill_text(self, text, width, indent):
|
||||||
|
return ''.join([indent + line for line in text.splitlines(True)])
|
||||||
|
def _split_lines(self, text, width):
|
||||||
|
lines = ['']
|
||||||
|
for line in text.splitlines():
|
||||||
|
if line.startswith('>>>'):
|
||||||
|
lines.append(line)
|
||||||
|
lines.append('')
|
||||||
|
else:
|
||||||
|
lines[-1] += '\n' + line
|
||||||
|
lines = filter(None, lines)
|
||||||
|
texts = []
|
||||||
|
for line in lines:
|
||||||
|
if line.startswith('>>>'):
|
||||||
|
texts.append(line[3:])
|
||||||
|
else:
|
||||||
|
texts.extend(super(FancyHelpFormatter, self)._split_lines(line, width))
|
||||||
|
return texts
|
||||||
AP = ArgumentParser(
|
AP = ArgumentParser(
|
||||||
formatter_class=RawTextHelpFormatter,
|
|
||||||
usage=u"%(prog)s [options] [TIMEOUT]",
|
usage=u"%(prog)s [options] [TIMEOUT]",
|
||||||
description=u"Afficher un chronomètre",
|
description=u"Afficher un chronomètre",
|
||||||
epilog=u"Si TIMEOUT est spécifié, par défaut le décompte démarre automatiquement."
|
epilog=u"Si TIMEOUT est spécifié, par défaut le décompte démarre automatiquement.",
|
||||||
|
formatter_class=FancyHelpFormatter,
|
||||||
)
|
)
|
||||||
AP.set_defaults(autostart=None, timeout=None)
|
AP.set_defaults(autostart=None, timeout=None)
|
||||||
AP.add_argument('timeout', metavar='TIMEOUT', nargs='?',
|
AP.add_argument('timeout', metavar='TIMEOUT', nargs='?',
|
||||||
help=u"""\
|
help=u"""\
|
||||||
(valeur vide)
|
>>> '' (valeur vide)
|
||||||
chronomètre qui démarre à 0:00 et ne s'arrête pas
|
chronomètre qui démarre à 0:00 et ne s'arrête pas
|
||||||
H:M:S (heures:minutes:secondes)
|
>>> 'H:M:S' (heures:minutes:secondes)
|
||||||
ou M:S (minutes:secondes)
|
>>> ou 'M:S' (minutes:secondes)
|
||||||
ou M (minutes)
|
>>> ou 'M' (minutes)
|
||||||
minuteur qui démarre à H:M:S et fait un décompte jusqu'à 0:00. A la fin
|
minuteur qui démarre à H:M:S et fait un décompte jusqu'à 0:00. A la fin
|
||||||
du décompte, une sonnerie retentit.
|
du décompte, une sonnerie retentit.
|
||||||
@H[:M[:S]]
|
>>> '@H[:M[:S]]'
|
||||||
minuteur qui fonctionne comme précédemment, sauf qu'on spécifie l'heure
|
minuteur qui fonctionne comme précédemment, sauf qu'on spécifie l'heure
|
||||||
d'arrivée, et que la durée est calculée automatiquement""")
|
d'arrivée, et que la durée est calculée automatiquement""")
|
||||||
AP.add_argument('-n', '--no-autostart', dest='autostart', action='store_false',
|
AP.add_argument('-n', '--no-autostart', dest='autostart', action='store_false',
|
||||||
help=u"Ne pas démarrer automatiquement le décompte même si TIMEOUT est spécifié.")
|
help=u"Ne pas démarrer automatiquement le décompte même si TIMEOUT est spécifié.")
|
||||||
AP.add_argument('-s', '--autostart', dest='autostart', action='store_true',
|
AP.add_argument('-s', '--autostart', dest='autostart', action='store_true',
|
||||||
|
@ -305,7 +405,6 @@ ou M (minutes)
|
||||||
|
|
||||||
timeout = o.timeout
|
timeout = o.timeout
|
||||||
if timeout is None: timeout = DEFAULT_TIMEOUT
|
if timeout is None: timeout = DEFAULT_TIMEOUT
|
||||||
elif timeout == '': timeout = None
|
|
||||||
o.timeout = timeout
|
o.timeout = timeout
|
||||||
|
|
||||||
run_chronometre(o.timeout, o.autostart)
|
run_chronometre(o.timeout, o.autostart)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -0,0 +1,172 @@
|
||||||
|
#!/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: créer un utilisateur sudoer et lui installer une clé publique ssh
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
$scriptname user [-p pubkey]
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-p, --pkfile PKFILE
|
||||||
|
Installer la clé publique ssh contenue dans le fichier spécifié. Par
|
||||||
|
défaut, prendre le fichier ~/.ssh/id_rsa.pub de l'utilisateur courant.
|
||||||
|
-s, --pkstring PUBKEY
|
||||||
|
Installer la clé publique ssh spécifiée. Cette option avancée n'est pas
|
||||||
|
utilisée en temps normal. Elle a la priorité sur l'option --pkfile
|
||||||
|
-l, --luser
|
||||||
|
Ne pas donner à l'utilisateur le droit de sudoer.
|
||||||
|
-h, --host [USER@]HOST
|
||||||
|
Créer l'utilisateur sur l'hôte distant spécifié. Si l'utilisateur
|
||||||
|
distant n'est pas root, il doit être sudoer.
|
||||||
|
-T, --tmproot TMPROOT
|
||||||
|
Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple
|
||||||
|
/var/tmp. Cette option est utile pour certains serveurs, qui ont un /tmp
|
||||||
|
minuscule.
|
||||||
|
-S, --ssh SSH
|
||||||
|
Spécifier le programme à utiliser pour la connection par ssh."
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_user() {
|
||||||
|
# Créer le user, si nécessaire
|
||||||
|
# retourner vrai si le user a été créé, faux si ce n'était pas nécessaire
|
||||||
|
local user="$1" password="$2"
|
||||||
|
[ -z "$(getent passwd "$user")" ] || return 1
|
||||||
|
estep "Creation de l'utilisateur $user..."
|
||||||
|
useradd -s /bin/bash -m "$user"
|
||||||
|
[ -n "$password" ] || return 0
|
||||||
|
if ! (echo "$password" | passwd --stdin "$user" 2>/dev/null); then
|
||||||
|
echo "$user:$password" | chpasswd
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function init_sudoer() {
|
||||||
|
local user="$1"
|
||||||
|
local TAB=$'\t'
|
||||||
|
if [ -d /etc/sudoers.d ]; then
|
||||||
|
if [ ! -f "/etc/sudoers.d/$user" ]; then
|
||||||
|
estep "Ajout de $user comme sudoer dans /etc/sudoers.d/$user"
|
||||||
|
echo "$user${TAB}ALL=(ALL) NOPASSWD: ALL" >"/etc/sudoers.d/$user"
|
||||||
|
chmod 440 "/etc/sudoers.d/$user"
|
||||||
|
fi
|
||||||
|
elif [ -f /etc/sudoers ]; then
|
||||||
|
if ! grep -q "^$user" /etc/sudoers; then
|
||||||
|
estep "Ajout de user comme sudoer dans /etc/sudoers..."
|
||||||
|
echo "$user${TAB}ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_pubkeys() {
|
||||||
|
# Installer la clé $1 pour l'utilisateur $2
|
||||||
|
# $1 peut contenir autant de clés que nécessaire, une par ligne
|
||||||
|
local user="$1" pubkeys="$2"
|
||||||
|
local homedir="$(eval "echo ~$user")"
|
||||||
|
[ -d "$homedir" ] || return
|
||||||
|
|
||||||
|
local sshdir="$homedir/.ssh"
|
||||||
|
if [ ! -d "$sshdir" ]; then
|
||||||
|
mkdir -p "$sshdir"
|
||||||
|
chmod 700 "$sshdir"
|
||||||
|
chown -R "$user:" "$sshdir"
|
||||||
|
fi
|
||||||
|
local ak="$sshdir/authorized_keys"
|
||||||
|
if [ ! -f "$ak" ]; then
|
||||||
|
touch "$ak"
|
||||||
|
chown "$user:" "$ak"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local -a pks
|
||||||
|
local pk
|
||||||
|
array_from_lines pks "$pubkeys"
|
||||||
|
for pk in "${pks[@]}"; do
|
||||||
|
if ! grep -q "$pk" "$ak"; then
|
||||||
|
estep "Installation de la clé ${pk:0:20}... pour $user"
|
||||||
|
echo "$pk" >>"$ak"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
pkfile=
|
||||||
|
pkstring=
|
||||||
|
luser=
|
||||||
|
host=
|
||||||
|
tmproot=
|
||||||
|
SSH=
|
||||||
|
args=(
|
||||||
|
--help '$exit_with display_help'
|
||||||
|
-p:,--pkfile: pkfile=
|
||||||
|
-s:,--pkstring: pkstring=
|
||||||
|
-l,--luser luser=1
|
||||||
|
-h:,-H:,--host: host=
|
||||||
|
-T:,--tmproot: tmproot=
|
||||||
|
-S:,--ssh: SSH=
|
||||||
|
)
|
||||||
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
user="$1"
|
||||||
|
[ -n "$user" ] || die "Vous devez spécifier l'utilisateur à créer"
|
||||||
|
|
||||||
|
if [ -z "$pkstring" ]; then
|
||||||
|
if [ -z "$pkfile" ]; then
|
||||||
|
if [ -f ~/.ssh/id_rsa.pub ]; then pkfile=~/.ssh/id_rsa.pub
|
||||||
|
elif [ -f ~/.ssh/id_dsa.pub ]; then pkfile=~/.ssh/id_dsa.pub
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -f "$pkfile" ]; then pkstring="$(<"$pkfile")"
|
||||||
|
elif [ -n "$pkfile" ]; then die "$pkfile: fichier introuvable"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$host" ]; then
|
||||||
|
# déploiement local
|
||||||
|
run_as_root ${pkstring:+-s "$pkstring"} ${luser:+-l} "$user"
|
||||||
|
create_user "$user"
|
||||||
|
[ -z "$luser" ] && init_sudoer "$user"
|
||||||
|
[ -n "$pkstring" ] && install_pubkeys "$user" "$pkstring"
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
else
|
||||||
|
# déploiement distant
|
||||||
|
if [ -n "$host" ]; then
|
||||||
|
splituserhost "$host" remoteuser host
|
||||||
|
[ -n "$remoteuser" ] || remoteuser=root
|
||||||
|
fi
|
||||||
|
if [ -n "$SSH" ]; then
|
||||||
|
ssh=("$SSH" -o StrictHostKeyChecking=no -o ConnectTimeout=2 -qt)
|
||||||
|
scp=(scp -S "$SSH" -o StrictHostKeyChecking=no -o ConnectTimeout=2 -q)
|
||||||
|
else
|
||||||
|
ssh=(ssh -o StrictHostKeyChecking=no -o ConnectTimeout=2 -qt)
|
||||||
|
scp=(scp -o StrictHostKeyChecking=no -o ConnectTimeout=2 -q)
|
||||||
|
fi
|
||||||
|
|
||||||
|
ac_set_tmpdir workdir
|
||||||
|
mkdir "$workdir/lib"
|
||||||
|
ulibsync "$workdir/lib"
|
||||||
|
cp "$script" "$workdir"
|
||||||
|
echo "#!/bin/bash
|
||||||
|
$(qvals "./$scriptname" ${pkstring:+-s "$pkstring"} ${luser:+-l} "$user")" >"$workdir/do_remote"
|
||||||
|
chmod +x "$workdir/do_remote"
|
||||||
|
|
||||||
|
ac_set_tmpfile archive
|
||||||
|
archivename="$(basename "$archive")"
|
||||||
|
|
||||||
|
"$scriptdir/mkusfx" --tmp-archive --bare -o "$archive" "$workdir" ./do_remote || die
|
||||||
|
|
||||||
|
estep "Copie du script sur $remoteuser@$host"
|
||||||
|
"${scp[@]}" "$archive" "$remoteuser@$host:" || die
|
||||||
|
|
||||||
|
estep "Exécution du script"
|
||||||
|
"${ssh[@]}" "$remoteuser@$host" "\
|
||||||
|
__estack=$(qval "$__estack")
|
||||||
|
__tlevel=$(qval "$__tlevel")
|
||||||
|
export __estack __tlevel
|
||||||
|
${UTOOLS_LANG:+UTOOLS_LANG='$UTOOLS_LANG'; export UTOOLS_LANG
|
||||||
|
}$(qvals "./$archivename" ${tmproot:+--tmproot "$tmproot"})"
|
||||||
|
r=$?
|
||||||
|
ac_clean "$workdir"
|
||||||
|
|
||||||
|
exit $r
|
||||||
|
fi
|
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="'$(quoted_args "${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
|
|
@ -1,25 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
# Pense-bête:
|
|
||||||
# ''bold'' ==striked== __underline__ //italic// ^^super^^ ~~sub~~
|
|
||||||
# @@highlight@@ @@color:red;background-color:white; rouge sur noir@@
|
|
||||||
# ~NotAWikiWord [[force wikiword]] [[friendly name|WikiWord]]
|
|
||||||
# [[external|http://site.com]] ---- {{monospace}}
|
|
||||||
# !h1 !!h2 !!!h3 !!!!h4 !!!!!h5
|
|
||||||
# * dotlist ** sublist # numlist ## sublist
|
|
||||||
# {{{ |caption|c [img[title|filename]]
|
|
||||||
# pre text |!header|!header|h [img[filename]]
|
|
||||||
# }}} |cell|cell| [img[title|filename][link]]
|
|
||||||
# <<< |>|colspan| [img[filename][link]]
|
|
||||||
# blockquote |rowspan|one| [<img[filename]]
|
|
||||||
# <<< |~|two| [>img[filename]]
|
|
||||||
# >quote1 |left| right|
|
|
||||||
# >>quote2 |>| center |
|
|
||||||
# >>>quote3
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 09/03/2012 05:08
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: DefaultTiddlers
|
|
||||||
|
|
||||||
[[Main]]
|
|
|
@ -1,16 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 15/03/2012 22:19
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: EnsureVM
|
|
||||||
|
|
||||||
{{{
|
|
||||||
EnsureVM: s'assurer que les services sont lancés pour un type de virtualisation
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
EnsureVM type
|
|
||||||
|
|
||||||
Les types supportés sont virtualbox et kvm (par défaut)
|
|
||||||
}}}
|
|
46
doc/Main.twp
46
doc/Main.twp
|
@ -1,46 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
# Pense-bête:
|
|
||||||
# ''bold'' ==striked== __underline__ //italic// ^^super^^ ~~sub~~
|
|
||||||
# @@highlight@@ @@color:red;background-color:white; rouge sur noir@@
|
|
||||||
# ~NotAWikiWord [[force wikiword]] [[friendly name|WikiWord]]
|
|
||||||
# [[external|http://site.com]] ---- {{monospace}}
|
|
||||||
# !h1 !!h2 !!!h3 !!!!h4 !!!!!h5
|
|
||||||
# * dotlist ** sublist # numlist ## sublist
|
|
||||||
# {{{ |caption|c [img[title|filename]]
|
|
||||||
# pre text |!header|!header|h [img[filename]]
|
|
||||||
# }}} |cell|cell| [img[title|filename][link]]
|
|
||||||
# <<< |>|colspan| [img[filename][link]]
|
|
||||||
# blockquote |rowspan|one| [<img[filename]]
|
|
||||||
# <<< |~|two| [>img[filename]]
|
|
||||||
# >quote1 |left| right|
|
|
||||||
# >>quote2 |>| center |
|
|
||||||
# >>>quote3
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 09/03/2012 05:08
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: Main
|
|
||||||
|
|
||||||
!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]]: Déploiement local
|
|
||||||
** [[mkusfx]]: Faire une archive auto-installable avec uinst
|
|
||||||
** [[ruinst]]: Déploiement distant avec uinst
|
|
||||||
** [[runs]]: Lancer un script avec le protocole RUNS
|
|
||||||
** [[rruns]]: Déploiement distant avec runs
|
|
||||||
* Librairie réutilisable de scripts shell
|
|
||||||
** [[uinc]]: Dépliage des inclusions dans un fichier
|
|
||||||
** [[ulibsync]]: Faire une copie locale pour un projet de ulib et/ou pyulib
|
|
||||||
* Autres outils
|
|
||||||
** [[udir]]: Gestion des paramètres d'un répertoire. Ces paramètres sont entre autres utilisés par uinst et uinc.
|
|
|
@ -1,25 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
# Pense-bête:
|
|
||||||
# ''bold'' ==striked== __underline__ //italic// ^^super^^ ~~sub~~
|
|
||||||
# @@highlight@@ @@color:red;background-color:white; rouge sur noir@@
|
|
||||||
# ~NotAWikiWord [[force wikiword]] [[friendly name|WikiWord]]
|
|
||||||
# [[external|http://site.com]] ---- {{monospace}}
|
|
||||||
# !h1 !!h2 !!!h3 !!!!h4 !!!!!h5
|
|
||||||
# * dotlist ** sublist # numlist ## sublist
|
|
||||||
# {{{ |caption|c [img[title|filename]]
|
|
||||||
# pre text |!header|!header|h [img[filename]]
|
|
||||||
# }}} |cell|cell| [img[title|filename][link]]
|
|
||||||
# <<< |>|colspan| [img[filename][link]]
|
|
||||||
# blockquote |rowspan|one| [<img[filename]]
|
|
||||||
# <<< |~|two| [>img[filename]]
|
|
||||||
# >quote1 |left| right|
|
|
||||||
# >>quote2 |>| center |
|
|
||||||
# >>>quote3
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 09/03/2012 05:08
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: MainMenu
|
|
||||||
|
|
||||||
[[GettingStarted]]
|
|
40
doc/SKvm.twp
40
doc/SKvm.twp
|
@ -1,40 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:19
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: SKvm
|
|
||||||
|
|
||||||
{{{
|
|
||||||
SKvm: lancer une machine virtuelle kvm
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
SKvm [options] vmName
|
|
||||||
SKvm {-l|-A|-g}
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-n, --check
|
|
||||||
Ne rien faire excepté s'assurer que les modules kvm sont chargés
|
|
||||||
-u, --user
|
|
||||||
Lancer l'opération avec les droits de l'utilisateur courant. Par défaut,
|
|
||||||
ce script tente d'acquérir les droits de root.
|
|
||||||
-l, --list
|
|
||||||
Lister les machines virtuelles
|
|
||||||
-s, --start
|
|
||||||
Démarrer la machine virtuelle (par défaut)
|
|
||||||
Si le nom de la machine virtuelle n'est pas spécifiée, un menu est
|
|
||||||
affiché
|
|
||||||
-k, --stop
|
|
||||||
Arrêter la machine virtuelle
|
|
||||||
-H, --destroy
|
|
||||||
Arrêter sauvagement la machine virtuelle
|
|
||||||
-r, --restart
|
|
||||||
Redémarrer la machine virtuelle
|
|
||||||
-S, --managed-save
|
|
||||||
Enregistrer l'état de la machine virtuelle
|
|
||||||
-A, --stop-all
|
|
||||||
Arrêter toutes les machines virtuelles qui tournent actuellement
|
|
||||||
-g, --gui
|
|
||||||
Afficher le gestionnaire de machines virtuelle
|
|
||||||
}}}
|
|
|
@ -1,25 +0,0 @@
|
||||||
# SVirtualBox
|
|
||||||
|
|
||||||
~~~
|
|
||||||
SVirtualBox: lancer une machine virtuelle VirtualBox
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
SVirtualBox [options] vmName
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-n Ne rien faire excepté s'assurer que les modules VirtualBox sont chargés
|
|
||||||
-l Lister les machines virtuelles
|
|
||||||
-s Démarrer la machine virtuelle (par défaut)
|
|
||||||
Si le nom de la machine virtuelle n'est pas spécifiée, un menu est
|
|
||||||
affiché
|
|
||||||
-b Démarrer la VM sans interface graphique. Cette option n'est valide
|
|
||||||
qu'avec -s
|
|
||||||
-k Arrêter la machine virtuelle (par ACPI)
|
|
||||||
-p Mettre en veille la machine virtuelle (par ACPI)
|
|
||||||
-H Arrêter sauvagement la machine virtuelle
|
|
||||||
-R Redémarrer sauvagement la machine virtuelle
|
|
||||||
-S Enregistrer l'état de la machine virtuelle
|
|
||||||
-g Afficher le gestionnaire de machines virtuelle
|
|
||||||
~~~
|
|
||||||
|
|
||||||
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
|
@ -1,29 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:19
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: SVirtualBox
|
|
||||||
|
|
||||||
{{{
|
|
||||||
SVirtualBox: lancer une machine virtuelle VirtualBox
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
SVirtualBox [options] vmName
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-n Ne rien faire excepté s'assurer que les modules VirtualBox sont chargés
|
|
||||||
-l Lister les machines virtuelles
|
|
||||||
-s Démarrer la machine virtuelle (par défaut)
|
|
||||||
Si le nom de la machine virtuelle n'est pas spécifiée, un menu est
|
|
||||||
affiché
|
|
||||||
-b Démarrer la VM sans interface graphique. Cette option n'est valide
|
|
||||||
qu'avec -s
|
|
||||||
-k Arrêter la machine virtuelle (par ACPI)
|
|
||||||
-p Mettre en veille la machine virtuelle (par ACPI)
|
|
||||||
-H Arrêter sauvagement la machine virtuelle
|
|
||||||
-R Redémarrer sauvagement la machine virtuelle
|
|
||||||
-S Enregistrer l'état de la machine virtuelle
|
|
||||||
-g Afficher le gestionnaire de machines virtuelle
|
|
||||||
}}}
|
|
|
@ -1,25 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
# Pense-bête:
|
|
||||||
# ''bold'' ==striked== __underline__ //italic// ^^super^^ ~~sub~~
|
|
||||||
# @@highlight@@ @@color:red;background-color:white; rouge sur noir@@
|
|
||||||
# ~NotAWikiWord [[force wikiword]] [[friendly name|WikiWord]]
|
|
||||||
# [[external|http://site.com]] ---- {{monospace}}
|
|
||||||
# !h1 !!h2 !!!h3 !!!!h4 !!!!!h5
|
|
||||||
# * dotlist ** sublist # numlist ## sublist
|
|
||||||
# {{{ |caption|c [img[title|filename]]
|
|
||||||
# pre text |!header|!header|h [img[filename]]
|
|
||||||
# }}} |cell|cell| [img[title|filename][link]]
|
|
||||||
# <<< |>|colspan| [img[filename][link]]
|
|
||||||
# blockquote |rowspan|one| [<img[filename]]
|
|
||||||
# <<< |~|two| [>img[filename]]
|
|
||||||
# >quote1 |left| right|
|
|
||||||
# >>quote2 |>| center |
|
|
||||||
# >>>quote3
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 09/03/2012 05:08
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: SiteSubtitle
|
|
||||||
|
|
||||||
Outils divers pour linux/macosx, et librairies pour bash
|
|
|
@ -1,25 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
# Pense-bête:
|
|
||||||
# ''bold'' ==striked== __underline__ //italic// ^^super^^ ~~sub~~
|
|
||||||
# @@highlight@@ @@color:red;background-color:white; rouge sur noir@@
|
|
||||||
# ~NotAWikiWord [[force wikiword]] [[friendly name|WikiWord]]
|
|
||||||
# [[external|http://site.com]] ---- {{monospace}}
|
|
||||||
# !h1 !!h2 !!!h3 !!!!h4 !!!!!h5
|
|
||||||
# * dotlist ** sublist # numlist ## sublist
|
|
||||||
# {{{ |caption|c [img[title|filename]]
|
|
||||||
# pre text |!header|!header|h [img[filename]]
|
|
||||||
# }}} |cell|cell| [img[title|filename][link]]
|
|
||||||
# <<< |>|colspan| [img[filename][link]]
|
|
||||||
# blockquote |rowspan|one| [<img[filename]]
|
|
||||||
# <<< |~|two| [>img[filename]]
|
|
||||||
# >quote1 |left| right|
|
|
||||||
# >>quote2 |>| center |
|
|
||||||
# >>>quote3
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 09/03/2012 05:08
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: SiteTitle
|
|
||||||
|
|
||||||
nutools
|
|
|
@ -1,25 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
# Pense-bête:
|
|
||||||
# ''bold'' ==striked== __underline__ //italic// ^^super^^ ~~sub~~
|
|
||||||
# @@highlight@@ @@color:red;background-color:white; rouge sur noir@@
|
|
||||||
# ~NotAWikiWord [[force wikiword]] [[friendly name|WikiWord]]
|
|
||||||
# [[external|http://site.com]] ---- {{monospace}}
|
|
||||||
# !h1 !!h2 !!!h3 !!!!h4 !!!!!h5
|
|
||||||
# * dotlist ** sublist # numlist ## sublist
|
|
||||||
# {{{ |caption|c [img[title|filename]]
|
|
||||||
# pre text |!header|!header|h [img[filename]]
|
|
||||||
# }}} |cell|cell| [img[title|filename][link]]
|
|
||||||
# <<< |>|colspan| [img[filename][link]]
|
|
||||||
# blockquote |rowspan|one| [<img[filename]]
|
|
||||||
# <<< |~|two| [>img[filename]]
|
|
||||||
# >quote1 |left| right|
|
|
||||||
# >>quote2 |>| center |
|
|
||||||
# >>>quote3
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 09/03/2012 05:08
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: SiteUrl
|
|
||||||
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 15/03/2012 22:20
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: _root
|
|
||||||
|
|
||||||
{{{
|
|
||||||
_root: devenir l'utilisateur root, avec 'sudo' si possible, ou 'su' si
|
|
||||||
'sudo' n'est pas installé
|
|
||||||
}}}
|
|
|
@ -1,69 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: apacheconfig
|
|
||||||
|
|
||||||
{{{
|
|
||||||
apacheconfig: Gérer la configuration d'un serveur web apache
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
apacheconfig -c
|
|
||||||
apacheconfig -t -- args...
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-c, --create
|
|
||||||
Créer un nouveau répertoire de configuration pour un hôte
|
|
||||||
-d, --destdir DESTDIR[=apacheconfig]
|
|
||||||
Nom du répertoire local de configuration.
|
|
||||||
|
|
||||||
-t, --template [OPT]
|
|
||||||
Gérer les fichiers du répertoire local avec templatectl. La valeur de
|
|
||||||
cette option est utilisée comme argument court pour l'invocation de
|
|
||||||
templatectl, e.g
|
|
||||||
apacheconfig -tm args
|
|
||||||
est équivalent à
|
|
||||||
templatectl -m args
|
|
||||||
Les arguments qui restent sont passés tels quels à templatectl
|
|
||||||
Les options courantes de templatectl -l, -v, -m, -L sont disponibles
|
|
||||||
directement
|
|
||||||
--help-template
|
|
||||||
Afficher l'aide concernent la gestion des templates.
|
|
||||||
Equivalent à -t -- --help
|
|
||||||
-h, --host HOST
|
|
||||||
Spécifier l'hôte. Equivalent à -v host=HOST
|
|
||||||
--sysname SYSNAME
|
|
||||||
--sysdist SYSDIST
|
|
||||||
-s, --sysver SYSVER
|
|
||||||
Spécifier la distribution pour laquelle synchroniser le template. Par
|
|
||||||
défaut, choisir les valeurs correspondantes au système courant.
|
|
||||||
Les options -7 et -8 sont des aliases respectivement pour -s wheezy et
|
|
||||||
-s jessie, parce que les fichiers par défaut ont changé à partir de
|
|
||||||
debian jessie.
|
|
||||||
|
|
||||||
-u, --update, --deploy
|
|
||||||
Mettre à jour la configuration système à partir du répertoire local.
|
|
||||||
Lors du déploiement de la configuration, les valeurs des variables
|
|
||||||
dynamiques sont remplacées dans les fichiers destination.
|
|
||||||
Les arguments qui restent sont passés tels quels à apache_autoconf
|
|
||||||
-r, --certsdir CERTSDIR
|
|
||||||
Spécifier le cas échéant le répertoire contenant les certificats à
|
|
||||||
déployer. Cet argument est requis si le répertoire certsconf/ existe.
|
|
||||||
|
|
||||||
--localhosts
|
|
||||||
Créer dans le fichier /etc/hosts tous les noms d'hôte ayant un suffixe
|
|
||||||
.local mentionnés dans les fichiers de site. Cette option est utile pour
|
|
||||||
le développement et les tests.
|
|
||||||
-C, --one-conf CONF
|
|
||||||
Ne déployer que le fichier de configuration spécifié. Cette option est
|
|
||||||
utilisée avec --deploy et est utile pour le développement et les tests.
|
|
||||||
-M, --one-module MODULE
|
|
||||||
Ne déployer que le fichier de module spécifié. Cette option est utilisée
|
|
||||||
avec --deploy et est utile pour le développement et les tests.
|
|
||||||
-S, --one-site SITE
|
|
||||||
Ne déployer que le fichier de site spécifié. Cette option est utilisée
|
|
||||||
avec --deploy ou --localhosts et est utile pour le développement et les
|
|
||||||
tests.
|
|
||||||
}}}
|
|
|
@ -1,39 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: authftp
|
|
||||||
|
|
||||||
{{{
|
|
||||||
authftp: Se connecter sur un site FTP authentifié
|
|
||||||
Ce script nécessite ncftp. Il est conçu pour faciliter l'accès à des sites FTP
|
|
||||||
s'il est requis d'y accéder par un proxy FTP pour les connexion authentifiées.
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
authftp [options] host login password [path]
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-p, --proxy
|
|
||||||
-n, --noproxy
|
|
||||||
Forcer l'utilisation, resp. ne pas utiliser, le proxy FTP (i.e. faire la
|
|
||||||
connexion directement)
|
|
||||||
-l, --lftp
|
|
||||||
Se connecter avec lftp au lieu de ncftp. Le fonctionnement n'est pas
|
|
||||||
garanti si l'on utilise un proxy FTP.
|
|
||||||
-o OPTION
|
|
||||||
Ajouter une option à la commande lancée. Si l'option prend un argument,
|
|
||||||
il faut doubler l'option -o, e.g.
|
|
||||||
authftp -l -o -e -o 'mirror remote local' host login pass
|
|
||||||
Dans cet exemple, l'option -e de lftp est utilisée pour faire un miroir
|
|
||||||
local du répertoire remote.
|
|
||||||
--tls
|
|
||||||
Indiquer que la connexion se fera en TLS. Implique --lftp puisque ncftp
|
|
||||||
ne le supporte pas.
|
|
||||||
|
|
||||||
note: A cause d'une limitation de lftp, ce n'est pas possible de se connecter
|
|
||||||
automatiquement avec lftp si le mot de passe contient une virgule. A cause de la
|
|
||||||
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 @
|
|
||||||
}}}
|
|
|
@ -1,20 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 13/05/2016 09:36
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: caturl
|
|
||||||
|
|
||||||
{{{
|
|
||||||
caturl: Afficher une url
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
caturl <file.url|file.desktop|URL>
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-c, --check
|
|
||||||
Vérifier que le fichier est valide
|
|
||||||
-g, --get
|
|
||||||
Attaquer l'url spécifiée avec curl
|
|
||||||
}}}
|
|
|
@ -1,11 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 15/03/2012 22:19
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: compileAndGo
|
|
||||||
|
|
||||||
{{{
|
|
||||||
compileAndGo: see http://Yost.com/computers/compileAndGo
|
|
||||||
}}}
|
|
18
doc/cssh.twp
18
doc/cssh.twp
|
@ -1,18 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: cssh
|
|
||||||
|
|
||||||
{{{
|
|
||||||
cssh: Faire une connexion ssh en lançant automatiquement un screen sur l'hôte distant
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
cssh [user@]host [options]
|
|
||||||
|
|
||||||
En principe, hormis l'argument user@host, il ne faudrait spécifier que des
|
|
||||||
options. Dans le cas où d'autres arguments seraient spécifiés, les meilleurs
|
|
||||||
efforts sont faits pour lancer ces commandes avant screen.
|
|
||||||
}}}
|
|
|
@ -1,35 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: doinplace
|
|
||||||
|
|
||||||
{{{
|
|
||||||
doinplace: filtrer en place un fichier à travers une suite de commandes
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
doinplace FILE COMMAND [ARGS...]
|
|
||||||
|
|
||||||
Si on utilise une commande avec des options, penser à utliser '--' pour séparer
|
|
||||||
les options de ce script des options de la commande
|
|
||||||
|
|
||||||
En plus des commandes systèmes, il est possible d'utiliser toute fonction de
|
|
||||||
nutools qui effectue des traitement sur un flux comme stripnl, filter_empty,
|
|
||||||
merge_contlines, filter_comment, filter_conf, etc. Les fonctions nl2lf, nl2crlf,
|
|
||||||
nl2cr, latin1compat et noaccents sont aussi disponibles par convenance.
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-p, --evalp
|
|
||||||
Evaluer la commande avec evalp(), ce qui permet de chainer plusieurs
|
|
||||||
commandes en les séparant par //. Cette option est automatiquement
|
|
||||||
activée si ce script est lancé avec le nom doinplacex
|
|
||||||
-g, --ignore-error, --replace-always
|
|
||||||
Normalement, le fichier n'est pas remplacé si la commande retourne une
|
|
||||||
erreur. Avec cette option, le fichier est remplacé quel que soit le code
|
|
||||||
de retour de la commande. A utiliser par exemple avec des commandes
|
|
||||||
comme grep qui peuvent retourner FAUX s'ils ne trouvent pas le motif.
|
|
||||||
Cette option est automatiquement activée si ce script est lancé avec le
|
|
||||||
nom doinplacef
|
|
||||||
}}}
|
|
|
@ -1,30 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: dumpclients
|
|
||||||
|
|
||||||
{{{
|
|
||||||
dumpclients: afficher les connexions TCP entrantes sur un port
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
dumpclients [options] port
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-4, --only-tcp
|
|
||||||
-6, --only-tcp6
|
|
||||||
Se limiter au protocole spécifié. Par défaut, afficher toutes les
|
|
||||||
connexions, qu'elles soient en IPv4 ou en IPv6
|
|
||||||
-a, --all
|
|
||||||
Afficher tous les sockets, y compris les ports d'écoute. Par défaut,
|
|
||||||
seules les sockets ouvertes sont affichées.
|
|
||||||
-n, --numeric
|
|
||||||
Afficher uniquement les adresses IP au lieu du nom d'hôte.
|
|
||||||
-z, --allow-no-port
|
|
||||||
Ne pas exiger que le port soit spécifié
|
|
||||||
--show none,ip,port,state
|
|
||||||
Spécifier d'afficher comme informations supplémentaire: rien, l'adresse
|
|
||||||
ip, le port et/ou l'état. Par défaut, afficher le port et l'état.
|
|
||||||
}}}
|
|
95
doc/em.twp
95
doc/em.twp
|
@ -1,95 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: em
|
|
||||||
|
|
||||||
{{{
|
|
||||||
Usage: /usr/bin/emacs [OPTION-OR-FILENAME]...
|
|
||||||
|
|
||||||
Run Emacs, the extensible, customizable, self-documenting real-time
|
|
||||||
display editor. The recommended way to start Emacs for normal editing
|
|
||||||
is with no options at all.
|
|
||||||
|
|
||||||
Run M-x info RET m emacs RET m emacs invocation RET inside Emacs to
|
|
||||||
read the main documentation for these command-line arguments.
|
|
||||||
|
|
||||||
Initialization options:
|
|
||||||
|
|
||||||
--batch do not do interactive display; implies -q
|
|
||||||
--daemon start a server in the background
|
|
||||||
--debug-init enable Emacs Lisp debugger for init file
|
|
||||||
--display, -d DISPLAY use X server DISPLAY
|
|
||||||
--no-desktop do not load a saved desktop
|
|
||||||
--no-init-file, -q load neither ~/.emacs nor default.el
|
|
||||||
--no-shared-memory, -nl do not use shared memory
|
|
||||||
--no-site-file do not load site-start.el
|
|
||||||
--no-splash do not display a splash screen on startup
|
|
||||||
--no-window-system, -nw do not communicate with X, ignoring $DISPLAY
|
|
||||||
--quick, -Q equivalent to -q --no-site-file --no-splash
|
|
||||||
--script FILE run FILE as an Emacs Lisp script
|
|
||||||
--terminal, -t DEVICE use DEVICE for terminal I/O
|
|
||||||
--user, -u USER load ~USER/.emacs instead of your own
|
|
||||||
|
|
||||||
Action options:
|
|
||||||
|
|
||||||
FILE visit FILE using find-file
|
|
||||||
+LINE go to line LINE in next FILE
|
|
||||||
+LINE:COLUMN go to line LINE, column COLUMN, in next FILE
|
|
||||||
--directory, -L DIR add DIR to variable load-path
|
|
||||||
--eval EXPR evaluate Emacs Lisp expression EXPR
|
|
||||||
--execute EXPR evaluate Emacs Lisp expression EXPR
|
|
||||||
--file FILE visit FILE using find-file
|
|
||||||
--find-file FILE visit FILE using find-file
|
|
||||||
--funcall, -f FUNC call Emacs Lisp function FUNC with no arguments
|
|
||||||
--insert FILE insert contents of FILE into current buffer
|
|
||||||
--kill exit without asking for confirmation
|
|
||||||
--load, -l FILE load Emacs Lisp FILE using the load function
|
|
||||||
--visit FILE visit FILE using find-file
|
|
||||||
|
|
||||||
Display options:
|
|
||||||
|
|
||||||
--background-color, -bg COLOR window background color
|
|
||||||
--basic-display, -D disable many display features;
|
|
||||||
used for debugging Emacs
|
|
||||||
--border-color, -bd COLOR main border color
|
|
||||||
--border-width, -bw WIDTH width of main border
|
|
||||||
--color, --color=MODE override color mode for character terminals;
|
|
||||||
MODE defaults to `auto', and can also
|
|
||||||
be `never', `auto', `always',
|
|
||||||
or a mode name like `ansi8'
|
|
||||||
--cursor-color, -cr COLOR color of the Emacs cursor indicating point
|
|
||||||
--font, -fn FONT default font; must be fixed-width
|
|
||||||
--foreground-color, -fg COLOR window foreground color
|
|
||||||
--fullheight, -fh make the first frame high as the screen
|
|
||||||
--fullscreen, -fs make first frame fullscreen
|
|
||||||
--fullwidth, -fw make the first frame wide as the screen
|
|
||||||
--maximized, -mm make the first frame maximized
|
|
||||||
--geometry, -g GEOMETRY window geometry
|
|
||||||
--no-bitmap-icon, -nbi do not use picture of gnu for Emacs icon
|
|
||||||
--iconic start Emacs in iconified state
|
|
||||||
--internal-border, -ib WIDTH width between text and main border
|
|
||||||
--line-spacing, -lsp PIXELS additional space to put between lines
|
|
||||||
--mouse-color, -ms COLOR mouse cursor color in Emacs window
|
|
||||||
--name NAME title for initial Emacs frame
|
|
||||||
--no-blinking-cursor, -nbc disable blinking cursor
|
|
||||||
--reverse-video, -r, -rv switch foreground and background
|
|
||||||
--title, -T TITLE title for initial Emacs frame
|
|
||||||
--vertical-scroll-bars, -vb enable vertical scroll bars
|
|
||||||
--xrm XRESOURCES set additional X resources
|
|
||||||
--parent-id XID set parent window
|
|
||||||
--help display this help and exit
|
|
||||||
--version output version information and exit
|
|
||||||
|
|
||||||
You can generally also specify long option names with a single -; for
|
|
||||||
example, -batch as well as --batch. You can use any unambiguous
|
|
||||||
abbreviation for a --option.
|
|
||||||
|
|
||||||
Various environment variables and window system resources also affect
|
|
||||||
Emacs' operation. See the main documentation.
|
|
||||||
|
|
||||||
Report bugs to bug-gnu-emacs@gnu.org. First, please see the Bugs
|
|
||||||
section of the Emacs manual or the file BUGS.
|
|
||||||
}}}
|
|
|
@ -1,64 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: fconv
|
|
||||||
|
|
||||||
{{{
|
|
||||||
fconv: convertir un fichier ou les fichiers d'un répertoire
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
fconv -f FILE [cmds...]
|
|
||||||
fconv FILE [cmds...]
|
|
||||||
|
|
||||||
Une ou plusieurs commandes peuvent être spécifiées, séparées par //
|
|
||||||
La commande par défaut est 'lf'
|
|
||||||
Si des commandes utilisant des options sont utilisées, penser à séparer les
|
|
||||||
options de fconv avec --
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-N, --detect-always
|
|
||||||
Pour la commande conv, ne pas optimiser le calcul de l'encoding. Cette
|
|
||||||
option n'est valide que si src_enc n'est pas spécifié. On assume que
|
|
||||||
tous les fichiers n'ont pas le même encoding: l'encoding src_enc est
|
|
||||||
donc recalculé à chaque fois.
|
|
||||||
-r, --reverse
|
|
||||||
Pour la commande conv, inverser src_enc et dest_enc, qui doivent être
|
|
||||||
tous les deux spécifiés.
|
|
||||||
-f, --file FILE
|
|
||||||
Spécifier le fichier ou le répertoire concerné par la conversion. Les
|
|
||||||
aliases -d et --dir sont aussi reconnus.
|
|
||||||
Si cette option n'est pas spécifiée, le premier argument est considéré
|
|
||||||
comme le nom du fichier ou du répertoire à convertir. Par défaut,
|
|
||||||
convertir l'entrée standard.
|
|
||||||
Si un répertoire est spécifié, tous les fichiers de ce répertoire et de
|
|
||||||
ses sous-répertoires sont recherchés de façon récursive, sans limite de
|
|
||||||
profondeur. Ensuite, chacun de ces fichiers est converti.
|
|
||||||
--show-cmd
|
|
||||||
Afficher la commande qui serait exécutée
|
|
||||||
|
|
||||||
COMMANDES
|
|
||||||
c, conv dest_enc [src_enc]
|
|
||||||
Convertir le fichier dans un autre encoding.
|
|
||||||
dest_enc est l'encoding destination. Il doit être spécifié.
|
|
||||||
src_enc est l'encoding source. S'il n'est pas spécifié ou vaut 'detect',
|
|
||||||
il est autodétecté.
|
|
||||||
U, utf8 [src_enc]
|
|
||||||
Equivalent à conv utf8 src_enc
|
|
||||||
L, latin1 [src_enc]
|
|
||||||
Equivalent à conv latin1 src_enc
|
|
||||||
lf
|
|
||||||
crlf
|
|
||||||
cr
|
|
||||||
Convertir respectivement les caractères de fin de ligne en LF, CR/LF ou CR
|
|
||||||
lc, latin1compat
|
|
||||||
Transformer certains caratères UTF-8 en équivalents qui existent en Latin1
|
|
||||||
na, noaccents
|
|
||||||
Transformer les caractères accentués en caractères non accentués
|
|
||||||
sort [-u]
|
|
||||||
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
|
|
||||||
lignes de façon unique.
|
|
||||||
}}}
|
|
|
@ -1,58 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: fnconv
|
|
||||||
|
|
||||||
{{{
|
|
||||||
fnconv: renommer un fichier ou les fichiers d'un répertoire
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
fnconv -f FILE [cmds...]
|
|
||||||
fnconv FILE [cmds...]
|
|
||||||
|
|
||||||
Une ou plusieurs commandes peuvent être spécifiées, séparées //
|
|
||||||
La commande par défaut est 'fixcase'
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-N, --detect-always
|
|
||||||
Pour la commande conv, ne pas optimiser le calcul de l'encoding. Cette
|
|
||||||
option n'est valide que si src_enc n'est pas spécifié. On assume que
|
|
||||||
tous les fichiers n'ont pas le même encoding: l'encoding src_enc est
|
|
||||||
donc recalculé à chaque fois.
|
|
||||||
-r, --reverse
|
|
||||||
Pour la commande conv, inverser src_enc et dest_enc, qui doivent être
|
|
||||||
tous les deux spécifiés.
|
|
||||||
-f, --file FILE
|
|
||||||
Spécifier le fichier ou le répertoire concerné par le renommage. Les
|
|
||||||
aliases -d et --dir sont aussi reconnus.
|
|
||||||
Si cette option n'est pas spécifiée, le premier argument est considéré
|
|
||||||
comme le nom du fichier ou du répertoire à renommer.
|
|
||||||
Si un répertoire est spécifié, le traitement est appliqué à tous les
|
|
||||||
fichiers et répertoires de façon récursive, sans limite de profondeur.
|
|
||||||
--show-cmd
|
|
||||||
Afficher la commande qui serait exécutée
|
|
||||||
|
|
||||||
COMMANDES
|
|
||||||
C, conv dest_enc [src_enc]
|
|
||||||
Convertir le nom du fichier dans un autre encoding.
|
|
||||||
dest_enc est l'encoding destination. Il doit être spécifié.
|
|
||||||
src_enc est l'encoding source. S'il n'est pas spécifié ou vaut 'detect',
|
|
||||||
il est autodétecté.
|
|
||||||
U, utf8 [src_enc]
|
|
||||||
Equivalent à conv utf8 src_enc
|
|
||||||
L, latin1 [src_enc]
|
|
||||||
Equivalent à conv latin1 src_enc
|
|
||||||
lc, latin1compat
|
|
||||||
Transformer certains caratères UTF-8 en équivalents qui existent en Latin1
|
|
||||||
na, noaccents
|
|
||||||
Transformer les caractères accentués en caractères non accentués
|
|
||||||
l, lowercase
|
|
||||||
Transfomer le nom en minuscule
|
|
||||||
u, uppercase
|
|
||||||
Transformer le nom en majuscule
|
|
||||||
f, fixcase
|
|
||||||
Transformer le nom en minuscule s'il est entièrement en majuscule
|
|
||||||
}}}
|
|
|
@ -1,14 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 15/03/2012 22:19
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: geturl
|
|
||||||
|
|
||||||
{{{
|
|
||||||
geturl: Télécharger un fichier avec wget ou curl
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
geturl <file.url|file.desktop|URL> [wget options]
|
|
||||||
}}}
|
|
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](): Déploiement local
|
|
||||||
* [mkusfx](): Faire une archive auto-installable avec uinst
|
|
||||||
* [ruinst](): Déploiement distant avec uinst
|
|
||||||
* [runs](): Lancer un script avec le protocole RUNS
|
|
||||||
* [rruns](): Déploiement distant avec runs
|
|
||||||
* Librairie réutilisable de scripts shell
|
|
||||||
* [uinc](): Dépliage des inclusions dans un fichier
|
|
||||||
* [ulibsync](): Faire une copie locale pour un projet de ulib et/ou pyulib
|
|
||||||
* Autres outils
|
|
||||||
* [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
|
|
|
@ -1,86 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 15/03/2012 22:19
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: mkRewriteRules
|
|
||||||
|
|
||||||
{{{
|
|
||||||
mkRewriteRules: Créer un fichier de redirections pour Apache à partir d'un certain
|
|
||||||
nombre de règles
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
mkRewriteRules -f rewrite.rules [-o RewriteRules.conf] [-w RewriteRules.html] host
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-p Générer les directives <Proxy...> et tenir compte de proxy_acls
|
|
||||||
Par défaut, le champ proxy_acls est ignoré
|
|
||||||
|
|
||||||
FORMAT des règles de mapping
|
|
||||||
============================
|
|
||||||
|
|
||||||
Les commentaires commencent par le signe "#"
|
|
||||||
Les règles sont de la forme:
|
|
||||||
src:dest:host:suffix:OPTS:prot:proxy_acls
|
|
||||||
^prefix
|
|
||||||
=literal
|
|
||||||
|
|
||||||
prot vaut par défaut http. Il peut valoir aussi https
|
|
||||||
|
|
||||||
Si dest ou suffix se terminent par $, on est en mode NO_SLASH
|
|
||||||
En mode NO_SLASH, si src se termine par $, on est en mode NO_TRAIL
|
|
||||||
|
|
||||||
* Si dest est de la forme Application.woa
|
|
||||||
En mode NO_SLASH, on génère
|
|
||||||
RewriteRule ^/src(.*) [prot://host]/cgi-bin/WebObjects/dest[/suffix]$1 [L,OPTS]
|
|
||||||
En mode NO_SLASH+NO_TRAIL, on génère
|
|
||||||
RewriteRule ^/src [prot://host]/cgi-bin/WebObjects/dest[/suffix] [L,OPTS]
|
|
||||||
En mode normal, on génère
|
|
||||||
RewriteRule ^/src$ /src/
|
|
||||||
RewriteRule ^/src/(.*) [prot://host]/cgi-bin/WebObjects/dest[/suffix]/$1 [L,OPTS]
|
|
||||||
|
|
||||||
* Si dest n'est pas de la forme Application.woa
|
|
||||||
En mode NO_SLASH, on génère
|
|
||||||
RewriteRule ^/src(.*) [prot://host]/dest[/suffix]$1 [L,OPTS]
|
|
||||||
En mode NO_SLASH+NO_TRAIL, on génère
|
|
||||||
RewriteRule ^/src [prot://host]/dest[/suffix] [L,OPTS]
|
|
||||||
En mode normal, on génère
|
|
||||||
RewriteRule ^/src$ /src/
|
|
||||||
RewriteRule ^/src/(.*) /dest[/suffix]/$1 [L,OPTS]
|
|
||||||
|
|
||||||
Si une règle est précédée d'une ou plusieurs lignes de la forme "^prefix",
|
|
||||||
ces lignes sont copiées avant chacune des commandes RewriteRule générées
|
|
||||||
pour une règle. Ceci permet d'ajouter des conditions avec RewriteCond pour
|
|
||||||
une règle. e.g.
|
|
||||||
^RewriteCond %{REMOTE_ADDR} 10\..*
|
|
||||||
src:dest.woa
|
|
||||||
qui génère:
|
|
||||||
RewriteCond %{REMOTE_ADDR} 10\..*
|
|
||||||
RewriteRule ^/src$ /src/
|
|
||||||
RewriteCond %{REMOTE_ADDR} 10\..*
|
|
||||||
RewriteRule ^/src/(.*) /cgi-bin/WebObjects/dest.woa/$1 [L]
|
|
||||||
|
|
||||||
Une ligne de la forme "=literal" est recopiée sans modifications (sans le "=")
|
|
||||||
dans le fichier de sortie.
|
|
||||||
|
|
||||||
proxy_acls est utilisé si l'option -p est spécifiée et OPTS contient P (comme
|
|
||||||
proxy), ou si le mode de réécriture requière l'utilisation d'un proxy.
|
|
||||||
|
|
||||||
* Avec la valeur "None", aucune directive <Proxy> n'est générée
|
|
||||||
* Si aucune valeur n'est spécifiée, la directive suivante est générée:
|
|
||||||
<Proxy $URL>
|
|
||||||
AddDefaultCharset off
|
|
||||||
Order Deny,Allow
|
|
||||||
Allow from all
|
|
||||||
</Proxy>
|
|
||||||
* Si une valeur est spécifiée, la directive suivante est générée:
|
|
||||||
<Proxy $URL>
|
|
||||||
AddDefaultCharset off
|
|
||||||
Order Allow,Deny
|
|
||||||
Allow from $proxy_acls
|
|
||||||
</Proxy>
|
|
||||||
|
|
||||||
Dans les exemples donnés ci-dessus, $URL est l'url générée par la réécriture,
|
|
||||||
et $proxy_acls la valeur du champ proxy_acls spécifiée ci-dessus.
|
|
||||||
}}}
|
|
|
@ -1,25 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: mkiso
|
|
||||||
|
|
||||||
{{{
|
|
||||||
mkiso: créer une image iso d'un répertoire
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
mkiso [options] srcdir [dest.iso]
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-M, --hfs
|
|
||||||
créer une image hybride ISO/HFS
|
|
||||||
-V, --volume
|
|
||||||
Nom du volume. Par défaut, prendre le nom de base du répertoire
|
|
||||||
d'origine. La taille est de 32 caractères max.
|
|
||||||
-A, --application
|
|
||||||
Description de l'application qui est sur l'image créée. Par défaut,
|
|
||||||
prendre le nom de base du répertoire d'origine. La taille est de 128
|
|
||||||
caractères max.
|
|
||||||
}}}
|
|
|
@ -1,20 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 15/03/2012 22:20
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: mkurl
|
|
||||||
|
|
||||||
{{{
|
|
||||||
mkurl: Enregistrer une url dans un fichier raccourci
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
mkurl <url> [output]
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
Par défaut, l'url est enregistrée dans un fichier homepage.url
|
|
||||||
Mais il est possible de spécifier un fichier avec l'extension .url pour un
|
|
||||||
raccourci utilisable aussi sous Windows, ou avec l'extension .desktop pour
|
|
||||||
compatibilité avec le standard XDG
|
|
||||||
}}}
|
|
|
@ -1,35 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 15/03/2012 22:20
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: mkusfx
|
|
||||||
|
|
||||||
{{{
|
|
||||||
mkusfx: Créer une archive auto-extractible qui installe son contenu avec uinst
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
mkusfx [options] [--bare] src cmd...
|
|
||||||
mkusfx [options] [--uinst] src
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
--bare
|
|
||||||
Installer le contenu de l'archive en lançant la commande 'cmd...' avec
|
|
||||||
le répertoire courant étant le contenu de l'archive. Typiquement, ce
|
|
||||||
sera une commande de forme './script', où script est un fichier situé à
|
|
||||||
la racine de l'archive
|
|
||||||
Dans ce mode d'installation, l'option --self-contained est ignorée.
|
|
||||||
--uinst
|
|
||||||
Installer le contenu de l'archive avec uinst (par défaut)
|
|
||||||
-o dest
|
|
||||||
Spécifier le fichier de sortie. Par défaut, il s'agit de
|
|
||||||
${src}-installer.run
|
|
||||||
--tmp-archive
|
|
||||||
Spécifier qu'il s'agit d'une archive temporaire. Cette archive
|
|
||||||
s'auto-détruit après utilisation.
|
|
||||||
--self-contained
|
|
||||||
Spécifier que l'archive doit pouvoir s'installer même sur un système sur
|
|
||||||
lequel nutools n'est pas installé. Cette archive contiendra une copie
|
|
||||||
locale de ulib et uinst.sh
|
|
||||||
}}}
|
|
|
@ -1,30 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: mocifs
|
|
||||||
|
|
||||||
{{{
|
|
||||||
mocifs: Monter un partage Windows/Samba/CIFS
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
mocifs [user@]host[/path] [mountpoint]
|
|
||||||
|
|
||||||
Par défaut, le répertoire distant est montée sur un répertoire avec le même nom
|
|
||||||
de base que l'hôte. Si le répertoire distant est déjà monté, il est démonté.
|
|
||||||
Les options -M et -U permettent de modifier le comportement par défaut.
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-M
|
|
||||||
Forcer le montage
|
|
||||||
-U
|
|
||||||
Forcer le démontage
|
|
||||||
-o OPTIONS
|
|
||||||
Ajouter les options spécifiées à la commande de montage mount.cifs
|
|
||||||
-u USERNAME
|
|
||||||
-p PASSWORD
|
|
||||||
-c USERNAME:PASSWORD
|
|
||||||
Spécifier les credentials à utiliser pour la connexion
|
|
||||||
}}}
|
|
|
@ -1,44 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: modav
|
|
||||||
|
|
||||||
{{{
|
|
||||||
modav: Monter un répertoire sur un hôte distant avec davfs
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
modav http[s]://host[/path] [mountpoint]
|
|
||||||
|
|
||||||
Par défaut, le répertoire distant est montée sur un répertoire avec le même nom
|
|
||||||
de base que l'hôte. Si le répertoire distant est déjà monté, il est démonté.
|
|
||||||
Les options -M et -U permettent de modifier le comportement par défaut.
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-M
|
|
||||||
Forcer le montage
|
|
||||||
-U
|
|
||||||
Forcer le démontage
|
|
||||||
-o OPTIONS
|
|
||||||
Ajouter les options spécifiées à la commande de montage
|
|
||||||
-u USERNAME
|
|
||||||
-p PASSWORD
|
|
||||||
-c USERNAME:PASSWORD
|
|
||||||
Si les credentials à utiliser ne sont pas configuré dans le fichier
|
|
||||||
/etc/davfs2/secrets, cette option permet de les spécifier. Si cette
|
|
||||||
option est utilisée, il est possible de rajouter
|
|
||||||
ask_auth 0
|
|
||||||
dans le fichier /etc/davfs2/davfs2.conf pour éviter le conflit qui se
|
|
||||||
produit quand des informations sont demandées interactivement. C'est le
|
|
||||||
cas par exemple si une connexion en https est faite et que la chaine de
|
|
||||||
certification n'est pas configurée. Pour mémoire, cela se fait avec
|
|
||||||
servercert myCAs.pem
|
|
||||||
dans le fichier /etc/davfs2/davfs2.conf
|
|
||||||
Bien entendu, il est préférable de configurer les credentials dans le
|
|
||||||
fichier /etc/davfs2/secrets avec la syntaxe
|
|
||||||
url username password
|
|
||||||
ou
|
|
||||||
mountpoint username password
|
|
||||||
}}}
|
|
|
@ -1,24 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: moiso
|
|
||||||
|
|
||||||
{{{
|
|
||||||
moiso: Monter une image ISO
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
moiso image.iso [mountpoint]
|
|
||||||
|
|
||||||
Par défaut, l'image iso est montée sur un répertoire avec le même nom de base.
|
|
||||||
Si l'image est déjà montée, elle est démontée. Les options -m et -u permettent
|
|
||||||
de modifier le comportement par défaut.
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-m
|
|
||||||
Forcer le montage
|
|
||||||
-u
|
|
||||||
Forcer le démontage
|
|
||||||
}}}
|
|
|
@ -1,33 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: mossh
|
|
||||||
|
|
||||||
{{{
|
|
||||||
mossh: Monter un répertoire sur un hôte distant avec sshfs
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
mossh [user@]host[:/path] [mountpoint]
|
|
||||||
|
|
||||||
Par défaut, le répertoire distant est montée sur un répertoire avec le même nom
|
|
||||||
de base que l'hôte. Si le répertoire distant est déjà monté, il est démonté.
|
|
||||||
Les options -M et -U permettent de modifier le comportement par défaut.
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-M
|
|
||||||
Forcer le montage
|
|
||||||
-U
|
|
||||||
Forcer le démontage
|
|
||||||
-o OPTIONS
|
|
||||||
Ajouter les options spécifiées à la commande de montage
|
|
||||||
-s
|
|
||||||
Equivalent à -o allow_other ou -o allow_root selon que l'on est root ou
|
|
||||||
non
|
|
||||||
-u USER
|
|
||||||
Spécifier le user pour la connexion distante, s'il n'est pas possible de
|
|
||||||
le spécifier dans l'url. En cas de conflit, la valeur dans l'url est
|
|
||||||
prioritaire par rapport à cette option.
|
|
||||||
}}}
|
|
|
@ -1,69 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: mysqlcsv
|
|
||||||
|
|
||||||
{{{
|
|
||||||
mysqlcsv: Faire une requête MySQL et formater la sortie pour traitement avec awkcsv
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
mysqlcsv [query [db]] [-- mysql options]
|
|
||||||
|
|
||||||
query est la requête sql à exécuter. Si query n'est pas spécifiée, la(les)
|
|
||||||
requête(s) sql sont prises sur l'entrée standard, ou depuis un fichier
|
|
||||||
si l'option -f est spécifiée.
|
|
||||||
db est le nom de la base de données. Cette argument n'est lu que si le nom
|
|
||||||
de la base de donnée n'est ni spécifié dans le fichier de configuration,
|
|
||||||
ni spécifié avec l'option -D
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-h, --host HOST
|
|
||||||
-P, --port PORT
|
|
||||||
-u, --user USER
|
|
||||||
-pPASSWORD
|
|
||||||
-D, --database DATABASE
|
|
||||||
Informations de connexion à la base de données
|
|
||||||
-C, --config CONFIG
|
|
||||||
Prendre les informations de connexion depuis le fichier spécifié.
|
|
||||||
Le fichier doit être de la forme
|
|
||||||
host=HOST
|
|
||||||
#post=3306
|
|
||||||
user=USER
|
|
||||||
password=PASS
|
|
||||||
#database=DB
|
|
||||||
#query=QUERY
|
|
||||||
Les variables port, database et query sont facultatives.
|
|
||||||
Les valeurs définies dans ce fichier sont prioritaires par rapport à
|
|
||||||
celles qui auraient été spécifiées sur la ligne de commande.
|
|
||||||
Utiliser password=--NOT-SET-- s'il faut se connecter sans mot de passe
|
|
||||||
Cette option peut être utilisée plusieurs fois, auquel cas les fichiers
|
|
||||||
sont chargés dans l'ordre.
|
|
||||||
--profile PROFILE
|
|
||||||
La variable $PROFILE est définie avec la valeur spécifiée avant de
|
|
||||||
sourcer les fichiers de configuration. Cela permet d'avoir des fichiers
|
|
||||||
de configuration qui calculent dynamiquement les paramètres en fonction
|
|
||||||
de la valeur du profil.
|
|
||||||
-N, --no-headers
|
|
||||||
Ne pas afficher les en-têtes
|
|
||||||
-c, --force
|
|
||||||
Continuer le traitement même en cas d'erreur
|
|
||||||
-r, --raw
|
|
||||||
Ne pas autoriser mysql à mettre en échappement certaines valeurs
|
|
||||||
retournées par le serveur. Par défaut, les transformations suivantes
|
|
||||||
sont effectuées:
|
|
||||||
newline --> \n
|
|
||||||
tab --> \t
|
|
||||||
nul --> \0
|
|
||||||
\ --> \\
|
|
||||||
-n, --nulls
|
|
||||||
Transformer dans le flux en sortie les valeurs NULL en chaines vides
|
|
||||||
-f, --input INPUT
|
|
||||||
Lire la requête depuis le fichier input au lieu de le lire depuis la
|
|
||||||
ligne de commande ou l'entrée standard. Ne pas spécifier cette option
|
|
||||||
ou utiliser '-' pour lire depuis l'entrée standard.
|
|
||||||
Cette option est ignorée si la requête est spécifiée parmi les
|
|
||||||
arguments.
|
|
||||||
}}}
|
|
|
@ -1,112 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: mysqlloadcsv
|
|
||||||
|
|
||||||
{{{
|
|
||||||
mysqlloadcsv: Charger une table MySQL avec un fichier csv
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
mysqlloadcsv [db.]table [fields...] [-- mysql options]
|
|
||||||
|
|
||||||
db est le nom de la base de données
|
|
||||||
table est le nom de la table à charger
|
|
||||||
fields est la liste des colonnes. Si cette valeur est spécifiée, il faudra
|
|
||||||
peut-être utiliser l'option -s pour ignorer le cas échéant la ligne des
|
|
||||||
en-têtes dans le fichier en entrée. Sinon, les colonnes à utiliser sont
|
|
||||||
calculées à partir du fichier en entrée.
|
|
||||||
|
|
||||||
Dans les données en entrées, qui doivent être en UTF8, les conversions suivantes
|
|
||||||
sont effectuées par MySQL:
|
|
||||||
|
|
||||||
\0 --> <caractère NUL>
|
|
||||||
\b --> <backspace>
|
|
||||||
\n --> <newline>
|
|
||||||
\r --> <carriage return>
|
|
||||||
\t --> <tab>
|
|
||||||
\Z --> Ctrl+Z
|
|
||||||
\N --> NULL
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-h, --host host
|
|
||||||
-P, --port port
|
|
||||||
-u, --user user
|
|
||||||
-ppassword
|
|
||||||
Informations de connexion à la base de données
|
|
||||||
-C, --config CONFIG
|
|
||||||
Prendre les informations de connexion depuis le fichier spécifié.
|
|
||||||
Le fichier doit être de la forme
|
|
||||||
host=HOST.TLD
|
|
||||||
#post=3306
|
|
||||||
user=USER
|
|
||||||
password=PASS
|
|
||||||
#dbtable=DB.TABLE
|
|
||||||
#fields=(FIELDS...)
|
|
||||||
# Il est possible aussi de spécifier DB et TABLE séparément:
|
|
||||||
#database=DB
|
|
||||||
#table=TABLE
|
|
||||||
Les variables port, dbtable et fields sont facultatives.
|
|
||||||
Les valeurs définies dans ce fichier sont prioritaires par rapport à
|
|
||||||
celles qui auraient été spécifiées sur la ligne de commande.
|
|
||||||
Utiliser password=--NOT-SET-- s'il faut se connecter sans mot de passe
|
|
||||||
Cette option peut être utilisée plusieurs fois, auquel cas les fichiers
|
|
||||||
sont chargés dans l'ordre.
|
|
||||||
--profile PROFILE
|
|
||||||
La variable $PROFILE est définie avec la valeur spécifiée avant de
|
|
||||||
sourcer les fichiers de configuration. Cela permet d'avoir des fichiers
|
|
||||||
de configuration qui calculent dynamiquement les paramètres en fonction
|
|
||||||
de la valeur du profil.
|
|
||||||
-f, --input INPUT
|
|
||||||
Fichier en entrée. Ne pas spécifier cette option ou utiliser '-' pour
|
|
||||||
lire depuis l'entrée standard.
|
|
||||||
-d, --auto-dbtable DB
|
|
||||||
Spécifier la base de données avec laquelle se connecter. De plus, si le
|
|
||||||
nom de la table n'est pas spécifié, prendre par défaut le nom de base du
|
|
||||||
fichier spécifié avec l'option -f
|
|
||||||
-s, --skip-lines NBLINES
|
|
||||||
Nombre de lignes à sauter dans le fichier en entrée
|
|
||||||
-n, --fake
|
|
||||||
Ne pas effectuer l'opération. Afficher simplement la commande SQL.
|
|
||||||
--run
|
|
||||||
Forcer le lancement de l'opération. Utiliser cette option avec -A pour
|
|
||||||
créer la table avec les paramètres analysés.
|
|
||||||
-T, --truncate
|
|
||||||
Vider la table avant d'effectuer le chargement
|
|
||||||
-L, --load-data
|
|
||||||
Charger les données avec la commande 'load data local'. C'est l'option
|
|
||||||
par défaut. Le fichier est transmis tel quel à MySQL.
|
|
||||||
-I, --insert-data
|
|
||||||
Charger les données en générant des commandes 'insert into'. L'effet est
|
|
||||||
en principe le même avec l'option -L (sauf que certains formats de date
|
|
||||||
exotiques seront correctement importés). Cette option peut aussi être
|
|
||||||
utilisée avec l'option -n pour générer une liste de commande à corriger
|
|
||||||
et/ou adapter.
|
|
||||||
-U, -k, --update-data KEY
|
|
||||||
Au lieu de charger de nouvelles données, essayer de mettre à jour la
|
|
||||||
table. KEY est le nom de la colonne qui est utilisée comme clé. Toutes
|
|
||||||
les autres colonnes sont les nouvelles données à mettre à jour. Si
|
|
||||||
aucune ligne ne correspond à une clé donnée, la mise à jour pour cette
|
|
||||||
ligne est ignorée.
|
|
||||||
Note: utiliser les options -T et -U ensemble n'a pas de sens, mais -T
|
|
||||||
est quand même honoré.
|
|
||||||
-Z, --null-value VALUE
|
|
||||||
Avec les options -I et -U, considérer que NULL est représenté par la
|
|
||||||
chaine spécifiée. Par défaut, utiliser \N
|
|
||||||
-z, --null-is-empty
|
|
||||||
Avec les options -I et -U, considérer que NULL est représenté par la
|
|
||||||
chaine vide. Cette option est équivalente à -Z ''
|
|
||||||
-t, --types [DEFAULT_TYPE,]FIELD:TYPE,...
|
|
||||||
Spécifier pour chaque champ mentionné le type de donnée à forcer. Le
|
|
||||||
type 'auto' signifie que le type est autodétecté. C'est la valeur par
|
|
||||||
défaut. Les autres types valides sont 'str', 'int' et 'date'
|
|
||||||
Cette option est ignorée avec l'option -L
|
|
||||||
-A, --analyse
|
|
||||||
Analyser les données et afficher une requête pour créer une table qui
|
|
||||||
pourrait contenir ces données.
|
|
||||||
Cette option implique --fake et affiche simplement la commande SQL.
|
|
||||||
Pour lancer la commande SQL générée, il faut ajouter l'option --run
|
|
||||||
APRES cette option
|
|
||||||
}}}
|
|
|
@ -1,11 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: noerr
|
|
||||||
|
|
||||||
{{{
|
|
||||||
noerr: lancer une commande en supprimant la sortie d'erreur
|
|
||||||
}}}
|
|
|
@ -1,11 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: noerror
|
|
||||||
|
|
||||||
{{{
|
|
||||||
noerror: lancer une commande en masquant son code de retour. le code de retour est toujours 0
|
|
||||||
}}}
|
|
|
@ -1,11 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: noout
|
|
||||||
|
|
||||||
{{{
|
|
||||||
noout: lancer une commande en supprimant la sortie standard
|
|
||||||
}}}
|
|
17829
doc/nutools.html
17829
doc/nutools.html
File diff suppressed because one or more lines are too long
|
@ -1,38 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: nutools
|
|
||||||
|
|
||||||
{{{
|
|
||||||
nutools: configurer ou afficher des informations sur nutools
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
nutools [VERSION]
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-C, --configure
|
|
||||||
Faire la configuration pour l'utilisateur courant en appelant uenv -u
|
|
||||||
Avec cette option, l'option -l (ou --local-profiles) est aussi reconnue
|
|
||||||
et est passée directement à uenv
|
|
||||||
-v, --version
|
|
||||||
Afficher la version de nutools installée. C'est l'option par défaut
|
|
||||||
-c, --check
|
|
||||||
Calculer si la version installée correspond à la version spécifiée
|
|
||||||
-o, --oper OPERATOR
|
|
||||||
Spécifier l'opérateur à utiliser avec l'option --check (par défaut,
|
|
||||||
utiliser l'opérateur ge, qui permet de vérifier si la version minimum
|
|
||||||
spécifiée est installée)
|
|
||||||
--eq
|
|
||||||
--ne
|
|
||||||
--lt
|
|
||||||
--le
|
|
||||||
--gt
|
|
||||||
--ge
|
|
||||||
--same
|
|
||||||
--diff
|
|
||||||
Ces options sont des raccourcis. L'option '--OP' est équivalente à
|
|
||||||
'--check --op OP'
|
|
||||||
}}}
|
|
|
@ -1,14 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 15/03/2012 22:20
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: openurl
|
|
||||||
|
|
||||||
{{{
|
|
||||||
openurl: Ouvrir une URL dans un navigateur
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
openurl <file.url|file.desktop|URL>
|
|
||||||
}}}
|
|
90
doc/pdev.twp
90
doc/pdev.twp
|
@ -1,90 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: pdev
|
|
||||||
|
|
||||||
{{{
|
|
||||||
pdev: basculer sur une branche de développement
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
pdev [FEATURE [SOURCE]]
|
|
||||||
pdev -m|-l|-d [FEATURE]
|
|
||||||
|
|
||||||
- Vérifier l'existence de la branche develop. La créer si nécessaire en la
|
|
||||||
basant sur [origin/]master.
|
|
||||||
- Vérifier s'il n'y a pas de modifications locales. Sinon, proposer de faire un
|
|
||||||
commit ou un stash.
|
|
||||||
- Si FEATURE est spécifié, et si on n'est pas déjà sur cette branche, basculer
|
|
||||||
vers cette nouvelle branche. S'il s'agit d'une nouvelle branche, la baser sur
|
|
||||||
la branche SOURCE, qui vaut par défaut develop
|
|
||||||
- Si FEATURE n'est pas spécifié, basculer sur develop s'il s'agit de la seule
|
|
||||||
solution, sinon afficher un menu pour choisir la branche de destination.
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-C, --projdir PROJDIR
|
|
||||||
Spécifier le répertoire de base du projet qui est dans git. Par défaut,
|
|
||||||
on travaille dans le répertoire courant et on laisse git trouver le
|
|
||||||
répertoire de base du projet. Avec cette option, le répertoire courant
|
|
||||||
est modifié avant de lancer les commandes git.
|
|
||||||
-O, --origin ORIGIN
|
|
||||||
Spécifier le nom de l'origine. Par défaut, utiliser 'origin'
|
|
||||||
-o, --offline
|
|
||||||
En cas de création d'une branche, ne pas pousser vers l'origine; ne pas
|
|
||||||
tenter le cas échéant de traquer la branche dans l'origine; ne pas
|
|
||||||
supprimer une branche dans l'origine. Cette option est automatiquement
|
|
||||||
activée si la variable UTOOLS_VCS_OFFLINE est définie.
|
|
||||||
--online
|
|
||||||
Annuler l'effet de la variable UTOOLS_VCS_OFFLINE: forcer le mode online
|
|
||||||
--sync
|
|
||||||
Faire un certain nombre d'opération pour 'corriger' le dépôt local: pour
|
|
||||||
chacune des branches distantes, vérifier qu'il existe une branche locale
|
|
||||||
qui la traque, et pour chaque feature branche locale, vérifier qu'il
|
|
||||||
existe une branche distante associée. Cette option nécessite --online
|
|
||||||
|
|
||||||
-s, --squash COMMIT_MSG
|
|
||||||
Si la branche actuelle est une feature branch, la merger comme un seul
|
|
||||||
commit avec le message COMMIT_MSG dans develop puis la supprimer. Puis
|
|
||||||
basculer sur la branche develop.
|
|
||||||
Cette option ne devrait pas être utilisée avec -k, puisque bien que les
|
|
||||||
modifications soient mergées, la branche elle-même n'est pas considérée
|
|
||||||
comme mergée. Les résultats sont donc indéfinis si la branche est mergée
|
|
||||||
à plusieurs reprises.
|
|
||||||
-b, --rebase
|
|
||||||
Si la branche actuelle est une feature branch, lancer 'git rebase -i'
|
|
||||||
sur la feature branch. Cela permet de réordonner les commits pour
|
|
||||||
nettoyer l'historique avant de fusionner la branche avec -m
|
|
||||||
Cette option devrait le cas échéant être utilisée immédiatement avant -m
|
|
||||||
ou alors il faut forcer le push et communiquer avec l'équipe sur le fait
|
|
||||||
que la branche de feature a été rebasée.
|
|
||||||
-m, --merge
|
|
||||||
Si la branche actuelle est une feature branch, la merger dans develop
|
|
||||||
puis la supprimer. Puis basculer sur la branche develop.
|
|
||||||
--merge-log
|
|
||||||
Ajouter un résumé des modifications sur la feature branch en ajoutant le
|
|
||||||
log en une ligne de chaque commit dans le message du merge. Cette option
|
|
||||||
n'est en principe pas nécessaire puisque 'prel -um' intègre la liste des
|
|
||||||
commits dans CHANGES.txt
|
|
||||||
-k, --keep
|
|
||||||
Avec l'option -m, ne pas supprimer une feature branch après l'avoir
|
|
||||||
fusionnée dans develop. Cela permet d'intégrer les modifications petit à
|
|
||||||
petit.
|
|
||||||
--delete
|
|
||||||
Supprimer une feature branch, à condition qu'elle aie déjà été
|
|
||||||
entièrement fusionnée dans la branch develop
|
|
||||||
--force-delete
|
|
||||||
Supprimer une feature branch, même si elle n'a pas encore été fusionnée
|
|
||||||
dans la branche develop
|
|
||||||
|
|
||||||
-l, --log
|
|
||||||
-d, --diff
|
|
||||||
Afficher les modifications entre deux branches. L'option --log affiche
|
|
||||||
les modifications dans l'ordre alors que --diff affiche les différences
|
|
||||||
sous forme de diff. Les deux options peuvent être combinées et ont
|
|
||||||
l'effet de 'git log -p'
|
|
||||||
La branche comparée, s'il elle n'est pas spécifiée, est par défaut la
|
|
||||||
branche courante. S'il s'agit d'une feature branch, elle est comparée à
|
|
||||||
develop. S'il s'agit de la branche develop, elle est comparée à master.
|
|
||||||
}}}
|
|
105
doc/prel.twp
105
doc/prel.twp
|
@ -1,105 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: prel
|
|
||||||
|
|
||||||
{{{
|
|
||||||
prel: basculer sur une branche de release
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
prel -u [SOURCE]
|
|
||||||
prel -c [RELEASE [SOURCE]]
|
|
||||||
prel -m|-l|-d [RELEASE]
|
|
||||||
|
|
||||||
- Vérifier s'il n'y a pas de modifications locales. Sinon, proposer de faire un
|
|
||||||
commit ou un stash.
|
|
||||||
- Avec l'option -c, s'il existe une branche de release, proposer de basculer
|
|
||||||
vers elle ou sur la branche master. Sinon, basculer sur la branche master.
|
|
||||||
- Avec l'option -u, proposer ou fixer une branche de release à créer. Si elle
|
|
||||||
existe déjà, basculer vers elle. Sinon, la créer en la basant sur SOURCE, qui
|
|
||||||
vaut par défaut develop
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-C, --projdir PROJDIR
|
|
||||||
Spécifier le répertoire de base du projet qui est dans git. Par défaut,
|
|
||||||
on travaille dans le répertoire courant et on laisse git trouver le
|
|
||||||
répertoire de base du projet. Avec cette option, le répertoire courant
|
|
||||||
est modifié avant de lancer les commandes git.
|
|
||||||
-O, --origin ORIGIN
|
|
||||||
Spécifier le nom de l'origine. Par défaut, utiliser 'origin'
|
|
||||||
-o, --offline
|
|
||||||
En cas de création d'une branche, ne pas pousser vers l'origine; ne pas
|
|
||||||
tenter le cas échéant de traquer la branche dans l'origine; ne pas
|
|
||||||
supprimer une branche dans l'origine. Cette option est automatiquement
|
|
||||||
activée si la variable UTOOLS_VCS_OFFLINE est définie.
|
|
||||||
--online
|
|
||||||
Annuler l'effet de la variable UTOOLS_VCS_OFFLINE: forcer le mode online
|
|
||||||
|
|
||||||
-c, --checkout
|
|
||||||
Basculer vers une branche de release existante. C'est l'option par
|
|
||||||
défaut. Si aucune branche de release n'existe, basculer vers master
|
|
||||||
-u, --update
|
|
||||||
Préparer une nouvelle release. Utiliser une des options -x, -z ou -p
|
|
||||||
pour spécifier le type de release à préparer. Si la branche qui serait
|
|
||||||
créée pour le type de release existe déjà, basculer vers cette branche.
|
|
||||||
S'il faut la créer, la baser sur la branche SOURCE, qui vaut par défaut
|
|
||||||
develop
|
|
||||||
--menu
|
|
||||||
-x, --major
|
|
||||||
-z, --minor
|
|
||||||
-p, --patchlevel
|
|
||||||
Utilisé avec l'option -u, soit afficher un menu pour choisir la version
|
|
||||||
de la nouvelle release (par défaut), soit préparer respectivement une
|
|
||||||
release majeure, mineure, ou pour correction de bug.
|
|
||||||
-v-OPT
|
|
||||||
Avec l'option -u, spécifier une option de pver permettant de choisir la
|
|
||||||
version de la nouvelle release. Les options supportées sont -v, -l, -a,
|
|
||||||
-b, -r et -R. Par exemple, si la version actuelle sur la branche master
|
|
||||||
est 0.2.3, les options '-uz -v-lbeta' permettent de préparer la release
|
|
||||||
0.3.0-beta
|
|
||||||
En principe, cette option n'a pas à être utilisée, puisque dans une
|
|
||||||
branche de release, on peut faire vivre les versions de pré-release
|
|
||||||
jusqu'à la release finale. Ainsi, la branche de release est nommée
|
|
||||||
d'après la version finale, mais le projet peut recevoir une version de
|
|
||||||
pré-release incrémentale.
|
|
||||||
-w, --write
|
|
||||||
Si une nouvelle branche est créée avec -u, mettre à jour le fichier
|
|
||||||
VERSION.txt avec pver. C'est l'option par défaut.
|
|
||||||
-n, --no-write
|
|
||||||
Si une nouvelle branche est créée avec -u, NE PAS mettre à jour le
|
|
||||||
fichier VERSION.txt avec pver. Utiliser cette option si la mise à jour
|
|
||||||
du numéro de version doit être faite d'une manière particulière.
|
|
||||||
-e, --edit
|
|
||||||
Editer le fichier CHANGES.txt autogénéré par -u -w
|
|
||||||
Cette option est surtout utile si -m est utilisé avec -u, pour donner la
|
|
||||||
possibilité de corriger la liste des modifications avant leur
|
|
||||||
enregistrement définitif.
|
|
||||||
|
|
||||||
-m, --merge
|
|
||||||
Si la branche actuelle est une branche de release, ou s'il existe une
|
|
||||||
branche de release, la merger dans master, puis dans develop, puis la
|
|
||||||
supprimer. Puis basculer sur la branche master.
|
|
||||||
S'il n'existe pas de branche de release, proposer de fusionner les
|
|
||||||
modifications de la branche develop dans la branche master, sans
|
|
||||||
préparer de branche de release au préalable.
|
|
||||||
--delete
|
|
||||||
Supprimer une branche de release, à condition qu'elle aie déjà été
|
|
||||||
entièrement fusionnée dans la branch master
|
|
||||||
--force-delete
|
|
||||||
Supprimer une branche de release, même si elle n'a pas encore été
|
|
||||||
fusionnée dans la branche master
|
|
||||||
|
|
||||||
-s, --summary
|
|
||||||
Afficher la liste des différences entre la branche develop et la branche
|
|
||||||
master, comme elle serait générée par les options -u -w pour le fichier
|
|
||||||
CHANGES.txt
|
|
||||||
-l, --log
|
|
||||||
Afficher les modifications actuellement effectuée dans la branche de
|
|
||||||
release par rapport à develop.
|
|
||||||
-d, --diff
|
|
||||||
Afficher les modifications actuellement effectuée dans la branche de
|
|
||||||
release par rapport à develop, sous forme de diff.
|
|
||||||
}}}
|
|
98
doc/pver.md
98
doc/pver.md
|
@ -1,98 +0,0 @@
|
||||||
# pver
|
|
||||||
|
|
||||||
~~~
|
|
||||||
pver: gérer des numéros de version selon les règles du versionage sémantique v2.0.0 (http://semver.org/)
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
pver [options]
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-f, --file VERSIONFILE
|
|
||||||
Gérer le numéro de version se trouvant dans le fichier spécifié. Le
|
|
||||||
fichier est créé si nécessaire. C'est l'option par défaut si un fichier
|
|
||||||
nommé VERSION.txt se trouve dans le répertoire courant.
|
|
||||||
-e, --maven POMFILE
|
|
||||||
Gérer le numéro de version se trouvant dans le fichier pom.xml spécifié.
|
|
||||||
Le fichier DOIT exister. C'est l'option par défaut si un fichier nommé
|
|
||||||
pom.xml se trouve dans le répertoire courant.
|
|
||||||
-F, --file-string VERSIONFILE
|
|
||||||
Prendre pour valeur de départ le contenu du fichier VERSIONFILE (qui
|
|
||||||
vaut par défaut VERSION.txt)
|
|
||||||
-g, --git-string [branch:]VERSIONFILE
|
|
||||||
Prendre pour valeur de départ le contenu du fichier VERSIONFILE (qui
|
|
||||||
vaut par défaut VERSION.txt) dans la branche BRANCH (qui vaut par défaut
|
|
||||||
master) du dépôt git situé dans le répertoire courant.
|
|
||||||
-s, --string VERSION
|
|
||||||
Prendre pour valeur de départ le numéro de version spécifié
|
|
||||||
|
|
||||||
--show
|
|
||||||
Afficher le numéro de version. C'est l'action par défaut
|
|
||||||
--allow-empty
|
|
||||||
Supporter que la version puisse ne pas être spécifiée ni trouvée. Dans
|
|
||||||
ce cas, ne pas assumer que la version effective est 0.0.0
|
|
||||||
Avec --show et --update, ne rien afficher si la version est vide.
|
|
||||||
--check
|
|
||||||
Vérifier que le numéro de version est conforme aux règles du versionage
|
|
||||||
sémantique
|
|
||||||
--convert
|
|
||||||
--no-convert
|
|
||||||
Activer (resp. désactiver) la conversion automatique. Par défaut, si la
|
|
||||||
version est au format classique 'x.z[.p]-rDD/MM/YYYY', elle est
|
|
||||||
convertie automatiquement au format sémantique x.z.p+rYYYYMMDD
|
|
||||||
--eq VERSION
|
|
||||||
--ne VERSION
|
|
||||||
--lt VERSION
|
|
||||||
--le VERSION
|
|
||||||
--gt VERSION
|
|
||||||
--ge VERSION
|
|
||||||
--same VERSION
|
|
||||||
--diff VERSION
|
|
||||||
Comparer avec la version spécifiée. Les opérateurs --eq, --ne, --lt,
|
|
||||||
--le, --gt, et --ge ignorent l'identifiant de build (comme le demande la
|
|
||||||
règle du versionage sémantique). Les opérateurs --same et --diff
|
|
||||||
comparent aussi les identifiants de build.
|
|
||||||
-v, --set-version VERSION
|
|
||||||
Spécifier un nouveau numéro de version qui écrase la valeur actuelle.
|
|
||||||
Cette option ne devrait pas être utilisée en temps normal parce que cela
|
|
||||||
va contre les règles du versionage sémantique.
|
|
||||||
--prel
|
|
||||||
Spécifier un nouveau numéro de version qui écrase la valeur actuelle. Le
|
|
||||||
numéro de version est obtenu à partir du nom de la branche git courante,
|
|
||||||
qui doit être de la forme release-VERSION
|
|
||||||
-u, --update
|
|
||||||
Mettre à jour le numéro de version.
|
|
||||||
|
|
||||||
--menu
|
|
||||||
Afficher un menu permettant de choisir le composant de la version à
|
|
||||||
incrémenter
|
|
||||||
-x, --major
|
|
||||||
Augmenter le numéro de version majeure
|
|
||||||
-z, --minor
|
|
||||||
Augmenter le numéro de version mineure. C'est la valeur par défaut.
|
|
||||||
-p, --patchlevel
|
|
||||||
Augmenter le numéro de patch
|
|
||||||
|
|
||||||
-l, --prelease ID
|
|
||||||
Spécifier un identifiant de pré-release, à ajouter au numéro de version.
|
|
||||||
-a, --alpha
|
|
||||||
-b, --beta
|
|
||||||
-r, --rc
|
|
||||||
Spécifier une pré-release de type alpha, beta, ou rc. Si la version est
|
|
||||||
déjà dans ce type, augmenter la dernière valeur numérique des composants
|
|
||||||
de l'identifiant, e.g. alpha deviant alpha.1, beta-1.2 devient beta-1.3,
|
|
||||||
rc1 devient rc2
|
|
||||||
XXX ces fonctions ne sont pas encore implémentées
|
|
||||||
-R, --final, --release
|
|
||||||
Supprimer l'identifiant de prérelease
|
|
||||||
|
|
||||||
-m, --metadata ID
|
|
||||||
Spécifier un identifiant de build, à ajouter au numéro de version.
|
|
||||||
-M, --vcs-metadata
|
|
||||||
Spécifier l'identifiant à partir de la révision actuelle dans le
|
|
||||||
gestionnaire de version. Note: pour le moment, seul git est supporté.
|
|
||||||
--add-metadata ID
|
|
||||||
Ajouter l'identifiant spécifié à la valeur actuelle, au lieu de la
|
|
||||||
remplacer. Séparer l'identifiant de la valeur précédente avec un '.'
|
|
||||||
~~~
|
|
||||||
|
|
||||||
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
102
doc/pver.twp
102
doc/pver.twp
|
@ -1,102 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: pver
|
|
||||||
|
|
||||||
{{{
|
|
||||||
pver: gérer des numéros de version selon les règles du versionage sémantique v2.0.0 (http://semver.org/)
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
pver [options]
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-f, --file VERSIONFILE
|
|
||||||
Gérer le numéro de version se trouvant dans le fichier spécifié. Le
|
|
||||||
fichier est créé si nécessaire. C'est l'option par défaut si un fichier
|
|
||||||
nommé VERSION.txt se trouve dans le répertoire courant.
|
|
||||||
-e, --maven POMFILE
|
|
||||||
Gérer le numéro de version se trouvant dans le fichier pom.xml spécifié.
|
|
||||||
Le fichier DOIT exister. C'est l'option par défaut si un fichier nommé
|
|
||||||
pom.xml se trouve dans le répertoire courant.
|
|
||||||
-F, --file-string VERSIONFILE
|
|
||||||
Prendre pour valeur de départ le contenu du fichier VERSIONFILE (qui
|
|
||||||
vaut par défaut VERSION.txt)
|
|
||||||
-g, --git-string [branch:]VERSIONFILE
|
|
||||||
Prendre pour valeur de départ le contenu du fichier VERSIONFILE (qui
|
|
||||||
vaut par défaut VERSION.txt) dans la branche BRANCH (qui vaut par défaut
|
|
||||||
master) du dépôt git situé dans le répertoire courant.
|
|
||||||
-s, --string VERSION
|
|
||||||
Prendre pour valeur de départ le numéro de version spécifié
|
|
||||||
|
|
||||||
--show
|
|
||||||
Afficher le numéro de version. C'est l'action par défaut
|
|
||||||
--allow-empty
|
|
||||||
Supporter que la version puisse ne pas être spécifiée ni trouvée. Dans
|
|
||||||
ce cas, ne pas assumer que la version effective est 0.0.0
|
|
||||||
Avec --show et --update, ne rien afficher si la version est vide.
|
|
||||||
--check
|
|
||||||
Vérifier que le numéro de version est conforme aux règles du versionage
|
|
||||||
sémantique
|
|
||||||
--convert
|
|
||||||
--no-convert
|
|
||||||
Activer (resp. désactiver) la conversion automatique. Par défaut, si la
|
|
||||||
version est au format classique 'x.z[.p]-rDD/MM/YYYY', elle est
|
|
||||||
convertie automatiquement au format sémantique x.z.p+rYYYYMMDD
|
|
||||||
--eq VERSION
|
|
||||||
--ne VERSION
|
|
||||||
--lt VERSION
|
|
||||||
--le VERSION
|
|
||||||
--gt VERSION
|
|
||||||
--ge VERSION
|
|
||||||
--same VERSION
|
|
||||||
--diff VERSION
|
|
||||||
Comparer avec la version spécifiée. Les opérateurs --eq, --ne, --lt,
|
|
||||||
--le, --gt, et --ge ignorent l'identifiant de build (comme le demande la
|
|
||||||
règle du versionage sémantique). Les opérateurs --same et --diff
|
|
||||||
comparent aussi les identifiants de build.
|
|
||||||
-v, --set-version VERSION
|
|
||||||
Spécifier un nouveau numéro de version qui écrase la valeur actuelle.
|
|
||||||
Cette option ne devrait pas être utilisée en temps normal parce que cela
|
|
||||||
va contre les règles du versionage sémantique.
|
|
||||||
--prel
|
|
||||||
Spécifier un nouveau numéro de version qui écrase la valeur actuelle. Le
|
|
||||||
numéro de version est obtenu à partir du nom de la branche git courante,
|
|
||||||
qui doit être de la forme release-VERSION
|
|
||||||
-u, --update
|
|
||||||
Mettre à jour le numéro de version.
|
|
||||||
|
|
||||||
--menu
|
|
||||||
Afficher un menu permettant de choisir le composant de la version à
|
|
||||||
incrémenter
|
|
||||||
-x, --major
|
|
||||||
Augmenter le numéro de version majeure
|
|
||||||
-z, --minor
|
|
||||||
Augmenter le numéro de version mineure. C'est la valeur par défaut.
|
|
||||||
-p, --patchlevel
|
|
||||||
Augmenter le numéro de patch
|
|
||||||
|
|
||||||
-l, --prelease ID
|
|
||||||
Spécifier un identifiant de pré-release, à ajouter au numéro de version.
|
|
||||||
-a, --alpha
|
|
||||||
-b, --beta
|
|
||||||
-r, --rc
|
|
||||||
Spécifier une pré-release de type alpha, beta, ou rc. Si la version est
|
|
||||||
déjà dans ce type, augmenter la dernière valeur numérique des composants
|
|
||||||
de l'identifiant, e.g. alpha deviant alpha.1, beta-1.2 devient beta-1.3,
|
|
||||||
rc1 devient rc2
|
|
||||||
XXX ces fonctions ne sont pas encore implémentées
|
|
||||||
-R, --final, --release
|
|
||||||
Supprimer l'identifiant de prérelease
|
|
||||||
|
|
||||||
-m, --metadata ID
|
|
||||||
Spécifier un identifiant de build, à ajouter au numéro de version.
|
|
||||||
-M, --vcs-metadata
|
|
||||||
Spécifier l'identifiant à partir de la révision actuelle dans le
|
|
||||||
gestionnaire de version. Note: pour le moment, seul git est supporté.
|
|
||||||
--add-metadata ID
|
|
||||||
Ajouter l'identifiant spécifié à la valeur actuelle, au lieu de la
|
|
||||||
remplacer. Séparer l'identifiant de la valeur précédente avec un '.'
|
|
||||||
}}}
|
|
24
doc/pz.twp
24
doc/pz.twp
|
@ -1,24 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: pz
|
|
||||||
|
|
||||||
{{{
|
|
||||||
pz: faire une archive du projet
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
pz
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-C, --projdir PROJDIR
|
|
||||||
Spécifier le répertoire de base du projet qui est dans git. Par défaut,
|
|
||||||
on travaille dans le répertoire courant et on laisse git trouver le
|
|
||||||
répertoire de base du projet. Avec cette option, le répertoire courant
|
|
||||||
est modifié avant de lancer les commandes git.
|
|
||||||
-d, --destdir DESTDIR
|
|
||||||
Spécifier le répertoire dans lequel générer l'archive. Par défaut,
|
|
||||||
prendre le répertoire parent du répertoire de base du dépôt.
|
|
||||||
}}}
|
|
|
@ -1,20 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: reptyr.cgo
|
|
||||||
|
|
||||||
{{{
|
|
||||||
Usage: reptyr [-s] PID
|
|
||||||
reptyr -l|-L [COMMAND [ARGS]]
|
|
||||||
-l Create a new pty pair and print the name of the slave.
|
|
||||||
if there are command-line arguments after -l
|
|
||||||
they are executed with REPTYR_PTY set to path of pty.
|
|
||||||
-L Like '-l', but also redirect the child's stdio to the slave.
|
|
||||||
-s Attach fds 0-2 on the target, even if it is not attached to a tty.
|
|
||||||
-h Print this help message and exit.
|
|
||||||
-v Print the version number and exit.
|
|
||||||
-V Print verbose debug output.
|
|
||||||
}}}
|
|
|
@ -1,16 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 15/03/2012 22:20
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: rmtildes
|
|
||||||
|
|
||||||
{{{
|
|
||||||
rmtildes: supprimer les fichiers *~ dans le répertoire courant
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
rmtildes [dir [glob]]
|
|
||||||
|
|
||||||
Par défaut, dir==. et glob==*~
|
|
||||||
}}}
|
|
|
@ -1,78 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: rruns
|
|
||||||
|
|
||||||
{{{
|
|
||||||
rruns: Déploiement distant avec runs
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
rruns [-h hosts] [-T tmproot] rscriptname name=value...
|
|
||||||
rruns [-h hosts] [-T tmproot] @recipe name=value...
|
|
||||||
rruns [-h hosts] [-T tmproot] -f rscript name=value...
|
|
||||||
rruns [-h hosts] [-T tmproot] -r recipe name=value...
|
|
||||||
|
|
||||||
Lancer ce script sans argument (hors options) est équivalent à le lancer avec
|
|
||||||
l'argument @default
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-C Ne pas faire le déploiement. Configurer uniquement la connexion par clé
|
|
||||||
sur les hôtes distants spécifiés pour le user spécifié. Il faut pouvoir
|
|
||||||
se connecter par mot de passe pour configurer la connexion par clé.
|
|
||||||
Si l'on veut configurer la connexion par clé pour le user root, mais que
|
|
||||||
ce n'est pas possible de se connecter par mot de passe avec le user root
|
|
||||||
sur l'hôte distant, et qu'il existe un user sudoer sur l'hôte distant,
|
|
||||||
il est possible de faire la configuration avec '--configure root'. La
|
|
||||||
commande serait alors
|
|
||||||
rruns -h user@host --configure root
|
|
||||||
-T tmproot
|
|
||||||
Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple
|
|
||||||
/var/tmp. Cette option est utile pour les vservers, qui ont par défaut
|
|
||||||
un /tmp minuscule de 16 Mo.
|
|
||||||
-S ssh
|
|
||||||
Spécifier le programme à utiliser pour la connection par ssh.
|
|
||||||
-h host
|
|
||||||
-h @hostsfile
|
|
||||||
Spécifier un ou plusieurs hôtes sur lequels faire le déploiement. Pour
|
|
||||||
spécifier plusieurs hôtes, il est possible d'utiliser plusieurs fois
|
|
||||||
l'option -h, ou spécifier en une seule fois plusieurs hôtes en les
|
|
||||||
séparant par un espace ou le caractère ':', e.g. 'host1 host2' ou
|
|
||||||
'host1:host2'. Si la spécification contient les caractères { et },
|
|
||||||
l'expansion est effectuée, e.g
|
|
||||||
-h 'root@{host1,host2}.univ.run'
|
|
||||||
Par défaut, la connexion sur l'hôte distant se fait avec l'utilisateur
|
|
||||||
root. Il est possible de spécifier un autre utilisateur avec la syntaxe
|
|
||||||
user@host, e.g -h user@host
|
|
||||||
La forme @hostsfile permet de lire la liste des hôtes depuis le fichier
|
|
||||||
hostsfile, à raison d'un hôte par ligne.
|
|
||||||
Si cette option n'est pas spécifiée, et que le répertoire courant est
|
|
||||||
dans un des répertoires de $RUNSHOSTSPATH, sélectionner l'hôte
|
|
||||||
correspondant. Sinon, l'utilisateur doit saisir l'hôte distant de façon
|
|
||||||
interactive.
|
|
||||||
-f RSCRIPT
|
|
||||||
Lancer le script individuel spécifié au lieu de chercher dans les
|
|
||||||
répertoires $RUNS{SCRIPTS,HOSTS}PATH
|
|
||||||
-r RECIPE
|
|
||||||
Lancer les scripts spécifiés dans le fichier de recettes individuel
|
|
||||||
spécifié.
|
|
||||||
-z Forcer la réinstallation des scripts qui se basent sur shouldrun/setdone
|
|
||||||
-o OUTPUT
|
|
||||||
Générer l'archive à lancer sur l'hôte distant au lieu de faire le
|
|
||||||
déploiement. Si plusieurs hôtes sont spécifiés, OUTPUT est considéré
|
|
||||||
comme un nom de base auquel est ajouté le nom de l'hôte sur lequel
|
|
||||||
l'archive doit être déployée.
|
|
||||||
--init
|
|
||||||
--no-init
|
|
||||||
Forcer (resp. empêcher) la création des répertoires d'hôte correspondant
|
|
||||||
aux hôtes spécifiés. Par défaut, la création des répertoires d'hôte est
|
|
||||||
effectuée uniquement si ce script est lancé sans argument.
|
|
||||||
--sysinfos
|
|
||||||
Après un déploiement réussi sur l'hôte distant, inscrire si ce n'est
|
|
||||||
déjà fait le résultat de la commande usysinfos dans le fichier
|
|
||||||
sysinfos.conf du répertoire d'hôte.
|
|
||||||
Cette option est automatiquement activée si ce script est lancé sans
|
|
||||||
argument (hors options).
|
|
||||||
}}}
|
|
|
@ -1,52 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: ruinst
|
|
||||||
|
|
||||||
{{{
|
|
||||||
ruinst: Déploiement distant avec uinst
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
ruinst [-h host] [-T tmproot] <file|archive|dir> [-- options de uinst]
|
|
||||||
|
|
||||||
note: à cause d'une limitation de makeself, les options de uinst ne devraient
|
|
||||||
pas contenir d'espaces ni de caractères spéciaux. L'échappement de ces
|
|
||||||
caractères n'est pas garanti.
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-C Ne pas faire le déploiement. Configurer uniquement la connexion par clé
|
|
||||||
sur les hôtes distants spécifiés pour le user spécifié. Il faut pouvoir
|
|
||||||
se connecter par mot de passe pour configurer la connexion par clé.
|
|
||||||
Si l'on veut configurer la connexion par clé pour le user root, mais que
|
|
||||||
ce n'est pas possible de se connecter par mot de passe avec le user root
|
|
||||||
sur l'hôte distant, et qu'il existe un user sudoer sur l'hôte distant,
|
|
||||||
il est possible de faire la configuration avec '--configure root'. La
|
|
||||||
commande serait alors
|
|
||||||
ruinst -h user@host --configure root
|
|
||||||
Si l'hôte distant n'a pas sudo ou si sudo n'est pas configuré, il faut
|
|
||||||
rajouter l'option --uses-su, e.g:
|
|
||||||
ruinst -h user@host --configure root --uses-su
|
|
||||||
-T tmproot
|
|
||||||
Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple
|
|
||||||
/var/tmp. Cette option est utile pour les vservers, qui ont par défaut
|
|
||||||
un /tmp minuscule de 16 Mo.
|
|
||||||
-S, --ssh ssh
|
|
||||||
Spécifier le programme à utiliser pour la connection par ssh.
|
|
||||||
-h hosts
|
|
||||||
-h @hostsfile
|
|
||||||
Spécifier un ou plusieurs hôtes sur lequels faire le déploiement. Pour
|
|
||||||
spécifier plusieurs hôtes, il est possible d'utiliser plusieurs fois
|
|
||||||
l'option -h, ou spécifier en une seule fois plusieurs hôtes en les
|
|
||||||
séparant par un espace ou le caractère ':', e.g. 'host1 host2' ou
|
|
||||||
'host1:host2'. Si la spécification contient les caractères { et },
|
|
||||||
l'expansion est effectuée, e.g
|
|
||||||
-h 'root@{host1,host2}.univ.run'
|
|
||||||
Par défaut, la connexion sur l'hôte distant se fait avec l'utilisateur
|
|
||||||
root. Il est possible de spécifier un autre utilisateur avec la syntaxe
|
|
||||||
user@host, e.g -h user@host
|
|
||||||
La forme @hostsfile permet de lire la liste des hôtes depuis le fichier
|
|
||||||
hostsfile, à raison d'un hôte par ligne.
|
|
||||||
}}}
|
|
|
@ -1,18 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:18
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: rumount
|
|
||||||
|
|
||||||
{{{
|
|
||||||
rumount: démonter un système de fichier récursivement
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
rumount mountpoint
|
|
||||||
|
|
||||||
Démonter tous les systèmes de fichiers qui sont montés en-dessous de mountpoint
|
|
||||||
puis démonter mountpoint. Démonter aussi tous les systèmes de fichiers
|
|
||||||
bind-montés à partir d'un sous-répertoire de mountpoint.
|
|
||||||
}}}
|
|
62
doc/runs.twp
62
doc/runs.twp
|
@ -1,62 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:19
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: runs
|
|
||||||
|
|
||||||
{{{
|
|
||||||
runs: Lancer un script avec le protocole runs
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
runs [options] rscriptname name=value...
|
|
||||||
runs [options] @recipe name=value...
|
|
||||||
runs [options] -f rscript name=value...
|
|
||||||
runs [options] -r recipe name=value...
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
Configuration
|
|
||||||
--init
|
|
||||||
--verify
|
|
||||||
Vérifier le nom d'hôte et créer si nécessaire le répertoire d'hôte
|
|
||||||
correspondant à l'hôte courant ou à l'hôte spécifié avec l'option -h
|
|
||||||
Avec --verify, la création du répertoire d'hôte n'est pas effectuée.
|
|
||||||
--sysinfos DATA
|
|
||||||
Avec l'option --init, initialiser le fichier sysinfos.conf avec DATA, si
|
|
||||||
le fichier n'a pas déjà été provisionné. Sans cette option, un fichier
|
|
||||||
vide avec des commentaires est créé à la place.
|
|
||||||
--create RSCRIPT
|
|
||||||
Créer un modèle de script avec le nom donné.
|
|
||||||
Avec l'option -h, le script est créé dans le répertoire d'hôte
|
|
||||||
correspondant à l'hôte spécifié
|
|
||||||
|
|
||||||
Gestion des scripts
|
|
||||||
-s Forcer l'exécution du script avec l'utilisateur root si ce n'est pas
|
|
||||||
déjà le cas
|
|
||||||
-f RSCRIPT
|
|
||||||
Lancer le script individuel spécifié au lieu de chercher dans les
|
|
||||||
répertoires de $RUNSSCRIPTSPATH
|
|
||||||
-r RECIPE
|
|
||||||
Lancer les scripts spécifiés dans le fichier de recettes individuel
|
|
||||||
spécifié.
|
|
||||||
-h HOSTNAME[.DOMAIN]
|
|
||||||
Spécifier que les scripts sont destinés à être lancés sur l'hôte
|
|
||||||
spécifié. Les scripts sont alors aussi cherchés dans les répertoires
|
|
||||||
{$RUNSHOSTSPATH}/$hostname.$domain (par défaut) et
|
|
||||||
{$RUNSHOSTSPATH}/$domain/$hostname (le cas échéant)
|
|
||||||
L'option --host est équivalente, sauf que son argument est facultatif et
|
|
||||||
que sa valeur par défaut est l'hôte courant, soit sulfure
|
|
||||||
--list
|
|
||||||
Afficher la liste des scripts qui sont disponibles. Avec l'option -h,
|
|
||||||
inclure aussi les scripts spécifiques à cet hôte.
|
|
||||||
Avec cette option, les arguments supplémentaires agissent comme des
|
|
||||||
filtres (regexp utilisée avec l'opérateur == de la commande [[). Les
|
|
||||||
noms des scripts doivent valider au moins un filtre.
|
|
||||||
--info
|
|
||||||
Afficher la la description du script et la valeur de chaque variable
|
|
||||||
définies
|
|
||||||
--desc-only
|
|
||||||
Afficher seulement la description du script
|
|
||||||
-z Forcer la réinstallation des scripts qui se basent sur shouldrun/setdone
|
|
||||||
}}}
|
|
|
@ -1,37 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:19
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: runsconfig
|
|
||||||
|
|
||||||
{{{
|
|
||||||
runsconfig: Gérer un répertoire d'hôte de runs
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
runsconfig -c [host [destdir]]
|
|
||||||
runsconfig -t -- args...
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-c, --create
|
|
||||||
Créer un nouveau répertoire de configuration pour un hôte
|
|
||||||
-d, --destdir DESTDIR[=runs]
|
|
||||||
Nom du répertoire local de configuration.
|
|
||||||
|
|
||||||
-t, --template [OPT]
|
|
||||||
Gérer les fichiers du répertoire local avec templatectl. La valeur de
|
|
||||||
cette option est utilisée comme argument court pour l'invocation de
|
|
||||||
templatectl, e.g
|
|
||||||
runsconfig -tm args
|
|
||||||
est équivalent à
|
|
||||||
templatectl -m args
|
|
||||||
Les arguments qui restent sont passés tels quels à templatectl
|
|
||||||
Les options courantes de templatectl -l, -v, -m, -L sont disponibles
|
|
||||||
directement
|
|
||||||
--help-template
|
|
||||||
Afficher l'aide concernent la gestion des templates.
|
|
||||||
Equivalent à -t -- --help
|
|
||||||
-h, --host HOST
|
|
||||||
Spécifier l'hôte. Equivalent à -v host=HOST
|
|
||||||
}}}
|
|
|
@ -1,70 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:19
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: runsmod
|
|
||||||
|
|
||||||
{{{
|
|
||||||
runsmod: récupérer des dépôts git à usage de runs
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
runsmod [options] [-h host] [modules...]
|
|
||||||
|
|
||||||
Tous les dépôts spécifiés dans la configuration sont récupérés. Si des modules
|
|
||||||
sont spécifiés, les dépôts correspondants sont récupérés aussi. Avec l'option
|
|
||||||
-h, des dépôts spécifiques à l'hôte peuvent éventuellement être récupérés en
|
|
||||||
plus.
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-c, --config CONFIG
|
|
||||||
Spécifier un fichier de configuration à charger au lieu de la valeur par
|
|
||||||
défaut ~/etc/default/runs
|
|
||||||
--prod
|
|
||||||
--devel
|
|
||||||
Forcer un mode de sélection des urls. En mode production, préférer pour
|
|
||||||
le clonage les urls de production, qui sont en principe accessibles sans
|
|
||||||
authentification et en lecture seule. En mode développement, préférer
|
|
||||||
pour le clonage les urls de développement, qui sont en principe
|
|
||||||
accessibles par clé ssh et en lecture/écriture
|
|
||||||
--no-fetch
|
|
||||||
Ne rien récupérer. Utile avec --update-repolist
|
|
||||||
-N, --no-host
|
|
||||||
-A, --all-hosts
|
|
||||||
-H, -h, --host HOST
|
|
||||||
-T, --this-host
|
|
||||||
Options permettant de spécifier l'hôte pour la récupération de dépôts
|
|
||||||
spécifiques.
|
|
||||||
--no-host demande explicitement à ce qu'aucun hôte ne soit spécifié
|
|
||||||
--all-hosts sélectionne tous les dépôts spécifiques
|
|
||||||
--host récupère uniquement les dépôts pour l'hôte spécifié
|
|
||||||
--this-host équivaut à --host sulfure
|
|
||||||
L'option par défaut est --this-host en mode production et --all-hosts en
|
|
||||||
mode développement
|
|
||||||
--update-repolist
|
|
||||||
Forcer la mise à jour de la liste des dépôts. En principe, cette mise à
|
|
||||||
jour n'est pas faite plus d'une fois par période de 24 heures.
|
|
||||||
-0, --offline
|
|
||||||
-n, --no-pull
|
|
||||||
-u, --pull
|
|
||||||
Spécifier le mode opératoire pour la récupération des dépôts.
|
|
||||||
En mode --offline, ni clone ni pull ne sont autorisés. Le module doit
|
|
||||||
avoir déjà été cloné.
|
|
||||||
En mode --no-pull, seul le clonage est autorisé, e.g. le dépôt est
|
|
||||||
cloné si ce n'est pas déjà le cas.
|
|
||||||
En mode --pull, cloner le dépôt si ce n'est pas déjà le cas, ou le
|
|
||||||
mettre à jour le dépôt avant de l'utiliser s'il avait déjà été cloné.
|
|
||||||
Par défaut, utiliser --pull en mode production et --no-pull en mode
|
|
||||||
développement.
|
|
||||||
-i, --identity IDENTITY_FILE
|
|
||||||
Spécifier le fichier depuis lequel lire la clé privée pour les
|
|
||||||
connexions par ssh.
|
|
||||||
-o, --output OUTPUT
|
|
||||||
Spécifier un fichier dans lequel écrire des définitions de variables,
|
|
||||||
notamment REPODIRS qui reçoit la liste des chemins des dépôts qui ont
|
|
||||||
été récupérés. De plus, les variables RUNSSCRIPTSPATH, RUNSMODULESPATH
|
|
||||||
et RUNSHOSTSPATH sont définies.
|
|
||||||
-a, --append-output
|
|
||||||
Ajouter au fichier OUTPUT au lieu de l'écraser
|
|
||||||
}}}
|
|
|
@ -1,38 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 15/03/2012 22:20
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: rwoinst
|
|
||||||
|
|
||||||
{{{
|
|
||||||
rwoinst: Déploiement distant avec woinst
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
rwoinst [-H host] [-T tmproot] <file|archive|dir>... [-- options de woinst]
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-C Ne pas faire le déploiement. Configurer uniquement la connexion par clé
|
|
||||||
sur les hôtes distants spécifiés pour le user spécifié. Il faut pouvoir
|
|
||||||
se connecter par mot de passe pour configurer la connexion par clé.
|
|
||||||
Si l'on veut configurer la connexion par clé pour le user root, mais que
|
|
||||||
ce n'est pas possible de se connecter par mot de passe avec le user root
|
|
||||||
sur l'hôte distant, et qu'il existe un user sudoer sur l'hôte distant,
|
|
||||||
il est possible de faire la configuration avec '--configure root'. La
|
|
||||||
commande serait alors
|
|
||||||
rwoinst -H user@host --configure root
|
|
||||||
-T tmproot
|
|
||||||
Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple
|
|
||||||
/var/tmp. Cette option est utile pour les vservers, qui ont par défaut
|
|
||||||
un /tmp minuscule de 16 Mo.
|
|
||||||
-S ssh
|
|
||||||
Spécifier le programme à utiliser pour la connection par ssh.
|
|
||||||
-H host
|
|
||||||
Spécifier un hôte distant sur lequel faire le déploiement. Plusieurs
|
|
||||||
options -H peuvent être spécifiées, ou alors on peut séparer plusieurs
|
|
||||||
hôtes par ':', e.g. -H host1:host2
|
|
||||||
Par défaut, la connexion sur l'hôte distant se fait avec l'utilisateur
|
|
||||||
root. Il est possible de spécifier un autre utilisateur avec la syntaxe
|
|
||||||
user@host, e.g -H user@host
|
|
||||||
}}}
|
|
|
@ -1,98 +0,0 @@
|
||||||
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
||||||
##@creator: jclain
|
|
||||||
##@created: 27/04/2016 03:19
|
|
||||||
##@modifier: jclain
|
|
||||||
##@changecount: 1
|
|
||||||
##@tags:
|
|
||||||
##@title: sqlcsv
|
|
||||||
|
|
||||||
{{{
|
|
||||||
USAGE:
|
|
||||||
sqlcsv [query]
|
|
||||||
|
|
||||||
query est la requête SQL à exécuter. Si query n'est pas spécifiée ou si elle
|
|
||||||
vaut '-', la requête SQL est lue sur l'entrée standard, ou depuis un
|
|
||||||
fichier si l'option -f est spécifiée.
|
|
||||||
|
|
||||||
DEMARRAGE
|
|
||||||
|
|
||||||
Au démarrage, les répertoires de configuration (utilisateur ~/.sqlcsv et système
|
|
||||||
/etc/sqlcsv) sont analysés. Les fichiers *.jar situés dans ces répertoires sont
|
|
||||||
ajoutés au CLASSPATH. La présence de certains fichiers est testée pour activer
|
|
||||||
éventuellement les logs détaillés.
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-C, --config CONFIG
|
|
||||||
Prendre les informations de connexion depuis le fichier de propriété
|
|
||||||
spécifié. Pour l'identifiant CONN, la propriété 'CONN.url' doit exister
|
|
||||||
dans ce fichier avec la valeur de l'url jdbc de connexion. De plus, les
|
|
||||||
propriétés 'CONN.user' et 'CONN.password' contiennent respectivement si
|
|
||||||
nécessaire le nom et le mot de passe de connexion. La propriété
|
|
||||||
'loglevel', si elle existe, est utilisée pour configurer le niveau
|
|
||||||
d'affichage des logs, comme avec l'option --loglevel
|
|
||||||
Si cette option n'est pas spécifiée, un fichier nommé sqlcsv.properties
|
|
||||||
est recherché dans l'ordre: dans le répertoire courant, dans le
|
|
||||||
répertoire de configuration utilisateur, puis dans le répertoire de
|
|
||||||
configuration système. Si le fichier est trouvé, il est chargé
|
|
||||||
automatiquement.
|
|
||||||
-l, --conn CONN
|
|
||||||
Spécifier l'identifiant (ou l'url) de connexion. Cette information est
|
|
||||||
obligatoire. Si cette option n'est pas fournie, il faut spécifier un
|
|
||||||
fichier de configuration avec l'option -C dans lequel *une seule*
|
|
||||||
propriété 'CONN.url' est définie.
|
|
||||||
-u, --user USER
|
|
||||||
-p, --password PASSWORD
|
|
||||||
Spécifier un nom de connexion et un mot de passe si l'url ne le fournit
|
|
||||||
pas. Ces valeurs ont la priorité sur les valeurs éventuellement déjà
|
|
||||||
présentes dans le fichier de propriété.
|
|
||||||
-f, --input INPUT
|
|
||||||
Lire la requête depuis le fichier INPUT au lieu de la lire depuis la
|
|
||||||
ligne de commande ou l'entrée standard. Ne pas spécifier cette option ou
|
|
||||||
utiliser '-' pour lire depuis l'entrée standard. Cette option est
|
|
||||||
ignorée si la requête est fournie sur la ligne de commande.
|
|
||||||
-o, --output OUTPUT
|
|
||||||
Ecrire le résultat dans le fichier OUTPUT. Utiliser '-' pour spécifier
|
|
||||||
la sortie standard (c'est la valeur par défaut). S'il y a plusieurs
|
|
||||||
requêtes et que le fichier de sortie n'est pas la sortie standard,
|
|
||||||
ajouter un numéro incrémental au nom du fichier en sortie pour chaque
|
|
||||||
requête. Sinon, il est possible de spécifier plusieurs fois cette option
|
|
||||||
pour nommer les fichiers correspondant à chaque requête.
|
|
||||||
-t, --autocommit
|
|
||||||
Activer le mode autocommit
|
|
||||||
-c, --ignore-io-error
|
|
||||||
Continuer le traitement même en cas d'erreur du système de fichiers.
|
|
||||||
Cependant le traitement s'arrête et la transaction est annulée si une
|
|
||||||
autre erreur se produit.
|
|
||||||
-y, --ignore-any-error
|
|
||||||
Continuer le traitement même en cas d'erreur quelconque.
|
|
||||||
-n, --no-headers
|
|
||||||
Ne JAMAIS inclure les en-têtes dans la sortie, même avec l'option -h
|
|
||||||
-a, --append
|
|
||||||
Ajouter le résultat au fichier OUTPUT au lieu de l'écraser.
|
|
||||||
-A, --auto-na
|
|
||||||
Activer les option -n -a si le fichier OUTPUT existe et qu'il est non
|
|
||||||
vide. Le test n'est effectué que pour le premier fichier spécifié.
|
|
||||||
-s, --same-output
|
|
||||||
Utiliser le même fichier pour écrire le résultat de toutes les requêtes.
|
|
||||||
Normalement, un numéro incrémental est ajouté au fichier en sortie si
|
|
||||||
plusieurs requêtes sont spécifiées. Si les en-têtes sont les mêmes,
|
|
||||||
ajouter le résultat au fichier directement à la suite. Sinon, sauter une
|
|
||||||
ligne blanche et afficher les nouveaux en-têtes.
|
|
||||||
-h, --force-headers
|
|
||||||
En cas d'écriture du résultat de plusieurs requêtes dans un même
|
|
||||||
fichier, ne pas tenter de concaténer les résultats même si les en-têtes
|
|
||||||
sont les mêmes.
|
|
||||||
--uc-output
|
|
||||||
Ajouter dans la sortie les résultat de toutes les requêtes, pas
|
|
||||||
seulement celles de type DQML
|
|
||||||
--loglevel LOGLEVEL
|
|
||||||
Spécifier le niveau de logs à afficher. Les valeurs valides sont à
|
|
||||||
choisir parmi ALL, FINEST, FINER, FINE, CONFIG, INFO, WARNING, ERROR
|
|
||||||
La présence de certains fichiers dans les répertoires de configuration
|
|
||||||
utilisateur ou système configure les logs avant que les options de la
|
|
||||||
ligne de commande ne soient analysés: un fichier DEBUG fait démarrer
|
|
||||||
l'application avec le niveau de log ALL ce qui permet de voir les logs
|
|
||||||
concernant le chargement des jar. Un fichier SQL_DEBUG permet d'activer
|
|
||||||
la trace de DriverManager. Exemple:
|
|
||||||
mkdir -p ~/.sqlcsv && touch ~/.sqlcsv/{DEBUG,SQL_DEBUG}
|
|
||||||
}}}
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
# SVirtualBox
|
||||||
|
|
||||||
|
~~~
|
||||||
|
SVirtualBox: lancer une machine virtuelle VirtualBox
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
SVirtualBox [options] vmName
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-n, --nop
|
||||||
|
Ne rien faire excepté s'assurer que les modules VirtualBox sont chargés
|
||||||
|
-l, --list
|
||||||
|
Lister les machines virtuelles
|
||||||
|
-s, --start
|
||||||
|
Démarrer la machine virtuelle. C'est l'action par défaut.
|
||||||
|
Si le nom de la machine virtuelle n'est pas spécifiée, un menu est
|
||||||
|
affiché
|
||||||
|
-x, --gui
|
||||||
|
-b, --headless
|
||||||
|
--separate
|
||||||
|
Ces options ne sont valides qu'avec -s et permettent de spécifier le
|
||||||
|
type de démarrage: 'gui' permet d'afficher une fenêtre complète dans
|
||||||
|
laquelle l'accélération graphique est supportée, headless démarre la
|
||||||
|
machine en tâche de fond, et separate affiche une fenêtre qui attaque la
|
||||||
|
machine démarrée en tâche de fond. --separate est l'option par défaut.
|
||||||
|
-k, -t, --stop
|
||||||
|
Arrêter la machine virtuelle. Les options -p, -H, -R, -S et -r
|
||||||
|
permettent de spécifier le type d'arrêt de la machine virtuelle
|
||||||
|
-p, --sleep
|
||||||
|
Mettre en veille la machine virtuelle (par ACPI)
|
||||||
|
-H, --poweroff
|
||||||
|
Arrêter sauvagement la machine virtuelle
|
||||||
|
-R, --reset
|
||||||
|
Redémarrer sauvagement la machine virtuelle
|
||||||
|
-S, --savestate
|
||||||
|
Enregistrer l'état de la machine virtuelle
|
||||||
|
-r, --rrestart
|
||||||
|
Arrêter la machine, restaurer l'état du dernier snapshot puis la
|
||||||
|
relancer.
|
||||||
|
-g, --gui
|
||||||
|
Afficher le gestionnaire de machines virtuelle
|
||||||
|
~~~
|
||||||
|
|
||||||
|
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
@ -12,6 +12,19 @@ OPTIONS
|
||||||
Créer un nouveau répertoire de configuration pour un hôte
|
Créer un nouveau répertoire de configuration pour un hôte
|
||||||
-d, --destdir DESTDIR[=apacheconfig]
|
-d, --destdir DESTDIR[=apacheconfig]
|
||||||
Nom du répertoire local de configuration.
|
Nom du répertoire local de configuration.
|
||||||
|
-f,--full
|
||||||
|
--partial
|
||||||
|
Indiquer respectivement que la configuration est complète ou partielle.
|
||||||
|
Avec la configuration complète, le serveur peut être complètement
|
||||||
|
configuré avec tous les fichiers présents. Avec la configuration
|
||||||
|
partielle, uniquement les informations spécifiques à un service en
|
||||||
|
particulier sont disponibles.
|
||||||
|
Cette option est utilisée avec --create. Par défaut, la configuration
|
||||||
|
est partielle.
|
||||||
|
Pour le moment, la seule différence est que --full crée un fichier de
|
||||||
|
configuration nommé .apacheconfig alors que --partial crée un fichier
|
||||||
|
nommé apacheconfig.conf qui est visible et donc découvrable et éditable
|
||||||
|
plus facilement
|
||||||
|
|
||||||
-t, --template [OPT]
|
-t, --template [OPT]
|
||||||
Gérer les fichiers du répertoire local avec templatectl. La valeur de
|
Gérer les fichiers du répertoire local avec templatectl. La valeur de
|
||||||
|
@ -42,9 +55,12 @@ OPTIONS
|
||||||
Lors du déploiement de la configuration, les valeurs des variables
|
Lors du déploiement de la configuration, les valeurs des variables
|
||||||
dynamiques sont remplacées dans les fichiers destination.
|
dynamiques sont remplacées dans les fichiers destination.
|
||||||
Les arguments qui restent sont passés tels quels à apache_autoconf
|
Les arguments qui restent sont passés tels quels à apache_autoconf
|
||||||
|
-N, --network-config
|
||||||
|
Mettre aussi à jour la configuration réseau.
|
||||||
-r, --certsdir CERTSDIR
|
-r, --certsdir CERTSDIR
|
||||||
Spécifier le cas échéant le répertoire contenant les certificats à
|
Spécifier le cas échéant le répertoire contenant les certificats à
|
||||||
déployer. Cet argument est requis si le répertoire certsconf/ existe.
|
déployer. Cet argument est requis si le répertoire certsconf/ existe,
|
||||||
|
sauf si les certificats sont déjà déployés.
|
||||||
|
|
||||||
--localhosts
|
--localhosts
|
||||||
Créer dans le fichier /etc/hosts tous les noms d'hôte ayant un suffixe
|
Créer dans le fichier /etc/hosts tous les noms d'hôte ayant un suffixe
|
||||||
|
@ -60,6 +76,20 @@ OPTIONS
|
||||||
Ne déployer que le fichier de site spécifié. Cette option est utilisée
|
Ne déployer que le fichier de site spécifié. Cette option est utilisée
|
||||||
avec --deploy ou --localhosts et est utile pour le développement et les
|
avec --deploy ou --localhosts et est utile pour le développement et les
|
||||||
tests.
|
tests.
|
||||||
|
|
||||||
|
-k, --new-site HOST.TLD
|
||||||
|
Créer une définition pour un nouveau site à partir des fichiers du
|
||||||
|
répertoires templates/
|
||||||
|
-K, --new-site-templatedir TEMPLATEDIR
|
||||||
|
Spécifier le répertoire source pour les templates de site utilisés par
|
||||||
|
l'option --new-site. Par défaut, utiliser le répertoire templates/ situé
|
||||||
|
dans le répertoire de configuration.
|
||||||
|
Si TEMPLATEDIR est un nom simple sans séparateur de chemin '/' et qu'un
|
||||||
|
répertoire templates/TEMPLATEDIR existe, alors prendre ce répertoire-là
|
||||||
|
comme source.
|
||||||
|
--new-site-force
|
||||||
|
Avec --new-site, utiliser le nom d'hôte fourni même s'il n'est pas
|
||||||
|
pleinement qualifié
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
-*- 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
|
|
@ -0,0 +1,28 @@
|
||||||
|
# chrono.py
|
||||||
|
|
||||||
|
~~~
|
||||||
|
usage: chrono.py [options] [TIMEOUT]
|
||||||
|
|
||||||
|
Afficher un chronomètre
|
||||||
|
|
||||||
|
positional arguments:
|
||||||
|
TIMEOUT (valeur vide)
|
||||||
|
chronomètre qui démarre à 0:00 et ne s'arrête pas
|
||||||
|
H:M:S (heures:minutes:secondes)
|
||||||
|
ou M:S (minutes:secondes)
|
||||||
|
ou M (minutes)
|
||||||
|
minuteur qui démarre à H:M:S et fait un décompte jusqu'à 0:00. A la fin
|
||||||
|
du décompte, une sonnerie retentit.
|
||||||
|
@H[:M[:S]]
|
||||||
|
minuteur qui fonctionne comme précédemment, sauf qu'on spécifie l'heure
|
||||||
|
d'arrivée, et que la durée est calculée automatiquement
|
||||||
|
|
||||||
|
optional arguments:
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
-n, --no-autostart Ne pas démarrer automatiquement le décompte même si TIMEOUT est spécifié.
|
||||||
|
-s, --autostart Forcer le démarrage automatique du décompte, même si TIMEOUT n'est pas spécifié.
|
||||||
|
|
||||||
|
Si TIMEOUT est spécifié, par défaut le décompte démarre automatiquement.
|
||||||
|
~~~
|
||||||
|
|
||||||
|
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
@ -0,0 +1,29 @@
|
||||||
|
# create-user
|
||||||
|
|
||||||
|
~~~
|
||||||
|
create-user: créer un utilisateur sudoer et lui installer une clé publique ssh
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
create-user user [-p pubkey]
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-p, --pkfile PKFILE
|
||||||
|
Installer la clé publique ssh contenue dans le fichier spécifié. Par
|
||||||
|
défaut, prendre le fichier ~/.ssh/id_rsa.pub de l'utilisateur courant.
|
||||||
|
-s, --pkstring PUBKEY
|
||||||
|
Installer la clé publique ssh spécifiée. Cette option avancée n'est pas
|
||||||
|
utilisée en temps normal. Elle a la priorité sur l'option --pkfile
|
||||||
|
-l, --luser
|
||||||
|
Ne pas donner à l'utilisateur le droit de sudoer.
|
||||||
|
-h, --host [USER@]HOST
|
||||||
|
Créer l'utilisateur sur l'hôte distant spécifié. Si l'utilisateur
|
||||||
|
distant n'est pas root, il doit être sudoer.
|
||||||
|
-T, --tmproot TMPROOT
|
||||||
|
Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple
|
||||||
|
/var/tmp. Cette option est utile pour certains serveurs, qui ont un /tmp
|
||||||
|
minuscule.
|
||||||
|
-S, --ssh SSH
|
||||||
|
Spécifier le programme à utiliser pour la connection par ssh.
|
||||||
|
~~~
|
||||||
|
|
||||||
|
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
@ -13,6 +13,7 @@ read the main documentation for these command-line arguments.
|
||||||
Initialization options:
|
Initialization options:
|
||||||
|
|
||||||
--batch do not do interactive display; implies -q
|
--batch do not do interactive display; implies -q
|
||||||
|
--chdir DIR change to directory DIR
|
||||||
--daemon start a server in the background
|
--daemon start a server in the background
|
||||||
--debug-init enable Emacs Lisp debugger for init file
|
--debug-init enable Emacs Lisp debugger for init file
|
||||||
--display, -d DISPLAY use X server DISPLAY
|
--display, -d DISPLAY use X server DISPLAY
|
||||||
|
@ -20,9 +21,11 @@ Initialization options:
|
||||||
--no-init-file, -q load neither ~/.emacs nor default.el
|
--no-init-file, -q load neither ~/.emacs nor default.el
|
||||||
--no-shared-memory, -nl do not use shared memory
|
--no-shared-memory, -nl do not use shared memory
|
||||||
--no-site-file do not load site-start.el
|
--no-site-file do not load site-start.el
|
||||||
|
--no-site-lisp, -nsl do not add site-lisp directories to load-path
|
||||||
--no-splash do not display a splash screen on startup
|
--no-splash do not display a splash screen on startup
|
||||||
--no-window-system, -nw do not communicate with X, ignoring $DISPLAY
|
--no-window-system, -nw do not communicate with X, ignoring $DISPLAY
|
||||||
--quick, -Q equivalent to -q --no-site-file --no-splash
|
--quick, -Q equivalent to:
|
||||||
|
-q --no-site-file --no-site-lisp --no-splash
|
||||||
--script FILE run FILE as an Emacs Lisp script
|
--script FILE run FILE as an Emacs Lisp script
|
||||||
--terminal, -t DEVICE use DEVICE for terminal I/O
|
--terminal, -t DEVICE use DEVICE for terminal I/O
|
||||||
--user, -u USER load ~USER/.emacs instead of your own
|
--user, -u USER load ~USER/.emacs instead of your own
|
||||||
|
@ -32,7 +35,7 @@ Action options:
|
||||||
FILE visit FILE using find-file
|
FILE visit FILE using find-file
|
||||||
+LINE go to line LINE in next FILE
|
+LINE go to line LINE in next FILE
|
||||||
+LINE:COLUMN go to line LINE, column COLUMN, in next FILE
|
+LINE:COLUMN go to line LINE, column COLUMN, in next FILE
|
||||||
--directory, -L DIR add DIR to variable load-path
|
--directory, -L DIR prepend DIR to load-path (with :DIR, append DIR)
|
||||||
--eval EXPR evaluate Emacs Lisp expression EXPR
|
--eval EXPR evaluate Emacs Lisp expression EXPR
|
||||||
--execute EXPR evaluate Emacs Lisp expression EXPR
|
--execute EXPR evaluate Emacs Lisp expression EXPR
|
||||||
--file FILE visit FILE using find-file
|
--file FILE visit FILE using find-file
|
||||||
|
@ -51,14 +54,14 @@ Display options:
|
||||||
--border-color, -bd COLOR main border color
|
--border-color, -bd COLOR main border color
|
||||||
--border-width, -bw WIDTH width of main border
|
--border-width, -bw WIDTH width of main border
|
||||||
--color, --color=MODE override color mode for character terminals;
|
--color, --color=MODE override color mode for character terminals;
|
||||||
MODE defaults to `auto', and can also
|
MODE defaults to `auto', and
|
||||||
be `never', `auto', `always',
|
can also be `never', `always',
|
||||||
or a mode name like `ansi8'
|
or a mode name like `ansi8'
|
||||||
--cursor-color, -cr COLOR color of the Emacs cursor indicating point
|
--cursor-color, -cr COLOR color of the Emacs cursor indicating point
|
||||||
--font, -fn FONT default font; must be fixed-width
|
--font, -fn FONT default font; must be fixed-width
|
||||||
--foreground-color, -fg COLOR window foreground color
|
--foreground-color, -fg COLOR window foreground color
|
||||||
--fullheight, -fh make the first frame high as the screen
|
--fullheight, -fh make the first frame high as the screen
|
||||||
--fullscreen, -fs make first frame fullscreen
|
--fullscreen, -fs make the first frame fullscreen
|
||||||
--fullwidth, -fw make the first frame wide as the screen
|
--fullwidth, -fw make the first frame wide as the screen
|
||||||
--maximized, -mm make the first frame maximized
|
--maximized, -mm make the first frame maximized
|
||||||
--geometry, -g GEOMETRY window geometry
|
--geometry, -g GEOMETRY window geometry
|
||||||
|
@ -82,7 +85,7 @@ example, -batch as well as --batch. You can use any unambiguous
|
||||||
abbreviation for a --option.
|
abbreviation for a --option.
|
||||||
|
|
||||||
Various environment variables and window system resources also affect
|
Various environment variables and window system resources also affect
|
||||||
Emacs' operation. See the main documentation.
|
the operation of Emacs. See the main documentation.
|
||||||
|
|
||||||
Report bugs to bug-gnu-emacs@gnu.org. First, please see the Bugs
|
Report bugs to bug-gnu-emacs@gnu.org. First, please see the Bugs
|
||||||
section of the Emacs manual or the file BUGS.
|
section of the Emacs manual or the file BUGS.
|
|
@ -0,0 +1,69 @@
|
||||||
|
# fndate
|
||||||
|
|
||||||
|
~~~
|
||||||
|
fndate: manipuler des noms de fichier pour les dater
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
fndate (FILE|DIR)s...
|
||||||
|
fndate -k SRCs... [DESTDIR]
|
||||||
|
fndate -m SRCs... [DESTDIR]
|
||||||
|
fndate -c COMMAND [ARGs...]
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
--create-or-rename
|
||||||
|
Créer un nouveau fichier (option -f) ou créer un nouveau répertoire
|
||||||
|
(option -d), ou renommer un fichier existant sans le changer de
|
||||||
|
répertoire. C'est l'option par défaut.
|
||||||
|
-f, --create-file
|
||||||
|
Créer un nouveau fichier. Cette option est ignorée si le fichier ou le
|
||||||
|
répertoire spécifié existe. C'est la valeur par défaut
|
||||||
|
-d, --create-dir
|
||||||
|
Créer un nouveau répertoire. Cette option est ignorée si le fichier ou
|
||||||
|
le répertoire spécifié existe.
|
||||||
|
-k, --copy
|
||||||
|
Copier le fichier SRC vers la destination DESTDIR qui vaut par défaut le
|
||||||
|
répertoire courant si un seul fichier source est spécifié. Si plusieurs
|
||||||
|
fichiers sources sont spécifiés, il faut absolument spécifier un
|
||||||
|
répertoire destination. Dans la destination, les fichiers sont nommés
|
||||||
|
avec la date en préfixe.
|
||||||
|
-m, --move
|
||||||
|
Déplacer le fichier SRC vers la destination DESTDIR qui vaut par défaut
|
||||||
|
le répertoire courant si un seul fichier source est spécifié. Si
|
||||||
|
plusieurs fichiers sources sont spécifiés, il faut absolument spécifier
|
||||||
|
un répertoire destination. Dans la destination, les fichiers sont nommés
|
||||||
|
avec la date en préfixe.
|
||||||
|
-c, --cmd
|
||||||
|
Les arguments sont une commande à lancer. Dans les argument, PLACEHOLDER
|
||||||
|
est remplacé par la date. Si le PLACEHOLDER n'est trouvé dans aucun des
|
||||||
|
arguments, alors ajouter la date à la fin de la commande. Par exemple,
|
||||||
|
voici comment émuler l'option -k
|
||||||
|
fndate -c cp src dest/~~
|
||||||
|
--string
|
||||||
|
Remplacer dans chaque argument le placeholder par la date et afficher le
|
||||||
|
résultat.
|
||||||
|
-P, --placeholder PLACEHOLDER
|
||||||
|
Dans le nom spécifié, remplacer PLACEHOLDER par la date. Par défaut,
|
||||||
|
PLACEHOLDER vaut ~~. Si le nom spécifié ne contient pas le PLACEHOLDER,
|
||||||
|
il est placé au début.
|
||||||
|
-@, --force-date DATE
|
||||||
|
Dans le nom spécifié, si la date est déjà présente, forcer son
|
||||||
|
remplacement par la valeur spécifiée. Par défaut, le fichier n'est pas
|
||||||
|
modifié si la date est déjà présente.
|
||||||
|
-F, --format FORMAT
|
||||||
|
Spécifier le format de la date à insérer dans le nom du fichier. Par
|
||||||
|
défaut, FORMAT vaut 'YYMMDD-'
|
||||||
|
Les formats valides sont:
|
||||||
|
YYYY année sur 4 chiffres
|
||||||
|
YY année sur 2 chiffres
|
||||||
|
MM mois sur 2 chiffres
|
||||||
|
DD jour sur 2 chiffres
|
||||||
|
Tous les autres caractères sont pris tels-quels
|
||||||
|
-s, --short
|
||||||
|
Equivalent à -F YYMMDD --autof
|
||||||
|
-l, --long
|
||||||
|
Equivalent à -F YYYMMDD --autof
|
||||||
|
--autof
|
||||||
|
Option non (pas encore) documentée
|
||||||
|
~~~
|
||||||
|
|
||||||
|
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
@ -0,0 +1,80 @@
|
||||||
|
# foreach
|
||||||
|
|
||||||
|
~~~
|
||||||
|
foreach: lancer une commande pour un ensemble d'arguments
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
foreach [options] [VAR=]expr cmd...
|
||||||
|
foreach [options] [VAR=]items... -- cmd...
|
||||||
|
|
||||||
|
La commande est lancée avec la variable 'VAR', qui vaut par défaut 'item',
|
||||||
|
définie à la valeur courante de l'énumération. De plus, la variable 'index'
|
||||||
|
reçoit une valeur incrémentale commençant à 0.
|
||||||
|
|
||||||
|
La deuxième syntaxe appelée syntaxe alternative permet de spécifier un ensemble
|
||||||
|
d'éléments directement, mais nécessite l'utilisation du séparateur '--' pour
|
||||||
|
identifier où s'arrête la liste des éléments.
|
||||||
|
|
||||||
|
En plus de VAR, les variables file, dir, name, basename, ext et dotext sont
|
||||||
|
définies. Elle valent respectivement le chemin absolu du fichier, le répertoire
|
||||||
|
absolu du fichier, le nom du fichier, le nom de base sans extension, l'extension
|
||||||
|
sans le point et l'extension avec le point, e.g pour item=dir/file.ext on a
|
||||||
|
file=/path/to/dir/file.ext, dir=/path/to/dir, name=file.ext, basename=file,
|
||||||
|
ext=ext, dotext=.ext
|
||||||
|
|
||||||
|
Les 3 exemples suivants sont équivalents:
|
||||||
|
foreach '*.c' cp %item dest/dir
|
||||||
|
foreach item='*.c' cp %item dest/dir
|
||||||
|
foreach *.c -- cp %item dest/dir
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-b, --basedir BASEDIR
|
||||||
|
Chercher les expressions -d, -f, -a à partir de BASEDIR au lieu du
|
||||||
|
répertoire courant.
|
||||||
|
-d, --dir
|
||||||
|
-f, --file
|
||||||
|
-a, --all
|
||||||
|
-s, --string
|
||||||
|
Ces options permettent de spécifier le type d'expression et la façon de
|
||||||
|
les traiter. Avec -d, faire la correspondance de l'expression sur les
|
||||||
|
répertoires uniquement. Avec -f, faire la correspondance sur les fichier
|
||||||
|
uniquement. Avec -a, faire la correspondance sur les répertoires et les
|
||||||
|
fichiers. Avec -s, évaluer l'expression avec la fonction 'eval' du
|
||||||
|
shell.
|
||||||
|
Si la syntaxe alternative est utilisée, le premier élément est évalué
|
||||||
|
conformément à ces options *si et seulement s'il* est précédé d'une
|
||||||
|
chaine 'VAR='. Les autres éléments sont pris tels-quels. e.g:
|
||||||
|
cette commande affiche uniquement la chaine '*.c':
|
||||||
|
foreach '*.c' --
|
||||||
|
alors que celle-ci liste les fichiers qui ont l'extension '.c':
|
||||||
|
foreach 'item=*.c' --
|
||||||
|
-p, --parent
|
||||||
|
Pour chaque fichier/répertoire, se placer dans le répertoire parent
|
||||||
|
avant de lancer la commande. item est aussi modifié pour ne plus
|
||||||
|
contenir que le nom de la cible (qui est désormais dans le répertoire
|
||||||
|
courant)
|
||||||
|
Cette option a la priorité sur --go
|
||||||
|
-g, --go
|
||||||
|
Si la cible est un répertoire, en faire le répertoire courant avant de
|
||||||
|
lancer la commande. Si la cible est un fichier, faire comme --parent et
|
||||||
|
se placer dans le répertoire du fichier avant de lancer la commande.
|
||||||
|
Dans les deux cas, item est modifié pour ne plus contenir que le nom de
|
||||||
|
la cible, soit '.' pour le répertoire courant, soit le nom du fichier
|
||||||
|
dans le répertoire courant.
|
||||||
|
Si cette option est mentionnée seule, elle implique --dir
|
||||||
|
-x, --expand
|
||||||
|
-n, --no-expand
|
||||||
|
Reconnaitre et traiter (resp. ne pas reconnaitre) la syntaxe %var dans
|
||||||
|
les arguments. C'est le cas par défaut, ce qui permet de simplifier
|
||||||
|
l'écriture d'une ligne de commande. Pour écrire le caractère '%', il
|
||||||
|
suffit de le doubler e.g %%item
|
||||||
|
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:
|
||||||
|
foreach -n '*.c' 'cp "$item" dest/dir'
|
||||||
|
-t, --title
|
||||||
|
--no-title
|
||||||
|
Afficher (resp. ne pas afficher) chaque correspondance avant de lancer
|
||||||
|
la commande. Par défaut, l'affichage est effectué.
|
||||||
|
~~~
|
||||||
|
|
||||||
|
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue