Last active
May 9, 2018 11:23
-
-
Save dominikstraessle/87e37687607cd275963910d8d14b7787 to your computer and use it in GitHub Desktop.
Erstellt ein Bash-Script mit einem fertigen Header. Die Parameter werden interaktiv abgefragt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# Dateiname: create_header.py | |
# Beschreibung: Erstellt ein Bash-Script mit einem fertigen Header. Die Parameter werden interaktiv | |
# abgefragt | |
# Aufruf: python3 create_header.py dateiname | |
# dateiname: Name des zu erstellenden Scripts | |
# Autor: Dominik Strässle | |
# Version: 1.0 | |
# Datum: 05/09/2018 | |
import datetime | |
import os | |
import sys | |
def params_exist(params: list) -> bool: | |
"""Returns False if the list only contains empty strings.""" | |
if params and len(params) > 0: | |
if params[0]: | |
return True | |
return False | |
# überprüfe ob der Dateiname angegeben wurde | |
if len(sys.argv) < 2: | |
raise Exception('Bitte geben sie einen Dateinamen als erstes Argument an.') | |
# alle informationen | |
bin_str = '#!/bin/bash' | |
filename = sys.argv[1] | |
desc = 'Beschreibung: ' + input('Beschreibung: ') | |
autor = 'Autor:\tDominik Strässle' | |
version = 'Version:\t1.0' | |
date = 'Datum:\t' + datetime.date.today().strftime('%m/%d/%Y') | |
# aufruf ohne die Parameter | |
aufruf = 'Aufruf:\t' + filename + ' ' | |
# parameter eingeben und anhand von leerzeichen in liste speichern | |
params = input('Parameter: ').split(' ') | |
# lösche leerzeichen aus der parameter list | |
if ' ' in params: | |
params.remove(' ') | |
# wenn parameter vorhanden sind hole die beschreibungen | |
params_desc = [] | |
if params_exist(params): | |
params_desc = [ | |
input('Beschreibung von ' + i + ': ') | |
for i in params | |
] | |
# aufruf neu zusammensetzen mit parametern | |
aufruf = aufruf + ' '.join(params) | |
# bash überprüfung ob alle argumente mitgegeben wurden | |
err_msg = '' | |
if params_exist(params): | |
err_msg = """ | |
if [ $# -ne """ + str(len(params)) + """ ] | |
then | |
echo "Es wurde nicht die korrekte Anzahl Parameter übergeben." | |
echo "Der korrekte Aufruf lautet:" | |
echo \"""" + aufruf + """\" | |
exit 1 | |
fi | |
""" | |
# füge die beschreibungen von params hinzu | |
if params_exist(params): | |
for i in range(0, len(params)): | |
aufruf += '\n#\t\t' + params[i] + ': ' + params_desc[i] | |
pass | |
# liste mit allen informationen | |
liste = [bin_str, 'Dateiname:\t' + filename, desc, aufruf, autor, version, date, err_msg] | |
# konvertiere zu string | |
end_string = '\n# '.join(liste) | |
# schreibe | |
with open(filename, 'w', encoding='utf8') as file: | |
file.write(end_string) | |
pass | |
# ändere die berechtigung der datei | |
os.chmod(filename, 771) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Could you please use echo for the params checker so it automatically adds \n to the end of the line