Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add defaults for upstream_package_name, downstream_package_name #624

Merged
merged 2 commits into from
Dec 6, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 3 additions & 1 deletion packit/cli/utils.py
Expand Up @@ -109,7 +109,9 @@ def get_packit_api(
Load the package config, set other options and return the PackitAPI
"""
package_config = get_local_package_config(
local_project.working_dir, try_local_dir_last=True
local_project.working_dir,
repo_name=local_project.repo_name,
try_local_dir_last=True,
)

if dist_git_path:
Expand Down
53 changes: 35 additions & 18 deletions packit/config/package_config.py
Expand Up @@ -76,7 +76,7 @@ def __init__(
self.upstream_project_url: Optional[str] = upstream_project_url
self.upstream_package_name: Optional[str] = upstream_package_name
# this is generated by us
self._downstream_package_name: Optional[str] = downstream_package_name
self.downstream_package_name: Optional[str] = downstream_package_name
self.dist_git_base_url: str = dist_git_base_url or PROD_DISTGIT_URL
self._downstream_project_url: str = downstream_project_url
# path to a local git clone of the dist-git repo; None means to clone in a tmpdir
Expand All @@ -101,12 +101,6 @@ def __init__(
# template to create an upstream tag name (upstream may use different tagging scheme)
self.upstream_tag_template = upstream_tag_template

@property
def downstream_package_name(self) -> str:
if not self._downstream_package_name:
raise PackitConfigException("downstream_package_name is not set")
return self._downstream_package_name

@property
def downstream_project_url(self) -> str:
if not self._downstream_project_url:
Expand Down Expand Up @@ -146,7 +140,11 @@ def dist_git_package_url(self):

@classmethod
def get_from_dict(
cls, raw_dict: dict, config_file_path: str = None, validate=True
cls,
raw_dict: dict,
config_file_path: str = None,
repo_name: str = None,
validate=True,
) -> "PackageConfig":
if validate:
cls.validate(raw_dict)
Expand All @@ -157,19 +155,28 @@ def get_from_dict(
create_tarball_command = raw_dict.get("create_tarball_command", None)
current_version_command = raw_dict.get("current_version_command", None)

upstream_package_name = cls.get_deprecated_key(
raw_dict, "upstream_package_name", "upstream_project_name"
) or cls.get_deprecated_key(raw_dict, "upstream_package_name", "upstream_name")
upstream_package_name = (
cls.get_deprecated_key(
raw_dict, "upstream_package_name", "upstream_project_name"
)
or cls.get_deprecated_key(
raw_dict, "upstream_package_name", "upstream_name"
)
or repo_name
)

upstream_project_url = raw_dict.get("upstream_project_url", None)

if raw_dict.get("dist_git_url", None):
logger.warning(
"dist_git_url is no longer being processed, "
"it is generated from dist_git_base_url and downstream_package_name"
)
downstream_package_name = cls.get_deprecated_key(
raw_dict, "downstream_package_name", "package_name"
downstream_package_name = (
cls.get_deprecated_key(raw_dict, "downstream_package_name", "package_name")
or repo_name
)

specfile_path = raw_dict.get("specfile_path", None)
if not specfile_path:
if downstream_package_name:
Expand Down Expand Up @@ -254,7 +261,10 @@ def get_all_files_to_sync(self):


def get_local_package_config(
*directory, try_local_dir_first=False, try_local_dir_last=False
*directory,
repo_name: str = None,
try_local_dir_first=False,
try_local_dir_last=False,
) -> PackageConfig:
"""
:return: local PackageConfig if present
Expand All @@ -280,7 +290,9 @@ def get_local_package_config(
)
raise Exception(f"Cannot load package config: {ex}.")
return parse_loaded_config(
loaded_config=loaded_config, config_file_path=str(config_file_name)
loaded_config=loaded_config,
config_file_path=str(config_file_name),
repo_name=repo_name,
)

logger.debug(f"The local config file '{config_file_name_full}' not found.")
Expand Down Expand Up @@ -315,7 +327,9 @@ def get_package_config_from_repo(
logger.error(f"Cannot load package config '{config_file_name}'.")
raise PackitException(f"Cannot load package config: {ex}.")
return parse_loaded_config(
loaded_config=loaded_config, config_file_path=config_file_name
loaded_config=loaded_config,
config_file_path=config_file_name,
repo_name=sourcegit_project.repo,
)

logger.warning(
Expand All @@ -326,14 +340,17 @@ def get_package_config_from_repo(


def parse_loaded_config(
loaded_config: dict, config_file_path: str = None
loaded_config: dict, config_file_path: str = None, repo_name: str = None
) -> PackageConfig:
"""Tries to parse the config to PackageConfig."""
logger.debug(f"Package config:\n{json.dumps(loaded_config, indent=4)}")

try:
package_config = PackageConfig.get_from_dict(
raw_dict=loaded_config, config_file_path=config_file_path, validate=True
raw_dict=loaded_config,
config_file_path=config_file_path,
repo_name=repo_name,
validate=True,
)
return package_config
except Exception as ex:
Expand Down
3 changes: 2 additions & 1 deletion packit/distgit.py
Expand Up @@ -118,7 +118,8 @@ def downstream_config(self) -> Optional[PackageConfig]:
if not self._downstream_config:
try:
self._downstream_config = get_local_package_config(
self.local_project.working_dir
self.local_project.working_dir,
repo_name=self.local_project.repo_name,
)
except PackitConfigException:
return None
Expand Down
29 changes: 29 additions & 0 deletions tests/unit/test_config.py
Expand Up @@ -452,6 +452,35 @@ def test_package_config_parse(raw, expected):
assert package_config == expected


@pytest.mark.parametrize(
"raw,expected",
[
(
{
"specfile_path": "fedora/package.spec",
"synced_files": ["fedora/package.spec"],
},
PackageConfig(
specfile_path="fedora/package.spec",
synced_files=SyncFilesConfig(
files_to_sync=[
SyncFilesItem(
src="fedora/package.spec", dest="fedora/package.spec"
)
]
),
downstream_package_name="package",
upstream_package_name="package",
),
)
],
)
def test_package_config_upstream_and_downstream_package_names(raw, expected):
package_config = PackageConfig.get_from_dict(raw_dict=raw, repo_name="package")
assert package_config
assert package_config == expected


def test_dist_git_package_url():
di = {
"dist_git_base_url": "https://packit.dev/",
Expand Down