mirror of
				https://github.com/tailscale/tailscale.git
				synced 2025-11-04 10:11:18 +01:00 
			
		
		
		
	I'm not saying it works, but it compiles. Updates #5794 Change-Id: I2f3c99732e67fe57a05edb25b758d083417f083e Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright (c) Tailscale Inc & AUTHORS
 | 
						|
// SPDX-License-Identifier: BSD-3-Clause
 | 
						|
 | 
						|
//go:build !plan9
 | 
						|
 | 
						|
// The tsconnect command builds and serves the static site that is generated for
 | 
						|
// the Tailscale Connect JS/WASM client. Can be run in 3 modes:
 | 
						|
//   - dev: builds the site and serves it. JS and CSS changes can be picked up
 | 
						|
//     with a reload.
 | 
						|
//   - build: builds the site and writes it to dist/
 | 
						|
//   - serve: serves the site from dist/ (embedded in the binary)
 | 
						|
package main // import "tailscale.com/cmd/tsconnect"
 | 
						|
 | 
						|
import (
 | 
						|
	"flag"
 | 
						|
	"fmt"
 | 
						|
	"log"
 | 
						|
	"os"
 | 
						|
)
 | 
						|
 | 
						|
var (
 | 
						|
	addr            = flag.String("addr", ":9090", "address to listen on")
 | 
						|
	distDir         = flag.String("distdir", "./dist", "path of directory to place build output in")
 | 
						|
	pkgDir          = flag.String("pkgdir", "./pkg", "path of directory to place NPM package build output in")
 | 
						|
	yarnPath        = flag.String("yarnpath", "", "path yarn executable used to install JavaScript dependencies")
 | 
						|
	fastCompression = flag.Bool("fast-compression", false, "Use faster compression when building, to speed up build time. Meant to iterative/debugging use only.")
 | 
						|
	devControl      = flag.String("dev-control", "", "URL of a development control server to be used with dev. If provided without specifying dev, an error will be returned.")
 | 
						|
	rootDir         = flag.String("rootdir", "", "Root directory of repo. If not specified, will be inferred from the cwd.")
 | 
						|
)
 | 
						|
 | 
						|
func main() {
 | 
						|
	flag.Usage = usage
 | 
						|
	flag.Parse()
 | 
						|
	if len(flag.Args()) != 1 {
 | 
						|
		flag.Usage()
 | 
						|
	}
 | 
						|
 | 
						|
	switch flag.Arg(0) {
 | 
						|
	case "dev":
 | 
						|
		runDev()
 | 
						|
	case "dev-pkg":
 | 
						|
		runDevPkg()
 | 
						|
	case "build":
 | 
						|
		runBuild()
 | 
						|
	case "build-pkg":
 | 
						|
		runBuildPkg()
 | 
						|
	case "serve":
 | 
						|
		runServe()
 | 
						|
	default:
 | 
						|
		log.Printf("Unknown command: %s", flag.Arg(0))
 | 
						|
		flag.Usage()
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func usage() {
 | 
						|
	fmt.Fprintf(os.Stderr, `
 | 
						|
usage: tsconnect {dev|build|serve}
 | 
						|
`[1:])
 | 
						|
 | 
						|
	flag.PrintDefaults()
 | 
						|
	fmt.Fprintf(os.Stderr, `
 | 
						|
 | 
						|
tsconnect implements development/build/serving workflows for Tailscale Connect.
 | 
						|
It can be invoked with one of three subcommands:
 | 
						|
 | 
						|
- dev: Run in development mode, allowing JS and CSS changes to be picked up without a rebuilt or restart.
 | 
						|
- build: Run in production build mode (generating static assets)
 | 
						|
- serve: Run in production serve mode (serving static assets)
 | 
						|
`[1:])
 | 
						|
	os.Exit(2)
 | 
						|
}
 |