コード例 #1
0
def generate(root):
    version = common.get_changelog_version(root)
    maven_dir = os.path.join(root, 'maven-tmp')
    java_dir = os.path.join(maven_dir, 'src', 'main', 'java')
    unzipped_dir = os.path.join(maven_dir, 'unzipped')

    common.recreate_directory(maven_dir)
    os.makedirs(java_dir)

    shutil.copy('tinkerforge_java_bindings_{0}_{1}_{2}.zip'.format(*version), maven_dir)

    args = ['/usr/bin/unzip',
            '-q',
            'tinkerforge_java_bindings_{0}_{1}_{2}.zip'.format(*version),
            '-d',
            unzipped_dir]
    if subprocess.call(args) != 0:
        raise Exception("Command '{0}' failed".format(' '.join(args)))

    shutil.copytree(os.path.join(unzipped_dir, 'source', 'com'), os.path.join(java_dir, 'com'))

    common.replace_in_file('pom.xml.template',
                           os.path.join(maven_dir, 'pom.xml'),
                           '{{VERSION}}', '.'.join(version))

    with common.ChangedDirectory(maven_dir):
        args = ['/usr/bin/mvn',
                'clean',
                'verify']
        if subprocess.call(args) != 0:
            raise Exception("Command '{0}' failed".format(' '.join(args)))
コード例 #2
0
    def finish(self):
        root_dir = self.get_bindings_root_directory()

        # Copy IP Connection examples
        for example in common.find_examples(root_dir, '^Example.*\.vb$'):
            shutil.copy(example[1], self.tmp_examples_dir)

        # Copy bindings and readme
        for filename in released_files:
            shutil.copy(os.path.join(root_dir, 'bindings', filename), self.tmp_source_tinkerforge_dir)

        shutil.copy(os.path.join(root_dir, '..', 'csharp', 'IPConnection.cs'), self.tmp_source_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'changelog.txt'),                   self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme.txt'),                      self.tmp_dir)
        shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'),    self.tmp_dir)

        # Make AssemblyInfo.cs
        version = common.get_changelog_version(root_dir)

        common.specialize_template(os.path.join(root_dir, '..', 'csharp', 'AssemblyInfo.cs.template'),
                                   os.path.join(self.tmp_source_tinkerforge_dir, 'AssemblyInfo.cs'),
                                   {'<<BINDINGS>>': 'Visual Basic .NET',
                                    '<<VERSION>>': '.'.join(version)})

        # Make dll
        with common.ChangedDirectory(self.tmp_dir):
            common.execute(['/usr/bin/gmcs',
                            '/optimize',
                            '/target:library',
                            '/out:' + os.path.join(self.tmp_dir, 'Tinkerforge.dll'),
                            '/doc:' + os.path.join(self.tmp_dir, 'Tinkerforge.xml'),
                            os.path.join(self.tmp_source_tinkerforge_dir, '*.cs')])

        # Make zip
        self.create_zip_file(self.tmp_dir)
コード例 #3
0
    def finish(self):
        root_dir = self.get_bindings_root_directory()

        # Copy IP Connection examples
        for example in common.find_examples(root_dir, '^example_.*\.rb$'):
            shutil.copy(example[1], self.tmp_examples_dir)

        # Copy bindings and readme
        for filename in released_files:
            shutil.copy(os.path.join(root_dir, 'bindings', filename), self.tmp_source_lib_tinkerforge_dir)

        shutil.copy(os.path.join(root_dir, 'ip_connection.rb'),             self.tmp_source_lib_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'changelog.txt'),                self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme.txt'),                   self.tmp_dir)
        shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'), self.tmp_dir)

        # Make version.rb
        version = common.get_changelog_version(root_dir)
        file(os.path.join(self.tmp_source_lib_tinkerforge_dir, 'version.rb'), 'wb').write("""
module Tinkerforge
  VERSION = '{0}.{1}.{2}'
end
""".format(*version))

        # Make tinkerforge.rb
        file(os.path.join(self.tmp_source_lib_dir, 'tinkerforge.rb'), 'wb').write("""
require 'tinkerforge/version'

module Tinkerforge
end
""")

        # Make tinkerforge.gemspec
        tmp_gemspec = os.path.join(self.tmp_source_dir, 'tinkerforge.gemspec')

        common.specialize_template(os.path.join(root_dir, 'tinkerforge.gemspec.template'),
                                   tmp_gemspec,
                                   {'<<VERSION>>': '.'.join(version)})

        # Make gem
        with common.ChangedDirectory(self.tmp_source_dir):
            args = ['/usr/bin/gem',
                    'build',
                    'tinkerforge.gemspec']

            if subprocess.call(args) != 0:
                raise Exception("Command '{0}' failed".format(' '.join(args)))

        # Remove build stuff
        tmp_gem = os.path.join(self.tmp_source_dir, 'tinkerforge-{0}.{1}.{2}.gem'.format(*version))

        os.remove(tmp_gemspec)
        shutil.copy(tmp_gem, root_dir)
        shutil.move(tmp_gem, os.path.join(self.tmp_dir, 'tinkerforge.gem'))
        shutil.move(os.path.join(self.tmp_source_lib_dir, 'tinkerforge.rb'), self.tmp_source_dir)
        shutil.move(self.tmp_source_lib_tinkerforge_dir, os.path.join(self.tmp_source_dir, 'tinkerforge'))
        shutil.rmtree(self.tmp_source_lib_dir)

        # Make zip
        common.make_zip(self.get_bindings_name(), self.tmp_dir, root_dir, version)
コード例 #4
0
def generate(root_dir):
    tmp_dir               = os.path.join(root_dir, 'maven_package')
    tmp_src_main_java_dir = os.path.join(tmp_dir, 'src', 'main', 'java')
    tmp_unzipped_dir      = os.path.join(tmp_dir, 'unzipped')

    # Make directories
    common.recreate_dir(tmp_dir)
    os.makedirs(tmp_src_main_java_dir)

    # Unzip
    version = common.get_changelog_version(root_dir)

    common.execute(['/usr/bin/unzip',
                    '-q',
                    os.path.join(root_dir, 'tinkerforge_java_bindings_{0}_{1}_{2}.zip'.format(*version)),
                    '-d',
                    tmp_unzipped_dir])

    # Copy source
    shutil.copytree(os.path.join(tmp_unzipped_dir, 'source', 'com'),
                    os.path.join(tmp_src_main_java_dir, 'com'))

    # Make pom.xml
    common.specialize_template(os.path.join(root_dir, 'pom.xml.template'),
                               os.path.join(tmp_dir, 'pom.xml'),
                               {'{{VERSION}}': '.'.join(version)})

    # Make package
    with common.ChangedDirectory(tmp_dir):
        common.execute(['/usr/bin/mvn', 'clean', 'verify'])
コード例 #5
0
def generate(bindings_root_directory):
    tmp_dir                     = os.path.join(bindings_root_directory, 'cpan_package')
    tmp_unzipped_dir            = os.path.join(tmp_dir, 'unzipped')
    tmp_unzipped_source_dir     = os.path.join(tmp_unzipped_dir, 'source')
    tmp_unzipped_source_lib_dir = os.path.join(tmp_unzipped_source_dir, 'lib')
    tmp_cpan_dir                = os.path.join(tmp_dir, 'cpan')
    tmp_cpan_lib_dir            = os.path.join(tmp_cpan_dir, 'lib')

    # Make directories
    common.recreate_directory(tmp_dir)

    # Unzip
    version = common.get_changelog_version(bindings_root_directory)

    common.execute(['/usr/bin/unzip',
                    '-q',
                    os.path.join(bindings_root_directory, 'tinkerforge_perl_bindings_{0}_{1}_{2}.zip'.format(*version)),
                    '-d',
                    tmp_unzipped_dir])

    # Make CPAN package structure
    modules = ['Tinkerforge',
               'Tinkerforge::IPConnection',
               'Tinkerforge::Device',
               'Tinkerforge::Error']

    for filename in released_files:
        modules.append('Tinkerforge::' + filename.replace('.pm', ''))

    common.execute(['module-starter',
                    '--dir=' + tmp_cpan_dir,
                    '--module=' + ','.join(modules),
                    '--distro=Tinkerforge',
                    '--author="Ishraq Ibne Ashraf"',
                    '[email protected]'])

    # Make README
    common.specialize_template(os.path.join(bindings_root_directory, 'README.template'),
                               os.path.join(tmp_cpan_dir, 'README'),
                               {'<<VERSION>>': '.'.join(version)})

    # Make Changes
    shutil.copy(os.path.join(tmp_unzipped_dir, 'changelog.txt'), os.path.join(tmp_cpan_dir, 'Changes'))

    # Copy Makefile.PL
    shutil.copy(os.path.join(tmp_unzipped_source_dir, 'Makefile.PL'), tmp_cpan_dir)

    # Copy source
    shutil.rmtree(tmp_cpan_lib_dir)
    shutil.copytree(os.path.join(tmp_unzipped_source_lib_dir),
                    os.path.join(tmp_cpan_lib_dir))

    # Make package
    with common.ChangedDirectory(tmp_cpan_dir):
        common.execute(['/usr/bin/perl', 'Makefile.PL'])
        common.execute(['make', 'dist'])

    shutil.copy(os.path.join(tmp_cpan_dir, 'Tinkerforge-{0}.{1}.{2}.tar.gz'.format(*version)), bindings_root_directory)
コード例 #6
0
    def finish(self):
        root_dir = self.get_bindings_root_directory()

        # Copy IP Connection examples
        for example in common.find_examples(root_dir, '^Example .*\.vi$'):
            shutil.copy(example[1], self.tmp_examples_dir)

            parts = os.path.split(example[1])
            shutil.copy(os.path.join(parts[0], '10.0', parts[1]),
                        self.tmp_examples_10_dir)

        # Copy bindings and readme
        for filename in released_files:
            shutil.copy(os.path.join(root_dir, 'bindings', filename),
                        self.tmp_source_tinkerforge_dir)

        shutil.copy(os.path.join(root_dir, '..', 'csharp', 'IPConnection.cs'),
                    self.tmp_source_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'changelog.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'),
                    self.tmp_dir)

        # Make AssemblyInfo.cs
        version = common.get_changelog_version(root_dir)

        common.specialize_template(
            os.path.join(root_dir, '..', 'csharp', 'AssemblyInfo.cs.template'),
            os.path.join(self.tmp_source_tinkerforge_dir, 'AssemblyInfo.cs'), {
                '<<BINDINGS>>': 'LabVIEW',
                '<<VERSION>>': '.'.join(version)
            })

        # Make dll
        for sdk in [2, 4]:
            os.makedirs(os.path.join(self.tmp_dir, 'net{0}0'.format(sdk)))

            with common.ChangedDirectory(self.tmp_dir):
                args = [
                    '/usr/bin/gmcs', '/optimize', '/target:library',
                    '/sdk:{0}'.format(sdk),
                    '/out:' + os.path.join(self.tmp_dir, 'net{0}0'.format(sdk),
                                           'Tinkerforge.dll'),
                    os.path.join(self.tmp_source_tinkerforge_dir, '*.cs')
                ]

                if subprocess.call(args) != 0:
                    raise Exception("Command '{0}' failed".format(
                        ' '.join(args)))

        # Make zip
        common.make_zip(self.get_bindings_name(), self.tmp_dir, root_dir,
                        version)
コード例 #7
0
    def finish(self):
        root_dir = self.get_root_dir()

        # Copy IP Connection examples
        if self.get_config_name().space == 'Tinkerforge':
            for example in common.find_examples(root_dir, r'^Example.*\.php$'):
                shutil.copy(example[1], self.tmp_examples_dir)

        # Copy bindings and readme
        package_files = [
            '<file name="Tinkerforge/IPConnection.php" role="php" />'
        ]

        for filename in self.get_released_files():
            shutil.copy(os.path.join(self.get_bindings_dir(), filename),
                        self.tmp_source_tinkerforge_dir)
            package_files.append(
                '<file name="Tinkerforge/{0}" role="php" />'.format(
                    os.path.basename(filename)))

        shutil.copy(os.path.join(root_dir, 'IPConnection.php'),
                    self.tmp_source_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'changelog.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'),
                    self.tmp_dir)

        # Make package.xml
        version = self.get_changelog_version()
        date = datetime.datetime.now().strftime("%Y-%m-%d")

        common.specialize_template(
            os.path.join(root_dir, 'package.xml.template'),
            os.path.join(self.tmp_source_dir, 'package.xml'), {
                '{{VERSION}}': '.'.join(version),
                '{{DATE}}': date,
                '{{FILES}}': '\n    '.join(package_files)
            })

        # Make PEAR package
        with common.ChangedDirectory(self.tmp_source_dir):
            common.execute(['/usr/bin/pear', 'package', 'package.xml'])

        # Remove build stuff
        shutil.move(
            os.path.join(self.tmp_source_dir,
                         'Tinkerforge-{0}.{1}.{2}.tgz'.format(*version)),
            os.path.join(self.tmp_dir, 'Tinkerforge.tgz'))
        os.remove(os.path.join(self.tmp_source_dir, 'package.xml'))

        # Make zip
        self.create_zip_file(self.tmp_dir)
コード例 #8
0
    def finish(self):
        root = self.get_bindings_root_directory()

        # Copy IPConnection examples
        examples = common.find_examples(root, '^Example.*\.cs$')
        for example in examples:
            shutil.copy(example[1], '/tmp/generator/dll/examples')

        # Copy bindings and readme
        for filename in released_files:
            shutil.copy(os.path.join(root, 'bindings', filename),
                        '/tmp/generator/dll/source/Tinkerforge')

        shutil.copy(os.path.join(root, 'IPConnection.cs'),
                    '/tmp/generator/dll/source/Tinkerforge')
        shutil.copy(os.path.join(root, 'changelog.txt'), '/tmp/generator/dll')
        shutil.copy(os.path.join(root, 'readme.txt'), '/tmp/generator/dll')

        # Write AssemblyInfo
        version = common.get_changelog_version(root)
        file('/tmp/generator/dll/source/Tinkerforge/AssemblyInfo.cs',
             'wb').write("""
using System.Reflection;
using System.Runtime.CompilerServices;

[assembly: AssemblyTitle("C# API Bindings")]
[assembly: AssemblyDescription("C# API Bindings for Tinkerforge Bricks and Bricklets")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Tinkerforge GmbH")]
[assembly: AssemblyProduct("C# API Bindings")]
[assembly: AssemblyCopyright("Tinkerforge GmbH 2011-2013")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("{0}.{1}.{2}.0")]
""".format(*version))

        # Make dll
        with common.ChangedDirectory('/tmp/generator'):
            args = [
                '/usr/bin/gmcs', '/optimize', '/target:library',
                '/out:/tmp/generator/dll/Tinkerforge.dll',
                '/doc:/tmp/generator/dll/Tinkerforge.xml',
                '/tmp/generator/dll/source/Tinkerforge/*.cs'
            ]

            if subprocess.call(args) != 0:
                raise Exception("Command '{0}' failed".format(' '.join(args)))

        # Make zip
        common.make_zip(self.get_bindings_name(), '/tmp/generator/dll', root,
                        version)
コード例 #9
0
    def finish(self):
        root_dir = self.get_root_dir()

        # Copy IP Connection examples
        if self.get_config_name().space == 'Tinkerforge':
            for example in common.find_examples(root_dir, '^Example .*\.vi$'):
                shutil.copy(example[1], self.tmp_examples_dir)

                parts = os.path.split(example[1])
                shutil.copy(os.path.join(parts[0], '10.0', parts[1]),
                            self.tmp_examples_10_dir)

        # Copy bindings and readme
        for filename in self.get_released_files():
            shutil.copy(os.path.join(self.get_bindings_dir(), filename),
                        self.tmp_source_tinkerforge_dir)

        shutil.copy(os.path.join(root_dir, '..', 'csharp', 'IPConnection.cs'),
                    self.tmp_source_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'changelog.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'),
                    self.tmp_dir)

        # Make AssemblyInfo.cs
        version = self.get_changelog_version()

        common.specialize_template(
            os.path.join(root_dir, '..', 'csharp', 'AssemblyInfo.cs.template'),
            os.path.join(self.tmp_source_tinkerforge_dir, 'AssemblyInfo.cs'), {
                '<<BINDINGS>>': 'LabVIEW',
                '<<VERSION>>': '.'.join(version)
            })

        # Make dll
        for sdk in [2, 4]:
            os.makedirs(os.path.join(self.tmp_dir, 'net{0}0'.format(sdk)))

            with common.ChangedDirectory(self.tmp_dir):
                common.execute([
                    '/usr/bin/mcs', '/optimize+', '/warn:4',
                    '/sdk:{0}'.format(sdk), '/target:library',
                    '/out:' + os.path.join(self.tmp_dir, 'net{0}0'.format(sdk),
                                           'Tinkerforge.dll'),
                    os.path.join(self.tmp_source_tinkerforge_dir, '*.cs')
                ])

        # Make zip
        self.create_zip_file(self.tmp_dir)
コード例 #10
0
    def prepare(self):
        root_dir = self.get_root_dir()

        # Create directories
        common.recreate_dir(self.tmp_dir)
        os.makedirs(self.tmp_examples_dir)
        os.makedirs(self.tmp_source_dir)
        os.makedirs(self.tmp_build_dir)

        # Copy blockly and closure-library to build directory
        shutil.copytree(os.path.join(root_dir, '..', '..', 'tvpl-blockly'),
                        self.tmp_build_blockly_dir,
                        ignore=shutil.ignore_patterns('*/.git'))
        shutil.copytree(os.path.join(root_dir, '..', '..',
                                     'tvpl-closure-library'),
                        self.tmp_build_closure_library_dir,
                        ignore=shutil.ignore_patterns('*/.git', '*_test.js'))

        # Copy css/, js/, index.html and programEditor.html
        shutil.copytree(os.path.join(root_dir, 'css'),
                        os.path.join(self.tmp_source_dir, 'css'))
        shutil.copytree(os.path.join(root_dir, 'js'),
                        os.path.join(self.tmp_source_dir, 'js'))
        shutil.copy(os.path.join(root_dir, 'index.html'), self.tmp_source_dir)
        shutil.copy(os.path.join(root_dir, 'programEditor.html'),
                    self.tmp_source_dir)

        # Copy general examples
        for example in common.find_examples(root_dir, r'^example_.*\.tvpl$'):
            shutil.copy(example[1], self.tmp_examples_dir)

        # Copy changelog.txt and readme.txt
        shutil.copy(os.path.join(root_dir, 'changelog.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme-alpha.txt'), self.tmp_dir)

        # Generate JavaScript bindings
        with common.ChangedDirectory(os.path.join(root_dir, '..',
                                                  'javascript')):
            common.execute(['python', 'generate_javascript_bindings.py'])
            common.execute(['python', 'generate_javascript_zip.py'])

        shutil.copy(
            os.path.join(self.tmp_javascript_dir, 'browser', 'source',
                         'Tinkerforge.js'),
            os.path.join(self.tmp_source_dir, 'js', 'Tinkerforge.js'))
コード例 #11
0
    def finish(self):
        root_dir = self.get_bindings_root_directory()

        # Copy IP Connection examples
        for example in common.find_examples(root_dir, '^Example.*\.php$'):
            shutil.copy(example[1], self.tmp_examples_dir)

        # Copy bindings and readme
        package_files = ['<file name="Tinkerforge/IPConnection.php" role="php" />']
        for filename in released_files:
            shutil.copy(os.path.join(root_dir, 'bindings', filename), self.tmp_source_tinkerforge_dir)
            package_files.append('<file name="Tinkerforge/{0}" role="php" />'.format(os.path.basename(filename)))

        shutil.copy(os.path.join(root_dir, 'IPConnection.php'),             self.tmp_source_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'changelog.txt'),                self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme.txt'),                   self.tmp_dir)
        shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'), self.tmp_dir)

        # Make package.xml
        version = common.get_changelog_version(root_dir)
        date = datetime.datetime.now().strftime("%Y-%m-%d")

        common.specialize_template(os.path.join(root_dir, 'package.xml.template'),
                                   os.path.join(self.tmp_source_dir, 'package.xml'),
                                   {'{{VERSION}}': '.'.join(version),
                                    '{{DATE}}': date,
                                    '{{FILES}}': '\n    '.join(package_files)})

        # Make PEAR package
        with common.ChangedDirectory(self.tmp_source_dir):
            args = ['/usr/bin/pear',
                    'package',
                    'package.xml']

            if subprocess.call(args) != 0:
                raise Exception("Command '{0}' failed".format(' '.join(args)))

        # Remove build stuff
        shutil.move(os.path.join(self.tmp_source_dir, 'Tinkerforge-{0}.{1}.{2}.tgz'.format(*version)),
                    os.path.join(self.tmp_dir, 'Tinkerforge.tgz'))
        os.remove(os.path.join(self.tmp_source_dir, 'package.xml'))

        # Make zip
        common.make_zip(self.get_bindings_name(), self.tmp_dir, root_dir, version)
コード例 #12
0
def generate(bindings_root_directory):
    tmp_dir               = os.path.join(bindings_root_directory, 'maven_package')
    tmp_src_main_java_dir = os.path.join(tmp_dir, 'src', 'main', 'java')
    tmp_unzipped_dir      = os.path.join(tmp_dir, 'unzipped')

    # Make directories
    common.recreate_directory(tmp_dir)
    os.makedirs(tmp_src_main_java_dir)

    # Unzip
    version = common.get_changelog_version(bindings_root_directory)
    args = ['/usr/bin/unzip',
            '-q',
            os.path.join(bindings_root_directory, 'tinkerforge_java_bindings_{0}_{1}_{2}.zip'.format(*version)),
            '-d',
            tmp_unzipped_dir]

    if subprocess.call(args) != 0:
        raise Exception("Command '{0}' failed".format(' '.join(args)))

    # Copy source
    shutil.copytree(os.path.join(tmp_unzipped_dir, 'source', 'com'),
                    os.path.join(tmp_src_main_java_dir, 'com'))

    # Make pom.xml
    common.specialize_template(os.path.join(bindings_root_directory, 'pom.xml.template'),
                               os.path.join(tmp_dir, 'pom.xml'),
                               {'{{VERSION}}': '.'.join(version)})

    # Make package
    with common.ChangedDirectory(tmp_dir):
        args = ['/usr/bin/mvn',
                'clean',
                'verify']

        if subprocess.call(args) != 0:
            raise Exception("Command '{0}' failed".format(' '.join(args)))
コード例 #13
0
    def finish(self):
        root_dir = self.get_root_dir()

        # Copy IP Connection examples
        if self.get_config_name().space == 'Tinkerforge':
            for example in common.find_examples(root_dir, r'^Example.*\.nb$'):
                shutil.copy(example[1], self.tmp_examples_dir)

        # Copy bindings and readme
        for filename in self.get_released_files():
            shutil.copy(os.path.join(self.get_bindings_dir(), filename), self.tmp_source_tinkerforge_dir)

        shutil.copy(os.path.join(root_dir, '..', 'csharp', 'IPConnection.cs'), self.tmp_source_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'changelog.txt'),                   self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme.txt'),                      self.tmp_dir)
        shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'),    self.tmp_dir)

        # Make AssemblyInfo.cs
        version = self.get_changelog_version()

        common.specialize_template(os.path.join(root_dir, '..', 'csharp', 'AssemblyInfo.cs.template'),
                                   os.path.join(self.tmp_source_tinkerforge_dir, 'AssemblyInfo.cs'),
                                   {'<<BINDINGS>>': 'Mathematica',
                                    '<<VERSION>>': '.'.join(version)})

        # Make dll
        with common.ChangedDirectory(self.tmp_dir):
            common.execute(['mcs',
                            '/optimize+',
                            '/warn:4',
                            '/sdk:2',
                            '/target:library',
                            '/out:' + os.path.join(self.tmp_dir, 'Tinkerforge.dll'),
                            os.path.join(self.tmp_source_tinkerforge_dir, '*.cs')])

        # Make zip
        self.create_zip_file(self.tmp_dir)
コード例 #14
0
    def finish(self):
        root_dir = self.get_root_dir()

        # Copy IP Connection examples
        if self.get_config_name().space == 'Tinkerforge':
            for example in common.find_examples(root_dir,
                                                r'^Example.*\.java$'):
                shutil.copy(example[1], self.tmp_examples_dir)

        # Copy bindings and readme
        for filename in self.get_released_files():
            shutil.copy(os.path.join(self.get_bindings_dir(), filename),
                        self.tmp_source_com_tinkerforge_dir)

        shutil.copy(
            os.path.join(self.get_bindings_dir(),
                         'com.tinkerforge.DeviceProvider'),
            self.tmp_source_meta_inf_services_dir)

        if self.get_config_name().space == 'Tinkerforge':
            shutil.copy(os.path.join(root_dir, 'BrickDaemon.java'),
                        self.tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'Device.java'),
                        self.tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'DeviceBase.java'),
                        self.tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'DeviceListener.java'),
                        self.tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'DeviceProvider.java'),
                        self.tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'DeviceFactory.java'),
                        self.tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'IPConnection.java'),
                        self.tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'IPConnectionBase.java'),
                        self.tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'TinkerforgeException.java'),
                        self.tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'TimeoutException.java'),
                        self.tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, 'AlreadyConnectedException.java'),
                self.tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'NotConnectedException.java'),
                        self.tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'CryptoException.java'),
                        self.tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'NetworkException.java'),
                        self.tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, 'StreamOutOfSyncException.java'),
                self.tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, 'InvalidParameterException.java'),
                self.tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'NotSupportedException.java'),
                        self.tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, 'UnknownErrorCodeException.java'),
                self.tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'TinkerforgeListener.java'),
                        self.tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'changelog.txt'), self.tmp_dir)
            shutil.copy(os.path.join(root_dir, 'readme.txt'), self.tmp_dir)
            shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'),
                        self.tmp_dir)
        else:
            shutil.copy(os.path.join(self.get_config_dir(), 'changelog.txt'),
                        self.tmp_dir)
            shutil.copy(os.path.join(root_dir, 'custom.txt'),
                        os.path.join(self.tmp_dir, 'readme.txt'))

        # Make manifest
        version = self.get_changelog_version()

        with open(os.path.join(self.tmp_dir, 'manifest.txt'), 'w') as f:
            f.write('Bindings-Version: {0}.{1}.{2}\n'.format(*version))

        # Compile source
        if self.get_config_name().space == 'Tinkerforge':
            class_path = ''
        else:
            class_path = '-cp /tmp/generators/java/Tinkerforge.jar '

        with common.ChangedDirectory(self.tmp_dir):
            common.execute(
                'javac ' + '-Xlint ' + '-source 8 ' + '-target 8 ' +
                class_path +
                os.path.join(self.tmp_source_com_tinkerforge_dir, '*.java'),
                shell=True)

        # Make jar
        with common.ChangedDirectory(self.tmp_source_dir):
            common.execute([
                'jar', 'cfm',
                os.path.join(self.tmp_dir,
                             self.get_config_name().camel + '.jar'),
                os.path.join(self.tmp_dir, 'manifest.txt'), 'com', 'META-INF'
            ])

        # Remove manifest
        os.remove(os.path.join(self.tmp_dir, 'manifest.txt'))

        # Remove classes
        for name in os.listdir(self.tmp_source_com_tinkerforge_dir):
            if name.endswith('.class'):
                os.remove(
                    os.path.join(self.tmp_source_com_tinkerforge_dir, name))

        # Make zip
        self.create_zip_file(self.tmp_dir)
コード例 #15
0
def generate(root_dir):
    tmp_dir = os.path.join(root_dir, 'nuget_package')
    tmp_unzipped_net20_dir = os.path.join(tmp_dir, 'unzipped_net20')
    tmp_unzipped_net40_dir = os.path.join(tmp_dir, 'unzipped_net40')
    tmp_unzipped_net40_source_tinkerforge_dir = os.path.join(
        tmp_unzipped_net40_dir, 'source', 'Tinkerforge')
    tmp_unzipped_netcoreapp20_dir = os.path.join(tmp_dir,
                                                 'unzipped_netcoreapp20')
    tmp_unzipped_netcoreapp20_source_tinkerforge_dir = os.path.join(
        tmp_unzipped_netcoreapp20_dir, 'source', 'Tinkerforge')

    # Make directories
    common.recreate_dir(tmp_dir)

    # Unzip
    version = common.get_changelog_version(root_dir)

    common.execute([
        '/usr/bin/unzip', '-q',
        os.path.join(
            root_dir,
            'tinkerforge_csharp_bindings_{0}_{1}_{2}.zip'.format(*version)),
        '-d', tmp_unzipped_net20_dir
    ])

    shutil.copytree(tmp_unzipped_net20_dir, tmp_unzipped_net40_dir)
    shutil.copytree(tmp_unzipped_net20_dir, tmp_unzipped_netcoreapp20_dir)

    # Make DLL for NET 4.0
    with common.ChangedDirectory(tmp_unzipped_net40_dir):
        common.execute([
            '/usr/bin/mcs', '/debug:full', '/optimize+', '/warn:4', '/sdk:4',
            '/target:library',
            '/doc:' + os.path.join(tmp_unzipped_net40_dir, 'Tinkerforge.xml'),
            '/out:' + os.path.join(tmp_unzipped_net40_dir, 'Tinkerforge.dll'),
            os.path.join(tmp_unzipped_net40_source_tinkerforge_dir, '*.cs')
        ])

    # Make DLL for NET Core 2.0
    with open(
            os.path.join(tmp_unzipped_netcoreapp20_source_tinkerforge_dir,
                         'Tinkerforge.csproj'), 'w') as f:
        f.write(NETCORE_CSPROJ)

    with common.ChangedDirectory(
            tmp_unzipped_netcoreapp20_source_tinkerforge_dir):
        common.execute(['/usr/bin/dotnet', 'build', '-c', 'Release'])

    # Download nuget.exe
    with common.ChangedDirectory(tmp_dir):
        common.execute(['wget', 'http://www.nuget.org/nuget.exe'])

    # Make Tinkerforge.nuspec
    common.specialize_template(
        os.path.join(root_dir, 'Tinkerforge.nuspec.template'),
        os.path.join(tmp_dir, 'Tinkerforge.nuspec'),
        {'{{VERSION}}': '.'.join(version)})

    # Make package
    with common.ChangedDirectory(tmp_dir):
        common.execute([
            'mono',
            os.path.join(tmp_dir, 'nuget.exe'), 'pack',
            os.path.join(tmp_dir, 'Tinkerforge.nuspec')
        ])

    shutil.move(
        os.path.join(tmp_dir,
                     'Tinkerforge.{0}.{1}.{2}.nupkg'.format(*version)),
        os.path.join(root_dir,
                     'tinkerforge.{0}.{1}.{2}.nupkg'.format(*version)))
コード例 #16
0
def generate(bindings_root_directory):
    tmp_dir = os.path.join(bindings_root_directory, 'nuget_package')
    tmp_unzipped_20_dir = os.path.join(tmp_dir, 'unzipped_20')
    tmp_unzipped_40_dir = os.path.join(tmp_dir, 'unzipped_40')
    tmp_unzipped_40_source_tinkerforge_dir = os.path.join(
        tmp_unzipped_40_dir, 'source', 'Tinkerforge')

    # Make directories
    common.recreate_directory(tmp_dir)

    # Unzip
    version = common.get_changelog_version(bindings_root_directory)

    common.execute([
        '/usr/bin/unzip', '-q',
        os.path.join(
            bindings_root_directory,
            'tinkerforge_csharp_bindings_{0}_{1}_{2}.zip'.format(*version)),
        '-d', tmp_unzipped_20_dir
    ])

    shutil.copytree(tmp_unzipped_20_dir, tmp_unzipped_40_dir)

    # Make Tinkerforge.csproj for NET 4.0
    common.specialize_template(
        os.path.join(tmp_unzipped_40_source_tinkerforge_dir,
                     'Tinkerforge.csproj'),
        os.path.join(tmp_unzipped_40_source_tinkerforge_dir,
                     'Tinkerforge.csproj'),
        {'ToolsVersion="2.0"': 'ToolsVersion="4.0"'})

    # Make dll for NET 4.0
    with common.ChangedDirectory(tmp_unzipped_40_source_tinkerforge_dir):
        common.execute([
            'xbuild', '/p:Configuration=Release',
            os.path.join(tmp_unzipped_40_source_tinkerforge_dir,
                         'Tinkerforge.csproj')
        ])

    # Download nuget.exe
    with common.ChangedDirectory(tmp_dir):
        common.execute(['wget', 'http://www.nuget.org/nuget.exe'])

    # Make Tinkerforge.nuspec
    common.specialize_template(
        os.path.join(bindings_root_directory, 'Tinkerforge.nuspec.template'),
        os.path.join(tmp_dir, 'Tinkerforge.nuspec'),
        {'{{VERSION}}': '.'.join(version)})

    # Make package
    with common.ChangedDirectory(tmp_dir):
        common.execute([
            'mono',
            os.path.join(tmp_dir, 'nuget.exe'), 'pack',
            os.path.join(tmp_dir, 'Tinkerforge.nuspec')
        ])

    shutil.move(
        os.path.join(tmp_dir,
                     'Tinkerforge.{0}.{1}.{2}.nupkg'.format(*version)),
        os.path.join(bindings_root_directory,
                     'tinkerforge.{0}.{1}.{2}.nupkg'.format(*version)))
コード例 #17
0
    def finish(self):
        root_dir = self.get_root_dir()

        # Copy IP Connection examples
        if self.get_config_name().space == 'Tinkerforge':
            for example in common.find_examples(root_dir, r'^example_.*\.rb$'):
                shutil.copy(example[1], self.tmp_examples_dir)

        # Copy bindings and readme
        for filename in self.get_released_files():
            shutil.copy(os.path.join(self.get_bindings_dir(), filename),
                        self.tmp_source_lib_tinkerforge_dir)

        shutil.copy(os.path.join(root_dir, 'ip_connection.rb'),
                    self.tmp_source_lib_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'changelog.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'),
                    self.tmp_dir)

        # Make version.rb
        version = self.get_changelog_version()

        with open(
                os.path.join(self.tmp_source_lib_tinkerforge_dir,
                             'version.rb'), 'w') as f:
            f.write("""
module Tinkerforge
  VERSION = '{0}.{1}.{2}'
end
""".format(*version))

        # Make tinkerforge.rb
        with open(os.path.join(self.tmp_source_lib_dir, 'tinkerforge.rb'),
                  'w') as f:
            f.write("""
require 'tinkerforge/version'

module Tinkerforge
end
""")

        # Make tinkerforge.gemspec
        tmp_gemspec = os.path.join(self.tmp_source_dir, 'tinkerforge.gemspec')

        common.specialize_template(
            os.path.join(root_dir, 'tinkerforge.gemspec.template'),
            tmp_gemspec, {'<<VERSION>>': '.'.join(version)})

        # Make gem
        with common.ChangedDirectory(self.tmp_source_dir):
            common.execute(['gem', 'build', 'tinkerforge.gemspec'])

        # Remove build stuff
        tmp_gem = os.path.join(self.tmp_source_dir,
                               'tinkerforge-{0}.{1}.{2}.gem'.format(*version))

        os.remove(tmp_gemspec)
        shutil.copy(tmp_gem, root_dir)
        shutil.move(tmp_gem, os.path.join(self.tmp_dir, 'tinkerforge.gem'))
        shutil.move(os.path.join(self.tmp_source_lib_dir, 'tinkerforge.rb'),
                    self.tmp_source_dir)
        shutil.move(self.tmp_source_lib_tinkerforge_dir,
                    os.path.join(self.tmp_source_dir, 'tinkerforge'))
        shutil.rmtree(self.tmp_source_lib_dir)

        # Make zip
        self.create_zip_file(self.tmp_dir)
コード例 #18
0
    def finish(self):
        root = self.get_bindings_root_directory()

        # Copy IPConnection examples
        examples = common.find_examples(root, '^Example.*\.php$')
        for example in examples:
            shutil.copy(example[1], '/tmp/generator/pear/examples')

        # Copy bindings and readme
        package_files = [
            '<file name="Tinkerforge/IPConnection.php" role="php" />'
        ]
        for filename in released_files:
            shutil.copy(os.path.join(root, 'bindings', filename),
                        '/tmp/generator/pear/source/Tinkerforge')
            package_files.append(
                '<file name="Tinkerforge/{0}" role="php" />'.format(
                    os.path.basename(filename)))

        shutil.copy(os.path.join(root, 'IPConnection.php'),
                    '/tmp/generator/pear/source/Tinkerforge')
        shutil.copy(os.path.join(root, 'changelog.txt'), '/tmp/generator/pear')
        shutil.copy(os.path.join(root, 'readme.txt'), '/tmp/generator/pear')

        # Write package.xml
        version = common.get_changelog_version(root)
        date = datetime.datetime.now().strftime("%Y-%m-%d")
        file('/tmp/generator/pear/source/package.xml',
             'wb').write("""<?xml version="1.0" encoding="UTF-8"?>
<package packagerversion="1.9.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0">
 <name>Tinkerforge</name>
 <uri>http://download.tinkerforge.com/bindings/php/pear/Tinkerforge-{2}.{3}.{4}</uri>
 <summary>PHP API Bindings for Tinkerforge Bricks and Bricklets</summary>
 <description>no description</description>
 <lead>
  <name>Matthias Bolte</name>
  <user>matthias</user>
  <email>[email protected]</email>
  <active>yes</active>
 </lead>
 <date>{0}</date>
 <version>
  <release>{2}.{3}.{4}</release>
  <api>{2}.{3}.{4}</api>
 </version>
 <stability>
  <release>stable</release>
  <api>stable</api>
 </stability>
 <license>Public Domain</license>
 <notes>no notes</notes>
 <contents>
  <dir name="Tinkerforge">
   {1}
  </dir>
 </contents>
 <dependencies>
  <required>
   <php>
    <min>5.3.0</min>
   </php>
   <pearinstaller>
    <min>1.9.0</min>
   </pearinstaller>
  </required>
 </dependencies>
 <phprelease />
</package>
""".format(date, '\n    '.join(package_files), *version))

        # Make PEAR package
        with common.ChangedDirectory('/tmp/generator/pear/source'):
            args = ['/usr/bin/pear', 'package', 'package.xml']
            if subprocess.call(args) != 0:
                raise Exception("Command '{0}' failed".format(' '.join(args)))

        # Remove build stuff
        shutil.move(
            '/tmp/generator/pear/source/Tinkerforge-{0}.{1}.{2}.tgz'.format(
                *version), '/tmp/generator/pear/Tinkerforge.tgz')
        os.remove('/tmp/generator/pear/source/package.xml')

        # Make zip
        common.make_zip(self.get_bindings_name(), '/tmp/generator/pear', root,
                        version)
コード例 #19
0
def generate(bindings_root_directory):
    tmp_dir = os.path.join(bindings_root_directory, 'cpan_package')
    tmp_unzipped_dir = os.path.join(tmp_dir, 'unzipped')
    tmp_unzipped_source_dir = os.path.join(tmp_unzipped_dir, 'source')
    tmp_unzipped_source_lib_dir = os.path.join(tmp_unzipped_source_dir, 'lib')
    tmp_cpan_dir = os.path.join(tmp_dir, 'cpan')
    tmp_cpan_lib_dir = os.path.join(tmp_cpan_dir, 'lib')

    # Make directories
    common.recreate_directory(tmp_dir)

    # Unzip
    version = common.get_changelog_version(bindings_root_directory)
    args = [
        '/usr/bin/unzip', '-q',
        os.path.join(
            bindings_root_directory,
            'tinkerforge_perl_bindings_{0}_{1}_{2}.zip'.format(*version)),
        '-d', tmp_unzipped_dir
    ]

    if subprocess.call(args) != 0:
        raise Exception("Command '{0}' failed".format(' '.join(args)))

    # Make CPAN package structure
    modules = [
        'Tinkerforge', 'Tinkerforge::IPConnection', 'Tinkerforge::Device',
        'Tinkerforge::Error'
    ]

    for filename in released_files:
        modules.append('Tinkerforge::' + filename.replace('.pm', ''))

    subprocess.call(
        ("module-starter --dir={0} --module={1} --distro=Tinkerforge " +
         "--author=\"Ishraq Ibne Ashraf\" [email protected]"
         ).format(tmp_cpan_dir, ','.join(modules)),
        shell=True)

    # Make README
    common.specialize_template(
        os.path.join(bindings_root_directory, 'README.template'),
        os.path.join(tmp_cpan_dir, 'README'),
        {'<<VERSION>>': '.'.join(version)})

    # Make Changes
    shutil.copy(os.path.join(tmp_unzipped_dir, 'changelog.txt'),
                os.path.join(tmp_cpan_dir, 'Changes'))

    # Copy Makefile.PL
    shutil.copy(os.path.join(tmp_unzipped_source_dir, 'Makefile.PL'),
                tmp_cpan_dir)

    # Copy source
    shutil.rmtree(tmp_cpan_lib_dir)
    shutil.copytree(os.path.join(tmp_unzipped_source_lib_dir),
                    os.path.join(tmp_cpan_lib_dir))

    # Make package
    with common.ChangedDirectory(tmp_cpan_dir):
        args = ['/usr/bin/perl', 'Makefile.PL']

        if subprocess.call(args) != 0:
            raise Exception("Command '{0}' failed".format(' '.join(args)))

        args = ['make', 'dist']

        if subprocess.call(args) != 0:
            raise Exception("Command '{0}' failed".format(' '.join(args)))

    shutil.copy(
        os.path.join(tmp_cpan_dir,
                     'Tinkerforge-{0}.{1}.{2}.tar.gz'.format(*version)),
        bindings_root_directory)
コード例 #20
0
    def finish(self):
        root_dir = self.get_root_dir()

        # Copy IP Connection examples
        if self.get_config_name().space == 'Tinkerforge':
            for example in common.find_examples(root_dir, r'^Example.*\.cs$'):
                shutil.copy(example[1], self.tmp_examples_dir)

        # Copy bindings and readme
        for filename in self.get_released_files():
            shutil.copy(os.path.join(self.get_bindings_dir(), filename),
                        self.tmp_source_tinkerforge_dir)
            shutil.copy(os.path.join(self.get_bindings_dir(), filename),
                        self.tmp_source_tinkerforge_uwp_dir)

        shutil.copy(os.path.join(root_dir, 'IPConnection.cs'),
                    self.tmp_source_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'IPConnection.cs'),
                    self.tmp_source_tinkerforge_uwp_dir)
        shutil.copy(os.path.join(root_dir, 'project.json'),
                    self.tmp_source_tinkerforge_uwp_dir)
        shutil.copy(os.path.join(root_dir, 'project.lock.json'),
                    self.tmp_source_tinkerforge_uwp_dir)
        shutil.copy(os.path.join(root_dir, 'TinkerforgeUWP.rd.xml'),
                    self.tmp_source_tinkerforge_uwp_dir)
        shutil.copy(os.path.join(root_dir, 'changelog.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'),
                    self.tmp_dir)

        # Make AssemblyInfo.cs
        version = self.get_changelog_version()

        for target_dir in [
                self.tmp_source_tinkerforge_dir,
                self.tmp_source_tinkerforge_uwp_dir
        ]:
            common.specialize_template(
                os.path.join(root_dir, 'AssemblyInfo.cs.template'),
                os.path.join(target_dir, 'AssemblyInfo.cs'), {
                    '<<BINDINGS>>': 'C#',
                    '<<VERSION>>': '.'.join(version)
                })

        # Make Tinkerforge(UWP).csproj
        project_items = []

        for filename in ['AssemblyInfo.cs', 'IPConnection.cs'
                         ] + self.get_released_files():
            project_items.append('<Compile Include="{0}" />'.format(filename))

        common.specialize_template(
            os.path.join(root_dir, 'Tinkerforge.csproj.template'),
            os.path.join(self.tmp_source_tinkerforge_dir,
                         'Tinkerforge.csproj'),
            {'{{ITEMS}}': '\n    '.join(project_items)})

        common.specialize_template(
            os.path.join(root_dir, 'TinkerforgeUWP.csproj.template'),
            os.path.join(self.tmp_source_tinkerforge_uwp_dir,
                         'TinkerforgeUWP.csproj'),
            {'{{ITEMS}}': '\n    '.join(project_items)})

        # Make dll
        with common.ChangedDirectory(self.tmp_dir):
            common.execute([
                'mcs', '/debug:full', '/optimize+', '/warn:4', '/sdk:2',
                '/target:library',
                '/doc:' + os.path.join(self.tmp_dir, 'Tinkerforge.xml'),
                '/out:' + os.path.join(self.tmp_dir, 'Tinkerforge.dll'),
                os.path.join(self.tmp_source_tinkerforge_dir, '*.cs')
            ])

        # Make zip
        self.create_zip_file(self.tmp_dir)
コード例 #21
0
    def finish(self):
        root_dir = self.get_root_dir()

        for flavor in ['matlab', 'octave']:
            tmp_dir = self.tmp_flavor_dir[flavor]
            tmp_source_dir = self.tmp_flavor_source_dir[flavor]
            tmp_source_meta_inf_services_dir = self.tmp_flavor_source_meta_inf_services_dir[
                flavor]
            tmp_source_com_tinkerforge_dir = self.tmp_flavor_source_com_tinkerforge_dir[
                flavor]
            tmp_examples_dir = self.tmp_flavor_examples_dir[flavor]

            # Copy IP Connection examples
            if self.get_config_name().space == 'Tinkerforge':
                for example in common.find_examples(
                        root_dir, '^' + flavor + r'_example_.*\.m$'):
                    shutil.copy(example[1], tmp_examples_dir)

            # Copy bindings and readme
            for filename in self.get_released_files():
                shutil.copy(
                    os.path.join(root_dir, self.get_bindings_dir(), flavor,
                                 filename), tmp_source_com_tinkerforge_dir)

            shutil.copy(
                os.path.join(self.get_bindings_dir(), flavor,
                             'com.tinkerforge.DeviceProvider'),
                tmp_source_meta_inf_services_dir)

            shutil.copy(
                os.path.join(root_dir, '..', 'java', 'BrickDaemon.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java', 'DeviceBase.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, 'Device_{0}.java'.format(flavor)),
                os.path.join(tmp_source_com_tinkerforge_dir, 'Device.java'))
            shutil.copy(
                os.path.join(root_dir, '..', 'java', 'DeviceListener.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java', 'DeviceProvider.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java', 'DeviceFactory.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, 'IPConnection_{0}.java'.format(flavor)),
                os.path.join(tmp_source_com_tinkerforge_dir,
                             'IPConnection.java'))
            shutil.copy(
                os.path.join(root_dir, '..', 'java', 'IPConnectionBase.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java',
                             'TinkerforgeException.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java', 'TimeoutException.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java',
                             'AlreadyConnectedException.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java',
                             'NotConnectedException.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java', 'CryptoException.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java', 'NetworkException.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java',
                             'StreamOutOfSyncException.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java',
                             'TinkerforgeListener.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, 'liboctaveinvokewrapper-linux-i386.so'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir,
                             'liboctaveinvokewrapper-linux-amd64.so'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, 'liboctaveinvokewrapper-linux-arm.so'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir,
                             'liboctaveinvokewrapper-windows-x86.dll'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir,
                             'liboctaveinvokewrapper-windows-amd64.dll'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir,
                             'liboctaveinvokewrapper-macos-x86_64.dynlib'),
                tmp_source_com_tinkerforge_dir)

            if self.get_config_name().space == 'Tinkerforge':
                shutil.copy(os.path.join(root_dir, 'changelog.txt'),
                            self.tmp_dir)
                shutil.copy(os.path.join(root_dir, 'readme.txt'), self.tmp_dir)
                shutil.copy(
                    os.path.join(root_dir, '..', 'configs', 'license.txt'),
                    self.tmp_dir)
            else:
                shutil.copy(
                    os.path.join(self.get_config_dir(), 'changelog.txt'),
                    self.tmp_dir)

            # Make manifest
            version = self.get_changelog_version()

            with open(os.path.join(tmp_dir, 'manifest.txt'), 'w') as f:
                f.write(
                    'Bindings-Version: {1}.{2}.{3}\nBindings-Flavor: {0}\n'.
                    format(flavor.upper(), *version))

            # Make jar
            with common.ChangedDirectory(tmp_dir):
                if flavor == 'octave':
                    classpath = '-classpath {0} '.format(
                        os.path.join(root_dir, 'octave.jar'))
                else:
                    classpath = ''

                common.execute(
                    '/usr/bin/javac ' + classpath + '-Xlint ' +
                    '-source 1.6 ' + '-target 1.6 ' +
                    os.path.join(tmp_source_com_tinkerforge_dir, '*.java'),
                    shell=True)

            with common.ChangedDirectory(tmp_source_dir):
                common.execute([
                    '/usr/bin/jar', 'cfm',
                    os.path.join(tmp_dir,
                                 self.get_config_name().camel + '.jar'),
                    os.path.join(tmp_dir, 'manifest.txt'), 'com', 'META-INF'
                ])

            # Remove manifest
            os.remove(os.path.join(tmp_dir, 'manifest.txt'))

            # Remove classes
            for f in os.listdir(tmp_source_com_tinkerforge_dir):
                if f.endswith('.class'):
                    os.remove(os.path.join(tmp_source_com_tinkerforge_dir, f))

        # Make zip
        self.create_zip_file(self.tmp_dir)
コード例 #22
0
    def finish(self):
        root_dir = self.get_bindings_root_directory()

        # Copy IP Connection examples
        for example in common.find_examples(root_dir, '^Example.*\.js'):
            shutil.copy(example[1], self.tmp_nodejs_examples_dir)

        for example in common.find_examples(root_dir, '^Example.*\.html'):
            shutil.copy(example[1], self.tmp_browser_examples_dir)

        # Copy bindings and readme
        for filename in released_files:
            if filename == 'TinkerforgeNPM.js':
                shutil.copy(
                    os.path.join(root_dir, 'bindings', filename),
                    os.path.join(self.tmp_nodejs_package_dir,
                                 'Tinkerforge.js'))
            elif filename == 'BrowserAPI.js':
                shutil.copy(os.path.join(root_dir, 'bindings', filename),
                            self.tmp_nodejs_source_tinkerforge_dir)
            elif filename == 'TinkerforgeSource.js':
                shutil.copy(
                    os.path.join(root_dir, 'bindings', filename),
                    os.path.join(self.tmp_nodejs_source_dir, 'Tinkerforge.js'))
            else:
                shutil.copy(os.path.join(root_dir, 'bindings', filename),
                            self.tmp_nodejs_source_tinkerforge_dir)
                shutil.copy(os.path.join(root_dir, 'bindings', filename),
                            self.tmp_nodejs_package_lib_dir)

        # Make package.json
        version = common.get_changelog_version(root_dir)

        common.specialize_template(
            os.path.join(root_dir, 'package.json.template'),
            os.path.join(self.tmp_nodejs_package_dir, 'package.json'),
            {'<<VERSION>>': '.'.join(version)})

        shutil.copy(os.path.join(root_dir, 'IPConnection.js'),
                    self.tmp_nodejs_package_lib_dir)
        shutil.copy(os.path.join(root_dir, 'Device.js'),
                    self.tmp_nodejs_package_lib_dir)
        shutil.copy(os.path.join(root_dir, 'LICENSE'),
                    self.tmp_nodejs_package_dir)
        shutil.copy(os.path.join(root_dir, 'README.md'),
                    self.tmp_nodejs_package_dir)

        shutil.copy(os.path.join(root_dir, 'IPConnection.js'),
                    self.tmp_nodejs_source_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'Device.js'),
                    self.tmp_nodejs_source_tinkerforge_dir)

        shutil.copy(os.path.join(root_dir, 'changelog.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'),
                    self.tmp_dir)

        # Copy browser specific files
        shutil.copy(os.path.join(root_dir, 'es5-shim.js'),
                    self.tmp_nodejs_source_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'es5-sham.js'),
                    self.tmp_nodejs_source_tinkerforge_dir)

        # Make Tinkerforge.js for browser with browserify
        with common.ChangedDirectory(self.tmp_nodejs_source_tinkerforge_dir):
            args = ['browserify']
            args.extend(
                sorted(os.listdir(self.tmp_nodejs_source_tinkerforge_dir)))
            args.append('-o')
            args.append(
                os.path.join(self.tmp_browser_source_dir, 'Tinkerforge.js'))

            if subprocess.call(args) != 0:
                raise Exception("Command '{0}' failed".format(' '.join(args)))

        # Remove browser specific files
        os.remove(
            os.path.join(self.tmp_nodejs_source_tinkerforge_dir,
                         'BrowserAPI.js'))
        os.remove(
            os.path.join(self.tmp_nodejs_source_tinkerforge_dir,
                         'es5-shim.js'))
        os.remove(
            os.path.join(self.tmp_nodejs_source_tinkerforge_dir,
                         'es5-sham.js'))

        # Generate the NPM package and put it on the root of ZIP archive
        with common.ChangedDirectory(self.tmp_nodejs_package_dir):
            if subprocess.call('npm pack', shell=True) != 0:
                raise Exception("Command 'npm pack' failed")

        package_name = 'tinkerforge-{0}.{1}.{2}.tgz'.format(*version)

        shutil.copy(os.path.join(self.tmp_nodejs_package_dir, package_name),
                    os.path.join(self.tmp_nodejs_dir, 'tinkerforge.tgz'))
        shutil.copy(os.path.join(self.tmp_nodejs_package_dir, package_name),
                    os.path.join(root_dir, package_name))

        # Remove package directory
        shutil.rmtree(self.tmp_nodejs_package_dir)

        # Make zip
        version = common.get_changelog_version(root_dir)

        common.make_zip(self.get_bindings_name(), self.tmp_dir, root_dir,
                        version)

        # copy Tinkerforge.js to bindings root dir so copy_all.py can pick it up
        shutil.copy(
            os.path.join(self.tmp_browser_source_dir, 'Tinkerforge.js'),
            root_dir)
コード例 #23
0
    def finish(self):
        octave_jar_path = '-classpath {0} '.format(
            os.path.join(os.path.dirname(os.path.realpath(__file__)),
                         'octave.jar'))
        root = self.get_bindings_root_directory()

        for flavor in ['matlab', 'octave']:
            jar_root = '/tmp/generator/jar/' + flavor

            # Copy IPConnection examples
            examples = common.find_examples(root, '^example_.*\.m$')
            for example in examples:
                shutil.copy(example[1], jar_root + '/examples')

            # Copy bindings and readme
            for filename in released_files:
                shutil.copy(os.path.join(root, 'bindings_' + flavor, filename),
                            jar_root + '/source/com/tinkerforge')

            shutil.copy(os.path.join(root, '..', 'java', 'BrickDaemon.java'),
                        jar_root + '/source/com/tinkerforge')
            shutil.copy(os.path.join(root, '..', 'java', 'DeviceBase.java'),
                        jar_root + '/source/com/tinkerforge')
            shutil.copy(os.path.join(root, 'Device_{0}.java'.format(flavor)),
                        jar_root + '/source/com/tinkerforge/Device.java')
            shutil.copy(
                os.path.join(root, '..', 'java', 'DeviceListener.java'),
                jar_root + '/source/com/tinkerforge')
            shutil.copy(
                os.path.join(root, 'IPConnection_{0}.java'.format(flavor)),
                jar_root + '/source/com/tinkerforge/IPConnection.java')
            shutil.copy(
                os.path.join(root, '..', 'java', 'IPConnectionBase.java'),
                jar_root + '/source/com/tinkerforge')
            shutil.copy(
                os.path.join(root, '..', 'java', 'TinkerforgeException.java'),
                jar_root + '/source/com/tinkerforge')
            shutil.copy(
                os.path.join(root, '..', 'java', 'TimeoutException.java'),
                jar_root + '/source/com/tinkerforge')
            shutil.copy(
                os.path.join(root, '..', 'java',
                             'AlreadyConnectedException.java'),
                jar_root + '/source/com/tinkerforge')
            shutil.copy(
                os.path.join(root, '..', 'java', 'NotConnectedException.java'),
                jar_root + '/source/com/tinkerforge')
            shutil.copy(
                os.path.join(root, '..', 'java', 'CryptoException.java'),
                jar_root + '/source/com/tinkerforge')
            shutil.copy(
                os.path.join(root, '..', 'java', 'TinkerforgeListener.java'),
                jar_root + '/source/com/tinkerforge')
            shutil.copy(os.path.join(root, 'changelog.txt'),
                        '/tmp/generator/jar/')
            shutil.copy(os.path.join(root, 'readme.txt'),
                        '/tmp/generator/jar/')

            # Make Manifest
            version = common.get_changelog_version(root)
            file('/tmp/generator/manifest.txt', 'wb').write(
                'Bindings-Version: {1}.{2}.{3}\nBindings-Flavor: {0}\n'.format(
                    flavor.upper(), *version))

            # Make jar
            with common.ChangedDirectory('/tmp/generator'):
                if flavor == 'octave':
                    args = [
                        '/usr/bin/javac ' + octave_jar_path + '-Xlint ' +
                        '-source 1.5 ' + '-target 1.5 ' + jar_root +
                        '/source/com/tinkerforge/*.java'
                    ]
                else:
                    args = [
                        '/usr/bin/javac ' + '-Xlint ' + '-source 1.5 ' +
                        '-target 1.5 ' + jar_root +
                        '/source/com/tinkerforge/*.java'
                    ]
                if subprocess.call(args, shell=True) != 0:
                    raise Exception("Command '{0}' failed".format(
                        ' '.join(args)))

            with common.ChangedDirectory(jar_root + '/source'):
                args = [
                    '/usr/bin/jar ' + 'cfm ' + jar_root + '/Tinkerforge.jar ' +
                    '/tmp/generator/manifest.txt ' + 'com'
                ]
                if subprocess.call(args, shell=True) != 0:
                    raise Exception("Command '{0}' failed".format(
                        ' '.join(args)))

            # Remove class
            for f in os.listdir(jar_root + '/source/com/tinkerforge/'):
                if f.endswith('.class'):
                    os.remove(jar_root + '/source/com/tinkerforge/' + f)

            # FIXME: remove this
            shutil.copy(jar_root + '/Tinkerforge.jar',
                        root + '/Tinkerforge_' + flavor + '.jar')

        # Make zip
        common.make_zip(self.get_bindings_name(), '/tmp/generator/jar', root,
                        version)
コード例 #24
0
    def finish(self):
        root_dir = self.get_root_dir()

        # Copy IP Connection examples
        if self.get_config_name().space == 'Tinkerforge':
            for example in common.find_examples(root_dir, r'^Example.*\.js'):
                shutil.copy(example[1], self.tmp_nodejs_examples_dir)

            for example in common.find_examples(root_dir, r'^Example.*\.html'):
                shutil.copy(example[1], self.tmp_browser_examples_dir)

        # Copy bindings and readme
        for filename in self.get_released_files():
            if filename == 'TinkerforgeNPM.js':
                shutil.copy(os.path.join(self.get_bindings_dir(), filename), os.path.join(self.tmp_nodejs_package_dir, 'Tinkerforge.js'))
            elif filename == 'BrowserAPI.js':
                shutil.copy(os.path.join(self.get_bindings_dir(), filename), self.tmp_nodejs_source_tinkerforge_dir)
            elif filename == 'TinkerforgeSource.js':
                shutil.copy(os.path.join(self.get_bindings_dir(), filename), os.path.join(self.tmp_nodejs_source_dir, 'Tinkerforge.js'))
            else:
                shutil.copy(os.path.join(self.get_bindings_dir(), filename), self.tmp_nodejs_source_tinkerforge_dir)
                shutil.copy(os.path.join(self.get_bindings_dir(), filename), self.tmp_nodejs_package_lib_dir)

        # Make package.json
        version = self.get_changelog_version()

        common.specialize_template(os.path.join(root_dir, 'package.json.template'),
                                   os.path.join(self.tmp_nodejs_package_dir, 'package.json'),
                                   {'<<VERSION>>': '.'.join(version)})

        shutil.copy(os.path.join(root_dir, 'IPConnection.js'),              self.tmp_nodejs_package_lib_dir)
        shutil.copy(os.path.join(root_dir, 'Device.js'),                    self.tmp_nodejs_package_lib_dir)
        shutil.copy(os.path.join(root_dir, 'LICENSE'),                      self.tmp_nodejs_package_dir)
        shutil.copy(os.path.join(root_dir, 'README.md'),                    self.tmp_nodejs_package_dir)

        shutil.copy(os.path.join(root_dir, 'IPConnection.js'),              self.tmp_nodejs_source_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'Device.js'),                    self.tmp_nodejs_source_tinkerforge_dir)

        shutil.copy(os.path.join(root_dir, 'changelog.txt'),                self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme.txt'),                   self.tmp_dir)
        shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'), self.tmp_dir)

        # Copy browser specific files
        shutil.copy(os.path.join(root_dir, 'es5-shim.js'),                  self.tmp_nodejs_source_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'es5-sham.js'),                  self.tmp_nodejs_source_tinkerforge_dir)

        # Make Tinkerforge.js for browser with browserify
        retcode, output = common.check_output_and_error(['browserify', '--version'])

        if retcode != 0:
            raise common.GeneratorError('Could not get browserify version')

        if tuple([int(n) for n in output.strip('\r\n').split('.')]) < (13, 1, 1):
            raise common.GeneratorError('Need browserify version >= 13.1.1')

        with common.ChangedDirectory(self.tmp_nodejs_source_tinkerforge_dir):
            args = ['browserify']
            args.extend(sorted(os.listdir(self.tmp_nodejs_source_tinkerforge_dir)))
            args.append('-o')
            args.append(os.path.join(self.tmp_browser_source_dir, 'Tinkerforge.js'))

            common.execute(args)

        # Remove browser specific files
        os.remove(os.path.join(self.tmp_nodejs_source_tinkerforge_dir, 'BrowserAPI.js'))
        os.remove(os.path.join(self.tmp_nodejs_source_tinkerforge_dir, 'es5-shim.js'))
        os.remove(os.path.join(self.tmp_nodejs_source_tinkerforge_dir, 'es5-sham.js'))

        # Generate the NPM package and put it on the root of ZIP archive
        with common.ChangedDirectory(self.tmp_nodejs_package_dir):
            common.execute(['npm', 'pack'])

        package_name = 'tinkerforge-{0}.{1}.{2}.tgz'.format(*version)

        shutil.copy(os.path.join(self.tmp_nodejs_package_dir, package_name),
                    os.path.join(self.tmp_nodejs_dir, 'tinkerforge.tgz'))
        shutil.copy(os.path.join(self.tmp_nodejs_package_dir, package_name),
                    os.path.join(root_dir, package_name))

        # Remove package directory
        shutil.rmtree(self.tmp_nodejs_package_dir)

        # Make zip
        self.create_zip_file(self.tmp_dir)

        # copy Tinkerforge.js to bindings root dir so copy_all.py can pick it up
        shutil.copy(os.path.join(self.tmp_browser_source_dir, 'Tinkerforge.js'), root_dir)
コード例 #25
0
    def finish(self):
        root = self.get_bindings_root_directory()

        # Copy IPConnection examples
        examples = common.find_examples(root, '^Example.*\.java$')
        for example in examples:
            shutil.copy(example[1], '/tmp/generator/jar/examples')

        # Copy bindings and readme
        for filename in released_files:
            shutil.copy(os.path.join(root, 'bindings', filename),
                        '/tmp/generator/jar/source/com/tinkerforge')

        shutil.copy(os.path.join(root, 'BrickDaemon.java'),
                    '/tmp/generator/jar/source/com/tinkerforge')
        shutil.copy(os.path.join(root, 'Device.java'),
                    '/tmp/generator/jar/source/com/tinkerforge')
        shutil.copy(os.path.join(root, 'DeviceBase.java'),
                    '/tmp/generator/jar/source/com/tinkerforge')
        shutil.copy(os.path.join(root, 'DeviceListener.java'),
                    '/tmp/generator/jar/source/com/tinkerforge')
        shutil.copy(os.path.join(root, 'IPConnection.java'),
                    '/tmp/generator/jar/source/com/tinkerforge')
        shutil.copy(os.path.join(root, 'IPConnectionBase.java'),
                    '/tmp/generator/jar/source/com/tinkerforge')
        shutil.copy(os.path.join(root, 'TinkerforgeException.java'),
                    '/tmp/generator/jar/source/com/tinkerforge')
        shutil.copy(os.path.join(root, 'TimeoutException.java'),
                    '/tmp/generator/jar/source/com/tinkerforge')
        shutil.copy(os.path.join(root, 'AlreadyConnectedException.java'),
                    '/tmp/generator/jar/source/com/tinkerforge')
        shutil.copy(os.path.join(root, 'NotConnectedException.java'),
                    '/tmp/generator/jar/source/com/tinkerforge')
        shutil.copy(os.path.join(root, 'CryptoException.java'),
                    '/tmp/generator/jar/source/com/tinkerforge')
        shutil.copy(os.path.join(root, 'TinkerforgeListener.java'),
                    '/tmp/generator/jar/source/com/tinkerforge')
        shutil.copy(os.path.join(root, 'changelog.txt'), '/tmp/generator/jar')
        shutil.copy(os.path.join(root, 'readme.txt'), '/tmp/generator/jar')

        # Make Manifest
        version = common.get_changelog_version(root)
        file('/tmp/generator/manifest.txt',
             'wb').write('Bindings-Version: {0}.{1}.{2}\n'.format(*version))

        # Make jar
        with common.ChangedDirectory('/tmp/generator'):
            args = [
                '/usr/bin/javac ' + '-Xlint ' + '-source 1.5 ' +
                '-target 1.5 ' +
                '/tmp/generator/jar/source/com/tinkerforge/*.java'
            ]
            if subprocess.call(args, shell=True) != 0:
                raise Exception("Command '{0}' failed".format(' '.join(args)))

        with common.ChangedDirectory('/tmp/generator/jar/source'):
            args = [
                '/usr/bin/jar ' + 'cfm ' +
                '/tmp/generator/jar/Tinkerforge.jar ' +
                '/tmp/generator/manifest.txt ' + 'com'
            ]
            if subprocess.call(args, shell=True) != 0:
                raise Exception("Command '{0}' failed".format(' '.join(args)))

        # Remove class
        for f in os.listdir('/tmp/generator/jar/source/com/tinkerforge/'):
            if f.endswith('.class'):
                os.remove('/tmp/generator/jar/source/com/tinkerforge/' + f)

        # Make zip
        common.make_zip(self.get_bindings_name(), '/tmp/generator/jar', root,
                        version)
コード例 #26
0
    def finish(self):
        root_dir = self.get_bindings_root_directory()

        # Copy IP Connection examples
        for example in common.find_examples(root_dir, '^Example.*\.java$'):
            shutil.copy(example[1], self.tmp_examples_dir)

        # Copy bindings and readme
        for filename in released_files + ['DeviceFactory.java']:
            shutil.copy(os.path.join(root_dir, 'bindings', filename),
                        self.tmp_source_com_tinkerforge_dir)

        shutil.copy(os.path.join(root_dir, 'BrickDaemon.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'Device.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'DeviceBase.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'DeviceListener.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'IPConnection.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'IPConnectionBase.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'TinkerforgeException.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'TimeoutException.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'AlreadyConnectedException.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'NotConnectedException.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'CryptoException.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'TinkerforgeListener.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'changelog.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'),
                    self.tmp_dir)

        # Make manifest
        version = common.get_changelog_version(root_dir)

        with open(os.path.join(self.tmp_dir, 'manifest.txt'), 'wb') as f:
            f.write('Bindings-Version: {0}.{1}.{2}\n'.format(*version))

        # Compile source
        with common.ChangedDirectory(self.tmp_dir):
            common.execute(
                '/usr/bin/javac ' + '-Xlint ' + '-source 1.5 ' +
                '-target 1.5 ' +
                os.path.join(self.tmp_source_com_tinkerforge_dir, '*.java'),
                shell=True)

        # Make jar
        with common.ChangedDirectory(self.tmp_source_dir):
            common.execute([
                '/usr/bin/jar', 'cfm',
                os.path.join(self.tmp_dir, 'Tinkerforge.jar'),
                os.path.join(self.tmp_dir, 'manifest.txt'), 'com'
            ])

        # Remove manifest
        os.remove(os.path.join(self.tmp_dir, 'manifest.txt'))

        # Remove classes
        for f in os.listdir(self.tmp_source_com_tinkerforge_dir):
            if f.endswith('.class'):
                os.remove(os.path.join(self.tmp_source_com_tinkerforge_dir, f))

        # Make zip
        self.create_zip_file(self.tmp_dir)
コード例 #27
0
    def finish(self):
        root_dir = self.get_bindings_root_directory()

        # Copy IP Connection examples
        for example in common.find_examples(root_dir, '^Example.*\.java$'):
            shutil.copy(example[1], self.tmp_examples_dir)

        # Copy bindings and readme
        for filename in released_files:
            shutil.copy(os.path.join(root_dir, 'bindings', filename),
                        self.tmp_source_com_tinkerforge_dir)

        shutil.copy(os.path.join(root_dir, 'BrickDaemon.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'Device.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'DeviceBase.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'DeviceListener.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'IPConnection.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'IPConnectionBase.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'TinkerforgeException.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'TimeoutException.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'AlreadyConnectedException.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'NotConnectedException.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'CryptoException.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'TinkerforgeListener.java'),
                    self.tmp_source_com_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'changelog.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'),
                    self.tmp_dir)

        # Make manifest
        version = common.get_changelog_version(root_dir)

        file(os.path.join(self.tmp_dir, 'manifest.txt'),
             'wb').write('Bindings-Version: {0}.{1}.{2}\n'.format(*version))

        # Compile source
        with common.ChangedDirectory(self.tmp_dir):
            args = [
                '/usr/bin/javac ' + '-Xlint ' + '-source 1.5 ' +
                '-target 1.5 ' +
                os.path.join(self.tmp_source_com_tinkerforge_dir, '*.java')
            ]

            if subprocess.call(args, shell=True) != 0:
                raise Exception("Command '{0}' failed".format(' '.join(args)))

        # Make jar
        with common.ChangedDirectory(self.tmp_source_dir):
            args = [
                '/usr/bin/jar ' + 'cfm ' +
                os.path.join(self.tmp_dir, 'Tinkerforge.jar') + ' ' +
                os.path.join(self.tmp_dir, 'manifest.txt') + ' ' + 'com'
            ]

            if subprocess.call(args, shell=True) != 0:
                raise Exception("Command '{0}' failed".format(' '.join(args)))

        # Remove manifest
        os.remove(os.path.join(self.tmp_dir, 'manifest.txt'))

        # Remove classes
        for f in os.listdir(self.tmp_source_com_tinkerforge_dir):
            if f.endswith('.class'):
                os.remove(os.path.join(self.tmp_source_com_tinkerforge_dir, f))

        # Make zip
        common.make_zip(self.get_bindings_name(), self.tmp_dir, root_dir,
                        version)
コード例 #28
0
    def finish(self):
        root_dir = self.get_bindings_root_directory()

        for flavor in ['matlab', 'octave']:
            tmp_dir = self.tmp_flavor_dir[flavor]
            tmp_source_dir = self.tmp_flavor_source_dir[flavor]
            tmp_source_com_tinkerforge_dir = self.tmp_flavor_source_com_tinkerforge_dir[
                flavor]
            tmp_examples_dir = self.tmp_flavor_examples_dir[flavor]

            # Copy IP Connection examples
            for example in common.find_examples(root_dir, '^example_.*\.m$'):
                shutil.copy(example[1], tmp_examples_dir)

            # Copy bindings and readme
            for filename in released_files:
                shutil.copy(
                    os.path.join(root_dir, 'bindings_' + flavor, filename),
                    tmp_source_com_tinkerforge_dir)

            shutil.copy(
                os.path.join(root_dir, '..', 'java', 'BrickDaemon.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java', 'DeviceBase.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, 'Device_{0}.java'.format(flavor)),
                os.path.join(tmp_source_com_tinkerforge_dir, 'Device.java'))
            shutil.copy(
                os.path.join(root_dir, '..', 'java', 'DeviceListener.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, 'IPConnection_{0}.java'.format(flavor)),
                os.path.join(tmp_source_com_tinkerforge_dir,
                             'IPConnection.java'))
            shutil.copy(
                os.path.join(root_dir, '..', 'java', 'IPConnectionBase.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java',
                             'TinkerforgeException.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java', 'TimeoutException.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java',
                             'AlreadyConnectedException.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java',
                             'NotConnectedException.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java', 'CryptoException.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(
                os.path.join(root_dir, '..', 'java',
                             'TinkerforgeListener.java'),
                tmp_source_com_tinkerforge_dir)
            shutil.copy(os.path.join(root_dir, 'changelog.txt'), self.tmp_dir)
            shutil.copy(os.path.join(root_dir, 'readme.txt'), self.tmp_dir)
            shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'),
                        self.tmp_dir)

            # Make manifest
            version = common.get_changelog_version(root_dir)

            file(os.path.join(tmp_dir, 'manifest.txt'), 'wb').write(
                'Bindings-Version: {1}.{2}.{3}\nBindings-Flavor: {0}\n'.format(
                    flavor.upper(), *version))

            # Make jar
            with common.ChangedDirectory(tmp_dir):
                if flavor == 'octave':
                    classpath = '-classpath {0} '.format(
                        os.path.join(root_dir, 'octave.jar'))
                else:
                    classpath = ''

                args = [
                    '/usr/bin/javac ' + classpath + '-Xlint ' +
                    '-source 1.5 ' + '-target 1.5 ' +
                    os.path.join(tmp_source_com_tinkerforge_dir, '*.java')
                ]

                if subprocess.call(args, shell=True) != 0:
                    raise Exception("Command '{0}' failed".format(
                        ' '.join(args)))

            with common.ChangedDirectory(tmp_source_dir):
                args = [
                    '/usr/bin/jar ' + 'cfm ' +
                    os.path.join(tmp_dir, 'Tinkerforge.jar') + ' ' +
                    os.path.join(tmp_dir, 'manifest.txt') + ' ' + 'com'
                ]

                if subprocess.call(args, shell=True) != 0:
                    raise Exception("Command '{0}' failed".format(
                        ' '.join(args)))

            # Remove manifest
            os.remove(os.path.join(tmp_dir, 'manifest.txt'))

            # Remove classes
            for f in os.listdir(tmp_source_com_tinkerforge_dir):
                if f.endswith('.class'):
                    os.remove(os.path.join(tmp_source_com_tinkerforge_dir, f))

        # Make zip
        common.make_zip(self.get_bindings_name(), self.tmp_dir, root_dir,
                        version)
コード例 #29
0
    def finish(self):
        root_dir = self.get_root_dir()
        block_header = '''{comment}
\'use strict\';
goog.provide(\'Blockly.Blocks.tinkerforge\');
goog.require(\'Blockly.Blocks\');

'''.format(comment=self.get_header_comment('asterisk'))
        generator_javascript_header = '''{comment}
\'use strict\';
goog.provide(\'Blockly.JavaScript.tinkerforge\');
goog.require(\'Blockly.JavaScript\');

'''.format(comment=self.get_header_comment('asterisk'))
        generator_python_header = '''{comment}
\'use strict\';
goog.provide(\'Blockly.Python.tinkerforge\');
goog.require(\'Blockly.Python\');

'''.format(comment=self.get_header_comment('asterisk'))

        # Prepare toolbox XML file content
        brick_toolbox = ''

        for device in sorted(self.brick_toolbox_part):
            brick_toolbox += self.brick_toolbox_part[device]

        bricklet_toolbox = ''

        for device in sorted(self.bricklet_toolbox_part):
            bricklet_toolbox += self.bricklet_toolbox_part[device]

        # Write block definition file
        with open(os.path.join(self.tmp_blocks_dir, 'tinkerforge.js'),
                  'w') as f:
            f.write(block_header + self.block_content)

        # Write JavaScript generator file
        with open(
                os.path.join(self.tmp_generators_javascript_dir,
                             'tinkerforge.js'), 'w') as f:
            f.write(generator_javascript_header +
                    self.generator_javascript_content)

        # Write Python generator file
        with open(
                os.path.join(self.tmp_generators_python_dir, 'tinkerforge.js'),
                'w') as f:
            f.write(generator_python_header + self.generator_python_content)

        # Write toolbox XML file
        with open(os.path.join(root_dir, 'toolbox.xml.part'), 'r') as f:
            toolbox = '<xml id="toolboxTVPL">' + \
                      '<category name="Bricks">' + \
                      brick_toolbox + \
                      '</category>' + \
                      '<category name="Bricklets">' + \
                      bricklet_toolbox + \
                      '</category>' + \
                      f.read()

        os.makedirs(os.path.join(self.tmp_source_dir, 'xml'))

        with open(os.path.join(self.tmp_source_dir, 'xml', 'toolbox.xml'),
                  'w') as f:
            f.write(self.get_header_comment('xml') + toolbox.replace('\n', ''))

        # Compile with closure library
        with common.ChangedDirectory(self.tmp_build_blockly_dir):
            common.execute(['python', 'build.py'])

        # Get necessary files from the build directory
        shutil.rmtree(os.path.join(self.tmp_build_blockly_dir, 'msg', 'json'))

        for name in ['media', 'msg']:
            shutil.copytree(os.path.join(self.tmp_build_blockly_dir, name),
                            os.path.join(self.tmp_source_dir, name))

        for name in [
                'blockly_compressed.js', 'blocks_compressed.js',
                'javascript_compressed.js', 'python_compressed.js'
        ]:
            shutil.copy(os.path.join(self.tmp_build_blockly_dir, name),
                        os.path.join(self.tmp_source_dir, 'js', name))

        shutil.rmtree(self.tmp_build_dir)

        # Make zip
        self.create_zip_file(self.tmp_dir)
コード例 #30
0
    def finish(self):
        root_dir = self.get_bindings_root_directory()

        # Copy IP Connection examples
        for example in common.find_examples(root_dir, '^Example.*\.cs$'):
            shutil.copy(example[1], self.tmp_examples_dir)

        # Copy bindings and readme
        for filename in released_files:
            shutil.copy(os.path.join(root_dir, 'bindings', filename),
                        self.tmp_source_tinkerforge_dir)

        shutil.copy(os.path.join(root_dir, 'IPConnection.cs'),
                    self.tmp_source_tinkerforge_dir)
        shutil.copy(os.path.join(root_dir, 'changelog.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, 'readme.txt'), self.tmp_dir)
        shutil.copy(os.path.join(root_dir, '..', 'configs', 'license.txt'),
                    self.tmp_dir)

        # Make AssemblyInfo.cs
        version = common.get_changelog_version(root_dir)

        common.specialize_template(
            os.path.join(root_dir, 'AssemblyInfo.cs.template'),
            os.path.join(self.tmp_source_tinkerforge_dir, 'AssemblyInfo.cs'), {
                '<<BINDINGS>>': 'C#',
                '<<VERSION>>': '.'.join(version)
            })

        # Make Tinkerforge.csproj
        project_items = []

        for filename in ['AssemblyInfo.cs', 'IPConnection.cs'
                         ] + released_files:
            project_items.append('<Compile Include="{0}" />'.format(filename))

        common.specialize_template(
            os.path.join(root_dir, 'Tinkerforge.csproj.template'),
            os.path.join(self.tmp_source_tinkerforge_dir,
                         'Tinkerforge.csproj'), {
                             '{{TOOLS_VERSION}}': '2.0',
                             '{{ITEMS}}': '\n    '.join(project_items)
                         })

        # Make dll
        with common.ChangedDirectory(self.tmp_source_tinkerforge_dir):
            args = [
                'xbuild', '/p:Configuration=Release',
                os.path.join(self.tmp_source_tinkerforge_dir,
                             'Tinkerforge.csproj')
            ]

            if subprocess.call(args) != 0:
                raise Exception("Command '{0}' failed".format(' '.join(args)))

        shutil.copy(
            os.path.join(self.tmp_source_tinkerforge_dir, 'bin', 'Release',
                         'Tinkerforge.dll'), self.tmp_dir)
        shutil.copy(
            os.path.join(self.tmp_source_tinkerforge_dir, 'bin', 'Release',
                         'Tinkerforge.dll.mdb'), self.tmp_dir)
        shutil.copy(
            os.path.join(self.tmp_source_tinkerforge_dir, 'bin', 'Release',
                         'Tinkerforge.xml'), self.tmp_dir)

        shutil.rmtree(os.path.join(self.tmp_source_tinkerforge_dir, 'bin'))
        shutil.rmtree(os.path.join(self.tmp_source_tinkerforge_dir, 'obj'))

        # Make zip
        common.make_zip(self.get_bindings_name(), self.tmp_dir, root_dir,
                        version)