From 9669f240412d31d3c718c3731e1412dd38ef12dd Mon Sep 17 00:00:00 2001 From: Naya Verdier Date: Tue, 6 Jun 2023 17:19:28 -0700 Subject: [PATCH] 0.13.0 Convert variables to numbers if possible --- .github/workflows/ci.yml | 8 +++++--- CHANGELOG.md | 5 +++++ instater/context.py | 29 ++++++++++++++++++++++++----- instater/main.py | 2 +- instater/tasks/pacman.py | 3 ++- setup.py | 2 +- 6 files changed, 38 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index de739a5..0ee878a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,10 +15,10 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: set up python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} @@ -31,10 +31,12 @@ jobs: - name: coverage run: make coverage - - uses: codecov/codecov-action@v1 + - uses: codecov/codecov-action@v3 with: file: coverage.xml env_vars: PYTHON + env: + CODECOV_IGNORE: true deploy: name: Build and Deploy diff --git a/CHANGELOG.md b/CHANGELOG.md index 434e369..974bf4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.13.0 2023-06-06 + +- Automatically convert int/float from templated variables, instead of being strings +- `become` the `makepkg` user for running `yay` (hardcoded for now) + ## 0.12.0 2023-04-24 - Add `pacman_bootstrapped_packages` option to ignore certain packages from the diff --git a/instater/context.py b/instater/context.py index 69b0599..c89cfb3 100644 --- a/instater/context.py +++ b/instater/context.py @@ -80,20 +80,39 @@ def print(self, *args, **kwargs): else: self.console.print(*args, **kwargs) - def jinja_object(self, template: object, extra_vars: Optional[dict] = None) -> object: + def jinja_object( + self, + template: object, + extra_vars: Optional[dict] = None, + convert_numbers: bool = False, + ) -> object: if isinstance(template, str): - return self.jinja_string(template, extra_vars) + return self.jinja_string(template, extra_vars, convert_numbers=convert_numbers) elif isinstance(template, list): - return [self.jinja_object(item, extra_vars) for item in template] + return [self.jinja_object(item, extra_vars, convert_numbers=convert_numbers) for item in template] else: return template - def jinja_string(self, template: str, extra_vars: Optional[dict] = None) -> str: + def jinja_string(self, template: str, extra_vars: Optional[dict] = None, convert_numbers: bool = False) -> str: if isinstance(template, str): vars = self.variables if extra_vars: vars = {**vars, **extra_vars} - return self.jinja_env.from_string(template).render(vars) + + value = self.jinja_env.from_string(template).render(vars) + + if convert_numbers: + try: + return int(value) # type: ignore + except ValueError: + pass + + try: + return float(value) # type: ignore + except ValueError: + pass + + return value else: return template diff --git a/instater/main.py b/instater/main.py index 41e268c..20799ea 100644 --- a/instater/main.py +++ b/instater/main.py @@ -92,7 +92,7 @@ def _file_variables(files, context: Context): raw_vars = yaml.safe_load(f) for var, value in raw_vars.items(): - context.variables[var] = context.jinja_string(value) + context.variables[var] = context.jinja_object(value, convert_numbers=True) def _extract_with(context: Context, task_args: dict) -> List[dict]: diff --git a/instater/tasks/pacman.py b/instater/tasks/pacman.py index 5cad058..60fa4ac 100644 --- a/instater/tasks/pacman.py +++ b/instater/tasks/pacman.py @@ -60,7 +60,8 @@ def _makepkg_install(self, packages: List[str]): self._makepkg_install_package(package) def _yay_install(self, packages: List[str]): - util.shell(["yay", "-Sy", "--noconfirm", "--needed", "--cleanafter", *packages]) + # TODO: make the `makepkg` user configurable + util.shell(["yay", "-Sy", "--noconfirm", "--needed", "--cleanafter", *packages], become="makepkg") def _pacman_install(self, packages: List[str]): util.shell(["pacman", "-Sy", "--noconfirm", "--noprogressbar", "--needed", *packages]) diff --git a/setup.py b/setup.py index 3c56dee..7f5f605 100644 --- a/setup.py +++ b/setup.py @@ -26,7 +26,7 @@ setup( name="instater", - version="0.12.0", + version="0.13.0", description=description, long_description=long_description, long_description_content_type="text/markdown",