Skip to content

Instantly share code, notes, and snippets.

@dominikstraessle
Last active May 9, 2018 11:23
Show Gist options
  • Save dominikstraessle/87e37687607cd275963910d8d14b7787 to your computer and use it in GitHub Desktop.
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
#!/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)
@mtte
Copy link

mtte commented May 9, 2018

There is an error in the code you generate:
on line 60 it should be if [ $# -ne """ + str(len(params)) + """ ]

@dominikstraessle
Copy link
Author

already fixed @mtte

@Aaronmacaron
Copy link

Could you please use echo for the params checker so it automatically adds \n to the end of the line

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment