mirror of
https://github.com/snipe/snipe-it.git
synced 2024-11-10 07:34:06 -08:00
62 lines
1.7 KiB
PHP
62 lines
1.7 KiB
PHP
<?php
|
|
#!/usr/bin/php -q
|
|
|
|
/* PHP requires defined timezone; GitHub uses UTC */
|
|
ini_set( 'date.timezone', 'UTC' );
|
|
|
|
/*
|
|
* YOU MUST CHANGE THESE VARIABLES
|
|
*/
|
|
$gh_user = 'snipe';
|
|
$gh_repo = 'snipe-it';
|
|
$file = 'CHANGELOG.md';
|
|
$string = 'fix|resolve|close|#changelog';
|
|
$omit = 'fuck';
|
|
|
|
/*
|
|
* No need to change anything below here
|
|
*/
|
|
|
|
// Clear old changelog info
|
|
file_put_contents($file,'');
|
|
|
|
$url = 'https://api.github.com/repos/'.$gh_user.'/'.$gh_repo.'/releases';
|
|
$ch = curl_init();
|
|
$timeout = 5;
|
|
curl_setopt($ch,CURLOPT_URL,$url);
|
|
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
|
|
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
|
|
curl_setopt($ch,CURLOPT_USERAGENT,$gh_user);
|
|
$data = curl_exec($ch);
|
|
curl_close($ch);
|
|
|
|
$releases = json_decode($data, TRUE);
|
|
|
|
while( $obj = array_shift( $releases ) )
|
|
{
|
|
/* Define the beginning of each release block in the changelog */
|
|
$changelog = "\n\n### ".$obj['name']." - Released ".date("M d, Y h:i:s",strtotime($obj['created_at']))."\n";
|
|
$changelog .= $obj['prerelease'] == 'true' ? '#### This is a pre-release '."\n": '';
|
|
file_put_contents($file,$changelog,FILE_APPEND);
|
|
|
|
/* Retrieve and format each commit entry */
|
|
$gitlog = 'git log '.escapeshellarg($obj['tag_name']);
|
|
|
|
/* Set commit limit based on next tag name */
|
|
if ( $next = current($releases) )
|
|
{
|
|
$gitlog .= '...'.escapeshellarg($next['tag_name']).' ';
|
|
}
|
|
else $gitlog .= ' ';
|
|
|
|
$gitlog .= '--pretty=format:\'* <a href="http://github.com/'.$gh_user.'/'.$gh_repo.'/commit/%H">view</a> •';
|
|
$gitlog .= ' %s \' --reverse | grep -i -E '.escapeshellarg($string).' ';
|
|
|
|
if ($omit!=''){
|
|
$gitlog .= ' | grep -i -E -v '.escapeshellarg($omit).'';
|
|
}
|
|
|
|
$gitlog .= '>> '.escapeshellarg($file);
|
|
exec($gitlog);
|
|
}
|