Completed
Pull Request — master (#2333)
by Arma
06:24 queued 34s
created

st2exporter.exporter.FileWriter   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 9
Duplicated Lines 0 %
Metric Value
wmc 1
dl 0
loc 9
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A write() 0 6 1
1
# Licensed to the StackStorm, Inc ('StackStorm') under one or more
2
# contributor license agreements.  See the NOTICE file distributed with
3
# this work for additional information regarding copyright ownership.
4
# The ASF licenses this file to You under the Apache License, Version 2.0
5
# (the "License"); you may not use this file except in compliance with
6
# the License.  You may obtain a copy of the License at
7
#
8
#     http://www.apache.org/licenses/LICENSE-2.0
9
#
10
# Unless required by applicable law or agreed to in writing, software
11
# distributed under the License is distributed on an "AS IS" BASIS,
12
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
# See the License for the specific language governing permissions and
14
# limitations under the License.
15
16
import os
17
18
import abc
19
import six
20
21
__all__ = [
22
    'FileWriter',
23
    'TextFileWriter'
24
]
25
26
27
@six.add_metaclass(abc.ABCMeta)
28
class FileWriter(object):
29
30
    @abc.abstractmethod
31
    def write(self, data, file_path, replace=False):
32
        """
33
        Write data to file_path.
34
        """
35
        pass
36
37
38
class TextFileWriter(FileWriter):
39
    # XXX: Should support compression at some point.
40
41
    def write_text(self, text_data, file_path, replace=False, compressed=False):
42
        if compressed:
43
            return Exception('Compression not supported.')
44
45
        self.write(text_data, file_path, replace=replace)
46
47
    def write(self, data, file_path, replace=False):
48
        if os.path.exists(file_path) and not replace:
49
            raise Exception('File %s already exists.' % file_path)
50
51
        with open(file_path, 'w') as f:
52
            f.write(data)
53