1. 08 Sep, 2021 4 commits
    • David Runge's avatar
      Merge branch 'issues/16' · d851bfba
      David Runge authored
      * issues/16:
        Set project version to 0.2.1
        Add documentation for systemd and sysusers.d integration
        Add example for systemd integration
        Add example for sysusers.d integration
        Set default sync dir to /var/lib/arch-release-sync
      d851bfba
    • David Runge's avatar
      Set project version to 0.2.1 · 64f59ed2
      David Runge authored
      pyproject.toml:
      Raise project version to 0.2.1.
      64f59ed2
    • David Runge's avatar
      Add documentation for systemd and sysusers.d integration · 768a687e
      David Runge authored
      README.rst:
      Add documentation on where to find the systemd and sysusers.d
      integration and how they relate to one another.
      768a687e
    • David Runge's avatar
      Add example for systemd integration · 9bd8ee5b
      David Runge authored
      examples/systemd/arch-release-sync.service:
      Add an example systemd system service with applied hardening, that
      allows synchronization to the default sync location.
      
      examples/systemd/arch-release-sync.timer:
      Add and example systemd system timer that triggers running
      arch-release-sync.service hourly.
      9bd8ee5b
  2. 06 Sep, 2021 2 commits
  3. 05 Sep, 2021 14 commits
    • David Runge's avatar
      Merge branch 'issues/12' · 270fda4e
      David Runge authored
      * issues/12:
        pyproject.toml: Update project version to 0.2.0
        README: Extend with information on arch-release-sync
        example.toml: Add synchronization related documentation
        Add script entrypoint for arch-release-sync
        cli: Add entrypoint for arch-release-sync
        files: Add ProjectFiles class to handle synchronization
        gitlab: More explicit print when downloading build artifacts
        gitlab: Implement download of promotion artifact
        argparse: Add parser for arch-release-sync
        gitlab: Change signature of constructor
        gitlab: More generically retrieve types of releases
        config: Make PRIVATE_TOKEN optional
        config: Add integration to configure synchronization
      270fda4e
    • David Runge's avatar
      pyproject.toml: Update project version to 0.2.0 · aa865808
      David Runge authored
      pyproject.toml:
      Set project version to 0.2.0.
      Change project description and extend keywords to reflect the extended
      project scope.
      aa865808
    • David Runge's avatar
      README: Extend with information on arch-release-sync · 35cd8bd0
      David Runge authored
      README.rst:
      Extend with information on arch-release-sync, how to configure it and
      how its synchronization behaves.
      Add gnupg explicitly to non-language dependencies for the tooling.
      35cd8bd0
    • David Runge's avatar
      example.toml: Add synchronization related documentation · be85f200
      David Runge authored
      examples/example.toml:
      Add documentation on the global and per-project `sync_config` table and
      their options `backlog`, `directory`, `last_updated_file`,
      `temp_in_sync_dir`.
      be85f200
    • David Runge's avatar
      Add script entrypoint for arch-release-sync · aed5eb30
      David Runge authored
      pyproject.toml:
      Extend tool.poetry.scripts table to add an entrypoint for
      `arch-release-sync`.
      aed5eb30
    • David Runge's avatar
      cli: Add entrypoint for arch-release-sync · 3145c2d7
      David Runge authored
      arch_release_promotion/cli.py:
      Add `arch_release_sync()` as entrypoint for arch-release-sync, using
      `files.ProjectFiles.sync()` to synchronize any configured releases for a
      given project.
      3145c2d7
    • David Runge's avatar
      files: Add ProjectFiles class to handle synchronization · d4af71d2
      David Runge authored
      arch_release_promotion/files.py:
      Add `load_release_from_json_payload()` to read a JSON payload and return
      it as a Release instance.
      Add the `ProjectFiles` class to aid in the synchronization of promoted
      release types of a project by bundling all necessary functionality.
      The special factory method `ProjectFiles.sync()` allows the creation of
      a `ProjectFiles` instance and direct synchronization of the configured
      amount of release versions of the project.
      
      tests/test_files.py:
      Add tests for `load_release_from_json_payload()`.
      Add tests for `ProjectFiles` and all of its classmethods and instance
      methods.
      d4af71d2
    • David Runge's avatar
      gitlab: More explicit print when downloading build artifacts · 96d52827
      David Runge authored
      arch_release_promotion/gitlab.py:
      Change `Upstream.download_release()` to also print the name of the
      project.
      96d52827
    • David Runge's avatar
      gitlab: Implement download of promotion artifact · 3da45f80
      David Runge authored
      arch_release_promotion/gitlab.py:
      Add `download_promotion_artifact()` to allow download of a project
      release's promotion artifact to a directory.
      
      tests/test_gitlab.py:
      Add tests for `download_promotion_artifact()`.
      3da45f80
    • David Runge's avatar
      argparse: Add parser for arch-release-sync · 403d18ee
      David Runge authored
      arch_release_promotion/argparse.py:
      Add `ArgParseFactory.synchronize()` classmethod to add a simple
      entrypoint for `arch-release-sync`, that supports the `-p`/`--project`
      optional parameters and display of version information.
      
      tests/test_argparse.py:
      Add tests for `ArgParseFactory.synchronize()`.
      403d18ee
    • David Runge's avatar
      gitlab: Change signature of constructor · fb651a75
      David Runge authored
      arch_release_promotion/gitlab.py:
      Change the `Upstream` constructor to accept private_token to be an
      optional string.
      fb651a75
    • David Runge's avatar
      gitlab: More generically retrieve types of releases · 0a72736d
      David Runge authored
      arch_release_promotion/gitlab.py:
      Add `Upstream.get_releases()` to allow retrieval of promoted or
      unpromoted releases of an arbitrary upper limit.
      Change `Upstream.select_release()` to use `Upstream.get_releases()`.
      
      tests/test_gitlab.py:
      Add parametrized test for `Upstream.get_releases()`.
      0a72736d
    • David Runge's avatar
      config: Make PRIVATE_TOKEN optional · e05004bd
      David Runge authored
      arch_release_promotion/config.py:
      Change `Settings.PRIVATE_TOKEN` to become an optional attribute, as it
      is not required for readonly scenarios.
      Order all `Settings` attributes alphabetically and add documentation for
      them and their respective default values.
      Change `Settings.validate_private_token()` to reflect the change in type
      for `Settings.PRIVATE_TOKEN`.
      
      tests/test_config.py:
      Extend tests to also check for cases where `Settings.PRIVATE_TOKEN` is
      None.
      e05004bd
    • David Runge's avatar
      config: Add integration to configure synchronization · 598f81b5
      David Runge authored
      arch_release_promotion/config.py:
      Add a `SyncConfig` pydantic model to track a global or per project
      `backlog` (amount of versions synced), `directory` (with which to
      synchronize), `last_updated_file` (to which to write a timestamp upon
      changes in the synchronization directory) and `temp_in_sync_dir` (a bool
      to set whether temporary data is downloaded to the synchronization
      directory).
      Add an optional instance of SyncConfig to both `ProjectConfig` and
      `Projects`.
      Add a root_validator to `Projects` to allow overriding the `SyncConfig`
      of each project with implicit or global defaults if no `SyncConfig` is
      provided.
      Add validator for `Projects.projects` to ensure, that all
      `ReleaseConfig` names of each `ProjectConfig` instances are unique.
      
      tests/test_config.py:
      Extend tests for `Projects` in accordance with changes to models.
      598f81b5
  4. 14 Aug, 2021 1 commit
  5. 13 Aug, 2021 1 commit
    • nl6720's avatar
      signature.py: enforce sane gpg options · e5fd59df
      nl6720 authored
      * Add --batch since gpg is not run manually.
      * Add --no-armor to ensure that a .sig file is created instead of .asc in case gpg.conf sets the armor option.
      * Add --no-include-key-block to skip including the public key in the signature and force the user who verifies the signature to acquire the public key from elsewhere.
      
      Fixes #15.
      e5fd59df
  6. 09 Aug, 2021 18 commits