Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9c6db3844f | |||
| fb372d11ec | |||
| f23614d245 | |||
| 427e6addda | |||
| 67698a52e0 | |||
| c54aaa9c80 | |||
| 6681535ae1 | |||
| fb365b6850 | |||
| 7ff0f36338 |
+6
-1
@@ -1 +1,6 @@
|
||||
include *.md LICENSE
|
||||
include *.md
|
||||
include *.txt
|
||||
include LICENSE
|
||||
include qmk
|
||||
include release
|
||||
recursive-include qmk_cli *.py
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# QMK CLI
|
||||
|
||||
A program to help users work with QMK
|
||||
A program to help users work with [QMK Firmware](https://qmk.fm/).
|
||||
|
||||
# Features
|
||||
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
[build-system]
|
||||
requires = ["flit"]
|
||||
build-backend = "flit.buildapi"
|
||||
|
||||
[tool.flit.metadata]
|
||||
dist-name = "qmk"
|
||||
module = "qmk_cli"
|
||||
author = "skullydazed"
|
||||
author-email = "skullydazed@gmail.com"
|
||||
description-file = "README.md"
|
||||
home-page = "https://github.com/qmk/qmk_cli"
|
||||
classifiers = [
|
||||
'Development Status :: 3 - Alpha',
|
||||
'Environment :: Console',
|
||||
'Intended Audience :: Developers',
|
||||
'Intended Audience :: System Administrators',
|
||||
'Intended Audience :: End Users/Desktop',
|
||||
'License :: OSI Approved :: MIT License',
|
||||
'Natural Language :: English',
|
||||
'Programming Language :: Python :: 3 :: Only',
|
||||
'Topic :: Scientific/Engineering',
|
||||
'Topic :: Software Development',
|
||||
'Topic :: Utilities',
|
||||
]
|
||||
requires-python = ">=3.5"
|
||||
requires = [
|
||||
#"milc", #FIXME(skullydazed): Included in the repo for now.
|
||||
"argcomplete",
|
||||
"colorama",
|
||||
#"halo"
|
||||
]
|
||||
|
||||
[tool.flit.scripts]
|
||||
qmk = "qmk_cli.script_qmk:main"
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
"""A program to help you work with qmk_firmware."""
|
||||
|
||||
__version__ = '0.0.3'
|
||||
__version__ = '0.0.7'
|
||||
|
||||
@@ -2,100 +2,10 @@
|
||||
|
||||
Check up for QMK environment.
|
||||
"""
|
||||
import shutil
|
||||
import platform
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
import qmk_cli.doctor
|
||||
from qmk_cli.milc import cli
|
||||
|
||||
|
||||
def check_qmk_firmware():
|
||||
"""Make sure qmk_firmware and the qmk cli are there.
|
||||
"""
|
||||
qmk_firmware = Path(os.environ['QMK_HOME'])
|
||||
qmk_cli = qmk_firmware / 'bin' / 'qmk'
|
||||
|
||||
if qmk_firmware.exists() and not qmk_cli.exists():
|
||||
cli.log.error("{fg_red}Can't find %s/bin/qmk! You need to `git pull`.", os.environ['QMK_HOME'])
|
||||
return False
|
||||
|
||||
elif not qmk_firmware.exists():
|
||||
cli.log.error("{fg_red}Can't find the qmk_firmware checkout! %s does not exist!", os.environ['QMK_HOME'])
|
||||
return False
|
||||
|
||||
cli.log.info('Found qmk_firmware checkout in {fg_cyan}%s', str(qmk_firmware))
|
||||
return True
|
||||
|
||||
|
||||
def check_vital_programs():
|
||||
"""Make sure the software we need has been installed.
|
||||
|
||||
TODO(unclaimed):
|
||||
* [ ] Run the binaries to make sure they work
|
||||
* [ ] Compile a trivial program with each compiler
|
||||
"""
|
||||
ok = True
|
||||
binaries = ['dfu-programmer', 'avrdude', 'dfu-util', 'avr-gcc', 'arm-none-eabi-gcc']
|
||||
|
||||
for binary in binaries:
|
||||
res = shutil.which(binary)
|
||||
if res is None:
|
||||
cli.log.error("{fg_red}QMK can't find %s in your path", binary)
|
||||
ok = False
|
||||
|
||||
if ok:
|
||||
cli.log.info("All necessary software is installed.")
|
||||
|
||||
return ok
|
||||
|
||||
|
||||
def check_platform_tests():
|
||||
"""Dispatch to platform specific tests.
|
||||
"""
|
||||
OS = platform.system()
|
||||
|
||||
if OS == "Darwin":
|
||||
cli.log.info("Detected {fg_cyan}macOS")
|
||||
return check_mac_os()
|
||||
|
||||
elif OS == "Linux":
|
||||
cli.log.info("Detected {fg_cyan}linux")
|
||||
return check_linux()
|
||||
|
||||
else:
|
||||
cli.log.info("Assuming {fg_cyan}Windows")
|
||||
return check_windows()
|
||||
|
||||
|
||||
def check_mac_os():
|
||||
"""Run macOS specific tests.
|
||||
|
||||
There aren't any yet.
|
||||
"""
|
||||
return True
|
||||
|
||||
|
||||
def check_linux():
|
||||
"""Run Linux specific tests.
|
||||
|
||||
TODO(unclaimed):
|
||||
* [ ] Check for udev entries on linux
|
||||
"""
|
||||
test = 'systemctl list-unit-files | grep enabled | grep -i ModemManager'
|
||||
if os.system(test) == 0:
|
||||
cli.log.warn("{bg_yellow}Detected modem manager. Please disable it if you are using Pro Micros")
|
||||
|
||||
|
||||
def check_windows():
|
||||
"""Run Windows specific tests.
|
||||
|
||||
TODO(unclaimed):
|
||||
* [ ] Check out the driver situation
|
||||
"""
|
||||
return True
|
||||
|
||||
|
||||
@cli.entrypoint('Basic QMK environment checks')
|
||||
def main(cli):
|
||||
"""Basic QMK environment checks.
|
||||
@@ -105,9 +15,9 @@ def main(cli):
|
||||
cli.log.info('QMK Doctor is checking your environment')
|
||||
|
||||
funcs = (
|
||||
check_qmk_firmware,
|
||||
check_vital_programs,
|
||||
check_platform_tests,
|
||||
qmk_cli.doctor.check_qmk_firmware,
|
||||
qmk_cli.doctor.check_vital_programs,
|
||||
qmk_cli.doctor.check_platform_tests,
|
||||
)
|
||||
|
||||
ok = True
|
||||
|
||||
@@ -46,7 +46,6 @@ def main(cli):
|
||||
if process.returncode == 0:
|
||||
setup_successful = True
|
||||
|
||||
|
||||
# fin
|
||||
if setup_successful:
|
||||
cli.log.info('QMK setup complete!')
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
# Increment the verison number and release a new version of qmk_cli.
|
||||
set -e
|
||||
set -x
|
||||
|
||||
FLIT_USERNAME=${FLIT_USERNAME:=skully}
|
||||
|
||||
export FLIT_USERNAME
|
||||
|
||||
bumpversion patch
|
||||
git push origin master --tags
|
||||
|
||||
# For now we don't use flit
|
||||
#flit publish
|
||||
|
||||
# Use setuptools until flit works with homebrew
|
||||
python3 setup.py sdist bdist_wheel
|
||||
twine upload dist/qmk-*
|
||||
@@ -1,334 +1,83 @@
|
||||
[bumpversion]
|
||||
current_version = 0.0.7
|
||||
commit = True
|
||||
tag = True
|
||||
tag_name = {new_version}
|
||||
message = New release: {current_version} → {new_version}
|
||||
|
||||
[bumpversion:file:qmk_cli/__init__.py]
|
||||
|
||||
[bumpversion:file:setup.cfg]
|
||||
|
||||
[bdist_wheel]
|
||||
universal = 1
|
||||
|
||||
[flake8]
|
||||
ignore = E501,E226
|
||||
|
||||
[metadata]
|
||||
author = skullydazed
|
||||
author-email = skullydazed@gmail.com
|
||||
description-file = README.md
|
||||
dist-name = qmk
|
||||
license_file = LICENSE
|
||||
module = qmk_cli
|
||||
home-page = https://github.com/qmk/qmk_cli
|
||||
requires-python = >=3.5
|
||||
|
||||
[entry_points]
|
||||
qmk = qmk_cli.script_qmk:main
|
||||
|
||||
[yapf]
|
||||
# Align closing bracket with visual indentation.
|
||||
align_closing_bracket_with_visual_indent=True
|
||||
|
||||
# Allow dictionary keys to exist on multiple lines. For example:
|
||||
#
|
||||
# x = {
|
||||
# ('this is the first element of a tuple',
|
||||
# 'this is the second element of a tuple'):
|
||||
# value,
|
||||
# }
|
||||
allow_multiline_dictionary_keys=False
|
||||
|
||||
# Allow lambdas to be formatted on more than one line.
|
||||
allow_multiline_lambdas=False
|
||||
|
||||
# Allow splitting before a default / named assignment in an argument list.
|
||||
allow_split_before_default_or_named_assigns=True
|
||||
|
||||
# Allow splits before the dictionary value.
|
||||
allow_split_before_dict_value=True
|
||||
|
||||
# Let spacing indicate operator precedence. For example:
|
||||
#
|
||||
# a = 1 * 2 + 3 / 4
|
||||
# b = 1 / 2 - 3 * 4
|
||||
# c = (1 + 2) * (3 - 4)
|
||||
# d = (1 - 2) / (3 + 4)
|
||||
# e = 1 * 2 - 3
|
||||
# f = 1 + 2 + 3 + 4
|
||||
#
|
||||
# will be formatted as follows to indicate precedence:
|
||||
#
|
||||
# a = 1*2 + 3/4
|
||||
# b = 1/2 - 3*4
|
||||
# c = (1+2) * (3-4)
|
||||
# d = (1-2) / (3+4)
|
||||
# e = 1*2 - 3
|
||||
# f = 1 + 2 + 3 + 4
|
||||
#
|
||||
arithmetic_precedence_indication=True
|
||||
|
||||
# Number of blank lines surrounding top-level function and class
|
||||
# definitions.
|
||||
blank_lines_around_top_level_definition=2
|
||||
|
||||
# Insert a blank line before a class-level docstring.
|
||||
blank_line_before_class_docstring=False
|
||||
|
||||
# Insert a blank line before a module docstring.
|
||||
blank_line_before_module_docstring=False
|
||||
|
||||
# Insert a blank line before a 'def' or 'class' immediately nested
|
||||
# within another 'def' or 'class'. For example:
|
||||
#
|
||||
# class Foo:
|
||||
# # <------ this blank line
|
||||
# def method():
|
||||
# ...
|
||||
blank_line_before_nested_class_or_def=False
|
||||
|
||||
# Do not split consecutive brackets. Only relevant when
|
||||
# dedent_closing_brackets is set. For example:
|
||||
#
|
||||
# call_func_that_takes_a_dict(
|
||||
# {
|
||||
# 'key1': 'value1',
|
||||
# 'key2': 'value2',
|
||||
# }
|
||||
# )
|
||||
#
|
||||
# would reformat to:
|
||||
#
|
||||
# call_func_that_takes_a_dict({
|
||||
# 'key1': 'value1',
|
||||
# 'key2': 'value2',
|
||||
# })
|
||||
coalesce_brackets=True
|
||||
|
||||
# The column limit.
|
||||
column_limit=256
|
||||
|
||||
# The style for continuation alignment. Possible values are:
|
||||
#
|
||||
# - SPACE: Use spaces for continuation alignment. This is default behavior.
|
||||
# - FIXED: Use fixed number (CONTINUATION_INDENT_WIDTH) of columns
|
||||
# (ie: CONTINUATION_INDENT_WIDTH/INDENT_WIDTH tabs) for continuation
|
||||
# alignment.
|
||||
# - VALIGN-RIGHT: Vertically align continuation lines with indent
|
||||
# characters. Slightly right (one more indent character) if cannot
|
||||
# vertically align continuation lines with indent characters.
|
||||
#
|
||||
# For options FIXED, and VALIGN-RIGHT are only available when USE_TABS is
|
||||
# enabled.
|
||||
continuation_align_style=SPACE
|
||||
|
||||
# Indent width used for line continuations.
|
||||
continuation_indent_width=4
|
||||
|
||||
# Put closing brackets on a separate line, dedented, if the bracketed
|
||||
# expression can't fit in a single line. Applies to all kinds of brackets,
|
||||
# including function definitions and calls. For example:
|
||||
#
|
||||
# config = {
|
||||
# 'key1': 'value1',
|
||||
# 'key2': 'value2',
|
||||
# } # <--- this bracket is dedented and on a separate line
|
||||
#
|
||||
# time_series = self.remote_client.query_entity_counters(
|
||||
# entity='dev3246.region1',
|
||||
# key='dns.query_latency_tcp',
|
||||
# transform=Transformation.AVERAGE(window=timedelta(seconds=60)),
|
||||
# start_ts=now()-timedelta(days=3),
|
||||
# end_ts=now(),
|
||||
# ) # <--- this bracket is dedented and on a separate line
|
||||
dedent_closing_brackets=True
|
||||
|
||||
# Disable the heuristic which places each list element on a separate line
|
||||
# if the list is comma-terminated.
|
||||
disable_ending_comma_heuristic=False
|
||||
|
||||
# Place each dictionary entry onto its own line.
|
||||
each_dict_entry_on_separate_line=True
|
||||
|
||||
# The regex for an i18n comment. The presence of this comment stops
|
||||
# reformatting of that line, because the comments are required to be
|
||||
# next to the string they translate.
|
||||
i18n_comment=
|
||||
|
||||
# The i18n function call names. The presence of this function stops
|
||||
# reformattting on that line, because the string it has cannot be moved
|
||||
# away from the i18n comment.
|
||||
i18n_function_call=
|
||||
|
||||
# Indent blank lines.
|
||||
indent_blank_lines=False
|
||||
|
||||
# Indent the dictionary value if it cannot fit on the same line as the
|
||||
# dictionary key. For example:
|
||||
#
|
||||
# config = {
|
||||
# 'key1':
|
||||
# 'value1',
|
||||
# 'key2': value1 +
|
||||
# value2,
|
||||
# }
|
||||
indent_dictionary_value=True
|
||||
|
||||
# The number of columns to use for indentation.
|
||||
indent_width=4
|
||||
|
||||
# Join short lines into one line. E.g., single line 'if' statements.
|
||||
join_multiple_lines=False
|
||||
|
||||
# Do not include spaces around selected binary operators. For example:
|
||||
#
|
||||
# 1 + 2 * 3 - 4 / 5
|
||||
#
|
||||
# will be formatted as follows when configured with "*,/":
|
||||
#
|
||||
# 1 + 2*3 - 4/5
|
||||
no_spaces_around_selected_binary_operators=
|
||||
|
||||
# Use spaces around default or named assigns.
|
||||
spaces_around_default_or_named_assign=False
|
||||
|
||||
# Use spaces around the power operator.
|
||||
spaces_around_power_operator=False
|
||||
|
||||
# The number of spaces required before a trailing comment.
|
||||
# This can be a single value (representing the number of spaces
|
||||
# before each trailing comment) or list of values (representing
|
||||
# alignment column values; trailing comments within a block will
|
||||
# be aligned to the first column value that is greater than the maximum
|
||||
# line length within the block). For example:
|
||||
#
|
||||
# With spaces_before_comment=5:
|
||||
#
|
||||
# 1 + 1 # Adding values
|
||||
#
|
||||
# will be formatted as:
|
||||
#
|
||||
# 1 + 1 # Adding values <-- 5 spaces between the end of the statement and comment
|
||||
#
|
||||
# With spaces_before_comment=15, 20:
|
||||
#
|
||||
# 1 + 1 # Adding values
|
||||
# two + two # More adding
|
||||
#
|
||||
# longer_statement # This is a longer statement
|
||||
# short # This is a shorter statement
|
||||
#
|
||||
# a_very_long_statement_that_extends_beyond_the_final_column # Comment
|
||||
# short # This is a shorter statement
|
||||
#
|
||||
# will be formatted as:
|
||||
#
|
||||
# 1 + 1 # Adding values <-- end of line comments in block aligned to col 15
|
||||
# two + two # More adding
|
||||
#
|
||||
# longer_statement # This is a longer statement <-- end of line comments in block aligned to col 20
|
||||
# short # This is a shorter statement
|
||||
#
|
||||
# a_very_long_statement_that_extends_beyond_the_final_column # Comment <-- the end of line comments are aligned based on the line length
|
||||
# short # This is a shorter statement
|
||||
#
|
||||
spaces_before_comment=2
|
||||
|
||||
# Insert a space between the ending comma and closing bracket of a list,
|
||||
# etc.
|
||||
space_between_ending_comma_and_closing_bracket=False
|
||||
|
||||
# Split before arguments
|
||||
split_all_comma_separated_values=False
|
||||
|
||||
# Split before arguments if the argument list is terminated by a
|
||||
# comma.
|
||||
split_arguments_when_comma_terminated=True
|
||||
|
||||
# Set to True to prefer splitting before '+', '-', '*', '/', '//', or '@'
|
||||
# rather than after.
|
||||
split_before_arithmetic_operator=False
|
||||
|
||||
# Set to True to prefer splitting before '&', '|' or '^' rather than
|
||||
# after.
|
||||
split_before_bitwise_operator=True
|
||||
|
||||
# Split before the closing bracket if a list or dict literal doesn't fit on
|
||||
# a single line.
|
||||
split_before_closing_bracket=True
|
||||
|
||||
# Split before a dictionary or set generator (comp_for). For example, note
|
||||
# the split before the 'for':
|
||||
#
|
||||
# foo = {
|
||||
# variable: 'Hello world, have a nice day!'
|
||||
# for variable in bar if variable != 42
|
||||
# }
|
||||
split_before_dict_set_generator=True
|
||||
|
||||
# Split before the '.' if we need to split a longer expression:
|
||||
#
|
||||
# foo = ('This is a really long string: {}, {}, {}, {}'.format(a, b, c, d))
|
||||
#
|
||||
# would reformat to something like:
|
||||
#
|
||||
# foo = ('This is a really long string: {}, {}, {}, {}'
|
||||
# .format(a, b, c, d))
|
||||
split_before_dot=False
|
||||
|
||||
# Split after the opening paren which surrounds an expression if it doesn't
|
||||
# fit on a single line.
|
||||
split_before_expression_after_opening_paren=False
|
||||
|
||||
# If an argument / parameter list is going to be split, then split before
|
||||
# the first argument.
|
||||
split_before_first_argument=False
|
||||
|
||||
# Set to True to prefer splitting before 'and' or 'or' rather than
|
||||
# after.
|
||||
split_before_logical_operator=False
|
||||
|
||||
# Split named assignments onto individual lines.
|
||||
split_before_named_assigns=True
|
||||
|
||||
# Set to True to split list comprehensions and generators that have
|
||||
# non-trivial expressions and multiple clauses before each of these
|
||||
# clauses. For example:
|
||||
#
|
||||
# result = [
|
||||
# a_long_var + 100 for a_long_var in xrange(1000)
|
||||
# if a_long_var % 10]
|
||||
#
|
||||
# would reformat to something like:
|
||||
#
|
||||
# result = [
|
||||
# a_long_var + 100
|
||||
# for a_long_var in xrange(1000)
|
||||
# if a_long_var % 10]
|
||||
split_complex_comprehension=True
|
||||
|
||||
# The penalty for splitting right after the opening bracket.
|
||||
split_penalty_after_opening_bracket=300
|
||||
|
||||
# The penalty for splitting the line after a unary operator.
|
||||
split_penalty_after_unary_operator=10000
|
||||
|
||||
# The penalty of splitting the line around the '+', '-', '*', '/', '//',
|
||||
# ``%``, and '@' operators.
|
||||
split_penalty_arithmetic_operator=300
|
||||
|
||||
# The penalty for splitting right before an if expression.
|
||||
split_penalty_before_if_expr=0
|
||||
|
||||
# The penalty of splitting the line around the '&', '|', and '^'
|
||||
# operators.
|
||||
split_penalty_bitwise_operator=300
|
||||
|
||||
# The penalty for splitting a list comprehension or generator
|
||||
# expression.
|
||||
split_penalty_comprehension=80
|
||||
|
||||
# The penalty for characters over the column limit.
|
||||
split_penalty_excess_character=7000
|
||||
|
||||
# The penalty incurred by adding a line split to the unwrapped line. The
|
||||
# more line splits added the higher the penalty.
|
||||
split_penalty_for_added_line_split=30
|
||||
|
||||
# The penalty of splitting a list of "import as" names. For example:
|
||||
#
|
||||
# from a_very_long_or_indented_module_name_yada_yad import (long_argument_1,
|
||||
# long_argument_2,
|
||||
# long_argument_3)
|
||||
#
|
||||
# would reformat to something like:
|
||||
#
|
||||
# from a_very_long_or_indented_module_name_yada_yad import (
|
||||
# long_argument_1, long_argument_2, long_argument_3)
|
||||
split_penalty_import_names=0
|
||||
|
||||
# The penalty of splitting the line around the 'and' and 'or'
|
||||
# operators.
|
||||
split_penalty_logical_operator=300
|
||||
|
||||
# Use the Tab character for indentation.
|
||||
use_tabs=False
|
||||
align_closing_bracket_with_visual_indent = True
|
||||
allow_multiline_dictionary_keys = False
|
||||
allow_multiline_lambdas = False
|
||||
allow_split_before_default_or_named_assigns = True
|
||||
allow_split_before_dict_value = True
|
||||
arithmetic_precedence_indication = True
|
||||
blank_lines_around_top_level_definition = 2
|
||||
blank_line_before_class_docstring = False
|
||||
blank_line_before_module_docstring = False
|
||||
blank_line_before_nested_class_or_def = False
|
||||
coalesce_brackets = True
|
||||
column_limit = 256
|
||||
continuation_align_style = SPACE
|
||||
continuation_indent_width = 4
|
||||
dedent_closing_brackets = True
|
||||
disable_ending_comma_heuristic = False
|
||||
each_dict_entry_on_separate_line = True
|
||||
i18n_comment =
|
||||
i18n_function_call =
|
||||
indent_blank_lines = False
|
||||
indent_dictionary_value = True
|
||||
indent_width = 4
|
||||
join_multiple_lines = False
|
||||
no_spaces_around_selected_binary_operators =
|
||||
spaces_around_default_or_named_assign = False
|
||||
spaces_around_power_operator = False
|
||||
spaces_before_comment = 2
|
||||
space_between_ending_comma_and_closing_bracket = False
|
||||
split_all_comma_separated_values = False
|
||||
split_arguments_when_comma_terminated = True
|
||||
split_before_arithmetic_operator = False
|
||||
split_before_bitwise_operator = True
|
||||
split_before_closing_bracket = True
|
||||
split_before_dict_set_generator = True
|
||||
split_before_dot = False
|
||||
split_before_expression_after_opening_paren = False
|
||||
split_before_first_argument = False
|
||||
split_before_logical_operator = False
|
||||
split_before_named_assigns = True
|
||||
split_complex_comprehension = True
|
||||
split_penalty_after_opening_bracket = 300
|
||||
split_penalty_after_unary_operator = 10000
|
||||
split_penalty_arithmetic_operator = 300
|
||||
split_penalty_before_if_expr = 0
|
||||
split_penalty_bitwise_operator = 300
|
||||
split_penalty_comprehension = 80
|
||||
split_penalty_excess_character = 7000
|
||||
split_penalty_for_added_line_split = 30
|
||||
split_penalty_import_names = 0
|
||||
split_penalty_logical_operator = 300
|
||||
use_tabs = False
|
||||
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
from configparser import ConfigParser
|
||||
from setuptools import setup, find_packages
|
||||
|
||||
setup_cfg = ConfigParser()
|
||||
setup_cfg.read('setup.cfg')
|
||||
metadata = setup_cfg['metadata']
|
||||
|
||||
if __name__ == "__main__":
|
||||
setup(
|
||||
name=metadata['dist-name'],
|
||||
description=open(metadata['description-file']).read(),
|
||||
entry_points={
|
||||
'console_scripts': ['%s = %s' % l for l in setup_cfg['entry_points'].items()]
|
||||
},
|
||||
license='MIT License',
|
||||
url=metadata['home-page'],
|
||||
version=setup_cfg['bumpversion']['current_version'],
|
||||
author=metadata['author'],
|
||||
author_email=metadata['author-email'],
|
||||
maintainer=metadata['author'],
|
||||
maintainer_email=metadata['author-email'],
|
||||
long_description=open('README.md').read(),
|
||||
long_description_content_type="text/markdown",
|
||||
packages=find_packages(),
|
||||
classifiers=[
|
||||
'Development Status :: 3 - Alpha',
|
||||
'Environment :: Console',
|
||||
'Intended Audience :: Developers',
|
||||
'Intended Audience :: System Administrators',
|
||||
'Intended Audience :: End Users/Desktop',
|
||||
'License :: OSI Approved :: MIT License',
|
||||
'Natural Language :: English',
|
||||
'Programming Language :: Python :: 3 :: Only',
|
||||
'Topic :: Scientific/Engineering',
|
||||
'Topic :: Software Development',
|
||||
'Topic :: Utilities',
|
||||
],
|
||||
requires_python=metadata['requires-python'],
|
||||
install_requires=[
|
||||
#"milc", #FIXME(skullydazed): Included in the repo for now.
|
||||
"argcomplete",
|
||||
"colorama",
|
||||
#"halo"
|
||||
],
|
||||
)
|
||||
Reference in New Issue
Block a user