Skip to content

Commit

Permalink
Merge pull request #1 from OliverSherouse/initial
Browse files Browse the repository at this point in the history
Initial commit
  • Loading branch information
OliverSherouse authored Mar 26, 2019
2 parents 82b212e + 987e638 commit 0cfc701
Show file tree
Hide file tree
Showing 20 changed files with 1,488 additions and 0 deletions.
126 changes: 126 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
# Doc Build
docs/_build

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don’t work, or not
# install all needed dependencies.
#Pipfile.lock

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/
24 changes: 24 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
language: python
dist: xenial
python:
- "3.7"
install:
- curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python
- source $HOME/.poetry/env
- poetry install
script: poetry run pytest
after_success:
- test $TRAVIS_BRANCH = "master" && test $TRAVIS_PULL_REQUEST = "false" && poetry run sphinx-build docs docs/_build
deploy:
- provider: script
script: poetry publish --build -u $PYPI_USER -p $PYPI_PASSWORD
on:
branch: master
tags: true
- provider: pages
github-token: $GITHUB_TOKEN
committer-from-gh: true
skip-cleanup: true
local-dir: docs/_build
on:
branch: master
34 changes: 34 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Yo-Runner

Yo is a Yaml-based task runner for lazy people. When you're coding, you may
often need to run a long command many times, but you don't want to do all that
typing every time. You don't want to have to remember the options or the flags
every time. You could write a Makefile, but they're annoying. Maybe your
toolkit provides the functionality, if you want to mess with that. You could
use something like gulp or grunt, but that's a lot of overhead. All you really
want is something like directory-specific aliases.

That's where yo comes in. All you do is write a `yo.yaml` that looks something
like this:

``` {.yaml}
run: poetry run flask run
serve-docs: python -m http.server --directory docs/_build
docs:
- poetry run sphinx-build docs docs/_build | tee docs/build_errors.txt
- serve-docs
test: poetry run pytest
```

Now, in that directory you can run `yo run` to run your app, `yo serve-docs` to
serve your documentation folder, `yo docs` to build and serve documentation,
and `yo test` to figure out why your stupid program still isn't working. And
any arguments you pass to the `yo` command will be passed through the task.

Yo can handle single commands, sequential lists, and concurrent lists. Every
command is run on the shell, so pipes and redirects work. There's also support
for environment variables and variables internal to the `yo.yaml` so that you
don't have to type paths more than once. It's lazy all the way down.

See the full documentation for yo at
<https://OliverSherouse.github.io/yo-runner>.
6 changes: 6 additions & 0 deletions docs/api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# API

``` eval_rst
.. automodule:: yo
:members:
```
Loading

0 comments on commit 0cfc701

Please sign in to comment.