@@ -52,7 +52,8 @@ defmodule Opsm.CLI do
5252 native: :boolean ,
5353 dev: :boolean ,
5454 apply: :boolean ,
55- port: :integer
55+ port: :integer ,
56+ sustainability: :boolean
5657 ] ,
5758 aliases: [
5859 h: :help ,
@@ -61,7 +62,8 @@ defmodule Opsm.CLI do
6162 q: :quiet ,
6263 n: :dry_run ,
6364 g: :global ,
64- D: :dev
65+ D: :dev ,
66+ s: :sustainability
6567 ]
6668 )
6769
@@ -395,19 +397,21 @@ defmodule Opsm.CLI do
395397 native? = Keyword . get ( opts , :native , false )
396398 global? = Keyword . get ( opts , :global , false )
397399 dev? = Keyword . get ( opts , :dev , false )
400+ sustainability? = Keyword . get ( opts , :sustainability , false )
398401 scope = cond do
399402 Keyword . get ( opts , :systemwide ) -> "systemwide"
400403 true -> "user"
401404 end
402405
403406 if dry_run? , do: IO . puts ( "[DRY RUN]" )
407+ if sustainability? , do: IO . puts ( "[SUSTAINABILITY] Preferring packages with higher sustainability scores" )
404408
405409 if forth do
406410 # Specific registry requested
407- do_install_from_forth ( forth , package , version , allow , scope , dry_run? , json? , native? , global? , dev? )
411+ do_install_from_forth ( forth , package , version , allow , scope , dry_run? , json? , native? , global? , dev? , sustainability? )
408412 else
409413 # No registry specified - discover across all
410- do_install_discover ( package , version , allow , scope , dry_run? , json? )
414+ do_install_discover ( package , version , allow , scope , dry_run? , json? , sustainability? )
411415 end
412416 end
413417
@@ -428,7 +432,8 @@ defmodule Opsm.CLI do
428432 scope: scope ,
429433 native: Keyword . get ( opts , :native , false ) ,
430434 global: Keyword . get ( opts , :global , false ) ,
431- dev: Keyword . get ( opts , :dev , false )
435+ dev: Keyword . get ( opts , :dev , false ) ,
436+ sustainability_preference: Keyword . get ( opts , :sustainability , false )
432437 )
433438
434439 print_smart_results ( results )
@@ -1534,7 +1539,7 @@ defmodule Opsm.CLI do
15341539
15351540 # Install helpers
15361541
1537- defp do_install_from_forth ( forth , package , version , _allow , scope , dry_run? , _json? , native? , global? , dev? ) do
1542+ defp do_install_from_forth ( forth , package , version , _allow , scope , dry_run? , _json? , native? , global? , dev? , sustainability? \\ false ) do
15381543 alias Opsm.Package.Installer
15391544 alias Opsm.Package.Native
15401545
@@ -1573,7 +1578,8 @@ defmodule Opsm.CLI do
15731578 case Installer . install ( forth_atom , package ,
15741579 version: version ,
15751580 scope: scope_atom ,
1576- dry_run: dry_run? ) do
1581+ dry_run: dry_run? ,
1582+ sustainability_preference: sustainability? ) do
15771583 { :ok , _ } ->
15781584 System . halt ( 0 )
15791585
@@ -1584,7 +1590,7 @@ defmodule Opsm.CLI do
15841590 end
15851591 end
15861592
1587- defp do_install_discover ( package , version , _allow , _scope , _dry_run? , json? ) do
1593+ defp do_install_discover ( package , version , _allow , _scope , _dry_run? , json? , _sustainability? ) do
15881594 alias Opsm.Registries.Registry
15891595
15901596 IO . puts ( "Discovering: #{ package } " )
0 commit comments