repomaker complete

This commit is contained in:
mykola2312 2024-11-26 21:54:06 +02:00
commit 29e4412d1f
3 changed files with 480 additions and 0 deletions

25
LICENSE Normal file
View file

@ -0,0 +1,25 @@
BSD 2-Clause License
Copyright (c) 2024, mykola2312.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

4
README.md Normal file
View file

@ -0,0 +1,4 @@
# repomaker
Bash tool to quickly initialize git repos

451
repomaker.sh Executable file
View file

@ -0,0 +1,451 @@
#!/usr/bin/env bash
# configuration! replace witt your own remotes and names
# but keep REPO_NAME in remote, since it's template and will be replaced be sed
DEV_PATH="/home/USER/dev"
COPYRIGHT_HOLDER="USER"
REMOTES=(
"git@github.com:USER/REPO_NAME.git"
"https://some.real.git.instance/USER/REPO_NAME.git"
)
# cat raw.txt | gzip -c -n -f | base64 > encoded.txt
# cat encoded.txt | base64 -d | gzip -d -c -n
# COPYRIGHT_YEAR, COPYRIGHT_HOLDER
LICENSE_BSD2CLAUSE=$(cat <<EOF
H4sIAAAAAAAAA7VSzW6jMBC++ylGPbUSm9X2uHsyxgmWCGZtk5TTioLbWiK4AtKqb79jJ1VT9bCn
lSIyMOPvb5zqDG6/saE9zhYK19lxtoQw//w2ucenBa67G2CyapTY5OZPw6lKLt5zWWRcrQgdBojz
M0x2ttOL7VeEKNu7eZnc/XFxfoR27CGwuBFmf5w6G7/cu7Gd3uDBT4c5gVe3PIGf4r8/LuTge/fg
ujYAJNBOFp7tdHDLYnt4nvyL67FYntoFHxZBhsG/uvEROj/2LhyaSTh0sMtP8mMFnxXN4B/epXS+
x7HjvKCBpUWJAa+99y+hdQ6DAMDoFwwpwbabYUCwgPHBFi19loKM3dC6g51W5ParBKS6iOBdAnrr
jyjrP6iAk7kA0/vueLDj0r7v5ztG77E5waFd7OTaYf6IOe4moF4awDWbXGjQcm32VHHAulJyJzKe
QdqAyTnQ2uRSAS0zvDqlUSKtjVQarqjG8avQILRsgN9VimsNOCu2VSEQASEVLY3gOgFRsqLORLlJ
AAGglAYKsRUGx4xMAhP5egzkGrZcsRxfaSoKYZooZC1MGbjWQRhUVBnB6oIqqGpVSc1J8JIJzQoq
tjxbAdIjJfAdLw3onBbFpTf8fbKWctRG04KTSIDmMqE4M8HFR8UwJZRVJKArzkQo+B1HD1Q1yRlT
8981DmGTZHRLN2jp+h9JYP6sVnwblKJ9XafaCFMbDhspM00QWHO1E4zrX1BIHUOqNU8go4ZGYoTA
hLCNdVprEbMSpeFK1ZURsrwhudxjGKiR4tEshirLaBVzkaoJoCGDmHkC+5zjdxVijEnREIHGxJgh
F2PIhwGaC49Q8k0hNrxkPHRlQNkLzW+AKqHDgDjR7mlDZB0th82gqlN5cTuTuD8Qa6DZTgTZ52Fc
uRbn6yHXRNcsh1PcK/IXoilyCSMFAAA=
EOF
)
# COPYRIGHT_YEAR, COPYRIGHT_HOLDER
LICENSE_MIT=$(cat <<EOF
H4sIAAAAAAAAA11TS4+bMBC++1eMctqV0PbemwPOxipgZJxNc6oIOMEVwRF2Gu2/7wzJPiUkNK/v
MQOFNJC71o7BMpb68+vkjn2Eh/YRUlXttHxemz87wfWncK3yTGjGKjudXAjOj+AC9Hay+1c4Ts0Y
bZfAYbIW/AHavpmONoHooRlf4WyngAN+Hxs3uvEIDbRIy7Az9ggT/CFem8licwdNCL51DeJB59vL
yY6xicR3cIMN8BB7C4v6PrF4nEk62wzMjUC1txJcXez9JcJkQ5xcSxgJuLEdLh1peCsP7uTuDDQ+
7yIwBL0EdEA6Ezj5zh3obWdb58t+cKFPoHMEvb9ETAZKzktNyMcPP0Gww8AQwaHu2euHurmHpJ9p
ofG+okCZa+9PX524wA6XaURKO890Hlc2M/61baQMtR/8MPgrWWv92DlyFH4yZrDU7P0/O3u5nXr0
EaXeJNABzh9XvZdC3wwD7O19YciL620+2ZmIPkQ8vGsGOPtp5vtu8wn51wJqtTJbrgXIGiqtXmQm
MljwGuNFAltp1mpjADs0L80O1Ap4uYNfsswSEL8rLeoalGayqHIpMCfLNN9ksnyGJc6VCr9nWUiD
oEYBEd6hpKgJrBA6XWPIlzKXZpewlTQlYa6UBg4V10ammxw/+GqjK1ULpM8QtpTlSiOLKERpnpAV
cyBeMIB6zfOcqBjfoHpN+j5+F7j9LjUsBSrjy1zcqNBUmnNZJJDxgj+LeUohimbUdlMH27WgFPFx
fFIjVUk2UlUajWGCLrV5H93KWiTAtaxpISutioTROnFCzSA4V4obCq0avlwEWyje1OIdEDLBc8Sq
aZgsvjU/sf8ba/WiOwQAAA==
EOF
)
# no copyrights here, since you don't own your code with GPL :^)
LICENSE_GPL2=$(cat <<EOF
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
EOF
)
LICENSE_GPL3=$(cat <<EOF
H4sIAAAAAAAAA8Vd23IbR5J9r6+owIvJiBZt2TP2znhjIyAKsrBDkVySkkaPDXSB7FWjG9MX0tiv
3zyZWZduALJjX9YxEyKJ7qqsrLycvFTB2sP/frv+aH9bXC/u5lf29uObq+Wlpf8vru8X5sjT+O+T
a7uyqe1Pmf3xb/Y/h9rZH3/44Rdj7GWz27fl41Nvzy7P+Y/2XeucvW82/UveOvuuGeoi7+ntzC7r
9YX996e+3/39++833eaiaR+//w9jF8+u3Tc0aNnZnWu3Zd+7wvaNXdPoNq8LW5Rd35aroXeWnl3R
eFt8WLrO2GZj+yd6syrXru6cLZr1sHV1n1l63q6f8vqxrB9t2WP4uultXlXNiysuzKnl8n+3rcu3
q8rhqYcnJ1xztWvzyt4OK5rNXumMNG5uN7TsjCmu3KYP1Gya1nSeGVhK0z+51n4t66ID6S9N+7W7
8JPoWx1es9um6+2Rd3dtvu7LNdHBL1t8WriufKxdYYhrff6VHn/J93bfDC0TVjRb8LN78iMxWxwx
zikF1r7ZE/V13+Zdn5n+D1dc1r2rC9mnxyFvc/rdTWc0BzMS87GFECdef07LaR7bfPvqFQ20Bend
QK/QdrVum5f0FIaLPARnMEjZd3boaCQi/TNxHhSfFj16Ek+Yb6wpsJyowir8jL+Clny3q0jaaOau
wbryeq+7AfYRqZXLOzADkgjWr/ZMYT70Tw3T+KUZ7DqveSR8hlGYW7r+jpbQNCwJn59cbV+IETuX
fwU54ECgJ8NHWF/rNq5tIdvEOeV5Bgk3u5bWRHPe0PDHVzuWGjtiff+U99hI85Q/i4gkIpRooijg
AX32TLe7fRTxpxG2ttxgSPtSdk/nWZiC1rB25TNeHto1hiycpX0Aox5dz0rLL5oXki/6NXkVzyRi
HKan17HbRNtaqMMgta3di2E6I79BZxjua928hHGLBmOyzBB/VT8bvNq7dS9Szmav492onfBw17pn
sjwiGRBc4lnh6j32CIuQMeVF0Jl3X/Uj1s6hbaFSLa9Hnrpgu0A73WDj8SA2xaxd25NuEPu6HSlS
uSqrssdmKJuP7lLKpQzTlxtIIAl9UW4gkn8/HI/Iwt+w6FQQoCK8RubMOxrL/Z5vdxWN+y0KumH9
FDWeWPfkMIqh3/qSOcLabTdOF7sdSB93eUef1aCFGePWJQ1YEwt5RfnWGaWrOxCsQjWPB5qIOL29
Z6XL/NMmET3hVpBKGmdO4hKI6p5IXFiyVVDIb3W2YxL3hoWJfiq9mDCf3pJ0VM0OosEEqFESQ3t7
dUy8SGH6J9u/kHT0btf93Zy9PiexIbvXs68R3wvmjDYXkn324znxnEyEyBcMkyq/eSyfvdxV7pGM
A3vdjn28ut0s3UEa7nu2jiooYdcxaxFW9R3PqybvO78ctr+8TFrimuxkS/bP/b6rYNyN34nWiXsm
49nCl+xZFJjqkXW5kIlXJH5i/nlSEybtaI/jdK3711C2TvnN9JekqsEBrRwJRfuV/pR3RoxJkcku
Clkl22eCAVtsBbkdAAh6K++VN4UlG0zYpRk6WhY8g1ACcYc5KOmDMB/z7b7ZMtPK9RErDGsh67L5
mh5gDSQ+9XB5tO52qM3hMibKjRfKgmWLlCyviKDh8Ykf2eb1sCH4QErQGrV0XcNWBj6dmA2fCfhE
E9JW1+tmuyPlJA6oKNIgeQkLYPz+kiTpTiR+4ohlFltmuz2J8pbGXBsamfSmjqZhBZVo1uuhBcCQ
yQiHCTObYlj3Ao0IPZEIFwO5Y/Cc3oIxKWkIQEhYiM4R+S8iV4z82LUPNbi663Naz9i0vjhxd3Ez
wBDlsGcwRIrNfPNEJlJshKIxp/LakHp5UmmGpa4sCFHeEmn0txVtad2XymXFEsQ7KAVTg88LEuC8
gFiRwgBuCVU02HPplZWn9G9iqM2A3Q3CYSLtJAsd+yrvrcTcTAy7gCrW8LIGfZl1AOjebIOZ/RMR
RgTRQIQZeSkVY54ggjt8DLt339NPHezlUBURf/sH1MOQNhElakogfmxKWBo2Efs1MM0MZ17thnaH
hUM+SQ3bTuA+C03TqYUvGnbPAB2sms9NWYhIkkcj3tsCQtrKw54ggXrMIUH1YeFrLMGwF6HNd2Rb
aeefIWj0BGEu1+ft/kKRgiAB7Fc0R2S4B2+NjJ+PtFCNytDJtAkK8FPXTf0KtIRIQYVc/Q4jroaU
omd7AFGEESfVTOw4BAa2UuzHmpExPYrdOB0LPSzuPtzb+fVbe3lz/Xb5sLy5vsfDP1yQO9uUtczI
788eEh8zE3jK++u16KegRydRuAwUosqZAO6ty2lVwd+9qkragip/UbsukJomGsdWhiObTE0LiaDb
lmASqSacGYGvQLejcI8ZnZINjB/mzNkCAutrjEbSqbtUdsZTb+0ip8n0EYkMi4K2vGMXY2fkcmf0
1ExfcN2Mt2QWQc2MKNtDGlIbR/RSrJzX5f/kkd8kZjNxyTSI0CaM8pEz408AqiLfsdrhl13e9n4f
8I4hlSE5z7snbJE4TJj0iC4iOMiUw8T1Wt0JA1jEcbUhCLgWVKKWntY9VOwfmLgSsl5V4IQSnjix
mdJkgA9KH1cxGuSfZiuOr/AgJk6fYmbM7Wzd0Fj0DP42U1a4Ugkm7arDnLrZyfA8ulEcpR8HJkO7
80dS10M+FywmHCWIf2SvkFOcgt+agdQ84d4L20A2IIKRadthOImOzkE0yTvQr1XJ0obYqaw32A3H
JlEEju3Tmp+Ie0TKQGb6d/g2+seth15zHtB5442kDSAOnwKIl8+5IHTs2a2uE4JAnr8ayBkGO2JG
duSMF0vD6TJtalQowFPByJ/zsmJSBbybHWu7AFQSvA5YiMxqTSMjRODNgj99lvCDVObFVVXYCeLR
s5uKO/QUOq8oISyBbYOrMb0ObSD8GtbwLgBRaQQqUQpx4QNjhprYlTN4lX3N2S/C8QFLmTw4HnKo
PYiRHQeC7Qm/dsDdnN4QMK2pJ6GfOCMyW8d5np1MwH8ghOZgtwkj78lozHfiX7BVV4zXrxtAjm5m
NCZidCCSJ+Gubl4uM9al96g00LasHbtrYAgkuDbkykNQhPgizCzpijB3FLea5w9xhulpkyQcUy59
G9SrJT1TgVXZSBehL5QKkRnxEGzxqQNvYDs2lsJVHoPHjYbZuxWhlEM2ckele9GNCcnDaMCXG05+
xX0gT9sJMKBpJT3EiyQBIDRdiHHesVmOviY3pLFDJsGucJw2BnkQMTE80tY5DmJhGFv6tKUxWDBe
X1CUwKHnJUJP7/NnSTw601A5NUcCC5AUIhtHH29Hdp7zW6KWqbJKhNHDKd2s/tuxBcfwUbeAPWRm
4wfNR4b3HlA1bwu79EyLryeMFH0Ug1zyZxSelsBhAnYxQgFMQdQTlMyhms0j+Tz63T9AIVtT7JG9
yDwr17mgxDBRJ/COLb0widV+PVR5yLZtwYaK0N+QPyIZUgt5Btk7ErRqL2As3zb0XIxwedlsWdW8
+CHiHt1zeEMCtWpzGLWZeEe1yhFGqI4G96G+1QTfyk9BlCiMaSqnkn+Wn0v2ld8uPBNq2hiyC7o/
ZOfWX/NHMfIf8v8mJlySuWrqkBYPwRKsUoQENAE/bpLHWcdX5+Sh2mcY0lqwlhhWheiRYA0SiZUH
80L1SdSQJhKEbw8FhzdMiCNEEZ5Vn9QdOBQrDkV8SUwhgg/I2JjZhIqZig1UrqFJfye6VFRJOfAo
sBoHZmzh+SVz9pWiVFfBxNcFGREJYYU1BE/J44UQXCRvbSEuOTthediclRCD/Tk8sixQDPdYKii+
7zLBJZi+rFzrwwINK2PSXp4jLYpqK9pGRqCP72FMn7NhCb1sWsnzFSBPDM3InJTjMVmolElVZSaJ
sSSglNisRxJQMhYqPBuhM66VzfQ5E4bR0sk4J9v4VFNcqgg885Ns5Y4DR8P1iqbSkC/iBtr6980L
otYM7rBonAi61zk/7HedmaorM3UaZPZNIyBcPyANiILI5QmfVPay22o0l4BO4irJBJjJKfsJydBK
E18eq6VQezHJtB7bRxNcfwIkQpxmN2XFqKpr1vDohair7qZ8qBl7ZbukyN1UuaSSVJAbU7ZJlW5f
51sUpqq9qcoaabVuWAXWeFQQogGvLMzQNAumabvMeHeKagop5RYopMh7Vo7tUPsglsNdEYUNcgsr
gmTOaSrApDQkVTTibjdir1eQY3yVFH8qQwH2+1Ru23FCrXVeDZAJbTjRxQuUaOxw7tF0Rqb7Ni1j
VZ3aPcnPkAFGZjyu7McL+ybvyDLdhoBEwsg5xYWabH7kKl5xBECxUPqPPYhD7gHe5iARfesT/JwP
BgqkVTw3ErR4LCdyhexQYZLcBR7fut6nJP38SBgTVgBuzQk1IOnBafKhrsptiTHGOWxvWw6jPg1O
KWgh/C67Qg/X7CxNGkNywKq/r/ZjdrAXLGUDZaTMPhKIh6Xt2C6xy+PkWNkPvWLxOPh0feSw6+aF
guNHJyszvky0oeC8lJoWkCYLEPTjOa/EP3eRpav9OCbkDeb6B8HkLafGwRiNBCSoHZGVVFAotEUt
UcB1iGfTNBO5vgr4KNe98DVvpvEF2Skt4SLHQELDNUlPjYL2yeRNqJ2pjHUNREbsMFKZT/mzKB0Z
bQ7hxliWIopq6CQphyGILrboyiEpJcLmkWX0Na6N5NXraJY1cZRIqq85kk9GXplGMF4DumkQAaUM
gR6nXWC32lLwmXoI4bDRoJBNV9g5lg1JYg5dyLGkRE42zehSpTTFKf0RJ0gleINW7imvNpnqN/9J
chDEO6M5RJCSsSLz2iQ1miS8t6IyPsCXHJnU96SeHZbhirhwkhxfkkBNzFWyX0/lTlwQvcmyehn4
psmOUGdfl+162CIOAMIfdYpARoDY8YYR5kQZZQNDK0eW09p7hou0SwziR/0gvyIHw+7k9Q+c5O2A
HYjlqCN3yOyCwJ8uYEd83eOj1D0kKL8ThX0H9szJW726ZJKRB8aoV6qO181o8+BKSURW8NOEdYvg
9oGYfIqZNmP9VDdV8whnQrFlzmXMyKMkKURqbzdDRd68YrmhBT+qdujzCIYIhL1+7V3Q5+XtTWI4
eiT3acyCwlrOudkff7BviQ3bFb3++m9/+xk6ZToyvAipOBHrRcSLqqb0OZM4YoPWevwautjxIArG
VmFsK6UW/JKDEVis1ixp0ziiIOFfleRDptOMeGb9fHacMmGEMXoVMaAwXgwqwdZ2XbLAqEk+4h5Z
iEOlvDFTFRVXqIXxdYUKGlbCTTS9uix2ZD5wYFQzTtWnYRbHhYLJ6c+uhnXlIJJMOsB3CnEZm2Si
7lJTbUXKSGu/U2bqygI3DzbNHOcm795fLhK9/eT7sy4loZZ6IN3dSQuXX5j65++6EaQR52J8mg4t
IMhYE/NIWcphe9xM192OAn4pynJ9OKaxUK6BFeieINkO+XrtM/tmsutX89W5HXYMWe5cSsFcw4WJ
CUBwDJoAf+q9QQbFw5PnULMpNH7P1+um9VBcTdAvsagholR8gwDlX76iyHXtxHbsQ87tVybjkZWH
wrekfeJ4Doyeanw2e5oNDxsp3T2YhnuNIFd1oz/DGUW2ppsCIGG8ImAc6U/oht2ugdFrY6IwNg/E
nhAm4a+psH3w2E6R8ae00D6RujTTfwBUFW1ME2Mh5i4VKY5e0tyLT4qlUutNhDMBIvit/csxidUy
l9MyDW9olzqyv0uFLj9n8CpZPzj7NTFsnyQZjwpl6PIhVvEwpeZ1tBEk5wa2Z7RYUXTltBq4+j/N
xdV2fj80xR0LJ0QzUk8t+iDPKq94mF88VNaokHNHuhpJeqYfICDyjMYGYoTZCcWZ6ULX57FHyGNY
dhFk/NoQCSeZuKTyh/f9oqRmiFwiPQesKGE46UXTda7znQR5rJFNBuAOk943JYgJyFJ9nLj6YC1E
NgphJZlnFrrMWw+mOnUfGphpFyVHo5lu2WPeFhX6ToC1pYlpLyl4TilyQ9UocIFhAY7i98cxWMpL
H60mjZP5Xmv2MUMjwllTaFNCELV3Ig6qzWXcqdE5IlzsuW/28mkua4tztF6EiZ/y7hulFuIU2ytB
z1L84FFOFl5+BW80vzRyXtOZdEEhM61tCYw7dabTs4jP5iF4FSEHwYEPY3Fp35E8vCQMA1YYYyiR
H+G855xW4Qq3Q8NB3fuC+TgNxaEvUHstZSIGTqO+oxHQYfs+HoEIW3FW31dIfVpH4MYWlRX4k5Cd
zxAwIthFafq5qYateDWyNE1LQojPRuVIDwWSEnNtZvnjIwQaddvSUxpZxIvvu6RKHV2+Um58ClWg
GTtZ6coiAkbAqTkY/zttTzYrRyYBLNHsV6zra9ArgQxKTzWHbMe2j6v09D+/opjTXOfSRpioJOxQ
ih5i7TNiBT8Qy87PqU+9JrCi7vQdbc4JXzpOlBxJGAcPKMbIRA/YkWUG8/960hEmBb0tKSbJzis0
QrHNO5oRm0w2hTQiT7WLjpWMT+JSL8N8k2Q6AwMKe8jbMFbjgt7TvmMMrG1ePMhZzE8nTxyR0fOM
8d52l9elzyuJlTie6it/F7SS22JoJX/mR5cBxYOR5Wq20j3AMss52tgOSFyRhrzo2v9f15yLUWsR
v9eCAjPLVl/QHvlhgg7QF/Rf7V3eSuo2eUQ8Z5J/8mByJ96qlRZr4UwCMiWxJEmNsBSCEyjvoIah
Qab34uq6FWmknNJKJjfkyiYEMP2tvK14+HRzggQoRYqjTiYfs+PyIAthhv95ech8hZSRu3rxbSPd
AJo1ItXrmlobTqQA7udELJXWNBTPxOxXgMUsVWhJjm2tGh58S/oBuXPfYSEVSJaOutEQJCI4lefE
uo6jy3TrtKMj2bBDedQOyWfNWh0lMMVweYVW1pzhRdn5pJIkipv1Ou8YmUk4ipI6KhhILEiHJWJU
jOLzymkL+3HyxYcG5QlxpKxEnlh5gPjzKuKiE4q/0miM1Vn2SNkvlRnO07OUVigqnU179mU/zgVa
CgdjljrZ9W9uuEZUUrnIQWQbWpf5jzI5SwCPshlayQ6KNIijCjhJA4PRkYE/I3eTCDhhk7T0cuGZ
KdEIww85NqXdgexmJ0VJFE86/0S9S/CQU1Qi9meSGRJ7wPYObI/ZnP05j8HGQ41dl26BNnIlme/E
/0pAjhCplKiLG/Vjdhh9w7/3AVAkq+xyHlVarQHoSikZnuQusfBuFGYwMtJFPpGB6b75eqa6AWp9
clNAGtnG0MYUo9CkUMtuI7iMWLfuIMlSbe5G0WSnWuNOas3AecGdc+2rvnmFf6X9K7T8eQ7zOKC8
rCVfIIVAx00lwrsjlfBxbRBDqISOcoH08sqJtd2ww9Bt0mq175GIWqPpG421EzNRaCghEQJ7FxKj
JPmYEIg4AUWKNO1RagUGCw75kuMqBuUYFd/JCgbFXYVCdjGuphyYwqQNCcl4xGHwoTMmJfHQ3DvY
DVsJMvgRH+iETifT46wor5q2hQNpRGaOdCttmEGnTepX/cPkS/MtedwMx4ieGvqc4u7CF6+66AF9
5TiUvNk5V4UebSArTlzPJRddcxt6gS5ItA0iSKD3gHLLWvWOF5kH9FBq299osZkpmmHVb4aK+6W6
WHWgrWmqZ+HzJn9uuG2RkUf+6E/bpB1U/nRDdE/cq5W0WCHsyexsxKhRX7Xp9zvGio100ZF4hTYi
EtJ1lXddcuQjm6QlfN14CGcbJpNbWQQrSM7HK2LDzeRRg7MwnkrZIvc7kvjs2Vicd1IJIML5mIl0
2TFh6DAKMPIo2yeU+81KxuCEQXIcxERcAKdeDEDTwipkkcMEQu5Q89CMBfAXmk/bFbkCwWgCMsZJ
TUmbOW1g9Bzya+FO+KX07UiAvGRLxT/79qBUxZIOwS0tqym6DLKxdgUKA5meA9OOdfvV7YW9YvjK
OLY3uEVy1ImTCNIv5I4c2zrMbvh+vBGBsEAmP3hfzoR2pxGdG5GHrJDpBrQquqmb0WJjX9YDjMFQ
sx1V4BsTylBxNlrGW0kcSG2kdVGPiogZkFSRrEtac7i0uXIc5o/rQZCcFdpctrk2iS43oyJafWAq
01SsN/oa8WE6KeulXTkbPU0rYWDK3dgblKB9OblFsVkoYoo7zP1UiSZqx8gmzY7GQz+MAUa7ibYW
7axOfFyAdtpftXP9UPb7gEuNRNDcqnJ2NL05prBj50i/ERL+H204duaoC5N1j/PbnqmcSly5NO41
EuvbUzqGI/iDFpDSjHbI9HBOx1BwUKtjw17XjRSAExxIb/d8GEyKQgB7+1S3JjKph64FeY84zo17
od0sTaYaljsdUHzH3c2H89C2lNKfxFGnln7YoZebyRBey9LhfEgP7Mjt6L56xAI97JBClt4Irf2w
zka1CXxok6XoLgW5ylSUzAF7gjSXfzQoHEUIgHLjYwKF+4XjtMjLk6sPilAwVK7ahEYKX84sYMuc
NEOxt2JzH0vHYn38RETLc9lUfBCPFzdU0rLHZzibNbobN+qMY1ddvm6brksH0haNb+iCWIWT++zR
MCfk0rrnUeWRk0n8csiJCJYlPfDXfBDn+MIBrY/YSc/w6YZhM22c09iVZ/eRIxlpf1YQx9BfQDAx
irwZy8RQoyzChXckKLX5QSMt5tYvF3Ye6zIPzidUZ8lfY4EDx8Fal7beQMa1X/ogvemPnUFmtR9H
TlTIIUDuN6ydHPppnXd7seR2YY4TITPnWoHSWpNvm5CamC93MIwkayA9I3LILR43Jtgsh2nSZvU0
kTXqxQhnwaXgJLm+gzNP6GpjT5cfpd1I5tt3qac9tKFuq8c9295rIEP5WE8y3qAjvEnGlnLVES74
m0oeAUnk+II5aA9B85w4IL/s4ys42RAjyapjrTFYRq73BshRFDKf20bbZY5P4+vZea9HlGDmOOGD
or6wzXBZ4uyElCjzfNYs9u1qvah5UTLoPQRxemeFxB8vfoGTTu+L81hs4BSLOUE+7IQaxUxrx5oX
4YhpXJMa991x+dBf9cD53qN9H3E27dvqsY18EsW3vvkLefx57GndQS6V8U1w6GMhSo8QGHaRTwko
cI7OKNKEiNLx7QKiLX7s828ainGbEn8Uix9vtSGJo0nffoH6FmpefEym9CAi5KR8O7NP1EybHDr7
+q9sTF//PKXhV2BMX4S4C8dNOWxpn4P7ikd4kvSzlNxC24uURoVd4UYGnt2HA7H/sPW5xYNqKw+i
FVdfkxXWS3kOyCOXYLvsI/Xrc6h/6HkjSQmx18gH004+lnUIbqPMKvnxxO2JOyr85QhhLfHSCs3V
JRx64WN7XZI9DGkYISQP1y/FpRTntDm62Xhy0NuQxFVi430OA8TU+VZ+kPI+33WR7kSI0T3BcSJ3
jjbCSpiJYguEbdJV11Iwg+VJH6OGH1xG2Kqs4QmhIouPS3CpSJD508V5N6mkoeC9rUdtdXElyQUm
fss0M+uZvx/3eMA6d6Pl2jN/ynayjdp5cy5aKHdtcfaB7wXYqttmchLUPgGjG8/rep8+p55TWoaO
jhsOGxNAariDXdPF+OUoA8LpALFykya2abcJ+2ykJwjfwa7NNDVvQisowxusXTUR+QNfIwqdtzHB
7p3ruAGw4N4lDXq8dy+l1V6inlwNxLG2pMRB21M9b7kEix5w5vbIQqLBVj8rG+D41BmwycFtdIE+
Ewa0yYCMLKQRANFf7FGWoy2jnugU+iX+/5hjiUI5XnlSlE/P0yZ3540r83jjGNWI27iHvRtI8Z61
YecU/WmOgskVmHtA9DdiA16vkWuhgA5CE15oYEsPM2XcMkIs4B3QpMKB4I7vkBCF0Nc5dFRxQmVx
zRJlDoodI6AcMP78oCEr0Z9mqlGZB1Tasq6F4XjkNml48pirChXh1r+Wd0kQ8KuRHABENK1r6HI1
j0BOg+n9twsOUMpa8hFp3wefRwsnRuJdUJOd0wPdTAOcYUdgOkjSYRsgX6oF6Eo7tOuTcyMS5IfZ
TLh5ChqJW1wkVON+ufEpq14X4Ea3aPmjAYnGp90LbEq4HTxcwDg9CuUkw4LEVk6f7Z5GZuu1pD7e
J01hDN7R/yhXHnL4fRQi9oqEWxPujJS6a5KqngJAyzkizi9IAHxuAgiVgrJmhjmhRsFKdRRHjk5V
1YXZyIU/kYnjgz3xLDCkNpdrBLLYW6WDGx18Q5E3qzcUaKM1S3k2soPvDNq6FMNwXhl3GMqB4Z9/
sAWjmk2vO8HnMYKIfqDYtmGujw4h/SkmmoSJyZoOluTf4JWUrkvWYv54LZnseCk4YVO26Gwpty7e
5xecm9oaGvqkxPjztIJPz2McZ6bkxkMH60ELjHHUwN+fUv4a7fggcnYhcBaiJLkX7QM+PdCxcSIn
pPWiVoJjQcmQ/NUbOYCmOC4LrPDtG2ECXihWc6jNF96vhId5LM7IhbkLbb3o061OJCBLjr3ZfxF+
4ri0CTeE1O5lfEGr70owwcuOupeBZsCzv11w9m/HR5cQaSgY1fLheznRNjku4Xsn0+KI3F02FgZu
lCykXcUTSgaTT/mNOpLi6cd5vSa7mUsrd7gt5bDlkLP5DJm1CpH7EhfR5E8a/EEB3CRkKT24vImN
fJAOnzbIA5eSA9yAF1wtHV09lDYgw1KLRo7bj495EOk5nxzDdHoSWyJHuXAn0X1/o6Wc1juyCeOb
5JCMC3fsyNFDYfLBAdNMGwIYV6jDijw40Hu5bkjbfYGU597z6SMKpt82LyTRuL6YBM03vvBLfDlV
sDwnzlqNqyoj7+rtVJcA3MP4MgQTmR7EzQJakIyz7opc9MJzdoOUIhh/jRg71gW9nbRiWBSPPcm5
zJK5tkprIWxZAoZM7xib13aGLB6Cp1j/mQniTytCoeYk88hRTbnwKr2SSyDY6Fo/+H1c1SldtxQy
+me4Q02Ax+EYW9c+iuSk932xfTulrkbvIEYfs+/aqu3h6rTNXYpEvVxyadK1wggnW5yaD+k0QXNu
eAB9O1DRaM/9eQOptUixff8d38hY8ClKScNwkZOiCDLShQQIuFePM3ERboXLMwPiIvhcDaBLTylO
z1WcLNSlSwjieoImwBkz/Zyb+vvJxcR65C+4erfZoOXqADZrvA3LcySE6nzlTY8Zhtrn5Eg+XD6f
ez8FpEdXQ2hQaNL5o8bidt222eeVVsqapIVOTm9FWqZ0nLpbaZ+uGLdNQMPRZibyakbNwlxYeiXH
IGX/uSOVf+eiD46UDkiVoHz26IN4kwB1fTga7CJWQTLxSmRWpGsmi52NfB17Xun9x1vubtKsV3op
HOaJjU96quT16wt766+19FfO1ZJ1bNqZb7yZQEboVMjo8pmAI2H8xEknF9ONbou5jTdw8jE2cTxG
9W3o4t2E8SCEb1FQMkkbU6rD9XvhDMnoyXgZTsp2rVLBvo3+bMjxuCK5jSOppyYDZ7FpqZL7TfO1
ghzaHThSgfr+r5n3FLg8j8uCyY4z4CYwVwPuhiPh5rBlejMVDk4XyhlpLYtNmZIZZGUUEPrKtCz1
JElceOILwCZAyev+sSO9R+YWjTZp4pUXFC9zyXQjm2oWL3yLjRU+var3jMLvBDvNOiZMk5Rdx4+E
htdRqoBLDRPvuZDjnZHqBITlnNcI1w/g1sO2KnCrVrA6r+TOnFHInZj+sRCekEGACyNXWnBfFvZS
FV263VnLRcXjtS9yK8U3IInMrgs/JRiSyPKnP9HpLUaEL4v17oqzT7PxIsVI1HufHjH0qNPslJTf
y17yb3q+DM0BjYYvmYRSjeIex9EtF07PwrVztR/5AAvrLcX+HZnv2dW5HOTkL2sYNO8vT6R3T57L
tbYz3udZuMh9vIPc3CDoIlyQqXeuS6/6idUerMuLRnqYncc91uU0ga+4RoWo5lOBlWDw+oBUOaV2
sjk1BQz+kohxGzGXAEy4K52vCUbfpD8XXfzhkSTre9tz43sakkkmRx6Ck+YuAzzJ7SRlTDGYPhRU
kRxNWl/9AbETa6U1IOeI25F18tioimLgowQeDneFSozCDSnKopWrySCF3OpEIMIV7kkWJtxcdvZT
mCFLLZL5ExbpsI0g3I/tr542VRo2hYgoHgXAjYf/mAqLv7gwZGa0khIu57Fyuyscg08BTETL6i0o
ScuyOUhvC+ZpBX/5nIsQJgcHj52tNOM3xfuEgDVt9ShxnJPcjLRw60XTWhQ1OoANZ+407wIkK+JQ
le7ZxSYM1boMZcBuyKUhS2AzLbN2o2tS4VyrcVMd+THdaLFtyW0AaYDMsRs6SAcfa9ETGglnB6Ez
H1/n+uExO8SwIO0Odp0Gr8cu0AkALVwt5Lt9A23eYZhQ0MBa/W1/aaR0EE3XR6SEv3hDyC+7SQpb
RFlTPricK55eGU8hwI8T4VypDlcbKGCdTxlDU81w/0hbsktp2j2fjD12RZ7U6eSyP1pd0j0kneFZ
uPGlm4Yvgq27eKlXvG9BkEEMdCbtSQG9xBakcTvq6SjkYhx0TZ2DsEozOQxeYxgMxxTFMxQBk4ZK
rQUarTWtgCC1iTQed+Q8mf8CDiEwtpywG9zl+y33OTWxoKAzjG6l0KtpfH5VLwncS2O+mpXJHX3p
fNOxBZtl/krzYKpj4lUsic/THWiHT7xmfCwpFZ+pwefbSQ+twvgk3sikhSZabd45k/65kq/2LUJ6
Sa76x5/PxXmgCEF08BFHafGsi2NTBxUN3x8h0MMf0+68TeTq7BEF1kIKaHOcIyjkTgcV0GjWTDhY
OubJSx6i5yxm3X/8N/shb2m38J1pvr/oqfRXyyZpv3BSgy+Ta4dQ49NwOmnV4QAZDZDoPAi3sXns
QKFDSNOM7hXXxhSybQEio3U57ZwMafe00ukXqhdbvf7xApdb3YevMaL9vsGI3Xf8zVxFs/X4bXLf
n6QoCr2nzJ75+JCvsxv4ZhgpZyT4MRJ7brWLDY0PRbkObfl+imMlt72/344YCXeLeUNu6PS7FxF+
ytc2eEMzdvFdo9cb+KNlXbkdqj733xMjnXoHN3ONUgL+ihR/UgyZCl56fE3dy0FePk3/KIH4DjO+
/GSaKvI2EazlBF6sifvTdfLdVcC6FNHjChUfxzEECkcwA+JJdJbeIgOzTVy+mbRi6ikV/bo6yQUG
tvHX/OhI4YsuRlwKITgXGjYtlFi6M32P2vjwWHqb0eufLtDRHVEmvpdijgiy+dbXU/yfGgEDoJxe
kVJ/VYuEKzIO6hPeG42+eUL7U49+rcY3ybd6nEwwmon3csS7XtPLFyZf4KBnY463IHMpPm3SH91A
wY064QjdgZE1vq/W91ofwv0/sbrMhMLbT9wPtHattO0ll/mHqCuEWNJEkFCrfNH+cTldJfLylwt7
52iHie5PLv3upUl6BGw69V2E0tmqF5C1Opp+wRYqjGnDmF/2qW8sZD1DOQeE0798wSHxeDQO1ocO
bX9dH25I2pVtGU7zatdiyHpxcAMqpYkQLxQ4UVLxd+jI15nwFOFLjQQTg91JncmLJ/FGbkZl8ABp
Gmjp2Bf/RD3gYsHQ+WVCc7n2gHo0GFqI5YXxia4Jr8yEVzNN6+IQRMx6hu915Dvwo5YyGdJJzbm7
JMdz4it3NOD2DVWeQhMolK+DmFLgJSEmSkdyY6LcHDbGBcwufALaHXPUQ73TIhTbx9ZPja9S+EE4
/xToM8foS+Tau/aUwoMNJIn5fS/fsEifIMxgmyBfWWWe3fj7zL4h+hhCG/d9Pz+G/q7TZMq47Wtc
VI1sSls+khy9d3fCEh7dv+Fj/tSNXPGGergVFgGuPmrOJO2WbNrYnWvSvv+kf6huRm8kQGECl3Bq
WRugmyMdLowMxIqHcIKXpQ24ItiEXkZCKcburxehNVxE6bM2h4uJe7+4W9jlvb2+sZ/nd3fz64cv
9t3NHT6wt3c3v93NP2T24YZ/X/zzYXH9YG8Xdx+WDw+Lt/bNFzO/vb1aXs7fXC3s1fwzvjnpn5eL
2wf7+f3i2t5g+M/L+4W9f5jjheW1/Xy3fFhe/8YDXt7cfrlb/vb+wby/uXq7uONvqPqeZucX7e38
7mG5uAcdn5ZvFylNdja/J7Jn9vPy4f3Nx4dAvLl5R4N8sf9YXr/N7GLJAy3+eXu3uL8nAmjs5Qei
eEEfLq8vrz6+JVoy+4ZGuL55sFdLWhk99nCTGcymz/rRQQyN/2Fxd/mefp2/WV4tiV/4Wq13y4dr
moJ5NxfKLz9eze/M7ce725v7xYUVFtIgxPC75f0/LK1AGftfH+dhIOIujfFhfn25wFzJmg1tE5Zr
v9x8hIugdV+9HTEFjFrYt4t3i8uH5adFhidpmvuPHxbK7/sHGtTMr67s9eKS6J3ffbH3i7tPy0vm
w93idr68A5cub+7uMMrNtYjRzxfSXB4KHle+a1ksxjUkaPEJ8vHx+gqcuFv810daK6TEjqUE489/
u1swoxOZMJ+XRBh2LwiGFcHI+BX6IArGFxKxG/vh5u3yHbZFBefy5vrT4su9SblCfI4iO39zA8a8
IUKWTA9RAC5h397OP8x/W9wnkoE5jX7JdmbvbxeXS/xAn5M8kgBcCauu72mt2Fr6gw5i57THGAHC
KftoPpIiQACvveDQ3PhbSuxZnPtQKO3VzT0k0LydP8wtU0z/vlng6bvFNTGKdWx+efnxjvQNT+AN
oub+I2ng8lp2A+tlFV/evTVeyVhu382XVx/vpoKHmW+IhRiSBTDZCXni/jwz2Hy7fEdTXb7XbbMj
Vf5i39NWvFnQY/O3n5asjjoPEblUntDqeATlo0jfLxfy3SL4SowggfcHh1RS51WMjF44EYMHq5Eg
x/b7cMmHdNrGb/QT4FM1uOxADq/IzcLa36xWuOfjUtIibAAJ3YskQAdc4SLxvwBUHSl/0Zgd1zGt
q0ZOguJgy+/8HQmdQU5r1TUVzs/zxckCP4DRy+eySmg/kjNJMFhsJB2dDYoHC8aMiMedpQJ60H5m
+UuLydtPr3U98h/JJe/zsW8g/F86qZK32H4AAA==
EOF
)
function select_license() {
printf "Software licenses:\n"
printf "\t0. BSD2-Clause\n"
printf "\t1. MIT\n"
printf "\t2. GPLv2\n"
printf "\t3. GPLv3\n"
printf "Select software license: "; read ilicense
case "$ilicense" in
0)
license="$LICENSE_BSD2CLAUSE"
;;
1)
license="$LICENSE_MIT"
;;
2)
license="$LICENSE_GPL2"
;;
3)
license="$LICENSE_GPL3"
;;
*)
echo "Unknown license!"; exit 1
;;
esac
}
function license_decode() {
echo "$1" | base64 -d | gzip -d -c -n
}
function license_template() {
sed -i -e "s/$2/$3/" "$1"
}
function repomaker_genlicense() {
license_file=$(mktemp)
license_decode "$license" > "$license_file"
license_template "$license_file" "COPYRIGHT_YEAR" "$(date +%Y)"
license_template "$license_file" "COPYRIGHT_HOLDER" "$COPYRIGHT_HOLDER"
output=$(cat "$license_file")
rm "$license_file"
echo "$output"
}
function repomaker_init() {
printf "Enter repo name: "; read repo_name
printf "Enter repo description: "; read repo_desc
echo "Remotes: "
for i in "${!REMOTES[@]}"; do
printf "\t%d. %s\n" $i "${REMOTES[$i]}"
done
printf "Select primary remote: "; read iremote_primary
remote_primary="${REMOTES[$iremote_primary]}"
# create repo directory
repo_path="$DEV_PATH/$repo_name"
mkdir -p "$repo_path"
# generate license
select_license
repomaker_genlicense > "$repo_path/LICENSE"
# add readme
printf "# $repo_name\n\n$repo_desc\n" > "$repo_path/README.md"
# init git repo
cd "$repo_path"
git init
# add primary remote
git remote add origin $(echo "$remote_primary" | sed "s/REPO_NAME/$repo_name/")
# add push remotes
for i in "${!REMOTES[@]}"; do
if [ "$i" -ne "$iremote_primary" ]; then
git remote set-url --add origin $(echo "${REMOTES[$i]}" | sed "s/REPO_NAME/$repo_name/")
fi
done
# all done!
}
case "$1" in
"init")
repomaker_init
;;
"genlicense")
select_license
repomaker_genlicense
;;
*)
echo "repomaker.sh init/genlicense"; exit 1
esac