mirror of
				https://github.com/tailscale/tailscale.git
				synced 2025-11-04 02:01:14 +01:00 
			
		
		
		
	I'm not saying it works, but it compiles. Updates #5794 Change-Id: I2f3c99732e67fe57a05edb25b758d083417f083e Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
		
			
				
	
	
		
			100 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright (c) Tailscale Inc & AUTHORS
 | 
						|
// SPDX-License-Identifier: BSD-3-Clause
 | 
						|
 | 
						|
//go:build !plan9
 | 
						|
 | 
						|
package main
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/json"
 | 
						|
	"fmt"
 | 
						|
	"log"
 | 
						|
	"os"
 | 
						|
	"path"
 | 
						|
 | 
						|
	"github.com/tailscale/hujson"
 | 
						|
	"tailscale.com/util/precompress"
 | 
						|
	"tailscale.com/version"
 | 
						|
)
 | 
						|
 | 
						|
func runBuildPkg() {
 | 
						|
	buildOptions, err := commonPkgSetup(prodMode)
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Cannot setup: %v", err)
 | 
						|
	}
 | 
						|
 | 
						|
	log.Printf("Linting...\n")
 | 
						|
	if err := runYarn("lint"); err != nil {
 | 
						|
		log.Fatalf("Linting failed: %v", err)
 | 
						|
	}
 | 
						|
 | 
						|
	if err := cleanDir(*pkgDir); err != nil {
 | 
						|
		log.Fatalf("Cannot clean %s: %v", *pkgDir, err)
 | 
						|
	}
 | 
						|
 | 
						|
	buildOptions.Write = true
 | 
						|
	buildOptions.MinifyWhitespace = true
 | 
						|
	buildOptions.MinifyIdentifiers = true
 | 
						|
	buildOptions.MinifySyntax = true
 | 
						|
 | 
						|
	runEsbuild(*buildOptions)
 | 
						|
 | 
						|
	if err := precompressWasm(); err != nil {
 | 
						|
		log.Fatalf("Could not pre-recompress wasm: %v", err)
 | 
						|
	}
 | 
						|
 | 
						|
	log.Printf("Generating types...\n")
 | 
						|
	if err := runYarn("pkg-types"); err != nil {
 | 
						|
		log.Fatalf("Type generation failed: %v", err)
 | 
						|
	}
 | 
						|
 | 
						|
	if err := updateVersion(); err != nil {
 | 
						|
		log.Fatalf("Cannot update version: %v", err)
 | 
						|
	}
 | 
						|
 | 
						|
	if err := copyReadme(); err != nil {
 | 
						|
		log.Fatalf("Cannot copy readme: %v", err)
 | 
						|
	}
 | 
						|
 | 
						|
	log.Printf("Built package version %s", version.Long())
 | 
						|
}
 | 
						|
 | 
						|
func precompressWasm() error {
 | 
						|
	log.Printf("Pre-compressing main.wasm...\n")
 | 
						|
	return precompress.Precompress(path.Join(*pkgDir, "main.wasm"), precompress.Options{
 | 
						|
		FastCompression: *fastCompression,
 | 
						|
	})
 | 
						|
}
 | 
						|
 | 
						|
func updateVersion() error {
 | 
						|
	packageJSONBytes, err := os.ReadFile("package.json.tmpl")
 | 
						|
	if err != nil {
 | 
						|
		return fmt.Errorf("Could not read package.json: %w", err)
 | 
						|
	}
 | 
						|
 | 
						|
	var packageJSON map[string]any
 | 
						|
	packageJSONBytes, err = hujson.Standardize(packageJSONBytes)
 | 
						|
	if err != nil {
 | 
						|
		return fmt.Errorf("Could not standardize template package.json: %w", err)
 | 
						|
	}
 | 
						|
	if err := json.Unmarshal(packageJSONBytes, &packageJSON); err != nil {
 | 
						|
		return fmt.Errorf("Could not unmarshal package.json: %w", err)
 | 
						|
	}
 | 
						|
	packageJSON["version"] = version.Long()
 | 
						|
 | 
						|
	packageJSONBytes, err = json.MarshalIndent(packageJSON, "", "  ")
 | 
						|
	if err != nil {
 | 
						|
		return fmt.Errorf("Could not marshal package.json: %w", err)
 | 
						|
	}
 | 
						|
 | 
						|
	return os.WriteFile(path.Join(*pkgDir, "package.json"), packageJSONBytes, 0644)
 | 
						|
}
 | 
						|
 | 
						|
func copyReadme() error {
 | 
						|
	readmeBytes, err := os.ReadFile("README.pkg.md")
 | 
						|
	if err != nil {
 | 
						|
		return fmt.Errorf("Could not read README.pkg.md: %w", err)
 | 
						|
	}
 | 
						|
	return os.WriteFile(path.Join(*pkgDir, "README.md"), readmeBytes, 0644)
 | 
						|
}
 |