@@ -3,20 +3,19 @@ import { Logger } from "npmlog";
33import { loginUsing } from "../app/login" ;
44import { partialApply } from "../domain/fp-utils" ;
55import type { DebugLog } from "../domain/logging" ;
6- import { coerceRegistryUrl } from "../domain/registry-url" ;
76import { getHomePathFromEnv } from "../domain/special-paths" ;
87import { getUserUpmConfigPathFor } from "../domain/upm-config" ;
98import type { ReadTextFile , WriteTextFile } from "../io/fs" ;
109import type { GetAuthToken } from "../io/registry" ;
1110import { withErrorLogger } from "./error-logging" ;
12- import { GlobalOptions } from "./options" ;
13- import { parseEnvUsing } from "./parse-env" ;
11+ import { systemUserOpt } from "./opt-system-user" ;
1412import {
1513 promptEmail ,
1614 promptPassword ,
1715 promptRegistryUrl ,
1816 promptUsername ,
1917} from "./prompts" ;
18+ import { mustBeRegistryUrl } from "./validators" ;
2019
2120const usernameOpt = new Option ( "-u, --username <username>" , "username" ) . default (
2221 null
@@ -30,6 +29,13 @@ const emailOpt = new Option("-e, --email <email>", "email address").default(
3029 null
3130) ;
3231
32+ const registryOpt = new Option (
33+ "-r, --registry <url>" ,
34+ "url of registry into which to login"
35+ )
36+ . argParser ( mustBeRegistryUrl )
37+ . default ( null ) ;
38+
3339const basicAuthOpt = new Option (
3440 "--basic-auth" ,
3541 "use basic authentication instead of token"
@@ -67,44 +73,32 @@ export function makeLoginCmd(
6773 . addOption ( emailOpt )
6874 . addOption ( basicAuthOpt )
6975 . addOption ( alwaysAuthOpt )
76+ . addOption ( registryOpt )
77+ . addOption ( systemUserOpt )
7078 . description ( "authenticate with a scoped registry" )
7179 . action (
72- withErrorLogger ( log , async function ( loginOptions , cmd ) {
73- const globalOptions = cmd . optsWithGlobals < GlobalOptions > ( ) ;
74-
75- // parse env
76- const env = await parseEnvUsing (
77- log ,
78- process . env ,
79- process . cwd ( ) ,
80- globalOptions
81- ) ;
82-
80+ withErrorLogger ( log , async function ( options ) {
8381 const homePath = getHomePathFromEnv ( process . env ) ;
8482 const upmConfigPath = getUserUpmConfigPathFor (
8583 process . env ,
8684 homePath ,
87- env . systemUser
85+ options . systemUser
8886 ) ;
8987
9088 // query parameters
91- const username = loginOptions . username ?? ( await promptUsername ( ) ) ;
92- const password = loginOptions . password ?? ( await promptPassword ( ) ) ;
93- const email = loginOptions . email ?? ( await promptEmail ( ) ) ;
94-
95- const loginRegistry =
96- globalOptions . registry !== undefined
97- ? coerceRegistryUrl ( globalOptions . registry )
98- : await promptRegistryUrl ( ) ;
89+ const username = options . username ?? ( await promptUsername ( ) ) ;
90+ const password = options . password ?? ( await promptPassword ( ) ) ;
91+ const email = options . email ?? ( await promptEmail ( ) ) ;
92+ const loginRegistry = options . registry ?? ( await promptRegistryUrl ( ) ) ;
9993
10094 await login (
10195 username ,
10296 password ,
10397 email ,
104- loginOptions . alwaysAuth ,
98+ options . alwaysAuth ,
10599 loginRegistry ,
106100 upmConfigPath ,
107- loginOptions . basicAuth ? "basic" : "token"
101+ options . basicAuth ? "basic" : "token"
108102 ) ;
109103
110104 log . notice ( "auth" , `you are authenticated as '${ username } '` ) ;
0 commit comments