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
6 changes: 3 additions & 3 deletions src/codeplag/codeplagcli.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,10 @@ def __add_settings_path(self: Self, subparsers: argparse._SubParsersAction) -> N
help=_(
"If defined, then saves reports about suspect works into provided file or "
"directory. If directory by provided path doesn't exists than saves reports "
"as a file."
"as a file. Pass empty string to disable saving reports."
),
metavar="PATH",
type=Path,
type=str,
)
settings_modify.add_argument(
"-re",
Expand Down Expand Up @@ -462,4 +462,4 @@ def validate_args(self: Self, parsed_args: argparse.Namespace) -> None:
def parse_args(self: Self, args: Sequence[str] | None = None) -> argparse.Namespace: # pyright: ignore[reportIncompatibleMethodOverride]
parsed_args = super(CodeplagCLI, self).parse_args(args)
self.validate_args(parsed_args)
return parsed_args
return parsed_args
19 changes: 10 additions & 9 deletions src/codeplag/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,16 +67,17 @@ def read_settings_conf() -> Settings:
loaded_settings_config[key] = DefaultSettingsConfig[key]
continue

if key in ["environment", "reports"]:
if key in ["environment", "reports"] and loaded_settings_config.get(key) is not None:
loaded_settings_config[key] = Path(loaded_settings_config[key])

return Settings(
**{
key: loaded_settings_config[key]
for key in Settings.__annotations__
if key in loaded_settings_config
}
)
settings_dict = {}
for key in Settings.__annotations__:
if key in loaded_settings_config and loaded_settings_config[key] is not None:
settings_dict[key] = loaded_settings_config[key]
elif key in DefaultSettingsConfig:
settings_dict[key] = DefaultSettingsConfig[key]

return Settings(**settings_dict)


def write_settings_conf(settings: Settings) -> None:
Expand All @@ -96,4 +97,4 @@ def write_settings_conf(settings: Settings) -> None:
mongo_host=DEFAULT_MONGO_HOST,
mongo_port=DEFAULT_MONGO_PORT,
mongo_user=DEFAULT_MONGO_USER,
)
)
13 changes: 11 additions & 2 deletions src/codeplag/handlers/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,18 @@ def settings_modify(parsed_args: dict[str, Any]) -> None:
new_value = parsed_args.get(key)
if new_value is None:
continue
if isinstance(new_value, Path):

if key == "reports":
str_value = str(new_value) if new_value is not None else ""
if str_value in ["", "."]:
Copy link
Copy Markdown
Collaborator

@Artanias Artanias Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Как будто точка валидный путь - текущая директория, а далее в ней будет созад файлик csv потенциально.

if "reports" in settings_config:
del settings_config["reports"]
continue
else:
settings_config[key] = Path(new_value).resolve()
elif isinstance(new_value, Path):
settings_config[key] = new_value.resolve()
else:
settings_config[key] = new_value

write_settings_conf(settings_config)
write_settings_conf(settings_config)
4 changes: 2 additions & 2 deletions src/codeplag/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ class Settings(TypedDict):
environment: NotRequired[Path]
language: Language
log_level: LogLevel
reports: NotRequired[Path]
reports: NotRequired[Path | None]
reports_extension: ReportsExtension
show_progress: Flag
short_output: ShortOutput
Expand Down Expand Up @@ -242,4 +242,4 @@ class ProcessingWorks(NamedTuple):
NodeStructurePlace.__module__ = __name__
FastCompareInfo.__module__ = __name__
StructureCompareInfo.__module__ = __name__
FullCompareInfo.__module__ = __name__
FullCompareInfo.__module__ = __name__