Create wrapper around versioning library to update on builds

This commit is contained in:
Nabeel Shahzad
2018-01-06 17:00:47 -06:00
parent b8e00a3ee1
commit 94c0eb8502
4 changed files with 73 additions and 25 deletions

View File

@@ -19,7 +19,8 @@ if [ "$TRAVIS" = "true" ]; then
cd $TRAVIS_BUILD_DIR
php artisan version:show --format compact --suppress-app-name > VERSION
#php artisan version:show --format compact --suppress-app-name > VERSION
php artisan phpvms:version --write > VERSION
VERSION=`cat VERSION`
echo "Version: $VERSION"

View File

@@ -31,21 +31,35 @@ class BaseCommand extends Command
/**
* @param $cmd
* @param bool $return
* @return string
*/
public function runCommand($cmd)
public function runCommand($cmd, $return=false, $verbose=true)
{
if (is_array($cmd))
if (\is_array($cmd)) {
$cmd = join(' ', $cmd);
}
$this->info('Running "' . $cmd . '"');
if($verbose) {
$this->info('Running "' . $cmd . '"');
}
$val = '';
$process = new Process($cmd);
$process->run(function ($type, $buffer) {
if (Process::ERR === $type) {
echo $buffer;
$process->run(function ($type, $buffer) use ($return, $val) {
if ($return) {
$val .= $buffer;
} else {
echo $buffer;
}
/*if (Process::ERR === $type) {
echo $buffer;
} else {
echo $buffer;
}*/
});
return $val;
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Console\Commands;
use App\Console\BaseCommand;
use Symfony\Component\Yaml\Yaml;
class Version extends BaseCommand
{
protected $signature = 'phpvms:version {--write}';
/**
* Run dev related commands
* @throws \Symfony\Component\Yaml\Exception\ParseException
*/
public function handle()
{
if($this->option('write')) {
$version_file = config_path('version.yml');
$cfg = Yaml::parse(file_get_contents($version_file));
exec($cfg['git']['git-local'], $version);
$version = substr($version[0], 0, 6);
$cfg['build']['number'] = $version;
file_put_contents($version_file, Yaml::dump($cfg, 4, 2));
}
$this->call('version:show', [
'--format' => 'compact',
'--suppress-app-name' => true
]);
}
}

View File

@@ -1,29 +1,28 @@
version_source: config # "config", "git-local" or "git-remote"
version_source: config
current:
major: 7
minor: 0
patch: 0
git_absorb: git-local
format: "{$major}.{$minor}.{$patch}"
format: '{$major}.{$minor}.{$patch}'
build:
mode: number
number: 451e9e
number: 18cb95
git_absorb: git-local
git:
git-local: "git rev-parse --verify HEAD"
git-remote: "git ls-remote {$repository}"
branch: "refs/heads/master"
repository: "{{ env('VERSION_GIT_REMOTE_REPOSITORY') }}"
git-local: 'git rev-parse --verify HEAD'
git-remote: 'git ls-remote {$repository}'
branch: refs/heads/master
repository: '{{ env(''VERSION_GIT_REMOTE_REPOSITORY'') }}'
version:
git-local: "git describe"
git-remote: "git ls-remote {$repository} | grep tags/ | grep -v {} | cut -d \/ -f 3 | sort --version-sort | tail -1"
matcher: "/[V|v]*[ersion]*\\s*\\.*(\\d+)\\.(\\d+)\\.(\\d+)\\.*(\\w*)/"
git-local: 'git describe'
git-remote: 'git ls-remote {$repository} | grep tags/ | grep -v {} | cut -d / -f 3 | sort --version-sort | tail -1'
matcher: '/[V|v]*[ersion]*\s*\.*(\d+)\.(\d+)\.(\d+)\.*(\w*)/'
format:
major: "{$major}"
minor: "{$minor}"
patch: "{$patch}"
build: "{$build}"
version: "{$major}.{$minor}.{$patch} (build {$build})"
full: "version {{'format.version'}}"
compact: "v{$major}.{$minor}.{$patch}-{$build}"
## add as many formats as you need !!!!
major: '{$major}'
minor: '{$minor}'
patch: '{$patch}'
build: '{$build}'
version: '{$major}.{$minor}.{$patch} (build {$build})'
full: 'version {{''format.version''}}'
compact: 'v{$major}.{$minor}.{$patch}-{$build}'