Пример #1
0
def download_official_wheels():
    """
        Download the official wheels for each platform
    """
    assert AZURE_STORAGE_CONNECTION_STRING, 'Set AZURE_STORAGE_CONNECTION_STRING environment variable'
    from mssqlcli import __version__ as latest_version

    # Clear previous downloads
    utility.clean_up(utility.MSSQLCLI_DIST_DIRECTORY)
    os.mkdir(utility.MSSQLCLI_DIST_DIRECTORY)

    print('Downloading official wheels with version: {}'.format(latest_version))
    blob_names = [
        'mssql_cli-{}-py2.py3-none-macosx_10_11_intel.whl'.format(latest_version),
        'mssql_cli-{}-py2.py3-none-manylinux1_x86_64.whl'.format(latest_version),
        'mssql_cli-{}-py2.py3-none-win_amd64.whl'.format(latest_version),
        'mssql_cli-{}-py2.py3-none-win32.whl'.format(latest_version)
    ]

    blob_service = BlockBlobService(connection_string=AZURE_STORAGE_CONNECTION_STRING)
    for blob in blob_names:
        print('Downloading wheel:{}'.format(blob))

        if not blob_service.exists(BLOB_MSSQL_CLI_DAILY_CONTAINER_NAME, blob):
            print('Error: blob: {} does not exist in container: {}'.format(blob, BLOB_MSSQL_CLI_DAILY_CONTAINER_NAME))
            sys.exit(1)

        blob_service.get_blob_to_path(BLOB_MSSQL_CLI_DAILY_CONTAINER_NAME, blob, '{0}\{1}'.format(
                                                                                        utility.MSSQLCLI_DIST_DIRECTORY,
                                                                                        blob))
Пример #2
0
def copy_sqltoolsservice(platform):
    """
        For each supported platform, build a universal wheel.
    """
    # Clean up dangling directories if previous run was interrupted.
    utility.clean_up(directory=TARGET_DIRECTORY)

    if not platform or platform not in SUPPORTED_PLATFORMS:
        print('{} is not supported.'.format(platform))
        print(
            'Please provide a valid platform flag.' +
            '[win32, win_amd64, win64, manylinux1_x86_64, manylinux1_i686, macosx_10_11_intel]'
        )
        sys.exit(1)

    copy_file_path = SUPPORTED_PLATFORMS[platform]

    print('Sqltoolsservice archive found at {}'.format(copy_file_path))
    if copy_file_path.endswith('tar.gz'):
        compressed_file = tarfile.open(name=copy_file_path, mode='r:gz')
    elif copy_file_path.endswith('.zip'):
        compressed_file = zipfile.ZipFile(copy_file_path)

    if not os.path.exists(TARGET_DIRECTORY):
        os.makedirs(TARGET_DIRECTORY)

    print(
        u'Bin placing sqltoolsservice for this platform: {}.'.format(platform))
    print(u'Extracting files from {}'.format(copy_file_path))
    compressed_file.extractall(TARGET_DIRECTORY)
Пример #3
0
def build():
    """
        Builds mssql-cli package.
    """
    print_heading('Cleanup')

    # clean
    utility.clean_up(utility.MSSQLCLI_DIST_DIRECTORY)
    utility.clean_up_egg_info_sub_directories(utility.ROOT_DIR)

    print_heading('Running setup')

    # install general requirements.
    utility.exec_command(
        '{0} -m pip install -r requirements-dev.txt'.format(PYTHON),
        utility.ROOT_DIR)

    # convert windows line endings to unix for mssql-cli bash script
    utility.exec_command('{0} dos2unix.py mssql-cli mssql-cli'.format(PYTHON),
                         utility.ROOT_DIR)

    # run flake8
    code_analysis()

    if utility.get_current_platform().startswith('win'):
        platforms_to_build = ['win32', 'win_amd64']
    else:
        platforms_to_build = [utility.get_current_platform()]

    for plat in platforms_to_build:
        # For the current platform, populate the appropriate binaries and
        # generate the wheel.
        clean_and_copy_sqltoolsservice(plat)
        utility.clean_up(utility.MSSQLCLI_BUILD_DIRECTORY)

        print_heading('Building mssql-cli pip package')
        utility.exec_command('%s --version' % PYTHON, utility.ROOT_DIR)
        utility.exec_command('%s setup.py bdist_wheel --plat-name %s' %
                             (PYTHON, plat),
                             utility.ROOT_DIR,
                             continue_on_error=False)

        try:
            # checks if long description will render correctly--does not work on some systems
            utility.exec_command('twine check {}'.format(
                os.path.join(utility.MSSQLCLI_DIST_DIRECTORY, '*')),
                                 utility.ROOT_DIR,
                                 continue_on_error=False)
        except IOError as err:
            print(err)
            print("Unable to run 'twine check'.")

    # Copy back the SqlToolsService binaries for this platform.
    clean_and_copy_sqltoolsservice(utility.get_current_platform())
    copy_and_rename_wheels()
Пример #4
0
def build():
    """
        Builds mssql-cli package.
    """
    print_heading('Cleanup')

    # clean
    utility.clean_up(utility.MSSQLCLI_DIST_DIRECTORY)
    utility.clean_up_egg_info_sub_directories(utility.ROOT_DIR)

    print_heading('Running setup')

    # install general requirements.
    utility.exec_command('{0} install -r requirements-dev.txt'.format(PIP),
                         utility.ROOT_DIR)

    # convert windows line endings to unix for mssql-cli bash script
    utility.exec_command('{0} dos2unix.py mssql-cli mssql-cli'.format(PYTHON),
                         utility.ROOT_DIR)

    # run flake8
    code_analysis()

    if utility.get_current_platform().startswith('win'):
        platforms_to_build = ['win32', 'win_amd64']
    else:
        platforms_to_build = [utility.get_current_platform()]

    for plat in platforms_to_build:
        # For the current platform, populate the appropriate binaries and
        # generate the wheel.
        clean_and_copy_sqltoolsservice(plat)
        utility.clean_up(utility.MSSQLCLI_BUILD_DIRECTORY)

        print_heading('Building mssql-cli pip package')
        utility.exec_command('%s --version' % PYTHON, utility.ROOT_DIR)
        utility.exec_command(
            '%s setup.py check -r -s bdist_wheel --plat-name %s' %
            (PYTHON, plat),
            utility.ROOT_DIR,
            continue_on_error=False)

        # generate sdist--only run on macOS to eliminate redundant copies when published to Azure
        # NOTE: macOS was arbitrarily chosen as the single OS
        if sys.platform == 'darwin':
            utility.exec_command(
                '%s setup.py check -r -s sdist --formats=gztar' % PYTHON,
                utility.ROOT_DIR,
                continue_on_error=False)

    # Copy back the SqlToolsService binaries for this platform.
    clean_and_copy_sqltoolsservice(utility.get_current_platform())
    copy_and_rename_wheels()
Пример #5
0
def import_visual(prod_visual,filename=None):
	api_url = '/migration/api/import/'

	payload = {'dry_run': False, "dataconnection_name":prod_visual.connection}
	files = {}
	if filename:
		files = {'import_file': open(filename,'r')}
	else:
		files = {'import_file': open('new_visual.json','r')}
	response = API.arc_api_post_request(api_url,'',payload,files)

	# clean up
	util.clean_up()
Пример #6
0
def build_sqltoolsservice_wheels(platforms):
    """
        For each supported platform, build a universal wheel.
    """
    # Clean up dangling directories if previous run was interrupted.
    utility.clean_up(directory=TARGET_DIRECTORY)
    utility.clean_up(directory=BUILD_DIRECTORY)

    if not platforms:
        # Defaults to all supported platforms.
        platforms = SUPPORTED_PLATFORMS.keys()

    print(u'Generating .whl files for the following platforms: {}'.format(
        platforms))
    for platform in platforms:
        if platform not in SUPPORTED_PLATFORMS:
            print(u'{} is not a supported platform'.format(platform))
            break
        # Set environment variable to communicate current platform to setup.py.
        os.environ[u'MSSQLTOOLSSERVICE_PLATFORM'] = platform

        print(u'Calling setup bdist_wheel for platform:{}'.format(platform))
        download_and_unzip(SUPPORTED_PLATFORMS[platform],
                           directory=TARGET_DIRECTORY)
        utility.exec_command(u'python setup.py check -r -s bdist_wheel',
                             CURRENT_DIRECTORY)

        print(
            u'Cleaning up mssqltoolservice and build directory for platform:{}'
            .format(platform))
        utility.clean_up(directory=TARGET_DIRECTORY)
        utility.clean_up(directory=BUILD_DIRECTORY)
Пример #7
0
def build():
    """
        Builds mssql-cli package.
    """
    print_heading('Cleanup')

    # clean
    utility.clean_up(utility.MSSQLCLI_DIST_DIRECTORY)
    utility.clean_up_egg_info_sub_directories(utility.ROOT_DIR)

    print_heading('Running setup')

    # install general requirements.
    utility.exec_command('{0} install -r requirements-dev.txt'.format(PIP),
                         utility.ROOT_DIR)

    # convert windows line endings to unix for mssql-cli bash script
    utility.exec_command('{0} dos2unix.py mssql-cli mssql-cli'.format(PYTHON),
                         utility.ROOT_DIR)

    # run flake8
    code_analysis()

    if utility.get_current_platform().startswith('win'):
        platforms_to_build = ['win32', 'win_amd64']
    else:
        platforms_to_build = [utility.get_current_platform()]

    for platform in platforms_to_build:
        # For the current platform, populate the appropriate binaries and
        # generate the wheel.
        clean_and_copy_sqltoolsservice(platform)
        utility.clean_up(utility.MSSQLCLI_BUILD_DIRECTORY)

        print_heading('Building mssql-cli pip package')
        utility.exec_command('{0} --version'.format(PYTHON), utility.ROOT_DIR)
        utility.exec_command(
            '{0} setup.py check -r -s bdist_wheel --plat-name {1}'.format(
                PYTHON, platform),
            utility.ROOT_DIR,
            continue_on_error=False)

    # Copy back the SqlToolsService binaries for this platform.
    clean_and_copy_sqltoolsservice(utility.get_current_platform())
    copy_and_rename_wheels()
Пример #8
0
def build(platform_names):
    """
        Builds mssql-scripter package.
    """
    print_heading('Cleanup')

    # clean
    utility.clean_up(utility.MSSQLSCRIPTER_DIST_DIRECTORY)

    print_heading('Running setup')

    # install general requirements.
    utility.exec_command('pip install -r dev_requirements.txt',
                         utility.ROOT_DIR)

    # convert windows line endings to unix for mssql-cli bash script
    utility.exec_command('python dos2unix.py mssql-scripter mssql-scripter',
                         utility.ROOT_DIR)

    for platform in platform_names:
        utility.clean_up(utility.MSSQLSCRIPTER_BUILD_DIRECTORY)
        utility.cleaun_up_egg_info_sub_directories(utility.ROOT_DIR)

        mssqltoolsservice.copy_sqltoolsservice(platform)

        print_heading(
            'Building mssql-scripter {} wheel package package'.format(
                platform))
        utility.exec_command('python --version', utility.ROOT_DIR)
        utility.exec_command(
            'python setup.py check -r -s bdist_wheel --plat-name {}'.format(
                platform),
            utility.ROOT_DIR,
            continue_on_error=False)

        mssqltoolsservice.clean_up_sqltoolsservice()
Пример #9
0
def clean_up_sqltoolsservice():
    utility.clean_up(directory=TARGET_DIRECTORY)
Пример #10
0
def build(options):

    supported_actions = ['nightly']
    action = None

    if len(options) >= 1:
        if options[0] not in supported_actions:
            print('Please provide a supported action {}.'.format(
                supported_actions))
            return
        action = options[0]

    if action == 'nightly':
        assert AZURE_STORAGE_CONNECTION_STRING, 'Set AZURE_STORAGE_CONNECTION_STRING environment variable'

    print_heading('Cleanup')

    # clean
    utility.clean_up(utility.MSSQLSCRIPTER_DIST_DIRECTORY)
    utility.clean_up(utility.MSSQLTOOLSSERVICE_DIST_DIRECTORY)
    utility.cleaun_up_egg_info_sub_directories(utility.ROOT_DIR)
    utility.cleaun_up_egg_info_sub_directories(
        utility.MSSQLTOOLSSERVICE_DIRECTORY)

    print_heading('Running setup')

    # install general requirements.
    utility.exec_command('pip install -r dev_requirements.txt',
                         utility.ROOT_DIR)

    print_heading('Running mssql-scripter tests')
    utility.exec_command('tox', utility.ROOT_DIR, continue_on_error=False)

    print_heading('Building mssql-scripter pip package')
    utility.exec_command('python setup.py check -r -s sdist',
                         utility.ROOT_DIR,
                         continue_on_error=False)

    print_heading('Building mssqltoolsservice pip package')
    utility.exec_command('python buildwheels.py',
                         utility.MSSQLTOOLSSERVICE_DIRECTORY,
                         continue_on_error=False)

    if action == 'nightly':
        blob_service = BlockBlobService(
            connection_string=AZURE_STORAGE_CONNECTION_STRING)

        print_heading('Uploading packages to blob storage ')
        for pkg in os.listdir(utility.MSSQLSCRIPTER_DIST_DIRECTORY):
            pkg_path = os.path.join(utility.MSSQLSCRIPTER_DIST_DIRECTORY, pkg)
            print('Uploading package {}'.format(pkg_path))
            upload_package(blob_service, pkg_path, 'mssql-scripter')

        for pkg in os.listdir(utility.MSSQLTOOLSSERVICE_DIST_DIRECTORY):
            pkg_path = os.path.join(utility.MSSQLTOOLSSERVICE_DIST_DIRECTORY,
                                    pkg)
            pkg_name = os.path.basename(pkg_path).split('-')[0].replace(
                '_', '-').lower()
            print('Uploading package {}'.format(pkg_name))
            upload_package(blob_service, pkg_path, pkg_name)

        # Upload the final index file
        upload_index_file(blob_service, 'index.html', 'Simple Index',
                          UPLOADED_PACKAGE_LINKS)