-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Local App v2 :) * bind variables correctly * Play around with units * Port more commands over * Separate commands (1 per file) * `gitpod workspace delete` * Extract login * Show help text when run without a command * Fix login * `gitpod logout` * Simple logging * Remove unused import * Make host use consistent * Fix GetToken * Split distribution * 🤷♂️ * Fix paths 🤷🤦 * Change URL of binaries * Fix proxy binary handling Co-authored-by: Pudong <[email protected]> * Improve logging * Change workspace list to be up-to-spec * `gitpod organizations list` * Simplify table code * `gitpod workspace get` * Created at * `gitpod organization get <id>` * Hide open for now * `workspace start --ssh` * `ws start --open` * server: OAuth client * Use OAuth app * logs * `gitpod workspace create` * Rename to follow singular noun semantics * Fix nil pointers in list and go cmds * `--field` for `gitpod organizations list` * `gitpod ws list --field` * Simplify some of the ws code * Unify WS data structure * Allow opening browser-based WSs * `gitpod workspace open` * Constants package to get rid of circular dependency issues * No config file by default * Guidance when missing in path * Fix local companion maybe 🤷♂️ * Create wait for start by default * Align scopes * KeychainName constant * Provide token via flag instead * Host in scope error lookup message * 🤷♂️ * Name for consistency * Editors in go client of papi * `gitpod workspace list-classes` * `gitpod config` * Infer orgs if applicable * Remove redundant error log * Retry mechanism for streaming * More useful error message for unauthed * README update * Allow `function:getTeam` * return org inference errors properly * Replace config with context * Fix config file path * Wrap up pretty printer * Name changes * Remove unused vars * 🇺🇸 * Update README * Fix login * [local-app] Add whoami command * [local-app] Add context management * Refactor common package * Harmonise output and formatting * Add error resolution support * Improve resolution printing * Add apology for system exceptions * Add class resolutions * Apologise more * Add unknown field resolution * Add better login context name * Make it build * `gitpod workspace list-editors` * Fix multiple ws IDs for `ws get` * Simplify open code * Update local-app README with usage instructions * Help for editor options * Remove unused config code * Call workspace ID field ID instead of workspace * Improve long format output * Fix whoami output * Streamline workspace listing * Introduce fancy intro * Improve set-context feedback * Remove common package * Add first unit test * Harmonise field order * Consistency across get commands * Consistency among list command aliases * Fix column name in whoami * Fix nil refs for empty hosts * Make prettyprint writer typesafe * Add resolutions for no token or no host found * Fix typo * Fix CI build * Properly record org ID on login * Print orgs in wide format * Added "workspace up" functionality back in but hidden * Make "Git" casing consistent https://english.stackexchange.com/questions/611711/tech-related-should-i-capitalize-the-word-git-in-this-context-or-not * Introduce workspace up intermediary * Fix proxied binary name --------- Co-authored-by: Pudong <[email protected]> Co-authored-by: Christian Weichel (Chris) <[email protected]>
- Loading branch information
1 parent
0d19e87
commit e51d974
Showing
46 changed files
with
3,354 additions
and
266 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
const generatePackage = function (goos, goarch, binaryName, mainFile) { | ||
let name = binaryName + "-" + goos + "-" + goarch; | ||
let dontTest = !(goos === "linux" && goarch === "amd64"); | ||
if (goos === "windows") { | ||
binaryName += ".exe"; | ||
} | ||
let pkg = { | ||
name, | ||
type: "go", | ||
srcs: ["go.mod", "go.sum", "**/*.go"], | ||
deps: [ | ||
"components/supervisor-api/go:lib", | ||
"components/gitpod-protocol/go:lib", | ||
"components/local-app-api/go:lib", | ||
"components/public-api/go:lib", | ||
], | ||
env: ["GOOS=" + goos, "GOARCH=" + goarch, "CGO_ENABLED=0"], | ||
config: { | ||
packaging: "app", | ||
dontTest: dontTest, | ||
buildCommand: [ | ||
"go", | ||
"build", | ||
"-trimpath", | ||
"-ldflags", | ||
"-buildid= -w -s -X 'github.com/gitpod-io/local-app/pkg/common.Version=commit-${__git_commit}'", | ||
"-o", | ||
binaryName, | ||
mainFile, | ||
], | ||
}, | ||
binaryName, | ||
}; | ||
return pkg; | ||
}; | ||
|
||
const packages = []; | ||
for (binaryName of ["gitpod-local-companion", "gitpod-cli"]) { | ||
for (goos of ["linux", "darwin", "windows"]) { | ||
for (goarch of ["amd64", "arm64"]) { | ||
packages.push(generatePackage(goos, goarch, binaryName, "main/" + binaryName + "/main.go")); | ||
} | ||
} | ||
} | ||
|
||
let appCmds = packages.map((p) => { | ||
let binName = p.name; | ||
if (p.name.includes("windows")) { | ||
binName += ".exe"; | ||
} | ||
return ["cp", "components-local-app--" + p.name + "/" + p.binaryName, "bin/" + binName]; | ||
}); | ||
appCmds.unshift(["mkdir", "bin"]); | ||
appCmds.push(["sh", "-c", "rm -rf components-*"]); | ||
|
||
packages.push({ | ||
name: "app", | ||
type: "generic", | ||
deps: packages.map((d) => ":" + d.name), | ||
config: { | ||
commands: appCmds, | ||
}, | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
// Copyright (c) 2023 Gitpod GmbH. All rights reserved. | ||
// Licensed under the GNU Affero General Public License (AGPL). | ||
// See License.AGPL.txt in the project root for license information. | ||
|
||
package cmd | ||
|
||
import ( | ||
"log/slog" | ||
|
||
"github.com/gitpod-io/local-app/pkg/auth" | ||
"github.com/gitpod-io/local-app/pkg/config" | ||
"github.com/spf13/cobra" | ||
) | ||
|
||
var configDeleteCmd = &cobra.Command{ | ||
Use: "delete-context <name>", | ||
Short: "Deletes a context", | ||
Args: cobra.ExactArgs(1), | ||
RunE: func(cmd *cobra.Command, args []string) (err error) { | ||
cmd.SilenceUsage = true | ||
|
||
targetContext := args[0] | ||
cfg := config.FromContext(cmd.Context()) | ||
|
||
var update bool | ||
defer func() { | ||
if err == nil && update { | ||
slog.Debug("saving config", "filename", cfg.Filename) | ||
err = config.SaveConfig(cfg.Filename, cfg) | ||
} | ||
}() | ||
|
||
if cfg.ActiveContext == targetContext { | ||
slog.Info("deleting active context - use `gitpod config use-context` to set a new active context") | ||
cfg.ActiveContext = "" | ||
update = true | ||
} | ||
|
||
gpctx := cfg.Contexts[targetContext] | ||
if gpctx == nil { | ||
return nil | ||
} | ||
delete(cfg.Contexts, targetContext) | ||
update = true | ||
|
||
err = auth.DeleteToken(gpctx.Host.String()) | ||
if err != nil { | ||
slog.Warn("did not delete token from keyring", "err", err) | ||
err = nil | ||
} | ||
|
||
return nil | ||
}, | ||
} | ||
|
||
func init() { | ||
configCmd.AddCommand(configDeleteCmd) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
// Copyright (c) 2023 Gitpod GmbH. All rights reserved. | ||
// Licensed under the GNU Affero General Public License (AGPL). | ||
// See License.AGPL.txt in the project root for license information. | ||
|
||
package cmd | ||
|
||
import ( | ||
"github.com/gitpod-io/local-app/pkg/config" | ||
"github.com/gitpod-io/local-app/pkg/prettyprint" | ||
"github.com/spf13/cobra" | ||
) | ||
|
||
var configGetContextsCmd = &cobra.Command{ | ||
Use: "get-contexts", | ||
Short: "Lists the available contexts", | ||
RunE: func(cmd *cobra.Command, args []string) error { | ||
cmd.SilenceUsage = true | ||
|
||
cfg := config.FromContext(cmd.Context()) | ||
|
||
res := make([]tabularContext, 0, len(cfg.Contexts)) | ||
for name, ctx := range cfg.Contexts { | ||
res = append(res, tabularContext{ | ||
Active: name == cfg.ActiveContext, | ||
Name: name, | ||
Host: ctx.Host.String(), | ||
Organization: ctx.OrganizationID, | ||
}) | ||
} | ||
|
||
return WriteTabular(res, configGetContextsOpts.Format, prettyprint.WriterFormatWide) | ||
}, | ||
} | ||
|
||
type tabularContext struct { | ||
Active bool | ||
Name string | ||
Host string | ||
Organization string | ||
} | ||
|
||
var configGetContextsOpts struct { | ||
Format formatOpts | ||
} | ||
|
||
func init() { | ||
configCmd.AddCommand(configGetContextsCmd) | ||
addFormatFlags(configGetContextsCmd, &configGetContextsOpts.Format) | ||
} |
Oops, something went wrong.