Created
June 1, 2016 07:22
-
-
Save RaD/fb42d8588526294d24c7f6f6560e4fc9 to your computer and use it in GitHub Desktop.
This file contains 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 python | |
# -*- coding: utf-8 -*- | |
import os | |
import pwd | |
import sys | |
from datetime import datetime | |
EMAIL = u'zhevak@mail.ru' | |
TEMPLATE_HEADER = """ | |
/** | |
@file {header} | |
@version 0.0 | |
@date {datetime} | |
@author {author} | |
@email {email} | |
@brief вставьте сюда краткое описание файла | |
**/ | |
#ifndef {label} | |
#define {label} | |
// Определения внешних переменных и функций | |
#endif | |
""" | |
TEMPLATE_BODY = """ | |
/** | |
@version 0.0 | |
@date {datetime} | |
@author {author} | |
@email {email} | |
@brief вставьте сюда краткое описание файла | |
**/ | |
#include "{header}" | |
// Допишите ниже определения глобальных переменных и функций | |
""" | |
def create_file(filename, template, params): | |
if os.path.isfile(filename): | |
raise Exception('File {} is already exists'.format(filename)) | |
with open(filename, 'w') as f: | |
f.write(template.format(**params)) | |
def get_user_info(): | |
login = os.getlogin() | |
info = pwd.getpwnam(login) | |
gecos = info.pw_gecos.split(',') | |
username = os.environ.get('GIT_AUTHOR_NAME') or (login if len(gecos) == 1 else gecos[0]) | |
email = os.environ.get('GIT_AUTHOR_EMAIL') or EMAIL | |
return username, email | |
def create_module(module_name): | |
# Сгенерим имена для файлов и другие реквизиты | |
header = '{}.h'.format(module_name) | |
body = '{}.c'.format(module_name) | |
username, email = get_user_info() | |
params = { | |
'header': header, | |
'body': body, | |
'label': '__{}_H__'.format(module_name.upper()), | |
'datetime': datetime.now().strftime('%Y/%m/%d %H:%M:%S'), | |
'author': username, | |
'email': email | |
} | |
create_file(header, TEMPLATE_HEADER, params) | |
create_file(body, TEMPLATE_BODY, params) | |
def show_help(): | |
print "Используйте: mkch <имя модуля>" | |
if __name__ == '__main__': | |
try: | |
module_name = sys.argv[1] | |
except IndexError: | |
show_help() | |
else: | |
create_module(module_name) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment