Skip to content

Instantly share code, notes, and snippets.

@RaD
Created June 1, 2016 07:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RaD/fb42d8588526294d24c7f6f6560e4fc9 to your computer and use it in GitHub Desktop.
Save RaD/fb42d8588526294d24c7f6f6560e4fc9 to your computer and use it in GitHub Desktop.
#!/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