Merge branch '5008-beta1' into myk_nosdlreal
commit
b1ae39764b
@ -0,0 +1,4 @@
|
||||
IF EXIST DF_PATH.txt SET /P _DF_PATH=<DF_PATH.txt
|
||||
IF NOT EXIST DF_PATH.txt SET _DF_PATH=%CD%\DF
|
||||
echo generating a build folder
|
||||
cmake ..\.. -G"Visual Studio 17 2022" -A x64 -B VC2022 -DCMAKE_INSTALL_PREFIX="%_DF_PATH%" -DBUILD_DEVEL=1 -DBUILD_DEV_PLUGINS=1 -DBUILD_STONESENSE=1 -DBUILD_DFLAUNCH=1
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"planner": {
|
||||
"minimized": true
|
||||
}
|
||||
}
|
@ -1 +1 @@
|
||||
Subproject commit 6ed8aa46462ea01a1122fc49422840a2facc9757
|
||||
Subproject commit d5e17c6012e7eefb0cbe3e130a56c24bd11f0094
|
@ -1 +1 @@
|
||||
Subproject commit 439fdbc259c13f23a3122e68ba35ad5a13bcd97c
|
||||
Subproject commit 0a994526622c2201756e386ef98b44b193e25f06
|
@ -1,14 +0,0 @@
|
||||
title-version
|
||||
=============
|
||||
|
||||
.. dfhack-tool::
|
||||
:summary: Displays the DFHack version on DF's title screen.
|
||||
:tags: unavailable interface
|
||||
:no-command:
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
::
|
||||
|
||||
enable title-version
|
@ -1 +1 @@
|
||||
Subproject commit 43a89a268b825fc05457678b19e551bf632dcd19
|
||||
Subproject commit 98d5f8a5553690ef71b9650b28d4aababf21ef5e
|
@ -1,7 +1,38 @@
|
||||
project(package_windows)
|
||||
|
||||
if(WIN32)
|
||||
add_executable(launchdf WIN32 launchdf.c)
|
||||
install(TARGETS launchdf
|
||||
DESTINATION ${DFHACK_DATA_DESTINATION})
|
||||
if (BUILD_DFLAUNCH)
|
||||
if ((DEFINED ENV{steam_username}) AND (DEFINED ENV{steam_password}))
|
||||
# download Steam SDK
|
||||
set (STEAMAPI_DIR ${dfhack_SOURCE_DIR}/depends/steam)
|
||||
file(DOWNLOAD "https://partner.steamgames.com/downloads/steamworks_sdk_156.zip"
|
||||
${STEAMAPI_DIR}/steamworks_sdk_156.zip
|
||||
EXPECTED_HASH MD5=af5a579990dbe5ae4c1b0689260d001b
|
||||
USERPWD $ENV{steam_username}:$ENV{steam_password}
|
||||
STATUS STEAM_SDK_DOWNLOAD_STATUS
|
||||
SHOW_PROGRESS
|
||||
)
|
||||
list(GET STEAM_SDK_DOWNLOAD_STATUS 0 STEAM_SDK_DL_STATUS_CODE)
|
||||
list(GET STEAM_SDK_DOWNLOAD_STATUS 1 STEAM_SDK_DL_ERROR_MESSAGE)
|
||||
if (NOT (${STEAM_SDK_DL_STATUS_CODE} EQUAL 0))
|
||||
message(FATAL_ERROR "Steam SDK download: " ${STEAM_SDK_DL_ERROR_MESSAGE})
|
||||
else ()
|
||||
message(STATUS "Steam SDK download: " ${STEAM_SDK_DL_ERROR_MESSAGE})
|
||||
file(ARCHIVE_EXTRACT
|
||||
INPUT ${STEAMAPI_DIR}/steamworks_sdk_156.zip
|
||||
DESTINATION ${STEAMAPI_DIR})
|
||||
set(STEAMAPI_LIBRARY "${STEAMAPI_DIR}/sdk/redistributable_bin/win64/steam_api64.lib")
|
||||
set(STEAMAPI_SOURCE_DIR "${STEAMAPI_DIR}/sdk/public/steam")
|
||||
set(STEAMAPI_SHARED_LIBRARY "${STEAMAPI_DIR}/sdk/redistributable_bin/win64/steam_api64.dll")
|
||||
endif()
|
||||
else()
|
||||
message(SEND_ERROR "Need to set steam_username and steam_password in environment to download Steamworks SDK")
|
||||
endif()
|
||||
|
||||
include_directories(${STEAMAPI_SOURCE_DIR})
|
||||
link_libraries(${STEAMAPI_LIBRARY})
|
||||
add_executable(launchdf WIN32 launchdf.cpp)
|
||||
install(TARGETS launchdf DESTINATION ${DFHACK_DATA_DESTINATION})
|
||||
install(FILES ${STEAMAPI_SHARED_LIBRARY} DESTINATION ${DFHACK_DATA_DESTINATION})
|
||||
endif()
|
||||
endif()
|
||||
|
@ -1,72 +0,0 @@
|
||||
#include <process.h>
|
||||
#include <windows.h>
|
||||
|
||||
static BOOL is_running_on_wine() {
|
||||
static const char *(CDECL *pwine_get_version)(void);
|
||||
HMODULE hntdll = GetModuleHandle("ntdll.dll");
|
||||
if(!hntdll)
|
||||
return FALSE;
|
||||
|
||||
pwine_get_version = (void *)GetProcAddress(hntdll, "wine_get_version");
|
||||
return !!pwine_get_version;
|
||||
}
|
||||
|
||||
static LPCWSTR launch_via_steam_posix() {
|
||||
const char* argv[] = { "/bin/sh", "-c", "\"steam -applaunch 975370\"", NULL };
|
||||
|
||||
// does not return on success
|
||||
_execv(argv[0], argv);
|
||||
|
||||
return L"Could not launch Dwarf Fortress";
|
||||
}
|
||||
|
||||
static LPCWSTR launch_via_steam_windows() {
|
||||
STARTUPINFOW si;
|
||||
PROCESS_INFORMATION pi;
|
||||
|
||||
ZeroMemory(&si, sizeof(si));
|
||||
si.cb = sizeof(si);
|
||||
ZeroMemory(&pi, sizeof(pi));
|
||||
|
||||
WCHAR steamPath[1024];
|
||||
DWORD datasize = 1024;
|
||||
|
||||
LONG retCode = RegGetValueW(HKEY_CURRENT_USER, L"SOFTWARE\\Valve\\Steam",
|
||||
L"SteamExe", RRF_RT_REG_SZ, NULL, &steamPath, &datasize);
|
||||
|
||||
if (retCode != ERROR_SUCCESS)
|
||||
return L"Could not find Steam client executable";
|
||||
|
||||
WCHAR commandLine[1024] = L"steam.exe -applaunch 975370";
|
||||
|
||||
if (CreateProcessW(steamPath, commandLine,
|
||||
NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi) == 0)
|
||||
return L"Could not launch Dwarf Fortress";
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// this method doesn't properly attribute Steam playtime metrics to DF,
|
||||
// but that's better than not having DF start at all.
|
||||
static BOOL launch_direct() {
|
||||
STARTUPINFOW si;
|
||||
PROCESS_INFORMATION pi;
|
||||
|
||||
ZeroMemory(&si, sizeof(si));
|
||||
si.cb = sizeof(si);
|
||||
ZeroMemory(&pi, sizeof(pi));
|
||||
|
||||
return CreateProcessW(L"Dwarf Fortress.exe",
|
||||
NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
|
||||
}
|
||||
|
||||
int WINAPI wWinMain(HINSTANCE hi, HINSTANCE hpi, PWSTR cmd, int ns) {
|
||||
LPCWSTR err = is_running_on_wine() ? launch_via_steam_posix() : launch_via_steam_windows();
|
||||
|
||||
if (err && !launch_direct()) {
|
||||
MessageBoxW(NULL, err, NULL, 0);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
exit(0);
|
||||
}
|
@ -0,0 +1,223 @@
|
||||
#include <process.h>
|
||||
#include <windows.h>
|
||||
#include <TlHelp32.h>
|
||||
#include "steam_api.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
const uint32 DFHACK_STEAM_APPID = 2346660;
|
||||
const uint32 DF_STEAM_APPID = 975370;
|
||||
|
||||
static BOOL is_running_on_wine() {
|
||||
typedef const char* (CDECL wine_get_version)(void);
|
||||
static wine_get_version* pwine_get_version;
|
||||
HMODULE hntdll = GetModuleHandle("ntdll.dll");
|
||||
if(!hntdll)
|
||||
return FALSE;
|
||||
|
||||
pwine_get_version = (wine_get_version*) GetProcAddress(hntdll, "wine_get_version");
|
||||
return !!pwine_get_version;
|
||||
}
|
||||
|
||||
static LPCWSTR launch_via_steam_posix() {
|
||||
const char* argv[] = { "/bin/sh", "-c", "\"steam -applaunch 975370\"", NULL };
|
||||
|
||||
// does not return on success
|
||||
_execv(argv[0], argv);
|
||||
|
||||
return L"Could not launch Dwarf Fortress";
|
||||
}
|
||||
|
||||
static LPCWSTR launch_via_steam_windows() {
|
||||
STARTUPINFOW si;
|
||||
PROCESS_INFORMATION pi;
|
||||
|
||||
ZeroMemory(&si, sizeof(si));
|
||||
si.cb = sizeof(si);
|
||||
ZeroMemory(&pi, sizeof(pi));
|
||||
|
||||
WCHAR steamPath[1024] = L"";
|
||||
DWORD datasize = 1024;
|
||||
|
||||
LONG retCode = RegGetValueW(HKEY_CURRENT_USER, L"SOFTWARE\\Valve\\Steam",
|
||||
L"SteamExe", RRF_RT_REG_SZ, NULL, &steamPath, &datasize);
|
||||
|
||||
if (retCode != ERROR_SUCCESS)
|
||||
return L"Could not find Steam client executable";
|
||||
|
||||
WCHAR commandLine[1024] = L"steam.exe -applaunch 975370";
|
||||
|
||||
BOOL res = CreateProcessW(steamPath, commandLine,
|
||||
NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
|
||||
|
||||
if (res)
|
||||
{
|
||||
WaitForSingleObject(pi.hProcess, INFINITE);
|
||||
|
||||
CloseHandle(pi.hProcess);
|
||||
CloseHandle(pi.hThread);
|
||||
return NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
return L"Could not launch Dwarf Fortress";
|
||||
}
|
||||
}
|
||||
|
||||
static LPCWSTR launch_direct() {
|
||||
STARTUPINFOW si;
|
||||
PROCESS_INFORMATION pi;
|
||||
|
||||
ZeroMemory(&si, sizeof(si));
|
||||
si.cb = sizeof(si);
|
||||
ZeroMemory(&pi, sizeof(pi));
|
||||
|
||||
BOOL res = CreateProcessW(L"Dwarf Fortress.exe",
|
||||
NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
|
||||
|
||||
if (res)
|
||||
{
|
||||
WaitForSingleObject(pi.hProcess, INFINITE);
|
||||
|
||||
CloseHandle(pi.hProcess);
|
||||
CloseHandle(pi.hThread);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return L"Could not launch via non-steam fallback method";
|
||||
}
|
||||
|
||||
DWORD findDwarfFortressProcess()
|
||||
{
|
||||
PROCESSENTRY32W entry;
|
||||
entry.dwSize = sizeof(PROCESSENTRY32W);
|
||||
|
||||
const auto snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
|
||||
|
||||
if (!Process32FirstW(snapshot, &entry))
|
||||
{
|
||||
CloseHandle(snapshot);
|
||||
return -1;
|
||||
}
|
||||
|
||||
do {
|
||||
std::wstring executableName(entry.szExeFile);
|
||||
if (executableName == L"Dwarf Fortress.exe")
|
||||
{
|
||||
CloseHandle(snapshot);
|
||||
return entry.th32ProcessID;
|
||||
}
|
||||
} while (Process32NextW(snapshot, &entry));
|
||||
|
||||
CloseHandle(snapshot);
|
||||
return -1;
|
||||
}
|
||||
|
||||
int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nShowCmd) {
|
||||
|
||||
// initialize steam context
|
||||
if (SteamAPI_RestartAppIfNecessary(DFHACK_STEAM_APPID))
|
||||
{
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if (!SteamAPI_Init())
|
||||
{
|
||||
// could not initialize steam context, attempt fallback launch
|
||||
LPCWSTR err = launch_direct();
|
||||
if (err != NULL)
|
||||
{
|
||||
MessageBoxW(NULL, err, NULL, 0);
|
||||
exit(1);
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
|
||||
bool wine = is_running_on_wine();
|
||||
|
||||
if (wine)
|
||||
{
|
||||
// attempt launch via steam client
|
||||
LPCWSTR err = launch_via_steam_posix();
|
||||
|
||||
if (err != NULL)
|
||||
// steam client launch failed, attempt fallback launch
|
||||
err = launch_direct();
|
||||
|
||||
if (err != NULL)
|
||||
{
|
||||
MessageBoxW(NULL, err, NULL, 0);
|
||||
exit(1);
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
|
||||
// steam detected and not running in wine
|
||||
|
||||
bool df_installed = SteamApps()->BIsAppInstalled(DF_STEAM_APPID);
|
||||
|
||||
if (!df_installed)
|
||||
{
|
||||
// Steam DF is not installed. Assume DF is installed in same directory as DFHack and do a fallback launch
|
||||
LPCWSTR err = launch_direct();
|
||||
|
||||
if (err != NULL)
|
||||
{
|
||||
MessageBoxW(NULL, err, NULL, 0);
|
||||
exit(1);
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
|
||||
// obtain DF app path
|
||||
|
||||
char buf[2048] = "";
|
||||
|
||||
int b1 = SteamApps()->GetAppInstallDir(DFHACK_STEAM_APPID, (char*)&buf, 2048);
|
||||
std::string dfhack_install_folder = (b1 != -1) ? std::string(buf) : "";
|
||||
|
||||
int b2 = SteamApps()->GetAppInstallDir(DF_STEAM_APPID, (char*)&buf, 2048);
|
||||
std::string df_install_folder = (b2 != -1) ? std::string(buf) : "";
|
||||
|
||||
|
||||
if (df_install_folder != dfhack_install_folder)
|
||||
{
|
||||
// DF and DFHack are not installed in the same library
|
||||
MessageBoxW(NULL, L"DFHack and Dwarf Fortress must be installed in the same Steam library.\nAborting.", NULL, 0);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
DWORD df_pid = findDwarfFortressProcess();
|
||||
|
||||
if (df_pid == -1)
|
||||
{
|
||||
LPCWSTR err = launch_via_steam_windows();
|
||||
if (err != NULL)
|
||||
{
|
||||
MessageBoxW(NULL, err, NULL, 0);
|
||||
exit(1);
|
||||
}
|
||||
int counter = 0;
|
||||
|
||||
do {
|
||||
if (counter++ > 60)
|
||||
{
|
||||
MessageBoxW(NULL, L"Dwarf Fortress took too long to launch, aborting", NULL, 0);
|
||||
exit(1);
|
||||
}
|
||||
Sleep(1000);
|
||||
df_pid = findDwarfFortressProcess();
|
||||
} while (df_pid == -1);
|
||||
}
|
||||
|
||||
HANDLE hDF = OpenProcess(PROCESS_QUERY_INFORMATION | SYNCHRONIZE, FALSE, df_pid);
|
||||
|
||||
// in the future open an IPC connection so that we can proxy SteamAPI calls for the DFSteam module
|
||||
|
||||
// this will eventuallyh need to become a loop with a WaitForMultipleObjects call
|
||||
WaitForSingleObject(hDF, INFINITE);
|
||||
|
||||
CloseHandle(hDF);
|
||||
|
||||
exit(0);
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
*.pb.cc
|
||||
*.pb.cc.rule
|
||||
*.pb.h
|
@ -1,109 +0,0 @@
|
||||
#include <cmath>
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <stack>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "Core.h"
|
||||
#include "Console.h"
|
||||
#include "Export.h"
|
||||
#include "PluginManager.h"
|
||||
#include "modules/Gui.h"
|
||||
#include "modules/Screen.h"
|
||||
#include "VTableInterpose.h"
|
||||
#include "DFHackVersion.h"
|
||||
|
||||
#include "df/graphic.h"
|
||||
#include "df/viewscreen_optionst.h"
|
||||
#include "df/viewscreen_titlest.h"
|
||||
#include "uicommon.h"
|
||||
|
||||
using std::vector;
|
||||
using std::string;
|
||||
using namespace DFHack;
|
||||
|
||||
DFHACK_PLUGIN("title-version");
|
||||
DFHACK_PLUGIN_IS_ENABLED(is_enabled);
|
||||
REQUIRE_GLOBAL(gps);
|
||||
|
||||
void draw_version(int start_x, int start_y) {
|
||||
int x = start_x,
|
||||
y = start_y;
|
||||
|
||||
OutputString(COLOR_WHITE, x, y, string("DFHack ") + DFHACK_VERSION);
|
||||
if (!DFHACK_IS_RELEASE)
|
||||
{
|
||||
OutputString(COLOR_WHITE, x, y, " (dev)");
|
||||
x = start_x; y++;
|
||||
OutputString(COLOR_WHITE, x, y, "Git: ");
|
||||
OutputString(COLOR_WHITE, x, y, DFHACK_GIT_DESCRIPTION);
|
||||
}
|
||||
if (strlen(DFHACK_BUILD_ID))
|
||||
{
|
||||
x = start_x; y++;
|
||||
OutputString(COLOR_WHITE, x, y, "Build ID: ");
|
||||
OutputString(COLOR_WHITE, x, y, DFHACK_BUILD_ID);
|
||||
}
|
||||
if (DFHACK_IS_PRERELEASE)
|
||||
{
|
||||
x = start_x; y++;
|
||||
OutputString(COLOR_LIGHTRED, x, y, "Pre-release build");
|
||||
}
|
||||
}
|
||||
|
||||
struct title_version_hook : df::viewscreen_titlest {
|
||||
typedef df::viewscreen_titlest interpose_base;
|
||||
|
||||
DEFINE_VMETHOD_INTERPOSE(void, render, ())
|
||||
{
|
||||
INTERPOSE_NEXT(render)();
|
||||
if (!loading)
|
||||
draw_version(0, 0);
|
||||
}
|
||||
};
|
||||
|
||||
IMPLEMENT_VMETHOD_INTERPOSE(title_version_hook, render);
|
||||
|
||||
struct options_version_hook : df::viewscreen_optionst {
|
||||
typedef df::viewscreen_optionst interpose_base;
|
||||
|
||||
DEFINE_VMETHOD_INTERPOSE(void, render, ())
|
||||
{
|
||||
INTERPOSE_NEXT(render)();
|
||||
if (!msg_quit && !in_retire_adv && !msg_peasant &&
|
||||
!in_retire_dwf_abandon_adv && !in_abandon_dwf && !ending_game)
|
||||
draw_version(2, gps->dimy - 6);
|
||||
}
|
||||
};
|
||||
|
||||
IMPLEMENT_VMETHOD_INTERPOSE(options_version_hook, render);
|
||||
|
||||
DFhackCExport command_result plugin_enable (color_ostream &out, bool enable)
|
||||
{
|
||||
if (!gps)
|
||||
return CR_FAILURE;
|
||||
|
||||
if (enable != is_enabled)
|
||||
{
|
||||
if (!INTERPOSE_HOOK(title_version_hook, render).apply(enable) ||
|
||||
!INTERPOSE_HOOK(options_version_hook, render).apply(enable))
|
||||
return CR_FAILURE;
|
||||
|
||||
is_enabled = enable;
|
||||
}
|
||||
|
||||
return CR_OK;
|
||||
}
|
||||
|
||||
DFhackCExport command_result plugin_init (color_ostream &out, vector<PluginCommand> &commands)
|
||||
{
|
||||
return CR_OK;
|
||||
}
|
||||
|
||||
DFhackCExport command_result plugin_shutdown (color_ostream &out)
|
||||
{
|
||||
INTERPOSE_HOOK(title_version_hook, render).remove();
|
||||
INTERPOSE_HOOK(options_version_hook, render).remove();
|
||||
return CR_OK;
|
||||
}
|
@ -1 +1 @@
|
||||
Subproject commit ec1a69788fd6329008672523b622fd8b390fea73
|
||||
Subproject commit ad1998a0032ce50e90d05429a4178b668c0840ba
|
@ -1,14 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
script_name = os.path.basename(__file__)
|
||||
new_script_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'ci', script_name)
|
||||
|
||||
sys.stderr.write('\nNote: travis/{script_name} is deprecated. Use ci/{script_name} instead.\n\n'.format(script_name=script_name))
|
||||
sys.stderr.flush()
|
||||
|
||||
p = subprocess.run([sys.executable, new_script_path] + sys.argv[1:])
|
||||
sys.exit(p.returncode)
|
@ -1,14 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
script_name = os.path.basename(__file__)
|
||||
new_script_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'ci', script_name)
|
||||
|
||||
sys.stderr.write('\nNote: travis/{script_name} is deprecated. Use ci/{script_name} instead.\n\n'.format(script_name=script_name))
|
||||
sys.stderr.flush()
|
||||
|
||||
p = subprocess.run([sys.executable, new_script_path] + sys.argv[1:])
|
||||
sys.exit(p.returncode)
|
@ -1,14 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
script_name = os.path.basename(__file__)
|
||||
new_script_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'ci', script_name)
|
||||
|
||||
sys.stderr.write('\nNote: travis/{script_name} is deprecated. Use ci/{script_name} instead.\n\n'.format(script_name=script_name))
|
||||
sys.stderr.flush()
|
||||
|
||||
p = subprocess.run([sys.executable, new_script_path] + sys.argv[1:])
|
||||
sys.exit(p.returncode)
|
@ -1,9 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
script_name="$(basename "$0")"
|
||||
new_script_path="$(dirname "$0")/../ci/${script_name}"
|
||||
|
||||
printf >&2 "\nNote: travis/%s is deprecated. Use ci/%s instead.\n\n" "${script_name}" "${script_name}"
|
||||
|
||||
"${new_script_path}" "$@"
|
||||
exit $?
|
@ -1,9 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
script_name="$(basename "$0")"
|
||||
new_script_path="$(dirname "$0")/../ci/${script_name}"
|
||||
|
||||
printf >&2 "\nNote: travis/%s is deprecated. Use ci/%s instead.\n\n" "${script_name}" "${script_name}"
|
||||
|
||||
"${new_script_path}" "$@"
|
||||
exit $?
|
@ -1,14 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
script_name = os.path.basename(__file__)
|
||||
new_script_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'ci', script_name)
|
||||
|
||||
sys.stderr.write('\nNote: travis/{script_name} is deprecated. Use ci/{script_name} instead.\n\n'.format(script_name=script_name))
|
||||
sys.stderr.flush()
|
||||
|
||||
p = subprocess.run([sys.executable, new_script_path] + sys.argv[1:])
|
||||
sys.exit(p.returncode)
|
@ -1,14 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
script_name = os.path.basename(__file__)
|
||||
new_script_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'ci', script_name)
|
||||
|
||||
sys.stderr.write('\nNote: travis/{script_name} is deprecated. Use ci/{script_name} instead.\n\n'.format(script_name=script_name))
|
||||
sys.stderr.flush()
|
||||
|
||||
p = subprocess.run([sys.executable, new_script_path] + sys.argv[1:])
|
||||
sys.exit(p.returncode)
|
@ -1,14 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
script_name = os.path.basename(__file__)
|
||||
new_script_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'ci', script_name)
|
||||
|
||||
sys.stderr.write('\nNote: travis/{script_name} is deprecated. Use ci/{script_name} instead.\n\n'.format(script_name=script_name))
|
||||
sys.stderr.flush()
|
||||
|
||||
p = subprocess.run([sys.executable, new_script_path] + sys.argv[1:])
|
||||
sys.exit(p.returncode)
|
@ -1,14 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
script_name = os.path.basename(__file__)
|
||||
new_script_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'ci', script_name)
|
||||
|
||||
sys.stderr.write('\nNote: travis/{script_name} is deprecated. Use ci/{script_name} instead.\n\n'.format(script_name=script_name))
|
||||
sys.stderr.flush()
|
||||
|
||||
p = subprocess.run([sys.executable, new_script_path] + sys.argv[1:])
|
||||
sys.exit(p.returncode)
|
Loading…
Reference in New Issue