acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
integration_context.h
1// Created by camilo on 2023-01-15 16:18 <3ThomasBorregaardSorensen!!
2#pragma once
3
4
5#include "acme/filesystem/filesystem/listing.h"
6#include "shell.h"
7#include "acme/constant/integration.h"
8
9
10namespace integration
11{
12
13
14 class CLASS_DECL_ACME context :
15 virtual public ::acme::shell
16 {
17 public:
18
19
20 ::logic::boolean m_bOnlyInstall;
21 ::logic::boolean m_bBuildDependencies;
22
23
24 ::file::path m_pathBaseIntegrationFolder;
25 ::file::path m_pathProjectFolder;
26 ::file::path m_pathBuildFolder;
27
28
29 ::string m_strBuildIndexStagePrefix;
30
31 ::string m_strVs;
32 ::file::path m_pathOperatingSystemIncludeFolder;
33 ::file::path m_pathOperatingSystemStorageFolder;
34 ::file::path m_pathDownloadURL;
35 ::string m_strGitCloneBranch;
36 ::string_array_base m_straOutput;
37 ::file::path m_pathFolder;
38 ::file::path m_pathBase;
39 ::file::path m_pathPlatformConfiguration;
40 ::file::path m_pathSource;
41 ::file::path m_pathPrefix;
42 ::file::path m_pathStaticPrefix;
43 ::string m_strRelease;
44 ::file::path m_pathBuild;
45 //::string m_strContext;
46 //::string m_strSdk1;
47 //::string m_strStagePlatform;
48 ::string m_strStagePlatform;
49 ::string m_strPlatform;
50 //::string m_strPlatform2;
51 ::string m_strConfiguration;
52 ::string m_strName;
53
54
55 ::particle_pointer m_pmutexLines;
56
57
58 ::file::listing_base m_listingBuild;
59
60
61 context();
62 ~context() override;
63
64
65 void initialize(::particle* pparticle) override;
66
67
68 virtual void prepare(const ::scoped_string & scopedstrOperatingSystem);
69
70 virtual ::file::path get_source_folder_path(const ::scoped_string& strRelative = {});
71 virtual ::file::path get_build_folder_path(const ::scoped_string& strRelative = {});
72
73 virtual void create_source_directory(const ::scoped_string& strRelative = {});
74 virtual void change_to_source_directory(const ::scoped_string& strRelative = {});
75
76 virtual void prepare_compile_and_link_environment();
77
78 virtual void prepare_compilation_script(::string & str);
79 virtual void prepare_linking_script(::string & str);
80
81 using ::acme::shell::command_system;
82 ::i32 command_system(const ::scoped_string& scopedstr, const class ::time& timeOut = 12_h, const ::file::path& pathWorkingDirectory = {}, ::e_display edisplay = e_display_none) override;
83
84 virtual void clean();
85
86 virtual void download_and_uncompress();
87 virtual void git_clone();
88 virtual ::i32 git_bash(const ::scoped_string& scopedstr, const class ::time& timeTimeout);
89 virtual ::i32 bash(const ::scoped_string & scopedstr, const class ::time & timeTimeout);
90 virtual ::i32 zsh(const ::scoped_string & scopedstr, const class ::time & timeTimeout);
91
92 void untar(const ::file::path& pathFolder, const ::payload& payloadTar, ::i32 iStripComponent = 0, ::function<void(const ::scoped_string& scopedstr)> = {});
93
94
95 virtual ::string prepare_path(const ::file::path & path);
96
97
98 virtual void list_host_builds();
99
100
101 virtual ::file::path base_integration_folder();
102
103 virtual ::file::path host_integration_folder();
104
105 //virtual ::file::path integration_folder();
106
107 virtual void defer_nasm();
108
109 virtual void defer_yasm();
110
111 virtual void defer_has_posix_shell_command(const ::scoped_string & scopedstr, const ::scoped_string & scopedstrInstallHintPackage = {}, enum_posix_shell eposixshell = e_posix_shell_system_default);
112
113#ifdef WINDOWS_DESKTOP
114
115
116 virtual void set_msys2(bool bSet = true);
117
118
119#endif
120
121 virtual ::string current_integration();
122
123 virtual ::string integration_main_status(const ::scoped_string& scopedstrSlashed);
124 virtual ::string integration_main_status();
125 virtual bool integration_is_any_running();
126 virtual ::string integration_can_start(const ::scoped_string& scopedstrIntegration);
127 virtual ::string integration_one_that_is_building();
128
129
130 virtual ::string build_index_stage_prefix();
131 virtual ::string build_index_radix(::integration::enum_index eindex);
132
133
134 };
135
136
137} // namespace integration
138
139
140
Definition shell.h:15
Definition listing.h:33
Definition path.h:52
Definition _template_forward_declaration.h:297
Definition boolean.h:55
Definition particle.h:95