Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@ The HTTP [endpoints](https://devstructure.com/docs/endpoints.html) and [protocol
* [`blueprint-list`(1)](http://devstructure.github.com/blueprint/blueprint-list.1.html)
* [`blueprint-create`(1)](http://devstructure.github.com/blueprint/blueprint-create.1.html)
* [`blueprint-show`(1)](http://devstructure.github.com/blueprint/blueprint-show.1.html)
* [`blueprint-diff`(1)](http://devstructure.github.com/blueprint/blueprint-diff.1.html)
* [`blueprint-split`(1)](http://devstructure.github.com/blueprint/blueprint-split.1.html)
* [`blueprint-prune`(1)](http://devstructure.github.com/blueprint/blueprint-prune.1.html)
* [`blueprint-apply`(1)](http://devstructure.github.com/blueprint/blueprint-apply.1.html)
* [`blueprint-push`(1)](http://devstructure.github.com/blueprint/blueprint-push.1.html)
* [`blueprint-pull`(1)](http://devstructure.github.com/blueprint/blueprint-pull.1.html)
Expand Down
3 changes: 0 additions & 3 deletions bin/blueprint-apply
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
#!/usr/bin/python

import json
import logging
import optparse
import os
import re
import subprocess
import sys

import blueprint
import blueprint.cli
from blueprint import context_managers

Expand Down
5 changes: 0 additions & 5 deletions bin/blueprint-create
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,8 @@
import errno
import logging
import optparse
import os
import re
import select
import subprocess
import sys

import blueprint
import blueprint.cli
from blueprint import context_managers

Expand Down
1 change: 0 additions & 1 deletion bin/blueprint-destroy
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import logging
import optparse
import re
import sys

import blueprint
Expand Down
7 changes: 2 additions & 5 deletions bin/blueprint-diff
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
#!/usr/bin/python

import errno
import logging
import optparse
import re
import subprocess
import sys

import blueprint
Expand Down Expand Up @@ -33,15 +30,15 @@ if 3 != len(args):
minuend, subtrahend, difference = args

try:
b_m = blueprint.Blueprint(name=minuend)
b_m = blueprint.Blueprint.checkout(minuend)
except blueprint.NotFoundError:
logging.error('blueprint {0} does not exist'.format(minuend))
sys.exit(1)
except blueprint.NameError:
logging.error('invalid blueprint name {0}'.format(minuend))
sys.exit(1)
try:
b_s = blueprint.Blueprint(name=subtrahend)
b_s = blueprint.Blueprint.checkout(subtrahend)
except blueprint.NotFoundError:
logging.error('blueprint {0} does not exist'.format(subtrahend))
sys.exit(1)
Expand Down
57 changes: 57 additions & 0 deletions bin/blueprint-prune
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/usr/bin/python

import logging
import optparse
import readline
import subprocess
import sys

import blueprint
from blueprint import cli
from blueprint import context_managers
from blueprint import interactive

parser = optparse.OptionParser('Usage: %prog [-m <message>] [-q] <src> <dest>')
parser.add_option('-m', '--message',
dest='message',
default=None,
help='commit message')
parser.add_option('-q', '--quiet',
dest='quiet',
default=False,
action='store_true',
help='operate quietly')
options, args = parser.parse_args()

if options.quiet:
logging.root.setLevel(logging.CRITICAL)

if len(args) not in (1, 2):
parser.print_usage()
sys.exit(1)

b_s = blueprint.cli.read(options, args)
try:
b_d = blueprint.Blueprint(args[-1])
except blueprint.NameError:
logging.error('invalid blueprint name {0}'.format(args[-1]))
sys.exit(1)

def choose():
"""
Return the destination blueprint object or `None`.
"""
prompt = 'Include in blueprint {0}? [y/n] '.format(args[-1])
yn = raw_input(prompt).lower()
while yn not in ('y', 'n', 'yes', 'no'):
yn = raw_input(prompt)
return b_d if 'y' == yn[0] else None

try:
with context_managers.mkdtemp():
interactive.walk(b_s, choose)
b_d.commit(options.message or '')
except IOError:
pass
except KeyboardInterrupt:
print('') # Expect this kind of thing in an interactive process.
1 change: 0 additions & 1 deletion bin/blueprint-pull
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import re
import sys
import urlparse

import blueprint
from blueprint import cfg
from blueprint import context_managers
import blueprint.io
Expand Down
2 changes: 0 additions & 2 deletions bin/blueprint-push
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
from ConfigParser import NoOptionError
import logging
import optparse
import re
import sys

import blueprint
from blueprint import cfg
import blueprint.cli
import blueprint.io
Expand Down
2 changes: 0 additions & 2 deletions bin/blueprint-show
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
import errno
import logging
import optparse
import re
import sys

import blueprint
import blueprint.cli

parser = optparse.OptionParser('Usage: %prog [-P|-C|-S|-I] [-r] [-q] [<name>]')
Expand Down
3 changes: 0 additions & 3 deletions bin/blueprint-show-files
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
#!/usr/bin/python

import errno
import logging
import optparse
import subprocess
import sys

import blueprint
import blueprint.cli

parser = optparse.OptionParser('Usage: %prog [-q] [<name>]')
Expand Down
3 changes: 0 additions & 3 deletions bin/blueprint-show-ignore
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
#!/usr/bin/python

import errno
import logging
import optparse
import subprocess
import sys

import blueprint
import blueprint.cli

parser = optparse.OptionParser('Usage: %prog [-q] [<name>]')
Expand Down
3 changes: 0 additions & 3 deletions bin/blueprint-show-packages
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
#!/usr/bin/python

import errno
import logging
import optparse
import subprocess
import sys

import blueprint
import blueprint.cli

parser = optparse.OptionParser('Usage: %prog [-q] [<name>]')
Expand Down
3 changes: 0 additions & 3 deletions bin/blueprint-show-services
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
#!/usr/bin/python

import errno
import logging
import optparse
import subprocess
import sys

import blueprint
import blueprint.cli

parser = optparse.OptionParser('Usage: %prog [-q] [<name>]')
Expand Down
2 changes: 0 additions & 2 deletions bin/blueprint-show-sources
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
#!/usr/bin/python

import errno
import logging
import optparse
import subprocess
import sys

import blueprint
import blueprint.cli
from blueprint import git

Expand Down
67 changes: 67 additions & 0 deletions bin/blueprint-split
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#!/usr/bin/python

import logging
import optparse
import readline
import subprocess
import sys

import blueprint
from blueprint import cli
from blueprint import context_managers
from blueprint import interactive

parser = optparse.OptionParser(
'Usage: %prog [-m <message>] [-q] <src> <dest-a> <dest-b>')
parser.add_option('-m', '--message',
dest='message',
default=None,
help='commit message')
parser.add_option('-q', '--quiet',
dest='quiet',
default=False,
action='store_true',
help='operate quietly')
options, args = parser.parse_args()

if options.quiet:
logging.root.setLevel(logging.CRITICAL)

if len(args) not in (2, 3):
parser.print_usage()
sys.exit(1)

b_s = blueprint.cli.read(options, args)
try:
b_da = blueprint.Blueprint(args[-2])
except blueprint.NameError:
logging.error('invalid blueprint name {0}'.format(args[-2]))
sys.exit(1)
try:
b_db = blueprint.Blueprint(args[-1])
except blueprint.NameError:
logging.error('invalid blueprint name {0}'.format(args[-1]))
sys.exit(1)

def choose():
"""
Return the blueprint object indicated by the user's input.
"""
prompt = '"{0}" or "{1}"? '.format(args[-2], args[-1])
prefix = raw_input(prompt)
while args[-2].startswith(prefix) == args[-1].startswith(prefix):
print('Ambiguous; please give a unique prefix of a blueprint name.')
prefix = raw_input(prompt)
return {(True, False): b_da,
(False, True): b_db}[(args[-2].startswith(prefix),
args[-1].startswith(prefix))]

try:
with context_managers.mkdtemp():
interactive.walk(b_s, choose)
b_da.commit(options.message or '')
b_db.commit(options.message or '')
except IOError:
pass
except KeyboardInterrupt:
print('') # Expect this kind of thing in an interactive process.
Loading