def unreleased() -> str: """TODO""" latest_tag = Terminal.shell_exec( 'git describe --tags --abbrev=0 HEAD^') return Terminal.shell_exec( f"git log --oneline --pretty='format:%h %ad %s' --date=short '{latest_tag}'..HEAD" )
def _init_git(self) -> None: """Initialize a git repository for the project""" self._mkfile('src/main/resources/log/.gitkeep') self._mkfile('.gitignore', (self.TEMPLATES / "tpl.gitignore").read_text()) sysout('Initializing git repository') result = Terminal.shell_exec( 'git init', cwd=self._app_dir) sysout('Git init result: {}'.format(result)) sysout('Creating first commit') Terminal.shell_exec( 'git add .', cwd=self._app_dir) result = Terminal.shell_exec( 'git commit -m "First commit [@HSPyLib]"', cwd=self._app_dir) sysout('Git commit result: {}'.format(result))
def _report_usage(): """TODO""" ps = Terminal.shell_exec('ps -caxm -orss,comm') # Get process info vm = Terminal.shell_exec('vm_stat') process_lines = ps.split('\n') # Iterate processes sep = re.compile(' +') rss_total = 0 # kB for row in range(1, len(process_lines)): row_text = process_lines[row].strip() row_elements = sep.split(row_text) if re.match('^[0-9]+$', row_elements[0]): rss = float(row_elements[0]) * 1024 else: rss = 0 rss_total += rss vm_lines = vm.split('\n') # Process vm_stat sep = re.compile(': +') vm_stats = {} for row in range(1, len(vm_lines) - 2): row_text = vm_lines[row].strip() row_elements = sep.split(row_text) vm_stats[( row_elements[0])] = int(row_elements[1].strip('\\.')) * 4096 wired, wu = human_readable_bytes(vm_stats["Pages wired down"]) active, au = human_readable_bytes(vm_stats["Pages active"]) inactive, iu = human_readable_bytes(vm_stats["Pages inactive"]) free, fu = human_readable_bytes(vm_stats["Pages free"]) real, ru = human_readable_bytes(rss_total) # Total memory sysout('%HOM%%ED2%%MOD(0)%', end='') sysout(f"\n%ORANGE%Reporting system memory usage:%NC% \n{'-' * 30}") sysout(f" %GREEN%Wired Memory: {wired:6s} {wu:2s}") sysout(f" %GREEN%Active Memory: {active:6s} {au:2s}") sysout(f" %GREEN%Inactive Memory: {inactive:6s} {iu:2s}") sysout(f" %GREEN%Free Memory: {free:6s} {fu:2s}") sysout(f" %GREEN%Real Memory: {real:6s} {ru:2s}") sysout('\n%YELLOW%Press [Enter] to exit ...', end='')
def _init_gradle(self, app_name: str) -> None: """Initialize the as a gradle project""" sysout('Initializing gradle project') result = Terminal.shell_exec( f"gradle init --project-name {app_name} --type basic --dsl groovy", cwd=self._app_dir) sysout('Gradle execution result: {}'.format(result)) sysout('Downloading gradle extensions') self._download_ext('badges.gradle') self._download_ext('build-info.gradle') self._download_ext('docker.gradle') self._download_ext('oracle.gradle') self._download_ext('pypi-publish.gradle') self._download_ext('python.gradle') version_string = '.'.join(map(str, self._parent_app.VERSION)) self._mkfile('properties.gradle', self.GRADLE_PROPS.format(version_string).strip()) self._mkfile( 'build.gradle', (self.TEMPLATES / "tpl-build.gradle").read_text().replace('%APP_NAME%', self._app_name) ) self._mkfile('gradle/dependencies.gradle', (self.TEMPLATES / "tpl-dependencies.gradle").read_text()) result = Terminal.shell_exec( './gradlew build', cwd=self._app_dir) sysout('Gradle execution result: {}'.format(result))
def _exec(self, cmd_line: str) -> str: self.last_result = Terminal.shell_exec(f"cf {cmd_line}") return self.last_result
def logs(self, **kwargs) -> None: # pylint: disable=no-self-use """Tail or show recent logs for an app""" Terminal.shell_poll(f"cf logs {kwargs['app']}")
def show_file(filename: str, commit_id: str = 'HEAD') -> str: return Terminal.shell_exec(f"git show {commit_id}:{filename}")
def search_logs(filter_by: str = '.*') -> str: """TODO""" return Terminal.shell_exec( f"git log --grep='{filter_by}' --pretty=format:'%h %ad %s' --date=short" )
def create_tag(version: str, commit_id: str = 'HEAD', description: str = None) -> str: """TODO""" return Terminal.shell_exec( f"git tag -a v{version} {commit_id} -m '{description or version}'")
def tag_list() -> str: """TODO""" return Terminal.shell_exec( "git log --tags --simplify-by-decoration --pretty='format:%ci %d'")
def release_date(tag_name: str) -> str: """TODO""" return Terminal.shell_exec( f"git log -1 --pretty='format:%ad' --date=short {tag_name}")
def changelog(from_tag: str, to_tag: str) -> str: """TODO""" return Terminal.shell_exec( f"git log --oneline --pretty='format:%h %ad %s' --date=short {from_tag}^..{to_tag}^" )
def current_branch() -> str: """TODO""" return Terminal.shell_exec('git symbolic-ref --short HEAD')
def top_level_dir() -> str: """TODO""" return Terminal.shell_exec('git rev-parse --show-toplevel')