forked from commitizen-tools/commitizen
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcli.py
More file actions
114 lines (87 loc) · 3.4 KB
/
Copy pathcli.py
File metadata and controls
114 lines (87 loc) · 3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import os
import io
import logging
import argparse
import sys
# from pathlib import Path
from configparser import RawConfigParser
from commitizen import (registered, run, set_commiter, show_example,
show_info, show_schema)
logger = logging.getLogger(__name__)
def get_parser(config):
description = (
'Commitizen is a cli tool to generate conventional commits.\n'
'For more information about the topic go to '
'https://conventionalcommits.org/'
)
formater = argparse.RawDescriptionHelpFormatter
parser = argparse.ArgumentParser(prog='cz',
description=description,
formatter_class=formater)
parser.set_defaults(func=run)
parser.add_argument('--debug', action='store_true', default=False,
help='use debug mode')
parser.add_argument('-n', '--name', default=config.get('name'),
help='use the given commitizen')
subparser = parser.add_subparsers(title='commands')
# subparser.add_argument('--debug', default=False)
lscz = subparser.add_parser('ls', help='show available commitizens')
lscz.set_defaults(func=registered)
# commit = subparser.add_parser('commit', aliases=['c'],
# help='create new commit')
commit = subparser.add_parser('commit',
help='create new commit')
commit.set_defaults(func=run)
example = subparser.add_parser('example', help='show commit example')
example.set_defaults(func=show_example)
info = subparser.add_parser('info', help='show information about the cz')
info.set_defaults(func=show_info)
schema = subparser.add_parser('schema', help='show commit schema')
schema.set_defaults(func=show_schema)
return parser
def load_cfg():
defaults = {
'name': 'cz_conventional_changelog'
}
config = RawConfigParser('')
home = str(os.path.expanduser("~"))
config_file = '.cz'
# load cfg from home folder
global_cfg = os.path.join(home, config_file)
if os.path.exists(global_cfg):
config.readfp(io.open(global_cfg, 'rt', encoding='utf-8'))
log_config = io.StringIO()
config.write(log_config)
defaults.update(dict(config.items("commitizen")))
# load cfg from current project
configs = ['setup.cfg', '.cz.cfg']
for cfg in configs:
if not os.path.exists(config_file) and os.path.exists(cfg):
config_file = cfg
break
config_file_exists = os.path.exists(config_file)
if config_file_exists:
logger.debug('Reading file "%s"', config_file)
config.readfp(io.open(config_file, 'rt', encoding='utf-8'))
log_config = io.StringIO()
config.write(log_config)
defaults.update(dict(config.items("commitizen")))
return defaults
def cz(args):
sys.argv = [sys.argv[0]] + args
config = load_cfg()
parser = get_parser(config)
args = parser.parse_args()
if args.debug:
logging.getLogger('commitizen').setLevel(logging.DEBUG)
set_commiter(config.get('name'))
change_type = args.func(args)
return change_type
def main():
config = load_cfg()
parser = get_parser(config)
args = parser.parse_args()
if args.debug:
logging.getLogger('commitizen').setLevel(logging.DEBUG)
set_commiter(args.name)
args.func(args)