~jocave/checkbox/hybrid-amd-gpu-mods

« back to all changes in this revision

Viewing changes to checkbox-old/checkbox/lib/path.py

  • Committer: Zygmunt Krynicki
  • Date: 2013-05-29 07:50:30 UTC
  • mto: This revision was merged to the branch mainline in revision 2153.
  • Revision ID: zygmunt.krynicki@canonical.com-20130529075030-ngwz245hs2u3y6us
checkbox: move current checkbox code into checkbox-old

This patch cleans up the top-level directory of the project into dedicated
sub-project directories. One for checkbox-old (the current checkbox and all the
associated stuff), one for plainbox and another for checkbox-ng.

There are some associated changes, such as updating the 'source' mode of
checkbox provider in plainbox, and fixing paths in various test scripts that we
have.

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# This file is part of Checkbox.
 
3
#
 
4
# Copyright 2008 Canonical Ltd.
 
5
#
 
6
# Checkbox is free software: you can redistribute it and/or modify
 
7
# it under the terms of the GNU General Public License as published by
 
8
# the Free Software Foundation, either version 3 of the License, or
 
9
# (at your option) any later version.
 
10
#
 
11
# Checkbox is distributed in the hope that it will be useful,
 
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
# GNU General Public License for more details.
 
15
#
 
16
# You should have received a copy of the GNU General Public License
 
17
# along with Checkbox.  If not, see <http://www.gnu.org/licenses/>.
 
18
#
 
19
import os
 
20
 
 
21
from glob import glob
 
22
 
 
23
 
 
24
def path_split(path):
 
25
    return path.split(os.path.sep)
 
26
 
 
27
def path_common(l1, l2, common=[]):
 
28
    if len(l1) < 1:
 
29
        return (common, l1, l2)
 
30
 
 
31
    if len(l2) < 1:
 
32
        return (common, l1, l2)
 
33
 
 
34
    if l1[0] != l2[0]:
 
35
        return (common, l1, l2)
 
36
 
 
37
    return path_common(l1[1:], l2[1:], common + [l1[0]])
 
38
 
 
39
def path_relative(p1, p2):
 
40
    (common, l1, l2) = path_common(path_split(p1), path_split(p2))
 
41
    p = []
 
42
    if len(l1) > 0:
 
43
        p = ["..%s" % os.path.sep * len(l1)]
 
44
 
 
45
    p = p + l2
 
46
    return os.path.join( *p )
 
47
 
 
48
def path_expand(path):
 
49
    path = os.path.expanduser(path)
 
50
    return glob(path)
 
51
 
 
52
def path_expand_recursive(path):
 
53
    paths = []
 
54
    for path in path_expand(path):
 
55
        if os.path.isdir(path):
 
56
            for dirpath, dirnames, filenames in os.walk(path):
 
57
                for filename in filenames:
 
58
                    paths.append(os.path.join(dirpath, filename))
 
59
        else:
 
60
            paths.append(path)
 
61
 
 
62
    return paths