Skip to content

Commit a734a0f

Browse files
committed
feat: add unlink command
1 parent 53add24 commit a734a0f

File tree

3 files changed

+45
-1
lines changed

3 files changed

+45
-1
lines changed

cli/commands/unlink.mjs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { consola } from 'consola'
2+
import { colors } from 'consola/utils'
3+
import { isCancel, confirm } from '@clack/prompts'
4+
import { defineCommand, runCommand } from 'citty'
5+
import { fetchUser, projectPath, writeProjectConfig, loadProjectConfig, fetchProject } from '../utils/index.mjs'
6+
import login from './login.mjs'
7+
8+
export default defineCommand({
9+
meta: {
10+
name: 'link',
11+
description: 'Unlink a local directory from a NuxtHub project.',
12+
},
13+
async setup() {
14+
let user = await fetchUser()
15+
if (!user) {
16+
consola.info('Please login to unlink your project.')
17+
await runCommand(login, {})
18+
user = await fetchUser()
19+
}
20+
let project = await fetchProject()
21+
if (!project) {
22+
consola.warn('This directory is not linked to any NuxtHub project.')
23+
return
24+
}
25+
const shouldUnlink = await confirm({
26+
message: `Do you want to unlink ${colors.blue(projectPath())} from NuxtHub project ${colors.blue(project.slug)}?`,
27+
initialValue: false
28+
})
29+
if (!shouldUnlink || isCancel(shouldUnlink)) {
30+
return consola.log('Cancelled.')
31+
}
32+
33+
const config = loadProjectConfig()
34+
delete config.hub.projectId
35+
writeProjectConfig(config)
36+
37+
consola.success(`Project \`${project.slug}\` unlinked.`)
38+
},
39+
})

cli/index.mjs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { defineCommand, runMain } from 'citty'
33
import consola from 'consola'
44
import { colors } from 'consola/utils'
55
import link from './commands/link.mjs'
6+
import unlink from './commands/unlink.mjs'
67
import login from './commands/login.mjs'
78
import logout from './commands/logout.mjs'
89
import whoami from './commands/whoami.mjs'
@@ -21,6 +22,7 @@ const main = defineCommand({
2122
subCommands: {
2223
deploy,
2324
link,
25+
unlink,
2426
login,
2527
logout,
2628
whoami

cli/utils/config.mjs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import isDocker from 'is-docker'
2-
import { updateUser, readUser, writeUser, read, update } from 'rc9'
2+
import { updateUser, readUser, writeUser, read, update, write } from 'rc9'
33
import { homedir } from 'os'
44

55
export const INITIAL_CONFIG = loadUserConfig()
@@ -20,6 +20,9 @@ export function loadProjectConfig () {
2020
export function updateProjectConfig (config) {
2121
return update(config, '.nuxtrc')
2222
}
23+
export function writeProjectConfig (config) {
24+
return write(config, '.nuxtrc')
25+
}
2326

2427
export function isHeadless() {
2528
return isDocker() || Boolean(process.env.SSH_CLIENT || process.env.SSH_TTY)

0 commit comments

Comments
 (0)