Skip to content

Commit

Permalink
fix #23 - изменение логики увеличения номера билда и исправление проц…
Browse files Browse the repository at this point in the history
…едуры обновления на github
  • Loading branch information
abbat committed May 31, 2011
1 parent 42923d7 commit bd0cb95
Show file tree
Hide file tree
Showing 9 changed files with 63 additions and 82 deletions.
10 changes: 6 additions & 4 deletions dev/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,12 @@ PROJECT_NAME="avalon"
# переход в директорию проекта
cd ../

# обновление даты билда
cp -f version.h version.tpl
sed "s/AVALON_DATE \".*\"/AVALON_DATE \"$(date)\"/" version.tpl > version.h
rm -f version.tpl
# обновление даты и номера билда
AVALON_DATE=$(date "+%Y-%m-%dT%H:%M:%S%z")
AVALON_BUILD=$(awk '/AVALON_BUILD/ { print $3+1; }' version.h)
cp -f version.h version.tmp
cat version.tmp | sed "s/AVALON_BUILD .*/AVALON_BUILD ${AVALON_BUILD}/" | sed "s/AVALON_DATE \".*\"/AVALON_DATE \"${AVALON_DATE}\"/" > version.h
rm -f version.tmp

# очистка
make clean
Expand Down
6 changes: 3 additions & 3 deletions dev/update.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
os=linux;arch=i386;rev=419;url=http://narod.yandex.ru/disk/10806693001/avalon_i386_r419.gz.html;
os=linux;arch=x64;rev=419;url=http://narod.yandex.ru/disk/10756994001/avalon_x64_r419.gz.htm;
os=windows;arch=i386;rev=419;base_rev=1;base_url=http://narod.yandex.ru/disk/24099309000/avalon_win32_base.zip.html;url=http://narod.yandex.ru/disk/10921618001/avalon_win32_r419.zip.html;
os=linux;arch=i386;build=419;url=http://narod.yandex.ru/disk/10806693001/avalon_i386_r419.gz.html;
os=linux;arch=x64;build=420;url=http://narod.yandex.ru/disk/14596335001/avalon_x64_b420.gz.html;
os=windows;arch=i386;build=419;base_build=1;base_url=http://narod.yandex.ru/disk/24099309000/avalon_win32_base.zip.html;url=http://narod.yandex.ru/disk/10921618001/avalon_win32_r419.zip.html;
38 changes: 18 additions & 20 deletions form_main.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
//----------------------------------------------------------------------------------------------
// $Date: 2011-04-07 12:00:34 +0400 (Чтв, 07 Апр 2011) $
// $Author: antonbatenev.ya.ru $
// $Revision: 416 $
// $URL: svn://opensvn.ru/avalon/trunk/form_main.cpp $
/*!
* \file
* \brief Главная форма приложения
*/
//----------------------------------------------------------------------------------------------
#include "form_main.h"
//----------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -931,16 +930,16 @@ void AFormMain::checkUpdate ()
//

QString header = "";
header += "GET /avalon/raw-attachment/wiki/download/update.txt HTTP/1.1\r\n";
header += "Host: trac.opensvn.ru\r\n";
header += "GET /rsdn/avalon/raw/master/dev/update.txt HTTP/1.1\r\n";
header += "Host: github.com\r\n";
header += "Connection: close\r\n";
header += "User-Agent: " + getVersionString() + "\r\n";

#ifdef AVALON_USE_ZLIB
header += "Accept-Encoding: gzip\r\n";
#endif

std::auto_ptr<FormRequest> form(new FormRequest(this, "trac.opensvn.ru", 80, header, ""));
std::auto_ptr<FormRequest> form(new FormRequest(this, "github.com", 443, header, "", true));

if (form->exec() != QDialog::Accepted)
return;
Expand Down Expand Up @@ -1001,32 +1000,31 @@ void AFormMain::checkUpdate ()

// проверка версии
bool ok = false;
int manifest_version = values["rev"].toUInt(&ok);
int current_build = getBuildNumber();
int manifest_build = values["build"].toUInt(&ok);

if (ok == false)
{
QMessageBox::warning(this, QString::fromUtf8("Внимание!"), QString::fromUtf8("Манифест имеет неверную информацию о версии!"));
QMessageBox::warning(this, QString::fromUtf8("Внимание!"), QString::fromUtf8("Манифест имеет неверную информацию о номере билда!"));
return;
}

int curent_revision = getRevision();

if (curent_revision == manifest_version)
if (current_build == manifest_build)
{
QMessageBox::information(this, QString::fromUtf8("Внимание!"), QString::fromUtf8("Вы имеете самую последнюю версию программы!"));
QMessageBox::information(this, QString::fromUtf8("Внимание!"), QString::fromUtf8("Вы имеете самый последний билд программы!"));
return;
}
else if (curent_revision > manifest_version)
else if (current_build > manifest_build)
{
QMessageBox::information(this, QString::fromUtf8("Внимание!"), QString::fromUtf8("Ваша версия программы более новая! Пожалуйста, обновите бинарный файл на <a href='http://trac.opensvn.ru/avalon/wiki/download'>странице загрузки</a>."));
QMessageBox::information(this, QString::fromUtf8("Внимание!"), QString::fromUtf8("Ваш билд программы более новый! Пожалуйста, обновите бинарный файл на <a href='https://github.com/rsdn/avalon/wiki/Скачать'>странице загрузки</a>."));
return;
}

QString msg = "";
msg += QString::fromUtf8("Обнаружена новая версия программы!\n");
msg += QString::fromUtf8("Ваша версия: r") + QString::number(curent_revision) + "\n";
msg += QString::fromUtf8("Новая версия: r") + QString::number(manifest_version) + "\n";
msg += QString::fromUtf8("Перейти на страницу загрузки новой версии?");
msg += QString::fromUtf8("Обнаружен новый билд программы!\n");
msg += QString::fromUtf8("Ваш билд: ") + QString::number(current_build) + "\n";
msg += QString::fromUtf8("Новый билд: ") + QString::number(manifest_build) + "\n";
msg += QString::fromUtf8("Перейти на страницу загрузки нового билда?");

if (QMessageBox::question(this, QString::fromUtf8("Внимание!"), msg, QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)
QDesktopServices::openUrl(values["url"]);
Expand Down
5 changes: 0 additions & 5 deletions form_main.h
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
/*!
* \file
* \brief Главная форма приложения
*
* $Date: 2011-04-07 12:00:34 +0400 (Чтв, 07 Апр 2011) $
* $Author: antonbatenev.ya.ru $
* $Revision: 416 $
* $URL: svn://opensvn.ru/avalon/trunk/form_main.h $
*/

#ifndef _avalon_form_main_h_
Expand Down
30 changes: 19 additions & 11 deletions form_request.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
//----------------------------------------------------------------------------------------------
// $Date: 2011-04-07 11:11:49 +0400 (Чтв, 07 Апр 2011) $
// $Author: antonbatenev.ya.ru $
// $Revision: 406 $
// $URL: svn://opensvn.ru/avalon/trunk/form_request.cpp $
/*!
* \file
* \brief Форма для отображения прогресса работы и для HTTP запросов
*/
//----------------------------------------------------------------------------------------------
#include "form_request.h"
//----------------------------------------------------------------------------------------------
Expand All @@ -18,7 +17,7 @@ FormRequest::~FormRequest ()
}
//----------------------------------------------------------------------------------------------

FormRequest::FormRequest (QWidget* parent, const QString& host, quint16 port, const QString& header, const QString& data) : FormRequestUI (parent), IProgress ()
FormRequest::FormRequest (QWidget* parent, const QString& host, quint16 port, const QString& header, const QString& data, bool https) : FormRequestUI (parent), IProgress ()
{
m_hack = 0;

Expand All @@ -31,12 +30,21 @@ FormRequest::FormRequest (QWidget* parent, const QString& host, quint16 port, co
else if (proxy_type == QNetworkProxy::Socks5Proxy || proxy_type == QNetworkProxy::HttpProxy)
{
// transparent proxy, QHttp bug workaround
QTcpSocket* socket = new QTcpSocket(this);
socket->setProxy(proxy);
m_http.setSocket(socket);
if (https == false)
{
QTcpSocket* socket = new QTcpSocket(this);
socket->setProxy(proxy);
m_http.setSocket(socket);
}
else
{
QSslSocket* socket = new QSslSocket(this);
socket->setProxy(proxy);
m_http.setSocket(socket);
}
}

m_http.setHost(host, port);
m_http.setHost(host, (https == false ? QHttp::ConnectionModeHttp : QHttp::ConnectionModeHttps), port);

QHttpRequestHeader request_header(header);
QByteArray request_data = data.toUtf8();
Expand Down Expand Up @@ -263,7 +271,7 @@ void FormRequest::process_request_finished (int /*id*/, bool error)

accept();
}
else if (status_code < 511 /* при соединении с SOCKS прокси могу появляться артефакты с кодом состояния якобоы более 5xx */)
else if (status_code > 100 && status_code < 511 /* при соединении с SOCKS прокси могу появляться артефакты с кодом состояния якобоы более 5xx */)
new QListWidgetItem(QString::fromUtf8("Ошибка запроса - ") + QString::number(m_http.lastResponse().statusCode()) + " - " + m_http.lastResponse().reasonPhrase(), m_list_progress);
}
}
Expand Down
8 changes: 2 additions & 6 deletions form_request.h
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
/*!
* \file
* \brief Форма для отображения прогресса работы и для HTTP запросов
*
* $Date: 2011-04-07 11:11:49 +0400 (Чтв, 07 Апр 2011) $
* $Author: antonbatenev.ya.ru $
* $Revision: 406 $
* $URL: svn://opensvn.ru/avalon/trunk/form_request.h $
*/

#ifndef _avalon_form_request_h_
Expand Down Expand Up @@ -38,8 +33,9 @@ class FormRequest :
* \param port Номер порта
* \param header Заголовок HTTP
* \param data POST данные для HTTP
* \param https Флаг необходимости установки HTTPS соединения
*/
FormRequest (QWidget* parent, const QString& host, quint16 port, const QString& header, const QString& data);
FormRequest (QWidget* parent, const QString& host, quint16 port, const QString& header, const QString& data, bool https = false);

~FormRequest ();

Expand Down
12 changes: 4 additions & 8 deletions sysheaders.h
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
/*!
* \file
* \brief Файл для включения всех системных и библиотечных заголовочных файлов.
*
* $Date: 2011-04-06 14:21:47 +0400 (Срд, 06 Апр 2011) $
* $Author: antonbatenev.ya.ru $
* $Revision: 404 $
* $URL: svn://opensvn.ru/avalon/trunk/sysheaders.h $
*/

#ifndef _avalon_sysheaders_h_
Expand Down Expand Up @@ -47,6 +42,7 @@
#include <QValidator>
#include <QTextCodec>
#include <QTcpSocket>
#include <QSslSocket>
#include <QTranslator>
#include <QStringList>
#include <QTreeWidget>
Expand Down Expand Up @@ -105,10 +101,10 @@
#endif

/*!
* \brief Получение номера ревизии (см. version.cpp)
* \return Номер ревизии svn, на котором основана текущая сборка
* \brief Получение номера билда (см. version.cpp)
* \return Номер билда, на котором основана текущая сборка
*/
int getRevision ();
int getBuildNumber ();

/*!
* \brief Получение строки версии (см. version.cpp)
Expand Down
23 changes: 7 additions & 16 deletions version.cpp
Original file line number Diff line number Diff line change
@@ -1,30 +1,21 @@
//----------------------------------------------------------------------------------------------
// $Date: 2010-11-03 23:45:09 +0300 (Срд, 03 Ноя 2010) $
// $Author: antonbatenev.ya.ru $
// $Revision: 366 $
// $URL: svn://opensvn.ru/avalon/trunk/version.cpp $
/*!
* \file
* \brief Обрпаботка шаблона файла версии, который меняется при каждом билде
*/
//----------------------------------------------------------------------------------------------
#include "version.h"
#include "sysheaders.h"
//----------------------------------------------------------------------------------------------

int getRevision ()
int getBuildNumber ()
{
QString revision_str = AVALON_REVISION;

revision_str.replace("$Revision: ", "");
revision_str.replace(" $", "");

bool ok = false;
int revision = revision_str.toInt(&ok);

return revision;
return AVALON_BUILD;
}
//----------------------------------------------------------------------------------------------

QString getVersionString ()
{
QString result = QString("avalon 1.0rc3 rev ") + QString::number(getRevision());
QString result = QString("avalon 1.0rc3 build ") + QString::number(getBuildNumber());

#ifdef AVALON_USE_ZLIB
result += ", zlib " + QString(zlibVersion());
Expand Down
13 changes: 4 additions & 9 deletions version.h
Original file line number Diff line number Diff line change
@@ -1,24 +1,19 @@
/*!
* \file
* \brief Шаблон файла версии, который меняется при каждом билде
*
* $Date: 2011-04-20 17:27:00 +0400 (Срд, 20 Апр 2011) $
* $Author: antonbatenev.ya.ru $
* $Revision: 419 $
* $URL: svn://opensvn.ru/avalon/trunk/version.h $
*/

#ifndef _avalon_version_h_
#define _avalon_version_h_

/*!
* \brief Номер ревизии (заменяется автоматически svn-ом при коммите version.h)
* \brief Номер билда (увеличивается автоматически при каждом билде)
*/
#define AVALON_REVISION "$Revision: 419 $"
#define AVALON_BUILD 420

/*!
* \brief Дата билда (заменяется автоматически при каждом билде в version.h, что и приводит к смене номера ревизии)
* \brief Дата билда (заменяется автоматически при каждом билде)
*/
#define AVALON_DATE "Срд Апр 20 17:27:04 MSD 2011"
#define AVALON_DATE "2011-05-31T15:15:34+0400"

#endif

0 comments on commit bd0cb95

Please sign in to comment.