Skip to content

Commit

Permalink
chore(nx-cloud): add feature flag to nx login (nrwl#27698)
Browse files Browse the repository at this point in the history
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

- nx login and logout aliases point toward nx-cloud login and logout
- when you connect a new workspace, by default nxCloudId will be added
to your nx.json

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

- removed documentation and references to nx login and logout aliases
- when you connect a new workspace, by default nxCloudAccessToken will
be added to your nx.json


## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
  • Loading branch information
lourw authored Sep 3, 2024
1 parent 72e3e89 commit 3b0fd38
Show file tree
Hide file tree
Showing 13 changed files with 87 additions and 187 deletions.
25 changes: 0 additions & 25 deletions docs/generated/cli/login.md

This file was deleted.

24 changes: 0 additions & 24 deletions docs/generated/cli/logout.md

This file was deleted.

16 changes: 0 additions & 16 deletions docs/generated/manifests/menus.json
Original file line number Diff line number Diff line change
Expand Up @@ -8712,22 +8712,6 @@
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "login",
"path": "/nx-api/nx/documents/login",
"id": "login",
"isExternal": false,
"children": [],
"disableCollapsible": false
},
{
"name": "logout",
"path": "/nx-api/nx/documents/logout",
"id": "logout",
"isExternal": false,
"children": [],
"disableCollapsible": false
}
],
"isExternal": false,
Expand Down
22 changes: 0 additions & 22 deletions docs/generated/manifests/nx-api.json
Original file line number Diff line number Diff line change
Expand Up @@ -1967,28 +1967,6 @@
"path": "/nx-api/nx/documents/add",
"tags": [],
"originalFilePath": "generated/cli/add"
},
"/nx-api/nx/documents/login": {
"id": "login",
"name": "login",
"description": "The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.",
"file": "generated/packages/nx/documents/login",
"itemList": [],
"isExternal": false,
"path": "/nx-api/nx/documents/login",
"tags": [],
"originalFilePath": "generated/cli/login"
},
"/nx-api/nx/documents/logout": {
"id": "logout",
"name": "logout",
"description": "The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.",
"file": "generated/packages/nx/documents/logout",
"itemList": [],
"isExternal": false,
"path": "/nx-api/nx/documents/logout",
"tags": [],
"originalFilePath": "generated/cli/logout"
}
},
"root": "/packages/nx",
Expand Down
22 changes: 0 additions & 22 deletions docs/generated/packages-metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -1946,28 +1946,6 @@
"path": "nx/documents/add",
"tags": [],
"originalFilePath": "generated/cli/add"
},
{
"id": "login",
"name": "login",
"description": "The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.",
"file": "generated/packages/nx/documents/login",
"itemList": [],
"isExternal": false,
"path": "nx/documents/login",
"tags": [],
"originalFilePath": "generated/cli/login"
},
{
"id": "logout",
"name": "logout",
"description": "The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.",
"file": "generated/packages/nx/documents/logout",
"itemList": [],
"isExternal": false,
"path": "nx/documents/logout",
"tags": [],
"originalFilePath": "generated/cli/logout"
}
],
"executors": [
Expand Down
25 changes: 0 additions & 25 deletions docs/generated/packages/nx/documents/login.md

This file was deleted.

24 changes: 0 additions & 24 deletions docs/generated/packages/nx/documents/logout.md

This file was deleted.

10 changes: 0 additions & 10 deletions docs/map.json
Original file line number Diff line number Diff line change
Expand Up @@ -2110,16 +2110,6 @@
"name": "add",
"id": "add",
"file": "generated/cli/add"
},
{
"name": "login",
"id": "login",
"file": "generated/cli/login"
},
{
"name": "logout",
"id": "logout",
"file": "generated/cli/logout"
}
]
},
Expand Down
2 changes: 0 additions & 2 deletions docs/shared/reference/sitemap.md
Original file line number Diff line number Diff line change
Expand Up @@ -559,8 +559,6 @@
- [view-logs](/nx-api/nx/documents/view-logs)
- [release](/nx-api/nx/documents/release)
- [add](/nx-api/nx/documents/add)
- [login](/nx-api/nx/documents/login)
- [logout](/nx-api/nx/documents/logout)
- [executors](/nx-api/nx/executors)
- [noop](/nx-api/nx/executors/noop)
- [run-commands](/nx-api/nx/executors/run-commands)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ describe('connect-to-nx-cloud', () => {
expect(
withEnvironmentVariables(
{
NX_CLOUD_ACCESS_TOKEN: null,
NX_ENABLE_LOGIN: null,
},
() =>
onlyDefaultRunnerIsUsed({
Expand Down
2 changes: 1 addition & 1 deletion packages/nx/src/command-line/login/command-object.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { withVerbose } from '../../command-line/yargs-utils/shared-options';

export const yargsLoginCommand: CommandModule = {
command: 'login [nxCloudUrl]',
describe: 'Login to Nx Cloud',
describe: false,
builder: (yargs) =>
withVerbose(
yargs.positional('nxCloudUrl', {
Expand Down
2 changes: 1 addition & 1 deletion packages/nx/src/command-line/logout/command-object.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { withVerbose } from '../../command-line/yargs-utils/shared-options';

export const yargsLogoutCommand: CommandModule = {
command: 'logout',
describe: 'Logout from Nx Cloud',
describe: false,
builder: (yargs) => withVerbose(yargs),
handler: async (args: any) => {
process.exit(await (await import('./logout')).logoutHandler(args));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,28 @@ function getNxInitDate(): string | null {
}
}

async function createNxCloudWorkspaceV1(
workspaceName: string,
installationSource: string,
nxInitDate: string | null
): Promise<{ token: string; url: string }> {
const apiUrl = getCloudUrl();
const response = await require('axios').post(
`${apiUrl}/nx-cloud/create-org-and-workspace`,
{
workspaceName,
installationSource,
nxInitDate,
}
);

if (response.data.message) {
throw new Error(response.data.message);
}

return response.data;
}

async function createNxCloudWorkspaceV2(
workspaceName: string,
installationSource: string,
Expand Down Expand Up @@ -103,6 +125,29 @@ export interface ConnectToNxCloudOptions {
generateToken?: boolean;
}

function addNxCloudOptionsToNxJson(
tree: Tree,
token: string,
directory: string = ''
) {
const nxJsonPath = join(directory, 'nx.json');
if (tree.exists(nxJsonPath)) {
updateJson<NxJsonConfiguration>(
tree,
join(directory, 'nx.json'),
(nxJson) => {
const overrideUrl = process.env.NX_CLOUD_API || process.env.NRWL_API;
if (overrideUrl) {
nxJson.nxCloudUrl = overrideUrl;
}
nxJson.nxCloudAccessToken = token;

return nxJson;
}
);
}
}

function addNxCloudIdToNxJson(
tree: Tree,
nxCloudId: string,
Expand Down Expand Up @@ -140,6 +185,12 @@ export async function connectToNxCloud(
const isGitHubDetected =
schema.github ?? (await repoUsesGithub(schema.github));

let responseFromCreateNxCloudWorkspaceV1:
| {
token: string;
}
| undefined;

let responseFromCreateNxCloudWorkspaceV2:
| {
nxCloudId: string;
Expand All @@ -157,22 +208,41 @@ export async function connectToNxCloud(
)
return null;

responseFromCreateNxCloudWorkspaceV2 = await createNxCloudWorkspaceV2(
getRootPackageName(tree),
schema.installationSource,
getNxInitDate()
);
if (process.env.NX_ENABLE_LOGIN === 'true') {
responseFromCreateNxCloudWorkspaceV2 = await createNxCloudWorkspaceV2(
getRootPackageName(tree),
schema.installationSource,
getNxInitDate()
);

addNxCloudIdToNxJson(
tree,
responseFromCreateNxCloudWorkspaceV2?.nxCloudId,
schema.directory
);
addNxCloudIdToNxJson(
tree,
responseFromCreateNxCloudWorkspaceV2?.nxCloudId,
schema.directory
);

await formatChangedFilesWithPrettierIfAvailable(tree, {
silent: schema.hideFormatLogs,
});
return responseFromCreateNxCloudWorkspaceV2.nxCloudId;
await formatChangedFilesWithPrettierIfAvailable(tree, {
silent: schema.hideFormatLogs,
});
return responseFromCreateNxCloudWorkspaceV2.nxCloudId;
} else {
responseFromCreateNxCloudWorkspaceV1 = await createNxCloudWorkspaceV1(
getRootPackageName(tree),
schema.installationSource,
getNxInitDate()
);

addNxCloudOptionsToNxJson(
tree,
responseFromCreateNxCloudWorkspaceV1?.token,
schema.directory
);

await formatChangedFilesWithPrettierIfAvailable(tree, {
silent: schema.hideFormatLogs,
});
return responseFromCreateNxCloudWorkspaceV1.token;
}
}

async function connectToNxCloudGenerator(
Expand Down

0 comments on commit 3b0fd38

Please sign in to comment.