Sha256: 3b6c51289f08337f880e359d59d783fa00e18af6dfd0e0c2ca6a5b9ee150919e

Contents?: true

Size: 1.61 KB

Versions: 5

Compression:

Stored size: 1.61 KB

Contents

from __future__ import (absolute_import, division, print_function)
__metaclass__ = type

import subprocess
import os
import json

from ansible.errors import AnsibleError


QB_ROOT = os.path.realpath(
    os.path.join(
        os.path.dirname(os.path.realpath(__file__)), # /plugins/filter_plugins
        '..', # /plugins
        '..', # /
    )
)


def semver_inc(version, level = None, preid = None):
    '''increment the version at level, with optional preid for pre- levels.
    
    runs
    
        semver --increment <level> [--preid <preid>] <version>
    
    >>> semver_inc('1.0.0', 'minor', preid = 'dev')
    '1.0.1-dev.0'
    
    '''
    
    cmd = [
        os.path.join(QB_ROOT, 'node_modules', '.bin', 'semver'),
        '--increment',
    ]
    
    if not (level is None):
        cmd.append(level)
    
    if not (preid is None):
        cmd.append('--preid')
        cmd.append(preid)
    
    cmd.append(version)
    
    out = subprocess.check_output(cmd)
    
    return out.rstrip()


def semver_parse(version):
    '''parse semver.
    '''
    
    stmt = (
        '''console.log(JSON.stringify(require('semver')(%s), null, 2))''' %
        json.dumps(version)
    )
    
    cmd = ['node', '--eval', stmt]
    
    out = subprocess.check_output(cmd)
    
    return out.rstrip()


class FilterModule(object):
    ''' version manipulation filters '''

    def filters(self):
        return {
            'semver_inc': semver_inc,
            'semver_parse': semver_parse,
        }


# testing - call camel_case on first cli arg and print result
if __name__ == '__main__':
    import doctest
    doctest.testmod()
    

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
qb-0.1.53 plugins/filter_plugins/version.py
qb-0.1.52 plugins/filter_plugins/version.py
qb-0.1.51 plugins/filter_plugins/version.py
qb-0.1.50 plugins/filter_plugins/version.py
qb-0.1.49 plugins/filter_plugins/version.py