Skip to content

Commit c58be8d

Browse files
andholpil
authored andcommitted
refactor(dependencies): use enum (CheckMajorVersions) instead of boolean ♻️
1 parent d2071af commit c58be8d

File tree

5 files changed

+32
-18
lines changed

5 files changed

+32
-18
lines changed

compiler-cli/src/add.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use gleam_core::{
88

99
use crate::{
1010
cli,
11-
dependencies::{UseManifest, parse_gleam_add_specifier},
11+
dependencies::{self, UseManifest, parse_gleam_add_specifier},
1212
fs,
1313
};
1414

@@ -27,13 +27,13 @@ pub fn command(paths: &ProjectPaths, packages_to_add: Vec<String>, dev: bool) ->
2727

2828
// Insert the new packages into the manifest and perform dependency
2929
// resolution to determine suitable versions
30-
let manifest = crate::dependencies::download(
30+
let manifest = dependencies::download(
3131
paths,
3232
cli::Reporter::new(),
3333
Some((new_package_requirements.clone(), dev)),
3434
Vec::new(),
35-
UseManifest::Yes,
36-
false,
35+
dependencies::UseManifest::Yes,
36+
dependencies::CheckMajorVersions::No,
3737
)?;
3838

3939
// Read gleam.toml and manifest.toml so we can insert new deps into it

compiler-cli/src/build.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,19 @@ use gleam_core::{
1010

1111
use crate::{
1212
build_lock::BuildLock,
13-
cli,
14-
dependencies::UseManifest,
13+
cli, dependencies,
1514
fs::{self, ConsoleWarningEmitter},
1615
};
1716

1817
pub fn download_dependencies(paths: &ProjectPaths, telemetry: impl Telemetry) -> Result<Manifest> {
19-
crate::dependencies::download(paths, telemetry, None, Vec::new(), UseManifest::Yes)
18+
crate::dependencies::download(
19+
paths,
20+
telemetry,
21+
None,
22+
Vec::new(),
23+
dependencies::UseManifest::Yes,
24+
dependencies::CheckMajorVersions::No,
25+
)
2026
}
2127

2228
pub fn main(paths: &ProjectPaths, options: Options, manifest: Manifest) -> Result<Built> {

compiler-cli/src/dependencies.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,14 @@ static UTF8_SYMBOLS: Symbols = Symbols {
5252
right: "─",
5353
};
5454

55+
/// When set to `Yes`, the cli will check for major version updates of direct dependencies and
56+
/// print them to the console if the major versions are not upgradeable due to constraints.
57+
#[derive(Debug, Clone, Copy)]
58+
pub enum CheckMajorVersions {
59+
Yes,
60+
No,
61+
}
62+
5563
pub fn list(paths: &ProjectPaths) -> Result<()> {
5664
let (_, manifest) = get_manifest_details(paths)?;
5765
list_manifest_packages(std::io::stdout(), manifest)
@@ -217,7 +225,7 @@ pub fn update(paths: &ProjectPaths, packages: Vec<String>) -> Result<()> {
217225
None,
218226
packages.into_iter().map(EcoString::from).collect(),
219227
use_manifest,
220-
true,
228+
CheckMajorVersions::Yes,
221229
)?;
222230

223231
Ok(())
@@ -355,7 +363,7 @@ pub fn download<Telem: Telemetry>(
355363
// packages being resolved (not the locked ones).
356364
use_manifest: UseManifest,
357365
// If true we check for major version updates and print them to the console.
358-
check_major_versions: bool,
366+
check_major_versions: CheckMajorVersions,
359367
) -> Result<Manifest> {
360368
let mode = Mode::Dev;
361369

@@ -646,7 +654,7 @@ struct DependencyManager<Telem: Telemetry, P: dependency::PackageFetcher> {
646654
mode: Mode,
647655
use_manifest: UseManifest,
648656
telemetry: Telem,
649-
check_major_versions: bool,
657+
check_major_versions: CheckMajorVersions,
650658
}
651659

652660
impl<Telem: Telemetry, P> DependencyManager<Telem, P>
@@ -660,7 +668,7 @@ where
660668
mode: Mode::Dev,
661669
use_manifest: UseManifest::No,
662670
telemetry,
663-
check_major_versions: false,
671+
check_major_versions: CheckMajorVersions::No,
664672
}
665673
}
666674

@@ -674,7 +682,7 @@ where
674682
self
675683
}
676684

677-
fn with_check_major_versions(mut self, check_major_versions: bool) -> Self {
685+
fn with_check_major_versions(mut self, check_major_versions: CheckMajorVersions) -> Self {
678686
self.check_major_versions = check_major_versions;
679687
self
680688
}
@@ -788,7 +796,7 @@ where
788796
}
789797
LocalPackages::from_manifest(&manifest).write_to_disc(paths)?;
790798

791-
if self.check_major_versions {
799+
if let CheckMajorVersions::Yes = self.check_major_versions {
792800
let major_versions_available =
793801
dependency::check_for_major_version_updates(&manifest, &self.package_fetcher);
794802
if !major_versions_available.is_empty() {

compiler-cli/src/fs.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use std::{
2222

2323
use camino::{ReadDirUtf8, Utf8Path, Utf8PathBuf};
2424

25-
use crate::{dependencies::UseManifest, lsp::LspLocker};
25+
use crate::{dependencies, lsp::LspLocker};
2626

2727
#[cfg(test)]
2828
mod tests;
@@ -246,13 +246,13 @@ impl MakeLocker for ProjectIO {
246246

247247
impl DownloadDependencies for ProjectIO {
248248
fn download_dependencies(&self, paths: &ProjectPaths) -> Result<Manifest> {
249-
crate::dependencies::download(
249+
dependencies::download(
250250
paths,
251251
NullTelemetry,
252252
None,
253253
Vec::new(),
254-
UseManifest::Yes,
255-
false,
254+
dependencies::UseManifest::Yes,
255+
dependencies::CheckMajorVersions::No,
256256
)
257257
}
258258
}

compiler-cli/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -782,7 +782,7 @@ fn download_dependencies(paths: &ProjectPaths) -> Result<()> {
782782
None,
783783
Vec::new(),
784784
UseManifest::Yes,
785-
true,
785+
dependencies::CheckMajorVersions::Yes,
786786
)?;
787787
Ok(())
788788
}

0 commit comments

Comments
 (0)