Skip to content

Commit

Permalink
Merge pull request #51 from oarepo/gitlab-pypi
Browse files Browse the repository at this point in the history
Removed proxy, added gitlab urls
  • Loading branch information
Alzpeta authored Jan 16, 2025
2 parents 1277bf6 + 2603772 commit 8f7d873
Show file tree
Hide file tree
Showing 27 changed files with 408 additions and 307 deletions.
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "nrp-devtools"
version = "1.0.18"
version = "1.0.19"
description = "NRP repository development tools"
readme = "README.md"
authors = [{ name = "Miroslav Simek", email = "[email protected]" }]
Expand Down
4 changes: 1 addition & 3 deletions src/nrp_devtools/cli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
from .ui import ui_group
from .upgrade import upgrade_command
from .watch import watch_command
from .proxy import start_proxy

__all__ = [
"nrp_command",
Expand All @@ -28,6 +27,5 @@
"alembic_command",
"image_command",
"forks_group",
"watch_command"
"start_proxy"
"watch_command",
]
5 changes: 4 additions & 1 deletion src/nrp_devtools/cli/alembic.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
from typing import Any

from ..commands.alembic import build_alembic
from ..commands.types import StepFunctions
from ..config import OARepoConfig
from .base import command_sequence, nrp_command


@nrp_command.command(name="alembic")
@command_sequence()
def alembic_command(*, config: OARepoConfig, **kwargs):
def alembic_command(*, config: OARepoConfig, **kwargs: Any) -> StepFunctions:
"""Builds the repository"""
return (build_alembic,)
38 changes: 23 additions & 15 deletions src/nrp_devtools/cli/build.py
Original file line number Diff line number Diff line change
@@ -1,41 +1,49 @@
from functools import partial
from typing import Any

import click

from ..commands.invenio import install_invenio_cfg
from ..commands.resolver import get_resolver
from ..commands.types import StepFunctions
from ..commands.ui import build_production_ui, collect_assets, install_npm_packages
from ..commands.utils import make_step, no_args, run_fixup
from ..config import OARepoConfig
from .base import command_sequence, nrp_command
from ..pypi_proxy.proxy import start_pypi_proxy


@nrp_command.command(name="build")
@command_sequence()
def build_command(*, config: OARepoConfig, **kwargs):
def build_command(*, config: OARepoConfig, **kwargs: Any) -> StepFunctions:
"""Builds the repository"""
start_pypi_proxy(config.pypi_proxy_target)
return build_command_internal(config=config, **kwargs)


def build_command_internal(*, config: OARepoConfig, **kwargs):
def build_command_internal(*, config: OARepoConfig, **kwargs: Any) -> StepFunctions:
resolver = get_resolver(config)
return (
no_args(
partial(click.secho, "Building repository for production", fg="yellow"),
name="display_message"
name="display_message",
),
make_step(
lambda config, **kwargs: resolver.clean_previous_installation(),
name="clean_previous_installation",
),
make_step(
lambda config, **kwargs: resolver.create_empty_venv(),
name="create_empty_venv",
),
run_fixup(
lambda config, **kwargs: resolver.check_requirements(),
lambda config, **kwargs: resolver.build_requirements(),
fix=True,
name="check_and_build_requirements",
),
make_step(
lambda config, **kwargs: resolver.install_python_repository(),
name="install_python_repository",
),
make_step(lambda config, **kwargs: resolver.clean_previous_installation(),
name="clean_previous_installation"),
make_step(lambda config, **kwargs: resolver.create_empty_venv(),
name="create_empty_venv"),
run_fixup(lambda config, **kwargs: resolver.check_requirements(),
lambda config, **kwargs: resolver.build_requirements(),
fix=True,
name="check_and_build_requirements"),
make_step(lambda config, **kwargs: resolver.install_python_repository(),
name="install_python_repository"),
install_invenio_cfg,
collect_assets,
install_npm_packages,
Expand Down
46 changes: 34 additions & 12 deletions src/nrp_devtools/cli/check.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from functools import partial
from typing import Any

import click

Expand All @@ -23,27 +24,36 @@
fix_s3_bucket_exists,
fix_s3_location_in_database,
)
from ..commands.types import StepFunctions
from ..commands.ui import check_ui, fix_ui
from ..commands.utils import make_step, no_args, run_fixup
from ..config import OARepoConfig
from .base import command_sequence, nrp_command
from ..pypi_proxy.proxy import start_pypi_proxy


@nrp_command.command(name="check")
@click.option("--fix", is_flag=True, default=False)
@click.option("--local-packages", "-e", multiple=True)
@command_sequence()
def check_command(*, config: OARepoConfig, local_packages=None, fix=False, **kwargs):
def check_command(
*,
config: OARepoConfig,
local_packages: list[str] | None = None,
fix: bool = False,
**kwargs: Any,
) -> StepFunctions:
"Checks prerequisites for running the repository, initializes a build environment and rebuilds the repository."
context = {}
return check_commands(context, config, local_packages, fix)


def check_commands(context, config, local_packages, fix):
def check_commands(
context: dict[str, Any],
config: OARepoConfig,
local_packages: list[str] | None,
fix: bool,
) -> StepFunctions:
resolver = get_resolver(config)
if fix:
start_pypi_proxy(config.pypi_proxy_target)
return (
#
# infrastructure checks
Expand All @@ -58,26 +68,38 @@ def check_commands(context, config, local_packages, fix):
#
# virtualenv exists
#
run_fixup(lambda config, **kwargs: resolver.check_virtualenv(**kwargs),
lambda config, **kwargs: resolver.fix_virtualenv(**kwargs), fix=fix),
run_fixup(
lambda config, **kwargs: resolver.check_virtualenv(**kwargs),
lambda config, **kwargs: resolver.fix_virtualenv(**kwargs),
fix=fix,
),
#
# requirements have been built
#
run_fixup(lambda config, **kwargs: resolver.check_requirements(**kwargs),
lambda config, **kwargs: resolver.build_requirements(**kwargs), fix=fix),
run_fixup(
lambda config, **kwargs: resolver.check_requirements(**kwargs),
lambda config, **kwargs: resolver.build_requirements(**kwargs),
fix=fix,
),
#
# invenio.cfg and variables are inside virtual environment
#
run_fixup(check_invenio_cfg, install_invenio_cfg, fix=fix),
#
# can run invenio command
#
run_fixup(lambda config, **kwargs: resolver.check_invenio_callable(**kwargs),
lambda config, **kwargs: resolver.install_python_repository(**kwargs), fix=fix),
run_fixup(
lambda config, **kwargs: resolver.check_invenio_callable(**kwargs),
lambda config, **kwargs: resolver.install_python_repository(**kwargs),
fix=fix,
),
#
# any local packages are installed inside the virtual environment
#
make_step(lambda config, **kwargs: resolver.install_local_packages(**kwargs), local_packages=local_packages),
make_step(
lambda config, **kwargs: resolver.install_local_packages(**kwargs),
local_packages=local_packages,
),
#
# check that docker containers are running
#
Expand Down
53 changes: 31 additions & 22 deletions src/nrp_devtools/cli/develop.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
from typing import Any

import click

from ..commands.develop import Runner
from ..commands.develop.controller import run_develop_controller
from ..commands.types import StepFunction, StepFunctions
from ..commands.ui.link_assets import copy_assets_to_webpack_build_dir
from ..commands.utils import make_step
from ..config import OARepoConfig
from .base import command_sequence, nrp_command
from .check import check_commands
from ..pypi_proxy.proxy import start_pypi_proxy


@nrp_command.command(name="develop")
Expand All @@ -27,35 +29,42 @@
"--shell/--no-shell",
default=False,
help="Start the new development environment that is based on "
"shell script and does not suffer with problems with stdout/stderr",
"shell script and does not suffer with problems with stdout/stderr",
)
@command_sequence()
def develop_command(
*, config: OARepoConfig, local_packages=None, checks=True, shell=False, **kwargs
):
*,
config: OARepoConfig,
local_packages: list[str] | None = None,
checks: bool = True,
shell: bool = False,
**kwargs: Any,
) -> StepFunctions:
"""Starts the development environment for the repository."""
context = {}
start_pypi_proxy(config.pypi_proxy_target)
commands = [
context: dict[str, Any] = {}
commands: list[StepFunction] = [
*(check_commands(context, config, local_packages, fix=True) if checks else ()),
copy_assets_to_webpack_build_dir,
]
if not shell:
runner = Runner(config)
commands.extend([
make_step(
lambda config=None, runner=None: runner.start_python_server(
development_mode=True
commands.extend(
[
make_step(
lambda config=None, _runner=None: runner.start_python_server(
development_mode=True
),
runner=runner,
),
make_step(
lambda config=None, _runner=None: runner.start_webpack_server(),
runner=runner,
),
make_step(
lambda config=None, _runner=None: runner.start_file_watcher(),
runner=runner,
),
runner=runner,
),
make_step(
lambda config=None, runner=None: runner.start_webpack_server(),
runner=runner,
),
make_step(
lambda config=None, runner=None: runner.start_file_watcher(), runner=runner
),
make_step(run_develop_controller, runner=runner, development_mode=True),
])
make_step(run_develop_controller, runner=runner, development_mode=True),
]
)
return commands
16 changes: 10 additions & 6 deletions src/nrp_devtools/cli/forks.py
Original file line number Diff line number Diff line change
@@ -1,40 +1,44 @@
from typing import Any

import click

from ..commands.forks import apply_forks
from ..commands.resolver import get_resolver
from ..config import OARepoConfig
from .base import command_sequence, nrp_command
from ..commands.resolver import get_resolver


@nrp_command.group(name="forks")
def forks_group(**kwargs):
def forks_group(**kwargs: Any):
pass


@forks_group.command(name="add", help="Add a fork")
@click.argument("python_package")
@click.argument("git_fork_url")
@command_sequence(save=True)
def add_fork_command(*, config: OARepoConfig, python_package, git_fork_url, **kwargs):
def add_fork_command(
*, config: OARepoConfig, python_package: str, git_fork_url: str, **kwargs: Any
):
config.add_fork(python_package, git_fork_url)


@forks_group.command(name="remove", help="Remove a fork")
@click.argument("python_package")
@command_sequence(save=True)
def remove_fork_command(*, config: OARepoConfig, python_package, **kwargs):
def remove_fork_command(*, config: OARepoConfig, python_package: str, **kwargs: Any):
config.remove_fork(python_package)


@forks_group.command(name="list", help="List all forks")
@command_sequence()
def list_forks_command(*, config: OARepoConfig, **kwargs):
def list_forks_command(*, config: OARepoConfig, **kwargs: Any):
for package, url in config.forks.items():
click.echo(f"{package}: {url}")


@forks_group.command(name="apply", help="Apply all forks")
@command_sequence()
def apply_forks_command(*, config: OARepoConfig, **kwargs):
def apply_forks_command(*, config: OARepoConfig, **kwargs: Any):
resolver = get_resolver(config)
apply_forks(config, resolver)
14 changes: 11 additions & 3 deletions src/nrp_devtools/cli/image.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from typing import Any

import click

from ..commands.utils import make_step, run_cmdline
Expand All @@ -7,10 +9,16 @@

@nrp_command.command(name="image")
@command_sequence()
def image_command(*, config: OARepoConfig, local_packages=None, checks=True, **kwargs):
def image_command(
*,
config: OARepoConfig,
local_packages: list[str] | None = None,
checks: bool = True,
**kwargs: Any,
):
"""Starts the repository. Make sure to run `nrp check` first."""

def build_image(*args, **kwargs):
def build_image(*args: Any, **kwargs: Any):
info_string = run_cmdline("docker", "info", grab_stdout=True)
architecture_line = [
x for x in info_string.split("\n") if "Architecture:" in x
Expand All @@ -36,7 +44,7 @@ def build_image(*args, **kwargs):
"BUILDKIT_PROGRESS": "plain",
"BUILDPLATFORM": build_platform,
"DOCKER_BUILDKIT": "1",
**config.global_environment()
**config.global_environment(),
},
)

Expand Down
9 changes: 7 additions & 2 deletions src/nrp_devtools/cli/initialize.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,12 @@
repository_dir_as_argument=True, repository_dir_must_exist=False, save=True
)
def initialize_command(
*, repository_dir, config: OARepoConfig, verbose, initial_config, no_input
*,
repository_dir: Path,
config: OARepoConfig,
verbose: bool,
initial_config: Path,
no_input: bool,
):
"""
Initialize a new nrp project. Note: the project directory must be empty.
Expand All @@ -53,7 +58,7 @@ def initialize_step(config: OARepoConfig):

initialize_repository(config)
click.secho(
f"""
"""
Your repository is now initialized.
You can start the repository in development mode
Expand Down
Loading

0 comments on commit 8f7d873

Please sign in to comment.