Skip to content

Commit 81a165a

Browse files
committed
Remove legacy directory compatibility
1 parent 2474e43 commit 81a165a

6 files changed

Lines changed: 4 additions & 254 deletions

File tree

internal/config/config.go

Lines changed: 4 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -111,17 +111,14 @@ func (c AppConfig) HTTPReadRetryBackoffMillisValue() int {
111111
}
112112

113113
type Service struct {
114-
path string
115-
defaultManaged bool
114+
path string
116115
}
117116

118117
func NewService(path string) *Service {
119-
defaultManaged := false
120118
if strings.TrimSpace(path) == "" {
121119
path = DefaultPath()
122-
defaultManaged = true
123120
}
124-
return &Service{path: path, defaultManaged: defaultManaged}
121+
return &Service{path: path}
125122
}
126123

127124
func DefaultPath() string {
@@ -132,39 +129,17 @@ func DefaultPath() string {
132129
return filepath.Join(home, ".cloudcanal-cli", "config.json")
133130
}
134131

135-
func LegacyDefaultPath() string {
136-
home, err := os.UserHomeDir()
137-
if err != nil {
138-
return ".cloudcanal/config.json"
139-
}
140-
return filepath.Join(home, ".cloudcanal", "config.json")
141-
}
142-
143132
func (s *Service) Path() string {
144133
return s.path
145134
}
146135

147136
func (s *Service) Exists() bool {
148137
_, err := os.Stat(s.path)
149-
if err == nil {
150-
return true
151-
}
152-
if s.defaultManaged {
153-
_, legacyErr := os.Stat(LegacyDefaultPath())
154-
return legacyErr == nil
155-
}
156-
return false
138+
return err == nil
157139
}
158140

159141
func (s *Service) Load() (AppConfig, error) {
160-
cfg, err := s.loadFromPath(s.path)
161-
if err == nil {
162-
return cfg, nil
163-
}
164-
if s.defaultManaged && errors.Is(err, os.ErrNotExist) {
165-
return s.loadFromLegacyPath()
166-
}
167-
return AppConfig{}, err
142+
return s.loadFromPath(s.path)
168143
}
169144

170145
func (s *Service) loadFromPath(path string) (AppConfig, error) {
@@ -183,19 +158,6 @@ func (s *Service) loadFromPath(path string) (AppConfig, error) {
183158
return cfg, nil
184159
}
185160

186-
func (s *Service) loadFromLegacyPath() (AppConfig, error) {
187-
legacyPath := LegacyDefaultPath()
188-
cfg, err := s.loadFromPath(legacyPath)
189-
if err != nil {
190-
return AppConfig{}, err
191-
}
192-
if err := s.Save(cfg); err == nil {
193-
_ = os.Remove(legacyPath)
194-
_ = os.Remove(filepath.Dir(legacyPath))
195-
}
196-
return cfg, nil
197-
}
198-
199161
func (s *Service) Save(cfg AppConfig) error {
200162
cfg = cfg.WithDefaults()
201163
if err := cfg.Validate(); err != nil {

scripts/bootstrap_install.sh

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,6 @@ ARCHIVE_PATH="$TMP_DIR/$APP_NAME.tar.gz"
4444
CHECKSUMS_PATH="$TMP_DIR/checksums.txt"
4545
EXTRACT_DIR="$TMP_DIR/extract"
4646

47-
LEGACY_INSTALL_ROOT="${LEGACY_INSTALL_ROOT:-$HOME/.local/share/$REPO_NAME}"
48-
LEGACY_INSTALL_BIN_DIR="${LEGACY_INSTALL_BIN_DIR:-$HOME/bin}"
49-
LEGACY_INSTALL_PATH="$LEGACY_INSTALL_BIN_DIR/$APP_NAME"
50-
LEGACY_INSTALL_BIN_PATH="$LEGACY_INSTALL_ROOT/bin/$APP_NAME"
51-
LEGACY_INSTALL_ZSH_COMPLETION_DIR="${LEGACY_INSTALL_ZSH_COMPLETION_DIR:-$HOME/.zsh/completions}"
52-
LEGACY_INSTALL_BASH_COMPLETION_DIR="${LEGACY_INSTALL_BASH_COMPLETION_DIR:-$HOME/.local/share/bash-completion/completions}"
53-
LEGACY_ZSH_COMPLETION_PATH="$LEGACY_INSTALL_ZSH_COMPLETION_DIR/_$APP_NAME"
54-
LEGACY_BASH_COMPLETION_PATH="$LEGACY_INSTALL_BASH_COMPLETION_DIR/$APP_NAME"
55-
5647
cleanup() {
5748
rm -rf "$TMP_DIR"
5849
}
@@ -205,32 +196,6 @@ strip_rc_block() {
205196
mv "$tmp_file" "$INSTALL_SHELL_RC"
206197
}
207198

208-
cleanup_legacy_install() {
209-
if [[ -L "$LEGACY_INSTALL_PATH" ]]; then
210-
local target
211-
target="$(readlink "$LEGACY_INSTALL_PATH")"
212-
if [[ "$target" == "$LEGACY_INSTALL_BIN_PATH" ]]; then
213-
rm -f "$LEGACY_INSTALL_PATH"
214-
log_info "Removed legacy managed symlink $LEGACY_INSTALL_PATH"
215-
fi
216-
fi
217-
218-
if [[ -f "$LEGACY_ZSH_COMPLETION_PATH" ]]; then
219-
rm -f "$LEGACY_ZSH_COMPLETION_PATH"
220-
log_info "Removed legacy zsh completion $LEGACY_ZSH_COMPLETION_PATH"
221-
fi
222-
223-
if [[ -f "$LEGACY_BASH_COMPLETION_PATH" ]]; then
224-
rm -f "$LEGACY_BASH_COMPLETION_PATH"
225-
log_info "Removed legacy bash completion $LEGACY_BASH_COMPLETION_PATH"
226-
fi
227-
228-
if [[ -d "$LEGACY_INSTALL_ROOT" ]]; then
229-
rm -rf "$LEGACY_INSTALL_ROOT"
230-
log_info "Removed legacy install root $LEGACY_INSTALL_ROOT"
231-
fi
232-
}
233-
234199
install_binary() {
235200
mkdir -p "$INSTALL_BIN_DIR" "$EXTRACT_DIR"
236201

@@ -306,7 +271,6 @@ require_command tar
306271
detect_platform
307272
install_binary
308273
ensure_completion_files
309-
cleanup_legacy_install
310274
ensure_path_block
311275
ensure_completion_block
312276

scripts/bootstrap_uninstall.sh

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,6 @@ PATH_MARK_END="# <<< cloudcanal-openapi-cli <<<"
3636
COMPLETION_MARK_START="# >>> cloudcanal-openapi-cli completion >>>"
3737
COMPLETION_MARK_END="# <<< cloudcanal-openapi-cli completion <<<"
3838

39-
LEGACY_INSTALL_ROOT="${LEGACY_INSTALL_ROOT:-$HOME/.local/share/$REPO_NAME}"
40-
LEGACY_INSTALL_BIN_DIR="${LEGACY_INSTALL_BIN_DIR:-$HOME/bin}"
41-
LEGACY_INSTALL_PATH="$LEGACY_INSTALL_BIN_DIR/$APP_NAME"
42-
LEGACY_INSTALL_BIN_PATH="$LEGACY_INSTALL_ROOT/bin/$APP_NAME"
43-
LEGACY_INSTALL_ZSH_COMPLETION_DIR="${LEGACY_INSTALL_ZSH_COMPLETION_DIR:-$HOME/.zsh/completions}"
44-
LEGACY_INSTALL_BASH_COMPLETION_DIR="${LEGACY_INSTALL_BASH_COMPLETION_DIR:-$HOME/.local/share/bash-completion/completions}"
45-
LEGACY_ZSH_COMPLETION_PATH="$LEGACY_INSTALL_ZSH_COMPLETION_DIR/_$APP_NAME"
46-
LEGACY_BASH_COMPLETION_PATH="$LEGACY_INSTALL_BASH_COMPLETION_DIR/$APP_NAME"
47-
4839
remove_rc_block() {
4940
local start_mark="$1"
5041
local end_mark="$2"
@@ -108,44 +99,11 @@ remove_completion_files() {
10899
fi
109100
}
110101

111-
remove_legacy_install() {
112-
if [[ -L "$LEGACY_INSTALL_PATH" ]]; then
113-
local target
114-
target="$(readlink "$LEGACY_INSTALL_PATH")"
115-
if [[ "$target" == "$LEGACY_INSTALL_BIN_PATH" ]]; then
116-
rm -f "$LEGACY_INSTALL_PATH"
117-
log_success "Removed legacy managed symlink $LEGACY_INSTALL_PATH"
118-
else
119-
log_info "Skipped legacy command link $LEGACY_INSTALL_PATH because it is not managed by the release installer"
120-
fi
121-
elif [[ -e "$LEGACY_INSTALL_PATH" ]]; then
122-
log_info "Skipped legacy command link $LEGACY_INSTALL_PATH because it is not a managed symlink"
123-
else
124-
log_info "No legacy installed command found at $LEGACY_INSTALL_PATH"
125-
fi
126-
127-
if [[ -f "$LEGACY_ZSH_COMPLETION_PATH" ]]; then
128-
rm -f "$LEGACY_ZSH_COMPLETION_PATH"
129-
log_success "Removed legacy zsh completion $LEGACY_ZSH_COMPLETION_PATH"
130-
fi
131-
132-
if [[ -f "$LEGACY_BASH_COMPLETION_PATH" ]]; then
133-
rm -f "$LEGACY_BASH_COMPLETION_PATH"
134-
log_success "Removed legacy bash completion $LEGACY_BASH_COMPLETION_PATH"
135-
fi
136-
137-
if [[ -d "$LEGACY_INSTALL_ROOT" ]]; then
138-
rm -rf "$LEGACY_INSTALL_ROOT"
139-
log_success "Removed legacy install root $LEGACY_INSTALL_ROOT"
140-
fi
141-
}
142-
143102
log_info "CloudCanal OpenAPI CLI release uninstall started"
144103
remove_binary
145104
remove_rc_block "$PATH_MARK_START" "$PATH_MARK_END" "PATH configuration"
146105
remove_completion_files
147106
remove_rc_block "$COMPLETION_MARK_START" "$COMPLETION_MARK_END" "shell completion configuration"
148107
prune_install_dirs
149-
remove_legacy_install
150108
log_info "Open a new shell or source $INSTALL_SHELL_RC to refresh PATH"
151109
log_success "Release uninstall completed"

scripts/install.sh

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,6 @@ PATH_MARK_END="# <<< cloudcanal-openapi-cli <<<"
2929
COMPLETION_MARK_START="# >>> cloudcanal-openapi-cli completion >>>"
3030
COMPLETION_MARK_END="# <<< cloudcanal-openapi-cli completion <<<"
3131

32-
LEGACY_RELEASE_ROOT="${LEGACY_RELEASE_ROOT:-$HOME/.local/share/cloudcanal-openapi-cli}"
33-
LEGACY_INSTALL_BIN_DIR="${LEGACY_INSTALL_BIN_DIR:-$HOME/bin}"
34-
LEGACY_INSTALL_PATH="$LEGACY_INSTALL_BIN_DIR/$APP_NAME"
35-
LEGACY_RELEASE_BIN_PATH="$LEGACY_RELEASE_ROOT/bin/$APP_NAME"
36-
LEGACY_INSTALL_ZSH_COMPLETION_DIR="${LEGACY_INSTALL_ZSH_COMPLETION_DIR:-$HOME/.zsh/completions}"
37-
LEGACY_INSTALL_BASH_COMPLETION_DIR="${LEGACY_INSTALL_BASH_COMPLETION_DIR:-$HOME/.local/share/bash-completion/completions}"
38-
LEGACY_ZSH_COMPLETION_PATH="$LEGACY_INSTALL_ZSH_COMPLETION_DIR/_$APP_NAME"
39-
LEGACY_BASH_COMPLETION_PATH="$LEGACY_INSTALL_BASH_COMPLETION_DIR/$APP_NAME"
40-
4132
ensure_binary() {
4233
if [[ -x "$BIN_PATH" ]]; then
4334
log_success "Found binary at $BIN_PATH"
@@ -65,32 +56,6 @@ strip_rc_block() {
6556
mv "$tmp_file" "$INSTALL_SHELL_RC"
6657
}
6758

68-
cleanup_legacy_install() {
69-
if [[ -L "$LEGACY_INSTALL_PATH" ]]; then
70-
local target
71-
target="$(readlink "$LEGACY_INSTALL_PATH")"
72-
if [[ "$target" == "$BIN_PATH" || "$target" == "$LEGACY_RELEASE_BIN_PATH" ]]; then
73-
rm -f "$LEGACY_INSTALL_PATH"
74-
log_info "Removed legacy managed symlink $LEGACY_INSTALL_PATH"
75-
fi
76-
fi
77-
78-
if [[ -f "$LEGACY_ZSH_COMPLETION_PATH" ]]; then
79-
rm -f "$LEGACY_ZSH_COMPLETION_PATH"
80-
log_info "Removed legacy zsh completion $LEGACY_ZSH_COMPLETION_PATH"
81-
fi
82-
83-
if [[ -f "$LEGACY_BASH_COMPLETION_PATH" ]]; then
84-
rm -f "$LEGACY_BASH_COMPLETION_PATH"
85-
log_info "Removed legacy bash completion $LEGACY_BASH_COMPLETION_PATH"
86-
fi
87-
88-
if [[ -d "$LEGACY_RELEASE_ROOT" ]]; then
89-
rm -rf "$LEGACY_RELEASE_ROOT"
90-
log_info "Removed legacy release install root $LEGACY_RELEASE_ROOT"
91-
fi
92-
}
93-
9459
ensure_path_block() {
9560
mkdir -p "$(dirname "$INSTALL_SHELL_RC")"
9661
touch "$INSTALL_SHELL_RC"
@@ -142,7 +107,6 @@ mkdir -p "$INSTALL_BIN_DIR"
142107
ln -sfn "$BIN_PATH" "$INSTALL_PATH"
143108
log_success "Installed $INSTALL_PATH"
144109
ensure_completion_files
145-
cleanup_legacy_install
146110
ensure_path_block
147111
ensure_completion_block
148112

scripts/uninstall.sh

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,6 @@ PATH_MARK_END="# <<< cloudcanal-openapi-cli <<<"
2929
COMPLETION_MARK_START="# >>> cloudcanal-openapi-cli completion >>>"
3030
COMPLETION_MARK_END="# <<< cloudcanal-openapi-cli completion <<<"
3131

32-
LEGACY_RELEASE_ROOT="${LEGACY_RELEASE_ROOT:-$HOME/.local/share/cloudcanal-openapi-cli}"
33-
LEGACY_INSTALL_BIN_DIR="${LEGACY_INSTALL_BIN_DIR:-$HOME/bin}"
34-
LEGACY_INSTALL_PATH="$LEGACY_INSTALL_BIN_DIR/$APP_NAME"
35-
LEGACY_RELEASE_BIN_PATH="$LEGACY_RELEASE_ROOT/bin/$APP_NAME"
36-
LEGACY_INSTALL_ZSH_COMPLETION_DIR="${LEGACY_INSTALL_ZSH_COMPLETION_DIR:-$HOME/.zsh/completions}"
37-
LEGACY_INSTALL_BASH_COMPLETION_DIR="${LEGACY_INSTALL_BASH_COMPLETION_DIR:-$HOME/.local/share/bash-completion/completions}"
38-
LEGACY_ZSH_COMPLETION_PATH="$LEGACY_INSTALL_ZSH_COMPLETION_DIR/_$APP_NAME"
39-
LEGACY_BASH_COMPLETION_PATH="$LEGACY_INSTALL_BASH_COMPLETION_DIR/$APP_NAME"
40-
4132
remove_rc_block() {
4233
local start_mark="$1"
4334
local end_mark="$2"
@@ -113,45 +104,12 @@ remove_completion_files() {
113104
fi
114105
}
115106

116-
remove_legacy_install() {
117-
if [[ -L "$LEGACY_INSTALL_PATH" ]]; then
118-
local target
119-
target="$(readlink "$LEGACY_INSTALL_PATH")"
120-
if [[ "$target" == "$BIN_PATH" || "$target" == "$LEGACY_RELEASE_BIN_PATH" ]]; then
121-
rm -f "$LEGACY_INSTALL_PATH"
122-
log_success "Removed legacy managed symlink $LEGACY_INSTALL_PATH"
123-
else
124-
log_info "Skipped legacy command link $LEGACY_INSTALL_PATH because it is not managed by this project"
125-
fi
126-
elif [[ -e "$LEGACY_INSTALL_PATH" ]]; then
127-
log_info "Skipped legacy command link $LEGACY_INSTALL_PATH because it is not a managed symlink"
128-
else
129-
log_info "No legacy installed command found at $LEGACY_INSTALL_PATH"
130-
fi
131-
132-
if [[ -f "$LEGACY_ZSH_COMPLETION_PATH" ]]; then
133-
rm -f "$LEGACY_ZSH_COMPLETION_PATH"
134-
log_success "Removed legacy zsh completion $LEGACY_ZSH_COMPLETION_PATH"
135-
fi
136-
137-
if [[ -f "$LEGACY_BASH_COMPLETION_PATH" ]]; then
138-
rm -f "$LEGACY_BASH_COMPLETION_PATH"
139-
log_success "Removed legacy bash completion $LEGACY_BASH_COMPLETION_PATH"
140-
fi
141-
142-
if [[ -d "$LEGACY_RELEASE_ROOT" ]]; then
143-
rm -rf "$LEGACY_RELEASE_ROOT"
144-
log_success "Removed legacy release install root $LEGACY_RELEASE_ROOT"
145-
fi
146-
}
147-
148107
log_info "Uninstall $APP_NAME command"
149108
remove_link
150109
remove_rc_block "$PATH_MARK_START" "$PATH_MARK_END" "PATH configuration"
151110
remove_completion_files
152111
remove_rc_block "$COMPLETION_MARK_START" "$COMPLETION_MARK_END" "shell completion configuration"
153112
prune_install_dirs
154-
remove_legacy_install
155113

156114
log_info "Open a new shell or source $INSTALL_SHELL_RC to refresh PATH"
157115
print_run_summary "Uninstall completed"

test/config/config_test.go

Lines changed: 0 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -88,59 +88,3 @@ func TestDefaultPathUsesCloudCanalCLIDirectory(t *testing.T) {
8888
t.Fatalf("DefaultPath() = %q, want %q", got, want)
8989
}
9090
}
91-
92-
func TestServiceLoadMigratesLegacyDefaultConfig(t *testing.T) {
93-
home := t.TempDir()
94-
t.Setenv("HOME", home)
95-
96-
legacyPath := config.LegacyDefaultPath()
97-
if err := os.MkdirAll(filepath.Dir(legacyPath), 0o755); err != nil {
98-
t.Fatalf("MkdirAll() error = %v", err)
99-
}
100-
content := []byte(`{"apiBaseUrl":"https://cc.example.com","accessKey":"legacy-ak","secretKey":"legacy-sk","language":"zh"}`)
101-
if err := os.WriteFile(legacyPath, content, 0o600); err != nil {
102-
t.Fatalf("WriteFile() error = %v", err)
103-
}
104-
105-
service := config.NewService("")
106-
if !service.Exists() {
107-
t.Fatal("Exists() = false, want true when only legacy config exists")
108-
}
109-
110-
loaded, err := service.Load()
111-
if err != nil {
112-
t.Fatalf("Load() error = %v", err)
113-
}
114-
if loaded.APIBaseURL != "https://cc.example.com" || loaded.AccessKey != "legacy-ak" || loaded.SecretKey != "legacy-sk" || loaded.Language != "zh" {
115-
t.Fatalf("loaded config = %+v, want legacy values", loaded)
116-
}
117-
118-
newPath := config.DefaultPath()
119-
if _, err := os.Stat(newPath); err != nil {
120-
t.Fatalf("new config path stat error = %v", err)
121-
}
122-
if _, err := os.Stat(legacyPath); !os.IsNotExist(err) {
123-
t.Fatalf("legacy config still exists, stat err = %v", err)
124-
}
125-
}
126-
127-
func TestServiceLoadWithCustomPathDoesNotReadLegacyConfig(t *testing.T) {
128-
home := t.TempDir()
129-
t.Setenv("HOME", home)
130-
131-
legacyPath := config.LegacyDefaultPath()
132-
if err := os.MkdirAll(filepath.Dir(legacyPath), 0o755); err != nil {
133-
t.Fatalf("MkdirAll() error = %v", err)
134-
}
135-
if err := os.WriteFile(legacyPath, []byte(`{"apiBaseUrl":"https://cc.example.com","accessKey":"legacy-ak","secretKey":"legacy-sk"}`), 0o600); err != nil {
136-
t.Fatalf("WriteFile() error = %v", err)
137-
}
138-
139-
service := config.NewService(filepath.Join(t.TempDir(), "config.json"))
140-
if service.Exists() {
141-
t.Fatal("Exists() = true, want false for custom path without file")
142-
}
143-
if _, err := service.Load(); !os.IsNotExist(err) {
144-
t.Fatalf("Load() error = %v, want os.ErrNotExist", err)
145-
}
146-
}

0 commit comments

Comments
 (0)