First steps for BuildFile
parent
8359406330
commit
ac7f5b8dd1
@ -0,0 +1,47 @@
|
||||
from enum import Enum
|
||||
from typing import Optional
|
||||
from pathlib import Path
|
||||
from .common import (
|
||||
Validateable,
|
||||
Devops,
|
||||
ReleaseType,
|
||||
)
|
||||
from .version import (
|
||||
Version,
|
||||
)
|
||||
|
||||
class BuildFileType(Enum):
|
||||
JS = '.json'
|
||||
JAVA_GRADLE = '.gradle'
|
||||
JAVA_CLOJURE = ".clj"
|
||||
PYTHON = '.py'
|
||||
|
||||
class BuildFile(Validateable):
|
||||
def __init__(self, file_path: Path, content: str):
|
||||
self.file_path = file_path
|
||||
self.content = content
|
||||
|
||||
def validate(self):
|
||||
result = []
|
||||
result += self.__validate_is_not_empty__("file_path")
|
||||
result += self.__validate_is_not_empty__("content")
|
||||
if not self.build_file_type():
|
||||
result += [f"Suffix {self.file_path} is unknown."]
|
||||
return result
|
||||
|
||||
def build_file_type(self):
|
||||
if not self.file_path:
|
||||
return None
|
||||
config_file_type = self.file_path.suffix
|
||||
match config_file_type:
|
||||
case '.json':
|
||||
result = BuildFileType.JS
|
||||
case '.gradle':
|
||||
result = BuildFileType.JAVA_GRADLE
|
||||
case '.clj':
|
||||
result = BuildFileType.JAVA_CLOJURE
|
||||
case '.py':
|
||||
result = BuildFileType.PYTHON
|
||||
case _:
|
||||
result = None
|
||||
return result
|
@ -0,0 +1,33 @@
|
||||
from pathlib import Path
|
||||
from src.main.python.ddadevops.domain import (
|
||||
BuildFileType,
|
||||
BuildFile,
|
||||
)
|
||||
|
||||
|
||||
def test_sould_validate_build_file():
|
||||
sut = BuildFile(
|
||||
Path("./project.clj"),
|
||||
"content"
|
||||
)
|
||||
assert sut.is_valid()
|
||||
|
||||
sut = BuildFile(
|
||||
None,
|
||||
""
|
||||
)
|
||||
assert not sut.is_valid()
|
||||
|
||||
sut = BuildFile(
|
||||
Path("./unknown.extension"),
|
||||
"content"
|
||||
)
|
||||
assert not sut.is_valid()
|
||||
|
||||
|
||||
def test_sould_calculate_build_type():
|
||||
sut = BuildFile(
|
||||
Path("./project.clj"),
|
||||
"content"
|
||||
)
|
||||
assert sut.build_file_type() == BuildFileType.JAVA_CLOJURE
|
Loading…
Reference in New Issue