Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
0dd7a77
Migrates build system from rake/paver to rake/invoke
adewes Apr 16, 2014
3164b52
Currently fixing i18n tasks.
Apr 28, 2014
9f04cd4
More fixing i18n
Apr 28, 2014
a834780
Cleaning up i18n.
Jun 5, 2014
b64dc46
Remove unused imports
singingwolfboy Jun 9, 2014
47b7116
Migrate tests from paver to invoke
singingwolfboy Jun 10, 2014
f42e4ee
Adds missing requirements files to invoke prereqs.install task
Jun 12, 2014
193930b
reformat help dicts
singingwolfboy Jun 12, 2014
7124b9c
clean up inv i18n a bit
singingwolfboy Jun 12, 2014
12f51d9
reformatting
singingwolfboy Jun 12, 2014
a09f07d
Changes the name of the reports dir from REPORT_ROOT to REPORT_DIR to…
Jun 12, 2014
894b01d
Moved js_tests around
singingwolfboy Jun 12, 2014
3b5ac7b
fix import, make suite positional
singingwolfboy Jun 12, 2014
51dd09d
remove comment
singingwolfboy Jun 12, 2014
932b7df
reformatted doc tasks
singingwolfboy Jun 12, 2014
6abafa7
clean up servers.py
singingwolfboy Jun 12, 2014
68171d3
Moved db tasks to their own file
singingwolfboy Jun 12, 2014
cf9f649
more task cleaning
singingwolfboy Jun 12, 2014
dc92e66
Adds envoy as an invoke dependency
Jun 12, 2014
c5cfd68
add tasks for prereqs.cache
singingwolfboy Jun 12, 2014
5069dea
recalculate fingerprint after installing prereqs
singingwolfboy Jun 12, 2014
8f5bd6c
make test.coverage task run
singingwolfboy Jun 12, 2014
47025c1
more task debugging
singingwolfboy Jun 12, 2014
91a5154
Removes envoy as invoke has its own runner. No need to add...
Jun 12, 2014
41c10a3
correct issue with running background asset watcher
singingwolfboy Jun 12, 2014
4c4a570
Initial commit of the bok choy tests
Jun 12, 2014
8cb2a48
Rearranges bok_choy namespace
Jun 12, 2014
659b01b
Reorganizes the namespaces of the bok_choy invoke tasks
Jun 12, 2014
5be0282
Add missing utils
Jun 12, 2014
b79dddd
Removes non-existing bok_choy module at the top level
Jun 12, 2014
01b1446
Generate sourcemaps for sass
singingwolfboy Jun 12, 2014
59252c0
docstrings
singingwolfboy Jun 12, 2014
c2bd825
clean up bok_choy a bit
singingwolfboy Jun 12, 2014
9714c28
Clean up bok_choy dependencies
singingwolfboy Jun 12, 2014
ecf0ba3
clean up invoke tasks for bok_choy
singingwolfboy Jun 13, 2014
21666cc
don't fail flush if cache dir doesn't exist
singingwolfboy Jun 13, 2014
d40d958
Correct typo, reformat in task
singingwolfboy Jun 13, 2014
cd5385c
Fixing problems with bok_choy task
singingwolfboy Jun 13, 2014
5a86878
more task cleaning
singingwolfboy Jun 13, 2014
9390974
make our HTTP stub services respond to HEAD requests
singingwolfboy Jun 13, 2014
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -153,4 +153,6 @@ Muhammad Ammar <mammar@edx.org>
Abdallah Nassif <abdoosh00@gmail.com>
Johnny Brown <johnnybrown7@gmail.com>
Ben McMorran <bmcmorran@edx.org>
Mat Peterson <mpeterson@edx.org>
Mat Peterson <mpeterson@edx.org>
Andreas Dewes <andreas.dewes@gmail.com>
Leo Urbina <leo.a.urbina@gmail.com>
6 changes: 6 additions & 0 deletions common/djangoapps/terrain/stubs/http.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,12 @@ def _format_msg(self, format_str, *args):
format_str % args
)

def do_HEAD(self):
"""
Respond to an HTTP HEAD request
"""
self.send_response(200)


class StubHttpService(HTTPServer, object):
"""
Expand Down
11 changes: 10 additions & 1 deletion pavelib/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
"""
paver commands
"""
from . import assets, servers, docs, prereqs, quality, tests, js_test
__all__ = [
"assets_deprecated", "servers_deprecated", "docs_deprecated",
"prereqs_deprecated", "quality_deprecated", "tests_deprecated",
"js_test_deprecated"
]
from . import (
assets_deprecated, servers_deprecated, docs_deprecated,
prereqs_deprecated, quality_deprecated, tests_deprecated,
js_test_deprecated
)
5 changes: 4 additions & 1 deletion pavelib/assets.py → pavelib/assets_deprecated.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
import traceback
from .utils.envs import Env
from .utils.cmd import cmd, django_cmd
from .utils.deprecated import deprecated


# setup baseline paths

Expand Down Expand Up @@ -190,8 +192,9 @@ def watch_assets(options):


@task
@needs('pavelib.prereqs.install_prereqs')
@needs('pavelib.prereqs_deprecated.install_prereqs')
@consume_args
@deprecated('invoke assets.update')
def update_assets(args):
"""
Compile CoffeeScript and Sass, then collect static assets.
Expand Down
5 changes: 3 additions & 2 deletions pavelib/docs.py → pavelib/docs_deprecated.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from __future__ import print_function
import sys
from paver.easy import *

from .utils.deprecated import deprecated

DOC_PATHS = {
"dev": "docs/en_us/developers",
Expand Down Expand Up @@ -54,11 +54,12 @@ def doc_path(options, allow_default=True):


@task
@needs('pavelib.prereqs.install_prereqs')
@needs('pavelib.prereqs_deprecated.install_prereqs')
@cmdopts([
("type=", "t", "Type of docs to compile"),
("verbose", "v", "Display verbose output"),
])
@deprecated('invoke docs.build')
def build_docs(options):
"""
Invoke sphinx 'make build' to generate docs.
Expand Down
4 changes: 4 additions & 0 deletions pavelib/js_test.py → pavelib/js_test_deprecated.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from paver.easy import task, cmdopts, needs
from pavelib.utils.test.suites import JsTestSuite
from pavelib.utils.envs import Env
from .utils.deprecated import deprecated

__test__ = False # do not collect

Expand All @@ -19,6 +20,7 @@
("mode=", "m", "dev or run"),
("coverage", "c", "Run test under coverage"),
])
@deprecated('invoke js_test.test_js')
def test_js(options):
"""
Run the JavaScript tests
Expand Down Expand Up @@ -52,6 +54,7 @@ def test_js(options):
("suite=", "s", "Test suite to run"),
("coverage", "c", "Run test under coverage"),
])
@deprecated('invoke js_test.test_js_run')
def test_js_run(options):
"""
Run the JavaScript tests and print results to the console
Expand All @@ -64,6 +67,7 @@ def test_js_run(options):
@cmdopts([
("suite=", "s", "Test suite to run"),
])
@deprecated('invoke js_test.test_js_dev')
def test_js_dev(options):
"""
Run the JavaScript tests in your default browsers
Expand Down
6 changes: 5 additions & 1 deletion pavelib/prereqs.py → pavelib/prereqs_deprecated.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from distutils import sysconfig
from paver.easy import *
from .utils.envs import Env

from .utils.deprecated import deprecated

PREREQS_MD5_DIR = os.getenv('PREREQ_CACHE_DIR', Env.REPO_ROOT / '.prereqs_cache')
NPM_REGISTRY = "http://registry.npmjs.org/"
Expand Down Expand Up @@ -117,6 +117,7 @@ def python_prereqs_installation():


@task
@deprecated('invoke prereqs.install.ruby')
def install_ruby_prereqs():
"""
Installs Ruby prereqs
Expand All @@ -125,6 +126,7 @@ def install_ruby_prereqs():


@task
@deprecated('invoke prereqs.install.node')
def install_node_prereqs():
"""
Installs Node prerequisites
Expand All @@ -133,6 +135,7 @@ def install_node_prereqs():


@task
@deprecated('invoke prereqs.install.python')
def install_python_prereqs():
"""
Installs Python prerequisites
Expand All @@ -141,6 +144,7 @@ def install_python_prereqs():


@task
@deprecated('invoke prereqs.install')
def install_prereqs():
"""
Installs Ruby, Node and Python prerequisites
Expand Down
File renamed without changes.
25 changes: 17 additions & 8 deletions pavelib/servers.py → pavelib/servers_deprecated.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from paver.easy import *
from .utils.cmd import django_cmd
from .utils.process import run_process, run_multi_processes

from .utils.deprecated import deprecated

DEFAULT_PORT = {"lms": 8000, "studio": 8001}
DEFAULT_SETTINGS = 'dev'
Expand Down Expand Up @@ -42,12 +42,13 @@ def run_server(system, settings=None, port=None, skip_assets=False):


@task
@needs('pavelib.prereqs.install_prereqs')
@needs('pavelib.prereqs_deprecated.install_prereqs')
@cmdopts([
("settings=", "s", "Django settings"),
("port=", "p", "Port"),
("fast", "f", "Skip updating assets")
])
@deprecated('invoke servers.lms')
def lms(options):
"""
Run the LMS server.
Expand All @@ -59,12 +60,13 @@ def lms(options):


@task
@needs('pavelib.prereqs.install_prereqs')
@needs('pavelib.prereqs_deprecated.install_prereqs')
@cmdopts([
("settings=", "s", "Django settings"),
("port=", "p", "Port"),
("fast", "f", "Skip updating assets")
])
@deprecated('invoke servers.cms')
def studio(options):
"""
Run the Studio server.
Expand All @@ -76,8 +78,9 @@ def studio(options):


@task
@needs('pavelib.prereqs.install_prereqs')
@needs('pavelib.prereqs_deprecated.install_prereqs')
@consume_args
@deprecated('invoke --help servers.devstack')
def devstack(args):
"""
Start the devstack lms or studio server
Expand All @@ -90,10 +93,11 @@ def devstack(args):


@task
@needs('pavelib.prereqs.install_prereqs')
@needs('pavelib.prereqs_deprecated.install_prereqs')
@cmdopts([
("settings=", "s", "Django settings"),
])
@deprecated('invoke servers.celery')
def celery(options):
"""
Runs Celery workers.
Expand All @@ -103,14 +107,16 @@ def celery(options):


@task
@needs('pavelib.prereqs.install_prereqs')
@needs('pavelib.prereqs_deprecated.install_prereqs')
@cmdopts([
("settings=", "s", "Django settings for both LMS and Studio"),
("worker_settings=", "w", "Celery worker Django settings"),
("fast", "f", "Skip updating assets"),
("settings_lms=", "l", "Set LMS only, overriding the value from --settings (if provided)"),
("settings_cms=", "c", "Set Studio only, overriding the value from --settings (if provided)"),
])
# Can't deal with parsing arguments of deprecated functions
@deprecated('invoke servers.run')
def run_all_servers(options):
"""
Runs Celery workers, Studio, and LMS.
Expand All @@ -137,10 +143,11 @@ def run_all_servers(options):


@task
@needs('pavelib.prereqs.install_prereqs')
@needs('pavelib.prereqs_deprecated.install_prereqs')
@cmdopts([
("settings=", "s", "Django settings"),
])
@deprecated('invoke servers.update_db')
def update_db():
"""
Runs syncdb and then migrate.
Expand All @@ -151,8 +158,10 @@ def update_db():


@task
@needs('pavelib.prereqs.install_prereqs')
@needs('pavelib.prereqs_deprecated.install_prereqs')
@consume_args
# Can't deal with parsing arguments of deprecated functions
@deprecated('invoke --help servers.check_settings')
def check_settings(args):
"""
Checks settings files.
Expand Down
7 changes: 7 additions & 0 deletions pavelib/tests.py → pavelib/tests_deprecated.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from pavelib.utils.test import suites
from pavelib.utils.envs import Env
from optparse import make_option
from .utils.deprecated import deprecated

try:
from pygments.console import colorize
Expand All @@ -31,6 +32,7 @@
make_option("-q", "--quiet", action="store_const", const=0, dest="verbosity"),
make_option("-v", "--verbosity", action="count", dest="verbosity", default=1),
])
@deprecated('invoke tests.test_system')
def test_system(options):
"""
Run tests on our djangoapps for lms and cms
Expand Down Expand Up @@ -75,6 +77,7 @@ def test_system(options):
make_option("-q", "--quiet", action="store_const", const=0, dest="verbosity"),
make_option("-v", "--verbosity", action="count", dest="verbosity", default=1),
])
@deprecated('invoke tests.test_lib')
def test_lib(options):
"""
Run tests for common/lib/
Expand Down Expand Up @@ -111,6 +114,7 @@ def test_lib(options):
make_option("-q", "--quiet", action="store_const", const=0, dest="verbosity"),
make_option("-v", "--verbosity", action="count", dest="verbosity", default=1),
])
@deprecated('invoke tests.test_python')
def test_python(options):
"""
Run all python tests
Expand All @@ -130,6 +134,7 @@ def test_python(options):
'pavelib.prereqs.install_python_prereqs',
'pavelib.utils.test.utils.clean_reports_dir',
)
@deprecated('invoke tests.test_i18n')
def test_i18n():
"""
Run all i18n tests
Expand All @@ -148,6 +153,7 @@ def test_i18n():
make_option("-q", "--quiet", action="store_const", const=0, dest="verbosity"),
make_option("-v", "--verbosity", action="count", dest="verbosity", default=1),
])
@deprecated('invoke tests.test')
def test(options):
"""
Run all tests
Expand All @@ -170,6 +176,7 @@ def test(options):
@cmdopts([
("compare_branch", "b", "Branch to compare against, defaults to origin/master"),
])
@deprecated('invoke tests.coverage')
def coverage(options):
"""
Build the html, xml, and diff coverage reports
Expand Down
17 changes: 17 additions & 0 deletions pavelib/utils/deprecated.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from __future__ import print_function
from invoke import run as sh
from pygments.console import colorize

def deprecated(deprecated_by):
def deprecated_decorator(func):
def wrapper(*args, **kwargs):
sh("pip install -q -r requirements/edx/invoke.txt")
print(colorize("darkred", "Task {name} has been deprecated. Use '{deprecated_by}' instead.".\
format(name=func.__name__, deprecated_by=deprecated_by)))
sh(deprecated_by, echo=True)
# Copy over the necessary metadata
wrapper.__name__ = func.__name__
wrapper.__module__ = func.__module__
wrapper.__doc__ = func.__doc__
return wrapper
return deprecated_decorator
4 changes: 4 additions & 0 deletions requirements/edx/invoke.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
invoke==0.7.0
lazy==1.1
path.py==5.1
wsgiref==0.1.2
24 changes: 24 additions & 0 deletions tasks/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from __future__ import print_function
from invoke import Collection

ns = Collection()


from . import assets
from . import clean
from . import db
from . import docs
from . import i18n
from . import prereqs
from . import servers
from . import test


ns.add_collection(assets)
ns.add_collection(clean)
ns.add_collection(db)
ns.add_collection(docs)
ns.add_collection(i18n)
ns.add_collection(prereqs)
ns.add_collection(servers)
ns.add_collection(test)
Loading