Skip to content
This repository has been archived by the owner on Jun 7, 2023. It is now read-only.

Commit

Permalink
Merge pull request #21 from lendingblock/gitfix
Browse files Browse the repository at this point in the history
Gitfix
  • Loading branch information
lsbardel authored Jul 9, 2018
2 parents 572c195 + f234692 commit fcf3dcf
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 63 deletions.
2 changes: 1 addition & 1 deletion agiletoolkit/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
"""Agile toolkit for devops and repository management"""

__version__ = "0.1.9"
__version__ = "0.2.0"
70 changes: 70 additions & 0 deletions agiletoolkit/manager.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import os
import asyncio
from typing import Dict

import yaml

from jinja2 import Template

from . import utils


NAMESPACES = {
'local', 'development', 'dev', 'stage', 'prod', 'sandbox', 'production'
}


class Manager:

def __init__(self, config=None, path=None, yes=False, namespace=None):
self.config = config or {}
self.path = path or os.getcwd()
self.deploy_path = os.path.join(self.path, 'deploy')
self.yes = yes
self.message_brokers = []
self.namespace = namespace
self.init()

def init(self):
pass

def get(self, name: str, DataClass: type) -> object:
cfg = self.config.get(name) or {}
return DataClass(**cfg)

def load_data(self, *paths: str) -> Dict:
filename = self.filename(*paths)
if not os.path.isfile(filename):
raise utils.CommandError('%s file missing' % filename)
with open(filename, 'r') as fp:
data = yaml.load(fp) or {}
data_namespace = data.pop(self.namespace, None)
for namespace in NAMESPACES:
data.pop(namespace, None)
if data_namespace:
data.update(data_namespace)
data['namespace'] = self.namespace
return data

def manifest(self, values, *paths, filename=None):
"""Load a manifest file and apply template values
"""
filename = filename or self.filename(*paths)
with open(filename, 'r') as fp:
template = Template(fp.read())
return yaml.load(template.render(values))

def filename(self, *paths):
if not os.path.isdir(self.deploy_path):
raise utils.CommandError(
"Path '%s' not available" % self.deploy_path
)
return os.path.join(self.deploy_path, *paths)

def copy_env(self, *args, **kw):
env = os.environ.copy()
env.update(*args, **kw)
return env

def wait(self, coro):
return asyncio.get_event_loop().run_until_complete(coro)
65 changes: 3 additions & 62 deletions agiletoolkit/repo.py
Original file line number Diff line number Diff line change
@@ -1,43 +1,25 @@
import os
import re
import asyncio
from typing import Dict
from dataclasses import dataclass
from urllib.parse import urlparse

import yaml

from jinja2 import Template

from .manager import Manager
from .api import GithubApi, GithubException
from .slack import SlackIntegration
from . import utils


NAMESPACES = {'local', 'dev', 'stage', 'sandbox', 'production'}


@dataclass
class Branches:
dev: str = 'master'
stage: str = 'deploy'


class RepoManager:
class RepoManager(Manager):

def __init__(self, config=None, path=None, yes=False, namespace=None):
self.config = config or {}
self.path = path or os.getcwd()
self.deploy_path = os.path.join(self.path, 'deploy')
self.yes = yes
self.message_brokers = []
self.namespace = namespace
def init(self):
self.info = utils.gitrepo(self.path)
SlackIntegration.add(self)
self.init()

def init(self):
pass

def software_version(self):
"""Software version
Expand Down Expand Up @@ -139,44 +121,3 @@ def github_repo(self) -> str:
bits = path.split('.')
bits.pop()
return self.github().repo('.'.join(bits))

def get(self, name: str, DataClass: type) -> object:
cfg = self.config.get(name) or {}
return DataClass(**cfg)

def load_data(self, *paths: str) -> Dict:
filename = self.filename(*paths)
if not os.path.isfile(filename):
raise utils.CommandError('%s file missing' % filename)
with open(filename, 'r') as fp:
data = yaml.load(fp) or {}
data_namespace = data.pop(self.namespace, None)
for namespace in NAMESPACES:
data.pop(namespace, None)
if data_namespace:
data.update(data_namespace)
data['namespace'] = self.namespace
return data

def manifest(self, values, *paths, filename=None):
"""Load a manifest file and apply template values
"""
filename = filename or self.filename(*paths)
with open(filename, 'r') as fp:
template = Template(fp.read())
return yaml.load(template.render(values))

def filename(self, *paths):
if not os.path.isdir(self.deploy_path):
raise utils.CommandError(
"Path '%s' not available" % self.deploy_path
)
return os.path.join(self.deploy_path, *paths)

def copy_env(self, *args, **kw):
env = os.environ.copy()
env.update(*args, **kw)
return env

def wait(self, coro):
return asyncio.get_event_loop().run_until_complete(coro)

0 comments on commit fcf3dcf

Please sign in to comment.