Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions py2pack/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import json
import os
import pprint
import pwd
import re
import sys
import warnings
Expand All @@ -37,7 +36,7 @@
from py2pack import version as py2pack_version
from py2pack.utils import (_get_archive_filelist, get_pyproject_table,
parse_pyproject, get_setuptools_scripts,
get_metadata)
get_metadata, get_user_name)

from email import parser

Expand Down Expand Up @@ -373,7 +372,7 @@ def generate(args):
durl = newest_download_url(args)
source_url = data['source_url'] = (args.source_url or (durl and durl['url']))
data['year'] = datetime.datetime.now().year # set current year
data['user_name'] = pwd.getpwuid(os.getuid())[4] # set system user (packager)
data['user_name'] = get_user_name() # set system user (packager)
data['summary_no_ending_dot'] = re.sub(r'(.*)\.', r'\g<1>', data.get('summary')) if data.get('summary') else ""

# If package name supplied on command line differs in case from PyPI's one
Expand Down Expand Up @@ -409,6 +408,7 @@ def generate(args):

env = _prepare_template_env(_get_template_dirs())
template = env.get_template(args.template)
data.update(args.options) # update data with custom options
result = template.render(data).encode('utf-8') # render template and encode properly
outfile = open(args.filename, 'wb') # write result to spec file
try:
Expand Down Expand Up @@ -500,6 +500,7 @@ def main():
parser_generate.add_argument('version', nargs='?', help='package version (optional)')
parser_generate.add_argument('--source-url', default=None, help='source url')
parser_generate.add_argument('--source-glob', help='source glob template')
parser_generate.add_argument('--setopt', action="append", help='A KEY=VALUE option (optional)', default=[])
parser_generate.add_argument('--local', action='store_true', help='build from local package')
parser_generate.add_argument('--localfile', default='', help='path to the local PKG-INFO or json metadata')
parser_generate.add_argument('-t', '--template', choices=file_template_list(), default='opensuse.spec', help='file template')
Expand All @@ -526,6 +527,14 @@ def main():

if 'func' not in args:
sys.exit(parser.print_help())
if args.func == generate:
options = args.options = {}
for opt in args.setopt:
if '=' in opt:
key, value = opt.split('=', 1)
options[key] = value
else:
options[opt] = True
args.func(args)


Expand Down
8 changes: 8 additions & 0 deletions py2pack/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,3 +195,11 @@ def get_metadata(filename):
data['install_requires'] = mdata.get_all('Requires-Dist')

return data


def get_user_name():
"""get username"""
pwuid = pwd.getpwuid(os.getuid())
gecos = pwuid.pw_gecos # or pwd.getpwuid(os.getuid())[4]
name = pwuid.pw_name # or pwd.getpwuid(os.getuid())[0]
return gecos or name
1 change: 1 addition & 0 deletions test/test_py2pack.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class Args:
source_glob = None
local = False
localfile = ""
options = {}

self.args = Args()

Expand Down
2 changes: 1 addition & 1 deletion test/test_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class Args(object):

compare_dir = os.path.join(os.path.dirname(__file__), 'examples')
maxDiff = None
username = pwd.getpwuid(os.getuid())[4]
username = py2pack.get_user_name()


@pytest.mark.parametrize('template, fetch_tarball',
Expand Down