from os.path import join

from invoke import Collection, ctask as task
from invocations import docs as _docs


d = 'sites'

# Usage doc/API site (published as docs.paramiko.org)
path = join(d, 'docs')
docs = Collection.from_module(_docs, name='docs', config={
    'sphinx.source': path,
    'sphinx.target': join(path, '_build'),
})

# Main/about/changelog site ((www.)?paramiko.org)
path = join(d, 'www')
www = Collection.from_module(_docs, name='www', config={
    'sphinx.source': path,
    'sphinx.target': join(path, '_build'),
})


# Until we move to spec-based testing
@task
def test(ctx):
    ctx.run("python test.py --verbose")

@task
def coverage(ctx):
    ctx.run("coverage run --source=paramiko test.py --verbose")


ns = Collection(test, coverage, docs=docs, www=www)

from os.path import join
from shutil import rmtree, move

from invoke import Collection, ctask as task
from invocations import docs as _docs
from invocations.packaging import publish


d = 'sites'

# Usage doc/API site (published as docs.paramiko.org)
docs_path = join(d, 'docs')
docs_build = join(docs_path, '_build')
docs = Collection.from_module(_docs, name='docs', config={
    'sphinx.source': docs_path,
    'sphinx.target': docs_build,
})

# Main/about/changelog site ((www.)?paramiko.org)
www_path = join(d, 'www')
www = Collection.from_module(_docs, name='www', config={
    'sphinx.source': www_path,
    'sphinx.target': join(www_path, '_build'),
})


# Until we move to spec-based testing
@task
def test(ctx):
    ctx.run("python test.py --verbose")

@task
def coverage(ctx):
    ctx.run("coverage run --source=paramiko test.py --verbose")


# Until we stop bundling docs w/ releases. Need to discover use cases first.
@task('docs') # Will invoke the API doc site build
def release(ctx):
    # Move the built docs into where Epydocs used to live
    rmtree('docs')
    move(docs_build, 'docs')
    # Publish
    publish(ctx)


ns = Collection(test, coverage, release, docs=docs, www=www)

Add new release task w/ API doc prebuilding
Add new release task w/ API doc prebuilding

  from os.path import join
+ from shutil import rmtree, move
  
  from invoke import Collection, ctask as task
  from invocations import docs as _docs
+ from invocations.packaging import publish
  
  
  d = 'sites'
  
  # Usage doc/API site (published as docs.paramiko.org)
- path = join(d, 'docs')
+ docs_path = join(d, 'docs')
+ docs_build = join(docs_path, '_build')
  docs = Collection.from_module(_docs, name='docs', config={
-     'sphinx.source': path,
+     'sphinx.source': docs_path,
-     'sphinx.target': join(path, '_build'),
+     'sphinx.target': docs_build,
  })
  
  # Main/about/changelog site ((www.)?paramiko.org)
- path = join(d, 'www')
+ www_path = join(d, 'www')
  www = Collection.from_module(_docs, name='www', config={
-     'sphinx.source': path,
+     'sphinx.source': www_path,
-     'sphinx.target': join(path, '_build'),
+     'sphinx.target': join(www_path, '_build'),
  })
  
  
  # Until we move to spec-based testing
  @task
  def test(ctx):
      ctx.run("python test.py --verbose")
  
  @task
  def coverage(ctx):
      ctx.run("coverage run --source=paramiko test.py --verbose")
  
  
- ns = Collection(test, coverage, docs=docs, www=www)
+ # Until we stop bundling docs w/ releases. Need to discover use cases first.
+ @task('docs') # Will invoke the API doc site build
+ def release(ctx):
+     # Move the built docs into where Epydocs used to live
+     rmtree('docs')
+     move(docs_build, 'docs')
+     # Publish
+     publish(ctx)
  
+ 
+ ns = Collection(test, coverage, release, docs=docs, www=www)
+ 
Add new release task w/ API doc prebuilding
## Code Before:
from os.path import join

from invoke import Collection, ctask as task
from invocations import docs as _docs


d = 'sites'

# Usage doc/API site (published as docs.paramiko.org)
path = join(d, 'docs')
docs = Collection.from_module(_docs, name='docs', config={
    'sphinx.source': path,
    'sphinx.target': join(path, '_build'),
})

# Main/about/changelog site ((www.)?paramiko.org)
path = join(d, 'www')
www = Collection.from_module(_docs, name='www', config={
    'sphinx.source': path,
    'sphinx.target': join(path, '_build'),
})


# Until we move to spec-based testing
@task
def test(ctx):
    ctx.run("python test.py --verbose")

@task
def coverage(ctx):
    ctx.run("coverage run --source=paramiko test.py --verbose")


ns = Collection(test, coverage, docs=docs, www=www)

## Instruction:
Add new release task w/ API doc prebuilding
## Code After:
from os.path import join
from shutil import rmtree, move

from invoke import Collection, ctask as task
from invocations import docs as _docs
from invocations.packaging import publish


d = 'sites'

# Usage doc/API site (published as docs.paramiko.org)
docs_path = join(d, 'docs')
docs_build = join(docs_path, '_build')
docs = Collection.from_module(_docs, name='docs', config={
    'sphinx.source': docs_path,
    'sphinx.target': docs_build,
})

# Main/about/changelog site ((www.)?paramiko.org)
www_path = join(d, 'www')
www = Collection.from_module(_docs, name='www', config={
    'sphinx.source': www_path,
    'sphinx.target': join(www_path, '_build'),
})


# Until we move to spec-based testing
@task
def test(ctx):
    ctx.run("python test.py --verbose")

@task
def coverage(ctx):
    ctx.run("coverage run --source=paramiko test.py --verbose")


# Until we stop bundling docs w/ releases. Need to discover use cases first.
@task('docs') # Will invoke the API doc site build
def release(ctx):
    # Move the built docs into where Epydocs used to live
    rmtree('docs')
    move(docs_build, 'docs')
    # Publish
    publish(ctx)


ns = Collection(test, coverage, release, docs=docs, www=www)
