Skip to content

Commit

Permalink
feat: Add required argument option (#16)
Browse files Browse the repository at this point in the history
* feat: Add argument required option

* resolve issues with tests

* fix tests for complex makim file
  • Loading branch information
xmnlab committed Feb 8, 2023
1 parent d3ea118 commit dc79486
Show file tree
Hide file tree
Showing 10 changed files with 167 additions and 87 deletions.
83 changes: 38 additions & 45 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: build
on: [push, pull_request]

jobs:
build:
tests:
strategy:
matrix:
python_version:
Expand All @@ -24,7 +24,7 @@ jobs:
shell: bash -l {0}

concurrency:
group: ci-${{ matrix.os }}-${{ matrix.python_version }}-${{ github.ref }}
group: ci-tests-${{ matrix.os }}-${{ matrix.python_version }}-${{ github.ref }}
cancel-in-progress: true

steps:
Expand Down Expand Up @@ -62,49 +62,41 @@ jobs:
- name: Install dependencies
run: poetry install

- name: Run tests using simple makim file
env:
MAKIM_FILE_ARG: "--makim-file tests/.makim-simple.yaml"
run: |
makim ${MAKIM_FILE_ARG} --help
makim ${MAKIM_FILE_ARG} --version
makim ${MAKIM_FILE_ARG} clean
makim ${MAKIM_FILE_ARG} default.clean
makim ${MAKIM_FILE_ARG} build
makim ${MAKIM_FILE_ARG} default.build
makim ${MAKIM_FILE_ARG} build --clean
- name: Run tests using complex makim file
env:
MAKIM_FILE_ARG: "--makim-file tests/.makim-complex.yaml"
run: |
makim ${MAKIM_FILE_ARG} --help
makim ${MAKIM_FILE_ARG} --version
makim ${MAKIM_FILE_ARG} default.lint --verbose
makim ${MAKIM_FILE_ARG} build.clean-gcda --verbose
makim ${MAKIM_FILE_ARG} build.clean --verbose
makim ${MAKIM_FILE_ARG} build.install --verbose
makim ${MAKIM_FILE_ARG} build.release --verbose
makim ${MAKIM_FILE_ARG} build.release --build-type debug --verbose
makim ${MAKIM_FILE_ARG} build.release --extras '-D' --verbose
makim ${MAKIM_FILE_ARG} build.release --clean --verbose
makim ${MAKIM_FILE_ARG} build.dev --verbose
makim ${MAKIM_FILE_ARG} env.create-file --verbose
makim ${MAKIM_FILE_ARG} conda.build --verbose
makim ${MAKIM_FILE_ARG} release.ci --verbose
makim ${MAKIM_FILE_ARG} release.dry --verbose
makim ${MAKIM_FILE_ARG} docs.api --verbose
makim ${MAKIM_FILE_ARG} docs.build --verbose
makim ${MAKIM_FILE_ARG} docs.clean --verbose
makim ${MAKIM_FILE_ARG} docs.preview --verbose
makim ${MAKIM_FILE_ARG} tests.sanitizer --verbose
makim ${MAKIM_FILE_ARG} tests.code-coverage --verbose
makim ${MAKIM_FILE_ARG} tests.gen-object --verbose
makim ${MAKIM_FILE_ARG} tests.gen-ast --verbose
makim ${MAKIM_FILE_ARG} tests.gen-llvm-ir --verbose
makim ${MAKIM_FILE_ARG} tests.examples --verbose
makim ${MAKIM_FILE_ARG} tests.all --verbose
makim ${MAKIM_FILE_ARG} debug.fibonacci --verbose
- name: Run smoke tests using simple makim file
run: makim tests.makim-file-simple --verbose

- name: Run smoke tests using complex makim file
run: makim tests.makim-file-complex --verbose

- name: Run unit tests
run: makim tests.unittest

linter-and-docs:
runs-on: ubuntu-latest
timeout-minutes: 10

defaults:
run:
shell: bash -l {0}

concurrency:
group: ci-linter-docs-${{ matrix.os }}-${{ matrix.python_version }}-${{ github.ref }}
cancel-in-progress: true

steps:
- uses: actions/checkout@v3

- uses: conda-incubator/setup-miniconda@v2
with:
miniconda-version: "latest"
environment-file: conda/dev.yaml
channels: conda-forge,nodefaults
activate-environment: makim
use-mamba: true
miniforge-variant: Mambaforge

- name: Install dependencies
run: poetry install

- name: Test documentation generation
run: makim docs.build
Expand All @@ -113,3 +105,4 @@ jobs:
if: success() || failure()
run: |
pre-commit install
makim tests.lint
68 changes: 59 additions & 9 deletions .makim.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
version: 1.0.0
groups:
- name: default
env-file: .env
targets:
clean:
help: Clean unnecessary temporary files
Expand All @@ -19,14 +18,6 @@ groups:
rm -fr htmlcov/
rm -fr .pytest_cache
lint:
help: Run linter tools
run: pre-commit run --all-files --verbose

tests:
help: Run tests
run: pytest

- name: docs
env-file: .env
targets:
Expand Down Expand Up @@ -62,3 +53,62 @@ groups:
dry:
help: Run semantic release in dry-run mode
run: {{ app }} '--dry-run'

- name: tests
targets:
lint:
help: Run linter tools
run: pre-commit run --all-files --verbose

unittest:
help: Run tests
run: pytest

makim-file-simple:
help: Test makim using a simple makimfile
env:
MAKIM_FILE: ./tests/.makim-simple.yaml
run: |
makim --makim-file $MAKIM_FILE --help
makim --makim-file $MAKIM_FILE --version
makim --makim-file $MAKIM_FILE clean --verbose
makim --makim-file $MAKIM_FILE default.clean --verbose
makim --makim-file $MAKIM_FILE build --verbose
makim --makim-file $MAKIM_FILE default.build --verbose
makim --makim-file $MAKIM_FILE build --clean --verbose
makim-file-complex:
help: Test makim using a complex makimfile
env:
MAKIM_FILE: ./tests/.makim-complex.yaml
run: |
makim --makim-file $MAKIM_FILE --help
makim --makim-file $MAKIM_FILE --version
makim --makim-file $MAKIM_FILE default.lint --verbose
makim --makim-file $MAKIM_FILE build.clean-gcda --verbose
makim --makim-file $MAKIM_FILE build.clean --verbose
makim --makim-file $MAKIM_FILE build.install --verbose
makim --makim-file $MAKIM_FILE build.release --verbose
makim --makim-file $MAKIM_FILE build.release --build-type debug --verbose
makim --makim-file $MAKIM_FILE build.release --extras '-D' --verbose
makim --makim-file $MAKIM_FILE build.release --clean --verbose
makim --makim-file $MAKIM_FILE build.dev --verbose
makim --makim-file $MAKIM_FILE env.create-file --verbose
makim --makim-file $MAKIM_FILE conda.build --verbose
makim --makim-file $MAKIM_FILE release.ci --verbose
makim --makim-file $MAKIM_FILE release.dry --verbose
makim --makim-file $MAKIM_FILE docs.api --verbose
makim --makim-file $MAKIM_FILE docs.build --verbose
makim --makim-file $MAKIM_FILE docs.clean --verbose
makim --makim-file $MAKIM_FILE docs.preview --verbose
makim --makim-file $MAKIM_FILE tests.sanitizer --verbose
makim --makim-file $MAKIM_FILE tests.code-coverage --verbose
makim --makim-file $MAKIM_FILE tests.gen-object --verbose
makim --makim-file $MAKIM_FILE tests.gen-ast --verbose
makim --makim-file $MAKIM_FILE tests.gen-llvm-ir --verbose
makim --makim-file $MAKIM_FILE tests.examples --verbose
makim --makim-file $MAKIM_FILE tests.all --verbose
makim --makim-file $MAKIM_FILE debug.fibonacci --verbose
makim --makim-file $MAKIM_FILE print.local-env-vars --verbose
makim --makim-file $MAKIM_FILE print.makim-env-vars --verbose
makim --makim-file $MAKIM_FILE print.dotenv-var --verbose
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ groups:
args:
all:
type: bool
action: store-true
action: store_true
help: Remove all files that are tracked by git
run: |
echo "remove file X"
Expand All @@ -40,7 +40,7 @@ groups:
args:
clean:
type: bool
action: store-true
action: store_true
help: if not set, the clean dependency will not be triggered.
dependencies:
- target: clean
Expand Down
12 changes: 8 additions & 4 deletions makim/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ def _get_args():
parser.add_argument(
'--dry-run',
action='store_true',
help='Show the commands but don\'t execute them.',
help="Show the commands but don't execute them.",
)

parser.add_argument(
Expand Down Expand Up @@ -135,15 +135,20 @@ def extract_makim_args():
makim_args = {}
index_to_remove = []
for ind, arg in enumerate(list(sys.argv)):
if arg in ['--help', '--version', '--verbose', '--makim-file', '--dry-run']:
if arg in [
'--help',
'--version',
'--verbose',
'--makim-file',
'--dry-run',
]:
continue

if not arg.startswith('--'):
continue

index_to_remove.append(ind)

is_arg_bool = False
arg_name = None
arg_value = None

Expand All @@ -156,7 +161,6 @@ def extract_makim_args():
or len(sys.argv) > next_ind
and sys.argv[next_ind].startswith('--')
):
is_arg_bool = True
arg_value = True
else:
arg_value = sys.argv[next_ind]
Expand Down
Loading

0 comments on commit dc79486

Please sign in to comment.