summaryrefslogtreecommitdiff
path: root/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/resources.py
blob: ce345af26d6f88461c79f80b1c817108f9f7977c (plain)
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/env python

import os, shutil
import config


def copy(options, sortedIncludeList, fileDb):
  print "  * Preparing configuration..."

  overrideList = []

  for overrideEntry in options.overrideResourceOutput:
    # Parse
    # fileId.resourceId:destinationDirectory
    targetSplit = overrideEntry.split(":")
    targetStart = targetSplit.pop(0)
    targetStartSplit = targetStart.split(".")

    # Store
    overrideData = {}
    overrideData["destinationDirectory"] = ":".join(targetSplit)
    overrideData["resourceId"] = targetStartSplit.pop()
    overrideData["fileId"] = ".".join(targetStartSplit)

    # Append
    overrideList.append(overrideData)

  print "  * Syncing..."

  for fileId in sortedIncludeList:
    filePath = fileDb[fileId]["path"]
    fileResources = fileDb[fileId]["resources"]

    if len(fileResources) > 0:
      print "    - Found %i resources in %s" % (len(fileResources), fileId)

      for fileResource in fileResources:
        fileResourceSplit = fileResource.split(":")

        resourceId = fileResourceSplit.pop(0)
        relativeDirectory = ":".join(fileResourceSplit)

        sourceDirectory = os.path.join(fileDb[fileId]["resourceInput"], relativeDirectory)
        destinationDirectory = os.path.join(fileDb[fileId]["resourceOutput"], relativeDirectory)

        # Searching for overrides
        for overrideData in overrideList:
          if overrideData["fileId"] == fileId and overrideData["resourceId"] == resourceId:
            destinationDirectory = overrideData["destinationDirectory"]

        print "      - Copy %s => %s" % (sourceDirectory, destinationDirectory)

        try:
          os.listdir(sourceDirectory)
        except OSError:
          print "        - Source directory isn't readable! Ignore resource!"
          continue

        for root, dirs, files in os.walk(sourceDirectory):

          # Filter ignored directories
          for ignoredDir in config.DIRIGNORE:
            if ignoredDir in dirs:
              dirs.remove(ignoredDir)

          # Searching for items (resource files)
          for itemName in files:

            # Generate absolute source file path
            itemSourcePath = os.path.join(root, itemName)

            # Extract relative path and directory
            itemRelPath = itemSourcePath.replace(sourceDirectory + os.sep, "")
            itemRelDir = os.path.dirname(itemRelPath)

            # Generate destination directory and file path
            itemDestDir = os.path.join(destinationDirectory, itemRelDir)
            itemDestPath = os.path.join(itemDestDir, itemName)

            # Check/Create destination directory
            if not os.path.exists(itemDestDir):
              os.makedirs(itemDestDir)

            # Copy file
            if options.verbose:
              print "      - Copying: %s => %s" % (itemSourcePath, itemDestPath)

            shutil.copyfile(itemSourcePath, itemDestPath)