+93
-48
lines changedFilter options
+93
-48
lines changed Original file line number Diff line number Diff line change
@@ -3,8 +3,8 @@ name: build-selenium-manager
3
3
on: workflow_dispatch
4
4
5
5
jobs:
6
-
windows:
7
-
name: "[Windows] Build selenium-manager"
6
+
win32:
7
+
name: "[Windows x32] Build selenium-manager"
8
8
runs-on: windows-latest
9
9
env:
10
10
RUSTFLAGS: '-Ctarget-feature=+crt-static'
@@ -14,20 +14,22 @@ jobs:
14
14
- name: "Update Rust"
15
15
run: |
16
16
rustup update
17
+
rustup toolchain install stable-i686-pc-windows-msvc
18
+
rustup default stable-i686-pc-windows-msvc
17
19
rustc -vV
18
20
- name: "Build release"
19
21
run: |
20
22
cd rust
21
-
cargo build --release --target x86_64-pc-windows-msvc
23
+
cargo build --release
22
24
- name: "Upload binary"
23
25
uses: actions/upload-artifact@v3
24
26
with:
25
-
name: selenium-manager_windows-x64
26
-
path: rust/target/x86_64-pc-windows-msvc/release/selenium-manager.exe
27
+
name: selenium-manager_windows-x32
28
+
path: rust/target/release/selenium-manager.exe
27
29
retention-days: 6
28
30
29
-
linux:
30
-
name: "[Linux] Build selenium-manager"
31
+
linux64:
32
+
name: "[Linux x64] Build selenium-manager"
31
33
runs-on: ubuntu-latest
32
34
env:
33
35
RUSTFLAGS: '-Ctarget-feature=-crt-static'
@@ -58,8 +60,8 @@ jobs:
58
60
path: selenium-manager.tar
59
61
retention-days: 6
60
62
61
-
macos:
62
-
name: "[macOS] Build selenium-manager"
63
+
macos64:
64
+
name: "[macOS x64] Build selenium-manager"
63
65
runs-on: macos-latest
64
66
env:
65
67
RUSTFLAGS: '-Ctarget-feature=+crt-static'
@@ -83,4 +85,4 @@ jobs:
83
85
with:
84
86
name: selenium-manager_macos-x64
85
87
path: selenium-manager.tar
86
-
retention-days: 6
88
+
retention-days: 6
Original file line number Diff line number Diff line change
@@ -30,9 +30,9 @@ use crate::metadata::{
30
30
create_driver_metadata, get_driver_version_from_metadata, get_metadata, write_metadata,
31
31
};
32
32
use crate::{
33
-
create_http_client, format_one_arg, format_two_args, SeleniumManager, BETA, DASH_DASH_VERSION,
34
-
DEV, ENV_LOCALAPPDATA, ENV_PROGRAM_FILES, ENV_PROGRAM_FILES_X86, FALLBACK_RETRIES, NIGHTLY,
35
-
REG_QUERY, STABLE, WMIC_COMMAND, WMIC_COMMAND_ENV,
33
+
create_http_client, format_one_arg, format_three_args, SeleniumManager, BETA,
34
+
DASH_DASH_VERSION, DEV, ENV_LOCALAPPDATA, ENV_PROGRAM_FILES, ENV_PROGRAM_FILES_X86,
35
+
FALLBACK_RETRIES, NIGHTLY, REG_QUERY, REMOVE_X86, STABLE, WMIC_COMMAND, WMIC_COMMAND_ENV,
36
36
};
37
37
38
38
pub const CHROME_NAME: &str = "chrome";
@@ -126,9 +126,19 @@ impl SeleniumManager for ChromeManager {
126
126
Some(path) => {
127
127
browser_path = path;
128
128
commands = vec![
129
-
format_two_args(WMIC_COMMAND_ENV, ENV_PROGRAM_FILES, browser_path),
130
-
format_two_args(WMIC_COMMAND_ENV, ENV_PROGRAM_FILES_X86, browser_path),
131
-
format_two_args(WMIC_COMMAND_ENV, ENV_LOCALAPPDATA, browser_path),
129
+
format_three_args(
130
+
WMIC_COMMAND_ENV,
131
+
ENV_PROGRAM_FILES,
132
+
REMOVE_X86,
133
+
browser_path,
134
+
),
135
+
format_three_args(
136
+
WMIC_COMMAND_ENV,
137
+
ENV_PROGRAM_FILES_X86,
138
+
"",
139
+
browser_path,
140
+
),
141
+
format_three_args(WMIC_COMMAND_ENV, ENV_LOCALAPPDATA, "", browser_path),
132
142
];
133
143
if !self.is_browser_version_unstable() {
134
144
commands.push(format_one_arg(
Original file line number Diff line number Diff line change
@@ -16,14 +16,9 @@
16
16
// under the License.
17
17
18
18
use crate::config::OS::{LINUX, MACOS, WINDOWS};
19
-
use crate::TTL_BROWSERS_SEC;
20
-
use crate::TTL_DRIVERS_SEC;
21
-
22
19
use crate::files::get_cache_folder;
23
-
use crate::{
24
-
format_one_arg, run_shell_command, ENV_PROCESSOR_ARCHITECTURE, REQUEST_TIMEOUT_SEC,
25
-
UNAME_COMMAND,
26
-
};
20
+
use crate::{format_one_arg, run_shell_command, REQUEST_TIMEOUT_SEC, UNAME_COMMAND};
21
+
use crate::{ARCH_AMD64, ARCH_ARM64, ARCH_X86, TTL_BROWSERS_SEC, TTL_DRIVERS_SEC, WMIC_COMMAND_OS};
27
22
use std::env;
28
23
use std::env::consts::OS;
29
24
use std::error::Error;
@@ -52,15 +47,22 @@ impl ManagerConfig {
52
47
pub fn default(browser_name: &str, driver_name: &str) -> ManagerConfig {
53
48
let self_os = OS;
54
49
let self_arch = if WINDOWS.is(self_os) {
55
-
env::var(ENV_PROCESSOR_ARCHITECTURE).unwrap_or_default()
50
+
if run_shell_command(self_os, WMIC_COMMAND_OS.to_string())
51
+
.unwrap_or_default()
52
+
.contains("32")
53
+
{
54
+
ARCH_X86.to_string()
55
+
} else {
56
+
ARCH_AMD64.to_string()
57
+
}
56
58
} else {
57
59
let uname_a = format_one_arg(UNAME_COMMAND, "a");
58
60
if run_shell_command(self_os, uname_a)
59
61
.unwrap_or_default()
60
62
.to_ascii_lowercase()
61
-
.contains(ARM64_ARCH)
63
+
.contains(ARCH_ARM64)
62
64
{
63
-
ARM64_ARCH.to_string()
65
+
ARCH_ARM64.to_string()
64
66
} else {
65
67
let uname_m = format_one_arg(UNAME_COMMAND, "m");
66
68
run_shell_command(self_os, uname_m).unwrap_or_default()
@@ -147,9 +149,9 @@ pub enum ARCH {
147
149
impl ARCH {
148
150
pub fn to_str_vector(&self) -> Vec<&str> {
149
151
match self {
150
-
ARCH::X32 => vec!["x86", "i386"],
151
-
ARCH::X64 => vec!["x86_64", "x64", "i686", "amd64", "ia64"],
152
-
ARCH::ARM64 => vec![ARM64_ARCH, "aarch64", "arm"],
152
+
ARCH::X32 => vec![ARCH_X86, "i386"],
153
+
ARCH::X64 => vec![ARCH_AMD64, "x86_64", "x64", "i686", "ia64"],
154
+
ARCH::ARM64 => vec![ARCH_ARM64, "aarch64", "arm"],
153
155
}
154
156
}
155
157
Original file line number Diff line number Diff line change
@@ -29,9 +29,9 @@ use crate::metadata::{
29
29
create_driver_metadata, get_driver_version_from_metadata, get_metadata, write_metadata,
30
30
};
31
31
use crate::{
32
-
create_http_client, format_one_arg, format_two_args, Logger, SeleniumManager, BETA,
32
+
create_http_client, format_one_arg, format_three_args, Logger, SeleniumManager, BETA,
33
33
DASH_DASH_VERSION, DEV, ENV_LOCALAPPDATA, ENV_PROGRAM_FILES, ENV_PROGRAM_FILES_X86, NIGHTLY,
34
-
REG_QUERY, STABLE, WMIC_COMMAND, WMIC_COMMAND_ENV,
34
+
REG_QUERY, REMOVE_X86, STABLE, WMIC_COMMAND, WMIC_COMMAND_ENV,
35
35
};
36
36
37
37
pub const EDGE_NAMES: &[&str] = &["edge", "msedge", "microsoftedge"];
@@ -126,9 +126,19 @@ impl SeleniumManager for EdgeManager {
126
126
Some(path) => {
127
127
browser_path = path;
128
128
commands = vec![
129
-
format_two_args(WMIC_COMMAND_ENV, ENV_PROGRAM_FILES_X86, browser_path),
130
-
format_two_args(WMIC_COMMAND_ENV, ENV_PROGRAM_FILES, browser_path),
131
-
format_two_args(WMIC_COMMAND, ENV_LOCALAPPDATA, browser_path),
129
+
format_three_args(
130
+
WMIC_COMMAND_ENV,
131
+
ENV_PROGRAM_FILES_X86,
132
+
"",
133
+
browser_path,
134
+
),
135
+
format_three_args(
136
+
WMIC_COMMAND_ENV,
137
+
ENV_PROGRAM_FILES,
138
+
REMOVE_X86,
139
+
browser_path,
140
+
),
141
+
format_three_args(WMIC_COMMAND, ENV_LOCALAPPDATA, "", browser_path),
132
142
];
133
143
if !self.is_browser_version_unstable() {
134
144
commands.push(format_one_arg(
Original file line number Diff line number Diff line change
@@ -29,9 +29,9 @@ use crate::metadata::{
29
29
create_driver_metadata, get_driver_version_from_metadata, get_metadata, write_metadata,
30
30
};
31
31
use crate::{
32
-
create_http_client, format_one_arg, format_two_args, Logger, SeleniumManager, BETA,
33
-
DASH_VERSION, DEV, ENV_PROGRAM_FILES, ENV_PROGRAM_FILES_X86, NIGHTLY, STABLE, WMIC_COMMAND,
34
-
WMIC_COMMAND_ENV,
32
+
create_http_client, format_one_arg, format_three_args, Logger, SeleniumManager, BETA,
33
+
DASH_VERSION, DEV, ENV_PROGRAM_FILES, ENV_PROGRAM_FILES_X86, NIGHTLY, REMOVE_X86, STABLE,
34
+
WMIC_COMMAND, WMIC_COMMAND_ENV,
35
35
};
36
36
37
37
pub const FIREFOX_NAME: &str = "firefox";
@@ -126,8 +126,18 @@ impl SeleniumManager for FirefoxManager {
126
126
Some(path) => {
127
127
browser_path = path;
128
128
commands = vec![
129
-
format_two_args(WMIC_COMMAND_ENV, ENV_PROGRAM_FILES, browser_path),
130
-
format_two_args(WMIC_COMMAND_ENV, ENV_PROGRAM_FILES_X86, browser_path),
129
+
format_three_args(
130
+
WMIC_COMMAND_ENV,
131
+
ENV_PROGRAM_FILES,
132
+
REMOVE_X86,
133
+
browser_path,
134
+
),
135
+
format_three_args(
136
+
WMIC_COMMAND_ENV,
137
+
ENV_PROGRAM_FILES_X86,
138
+
"",
139
+
browser_path,
140
+
),
131
141
];
132
142
}
133
143
_ => return None,
Original file line number Diff line number Diff line change
@@ -61,7 +61,9 @@ pub const DEV: &str = "dev";
61
61
pub const CANARY: &str = "canary";
62
62
pub const NIGHTLY: &str = "nightly";
63
63
pub const WMIC_COMMAND: &str = r#"wmic datafile where name='{}' get Version /value"#;
64
-
pub const WMIC_COMMAND_ENV: &str = r#"wmic datafile where name='%{}:\=\\%{}' get Version /value"#;
64
+
pub const WMIC_COMMAND_ENV: &str =
65
+
r#"set PFILES=%{}{}%&& wmic datafile where name='!PFILES:\=\\!{}' get Version /value"#;
66
+
pub const WMIC_COMMAND_OS: &str = r#"wmic os get osarchitecture"#;
65
67
pub const REG_QUERY: &str = r#"REG QUERY {} /v version"#;
66
68
pub const PLIST_COMMAND: &str =
67
69
r#"/usr/libexec/PlistBuddy -c "print :CFBundleShortVersionString" {}/Contents/Info.plist"#;
@@ -70,6 +72,10 @@ pub const DASH_DASH_VERSION: &str = "{} --version";
70
72
pub const ENV_PROGRAM_FILES: &str = "PROGRAMFILES";
71
73
pub const ENV_PROGRAM_FILES_X86: &str = "PROGRAMFILES(X86)";
72
74
pub const ENV_LOCALAPPDATA: &str = "LOCALAPPDATA";
75
+
pub const REMOVE_X86: &str = ": (x86)=";
76
+
pub const ARCH_X86: &str = "x86";
77
+
pub const ARCH_AMD64: &str = "amd64";
78
+
pub const ARCH_ARM64: &str = "arm64";
73
79
pub const ENV_PROCESSOR_ARCHITECTURE: &str = "PROCESSOR_ARCHITECTURE";
74
80
pub const FALLBACK_RETRIES: u32 = 5;
75
81
pub const WHERE_COMMAND: &str = "where {}";
@@ -528,7 +534,7 @@ pub fn create_http_client(timeout: u64, proxy: String) -> Result<Client, String>
528
534
529
535
pub fn run_shell_command(os: &str, command: String) -> Result<String, Box<dyn Error>> {
530
536
let (shell, flag) = if WINDOWS.is(os) {
531
-
("cmd", "/C")
537
+
("cmd", "/v/c")
532
538
} else {
533
539
("sh", "-c")
534
540
};
@@ -545,8 +551,11 @@ pub fn format_one_arg(string: &str, arg1: &str) -> String {
545
551
string.replacen("{}", arg1, 1)
546
552
}
547
553
548
-
pub fn format_two_args(string: &str, arg1: &str, arg2: &str) -> String {
549
-
string.replacen("{}", arg1, 1).replacen("{}", arg2, 2)
554
+
pub fn format_three_args(string: &str, arg1: &str, arg2: &str, arg3: &str) -> String {
555
+
string
556
+
.replacen("{}", arg1, 1)
557
+
.replacen("{}", arg2, 1)
558
+
.replacen("{}", arg3, 1)
550
559
}
551
560
552
561
// ----------------------------------------------------------
Original file line number Diff line number Diff line change
@@ -155,12 +155,14 @@ pub fn write_metadata(metadata: &Metadata, log: &Logger) {
155
155
.unwrap();
156
156
}
157
157
158
-
pub fn clear_metadata(log: &Logger){
158
+
pub fn clear_metadata(log: &Logger) {
159
159
let metadata_path = get_metadata_path();
160
-
log.trace(format!("Deleting metadata file {}", metadata_path.display()));
161
-
match fs::remove_file(metadata_path){
160
+
log.trace(format!(
161
+
"Deleting metadata file {}",
162
+
metadata_path.display()
163
+
));
164
+
match fs::remove_file(metadata_path) {
162
165
Ok(()) => log.trace("Metadata file was deleted".to_string()),
163
-
Err(err) => log.warn(
164
-
format!("Metadata file deleting invoked an error: {}",err)),
166
+
Err(err) => log.warn(format!("Metadata file deleting invoked an error: {}", err)),
165
167
}
166
168
}
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4