@@ -12,7 +12,7 @@ import { StaticHttpProvider } from "./app/static"
1212import { UpdateHttpProvider } from "./app/update"
1313import { VscodeHttpProvider } from "./app/vscode"
1414import { Args , bindAddrFromAllSources , optionDescriptions , parse , readConfigFile , setDefaults } from "./cli"
15- import { coderCloudExpose , coderCloudProxy } from "./coder-cloud"
15+ import { coderCloudLink , coderCloudProxy } from "./coder-cloud"
1616import { AuthType , HttpServer , HttpServerOptions } from "./http"
1717import { loadPlugins } from "./plugin"
1818import { generateCertificate , hash , humanPath , open } from "./util"
@@ -36,6 +36,15 @@ const version = pkg.version || "development"
3636const commit = pkg . commit || "development"
3737
3838const main = async ( args : Args , cliArgs : Args , configArgs : Args ) : Promise < void > => {
39+ if ( args [ "coder-link" ] ) {
40+ // If we're being exposed to the cloud, we listen on a random address.
41+ args = {
42+ ...args ,
43+ host : "localhost" ,
44+ port : 0 ,
45+ }
46+ }
47+
3948 if ( ! args . auth ) {
4049 args = {
4150 ...args ,
@@ -131,6 +140,22 @@ const main = async (args: Args, cliArgs: Args, configArgs: Args): Promise<void>
131140 await open ( openAddress ) . catch ( console . error )
132141 logger . info ( `Opened ${ openAddress } ` )
133142 }
143+
144+ if ( args [ "coder-link" ] ) {
145+ if ( ! args [ "coder-link" ] . value ) {
146+ logger . error ( "You must pass a name to link with coder cloud. See --help" )
147+ process . exit ( 1 )
148+ }
149+
150+ logger . info ( `linking code-server to the cloud with name ${ args [ "coder-link" ] . value } ` )
151+
152+ try {
153+ await coderCloudLink ( args [ "coder-link" ] . value )
154+ } catch ( err ) {
155+ logger . error ( err . message )
156+ process . exit ( 1 )
157+ }
158+ }
134159}
135160
136161async function entry ( ) : Promise < void > {
@@ -191,20 +216,6 @@ async function entry(): Promise<void> {
191216 process . exit ( 1 )
192217 } )
193218 vscode . on ( "exit" , ( code ) => process . exit ( code || 0 ) )
194- } else if ( args [ "expose" ] ) {
195- logger . debug ( "exposing code-server via the coder-cloud agent" )
196-
197- if ( ! args [ "expose" ] . value ) {
198- logger . error ( "You must pass a name to expose with coder cloud. See --help" )
199- process . exit ( 1 )
200- }
201-
202- try {
203- await coderCloudExpose ( args [ "expose" ] . value )
204- } catch ( err ) {
205- logger . error ( err . message )
206- process . exit ( 1 )
207- }
208219 } else if ( process . env . VSCODE_IPC_HOOK_CLI ) {
209220 const pipeArgs : OpenCommandPipeArgs = {
210221 type : "open" ,
0 commit comments