Compare commits

..

7 Commits

4 changed files with 16 additions and 14 deletions

View File

@ -130,7 +130,7 @@ def re_rename(regex: Regex, target: str) -> Transform:
return inner return inner
def sanitize_windows_path(path: PurePath) -> Optional[PurePath]: def sanitize_windows_path(path: PurePath) -> PurePath:
""" """
A small function to escape characters that are forbidden in windows path names. A small function to escape characters that are forbidden in windows path names.
This method is a no-op on other operating systems. This method is a no-op on other operating systems.

View File

@ -37,7 +37,7 @@ Ensure that you have at least Python 3.8 installed.
To install PFERD or update your installation to the latest version, run this To install PFERD or update your installation to the latest version, run this
wherever you want to install or have already installed PFERD: wherever you want to install or have already installed PFERD:
``` ```
$ pip install git+https://github.com/Garmelon/PFERD@v2.6.0 $ pip install git+https://github.com/Garmelon/PFERD@v2.6.2
``` ```
The use of [venv] is recommended. The use of [venv] is recommended.
@ -60,8 +60,8 @@ $ mkdir Vorlesungen
$ cd Vorlesungen $ cd Vorlesungen
$ python3 -m venv .venv $ python3 -m venv .venv
$ source .venv/bin/activate $ source .venv/bin/activate
$ pip install git+https://github.com/Garmelon/PFERD@v2.6.0 $ pip install git+https://github.com/Garmelon/PFERD@v2.6.2
$ curl -O https://raw.githubusercontent.com/Garmelon/PFERD/v2.6.0/example_config.py $ curl -O https://raw.githubusercontent.com/Garmelon/PFERD/v2.6.2/example_config.py
$ python3 example_config.py $ python3 example_config.py
$ deactivate $ deactivate
``` ```

View File

@ -2,7 +2,7 @@ from setuptools import find_packages, setup
setup( setup(
name="PFERD", name="PFERD",
version="2.6.0", version="2.6.2",
packages=find_packages(), packages=find_packages(),
install_requires=[ install_requires=[
"requests>=2.21.0", "requests>=2.21.0",

View File

@ -26,9 +26,10 @@ _LOGGER = logging.getLogger("sync_url")
_PRETTY = PrettyLogger(_LOGGER) _PRETTY = PrettyLogger(_LOGGER)
def _extract_credentials(file_path: Optional[str]) -> UserPassAuthenticator: def _extract_credentials(file_path: Optional[str],
username: Optional[str], password: Optional[str]) -> UserPassAuthenticator:
if not file_path: if not file_path:
return UserPassAuthenticator("KIT ILIAS Shibboleth", None, None) return UserPassAuthenticator("KIT ILIAS Shibboleth", username, password)
if not Path(file_path).exists(): if not Path(file_path).exists():
_PRETTY.error("Credential file does not exist") _PRETTY.error("Credential file does not exist")
@ -96,7 +97,7 @@ def main() -> None:
"KIT ILIAS Shibboleth", username=args.username, password=args.password "KIT ILIAS Shibboleth", username=args.username, password=args.password
) )
else: else:
inner_auth = _extract_credentials(args.credential_file) inner_auth = _extract_credentials(args.credential_file, args.username, args.password)
username, password = inner_auth.get_credentials() username, password = inner_auth.get_credentials()
authenticator = KitShibbolethAuthenticator(inner_auth) authenticator = KitShibbolethAuthenticator(inner_auth)
@ -121,7 +122,8 @@ def main() -> None:
# files may not escape the pferd_root with relative paths # files may not escape the pferd_root with relative paths
# note: Path(Path.cwd, Path(folder)) == Path(folder) if it is an absolute path # note: Path(Path.cwd, Path(folder)) == Path(folder) if it is an absolute path
pferd_root = Path(Path.cwd(), Path(folder)).parent pferd_root = Path(Path.cwd(), Path(folder)).parent
target = folder.name # Folder might be a *PurePath* at this point
target = Path(folder).resolve().name
pferd = Pferd(pferd_root, test_run=args.test_run) pferd = Pferd(pferd_root, test_run=args.test_run)
def dir_filter(_: Path, element: IliasElementType) -> bool: def dir_filter(_: Path, element: IliasElementType) -> bool:
@ -130,13 +132,13 @@ def main() -> None:
return True return True
if args.local_first: if args.local_first:
file_confilict_resolver: FileConflictResolver = _resolve_local_first file_conflict_resolver: FileConflictResolver = _resolve_local_first
elif args.no_delete: elif args.no_delete:
file_confilict_resolver = _resolve_no_delete file_conflict_resolver = _resolve_no_delete
elif args.remote_first: elif args.remote_first:
file_confilict_resolver = _resolve_remote_first file_conflict_resolver = _resolve_remote_first
else: else:
file_confilict_resolver = resolve_prompt_user file_conflict_resolver = resolve_prompt_user
pferd.enable_logging() pferd.enable_logging()
@ -148,7 +150,7 @@ def main() -> None:
dir_filter=dir_filter, dir_filter=dir_filter,
username=username, username=username,
password=password, password=password,
file_conflict_resolver=file_confilict_resolver, file_conflict_resolver=file_conflict_resolver,
transform=sanitize_windows_path transform=sanitize_windows_path
) )