File: globtool.py

package info (click to toggle)
libjsoncpp 1.7.2-1~bpo8%2B1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-backports
  • size: 1,720 kB
  • sloc: cpp: 8,041; python: 1,557; ansic: 168; makefile: 41; sh: 33
file content (58 lines) | stat: -rw-r--r-- 1,853 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Copyright 2009 Baptiste Lepilleur
# Distributed under MIT license, or public domain if desired and
# recognized in your jurisdiction.
# See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE

import fnmatch
import os

def generate(env): 
   def Glob(env, includes = None, excludes = None, dir = '.'):
      """Adds Glob(includes = Split('*'), excludes = None, dir = '.')
       helper function to environment.

       Glob both the file-system files.

       includes: list of file name pattern included in the return list when matched.
       excludes: list of file name pattern exluced from the return list.

       Example:
       sources = env.Glob(("*.cpp", '*.h'), "~*.cpp", "#src")
      """
      def filterFilename(path):
         abs_path = os.path.join(dir, path)
         if not os.path.isfile(abs_path):
            return 0
         fn = os.path.basename(path)
         match = 0
         for include in includes:
            if fnmatch.fnmatchcase(fn, include):
               match = 1
               break
         if match == 1 and not excludes is None:
            for exclude in excludes:
               if fnmatch.fnmatchcase(fn, exclude):
                  match = 0
                  break
         return match
      if includes is None:
         includes = ('*',)
      elif type(includes) in (type(''), type(u'')):
         includes = (includes,)
      if type(excludes) in (type(''), type(u'')):
         excludes = (excludes,)
      dir = env.Dir(dir).abspath
      paths = os.listdir(dir)
      def makeAbsFileNode(path):
         return env.File(os.path.join(dir, path))
      nodes = filter(filterFilename, paths)
      return map(makeAbsFileNode, nodes)

   from SCons.Script import Environment
   Environment.Glob = Glob

def exists(env):
    """
    Tool always exists.
    """
    return True