198 lines
5.8 KiB
C++
198 lines
5.8 KiB
C++
#include <cstdio>
|
|
#include <ctime>
|
|
#include <cstring>
|
|
#include <cstdlib>
|
|
#include "xerelease.hh"
|
|
#include "xeapi.hh"
|
|
|
|
static json data1;
|
|
|
|
// typedef void(*LP)(struct tm *local);//define a pointer function
|
|
#define MAX_PATH 260
|
|
static const int longterm_year = 2019, longterm_month = 1, longterm_day = 11;
|
|
static const int stable_year = 2017, stable_month = 5, stable_day = 19;
|
|
static const int develop_year = 2017, develop_month = 5, develop_day = 19;
|
|
|
|
int total_day(int year, int month, int day)
|
|
{
|
|
// Calculate day of 1 year
|
|
int sum = 0;
|
|
switch (month)
|
|
{
|
|
case 1:
|
|
sum = day;
|
|
break;
|
|
case 2:
|
|
sum = day + 31;
|
|
break;
|
|
case 3:
|
|
sum = day + 59;
|
|
break;
|
|
case 4:
|
|
sum = day + 90;
|
|
break;
|
|
case 5:
|
|
sum = day + 120;
|
|
break;
|
|
case 6:
|
|
sum = day + 151;
|
|
break;
|
|
case 7:
|
|
sum = day + 181;
|
|
break;
|
|
case 8:
|
|
sum = day + 212;
|
|
break;
|
|
case 9:
|
|
sum = day + 243;
|
|
break;
|
|
case 10:
|
|
sum = day + 273;
|
|
break;
|
|
case 11:
|
|
sum = day + 304;
|
|
break;
|
|
case 12:
|
|
sum = day + 334;
|
|
break;
|
|
default:
|
|
printf("Date Wrong!");
|
|
}
|
|
if (year % 4 == 0 && year % 100 != 0)
|
|
sum = sum + 1;
|
|
return sum;
|
|
}
|
|
|
|
int total_year_day(int year1, int year2)
|
|
{
|
|
// Calculate day of years
|
|
int sum = 0;
|
|
sum = (year2 - year1) * 365;
|
|
for (int i = year1; i < year2; i++)
|
|
{
|
|
if (i % 4 == 0 && i % 100 != 0)
|
|
{
|
|
sum = sum + 1;
|
|
}
|
|
}
|
|
return sum;
|
|
}
|
|
|
|
static void path_translate(char *result, const char *version)
|
|
{
|
|
if (!data1.empty())
|
|
{
|
|
// Just combine the release file path and filename
|
|
std::string path;
|
|
switch (get_os_type())
|
|
{
|
|
case OS_Type::Linux:
|
|
path = data1["Release_Path_Unix"];
|
|
snprintf(result, 57, "%s/xe-%c.x", path.c_str(), version[0]);
|
|
break;
|
|
case OS_Type::Darwin:
|
|
path = data1["Release_Path_Darwin"];
|
|
snprintf(result, 57, "%s/xe-%c.x", path.c_str(), version[0]);
|
|
break;
|
|
case OS_Type::Windows:
|
|
path = data1["Release_Path_Win32"];
|
|
snprintf(result, 57, "%s\\xe-%c.x", path.c_str(), version[0]);
|
|
break;
|
|
}
|
|
// if (rel_unix_file_system_detected())
|
|
// {
|
|
// path = data1["Release_Path_Unix"];
|
|
// sprintf(result, "%s/xe-%c.x", path.c_str(), version[0]);
|
|
// }
|
|
// else
|
|
// {
|
|
// path = data1["Release_Path_Win32"];
|
|
// sprintf(result, "%s\\xe-%c.x", path.c_str(), version[0]);
|
|
// }
|
|
}
|
|
else
|
|
{
|
|
snprintf(result, 57, "./xe-%c.x", version[0]);
|
|
}
|
|
}
|
|
|
|
void dale(struct tm *local)
|
|
{
|
|
printf("xeinit release maker by dale\n");
|
|
}
|
|
|
|
void longterm(struct tm *local, const char *lts, char *str)
|
|
{
|
|
// Print Version of longterm release in the file
|
|
char filename[MAX_PATH];
|
|
path_translate(filename, lts);
|
|
// sprintf(filename, "xe-%c.x", lts[0]);
|
|
int lts_ver = 0; // default release version
|
|
int year2 = local->tm_year + 1900,
|
|
month2 = local->tm_mon + 1, day2 = local->tm_mday;
|
|
// get release version
|
|
lts_ver = total_year_day(longterm_year, year2) -
|
|
total_day(longterm_year, longterm_month, longterm_day) +
|
|
total_day(year2, month2, day2);
|
|
// For show in dialog or console
|
|
snprintf(str, 57, "Xeinit LTS version:%s.%d\n", lts, lts_ver);
|
|
freopen(filename, "a", stdout);
|
|
// put all output in the release file
|
|
// output:release branch time in xe-release
|
|
printf("%4d-%02d-%02d ", local->tm_year + 1900, local->tm_mon + 1, local->tm_mday);
|
|
printf("%s.%d Api:%d\n", lts, lts_ver, xeapi1(local));
|
|
fclose(stdout);
|
|
return;
|
|
}
|
|
|
|
void stable(struct tm *local, const char *rel, char *str)
|
|
{
|
|
// Print Version of stable release in the file
|
|
char filename[57];
|
|
path_translate(filename, rel);
|
|
// sprintf(filename, "xe-%c.x", rel[0]);
|
|
int devel1; // stable release version
|
|
int year2 = local->tm_year + 1900,
|
|
month2 = local->tm_mon + 1, day2 = local->tm_mday;
|
|
// get release version
|
|
devel1 = total_year_day(stable_year, year2) -
|
|
total_day(stable_year, stable_month, stable_day) +
|
|
total_day(year2, month2, day2);
|
|
snprintf(str, 57, "Xeinit stable Version:%s.%d\n", rel, devel1);
|
|
freopen(filename, "a", stdout);
|
|
// put all output in the release file
|
|
// output:development branch time in xe-release
|
|
printf("%4d-%02d-%02d ", local->tm_year + 1900, local->tm_mon + 1, local->tm_mday);
|
|
printf("%s.%d build:%d\n", rel, devel1, xeapi1(local));
|
|
fclose(stdout);
|
|
return;
|
|
}
|
|
|
|
void develop(struct tm *local, const char *devel, char *str)
|
|
{
|
|
// Print Version of develop release in the file
|
|
char filename[57];
|
|
path_translate(filename, devel);
|
|
// sprintf(filename, "xe-%c.x", devel[0]);
|
|
int devel1; // development version
|
|
int year2 = local->tm_year + 1900,
|
|
month2 = local->tm_mon + 1, day2 = local->tm_mday;
|
|
// get release version
|
|
devel1 = total_year_day(develop_year, year2) -
|
|
total_day(develop_year, develop_month, develop_day) +
|
|
total_day(year2, month2, day2);
|
|
snprintf(str, 57, "Xeinit devel Version:%s.%d\n", devel, devel1);
|
|
freopen(filename, "a", stdout);
|
|
// put all output in the release file
|
|
// output:development branch time in xe-release
|
|
printf("%4d-%02d-%02d ", local->tm_year + 1900, local->tm_mon + 1, local->tm_mday);
|
|
printf("%s.%d build:%d\n", devel, devel1, xeapi1(local));
|
|
fclose(stdout);
|
|
return;
|
|
}
|
|
|
|
void json_config_init(json &user_data)
|
|
{
|
|
data1 = user_data;
|
|
}
|