AWS CodeCommit Credentials Retoken

3 min

前言

雖然 AWS CodeCommit 已經進入維護模式(不開發新功能),但因為我還有在使用所以想說寫一個小工具來幫我自動 Retoken。


前置作業

SDKMAN

因為我打算用 Kotlin 來開發 jvm 版本的小工具,所以我想用 SDKMAN 這套強大的管理軟體來控管我的 JDKGradle 版本

curl -s "https://get.sdkman.io" | bash

結果遇到以下的錯誤: SDKMAN requires Bash 4 or higher, but you are running Bash 3.2.57(1)-release.

後來先透過 brew 來安裝更新版本的 bash,然後再透過上面的 curl 安裝 sdkman

brew install bash

Java

剛好最近公司的專案把 Java 一口氣拉到 21 版本,這次就一樣用這個版本來開發:

sdk install java 21.0.11-tem

Gradle

這次直接採用最新版本(9.5.0)的 Gradle

sdk install gradle 9.5.0
env
env

建立專案

我透過 Gradle 直接在 Terminal 中建立專案:

gradle init \
  --type kotlin-application \
  --dsl kotlin \
  --test-framework junit-jupiter \
  --project-name aws-codecommit-retoken \
  --package com.yourorg.retoken

他問了我以下問題:

Found existing files in the project directory: '/Users/yun/Documents/Projects/aws-codecommit-retoken'.
Directory will be modified and existing files may be overwritten.  Continue? (default: no) [yes, no]

因為我資料夾內有 .git 的東西,所以我直接回答 yes

Enter target Java version (min: 7, default: 21): 

不輸入直接使用預設值

Select application structure:
  1: Single application project
  2: Application and library project
Enter selection (default: Single application project) [1..2]  

一樣不輸入使用預設 Single application project

Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no] 

一樣使用預設(no),不使用最新的 api

接著產生 wrapper

gradle wrapper --gradle-version 9.5.0

這樣專案就多了 gradlew 等檔案,這時候用

./gradlew run

看看有沒有得到 Hello World 的字樣 Gradle Run


Dependencies

這次選了一個 這個 來處理 otp 六位數密碼的轉換,到 libs.versions.toml 這個檔案內加入 version 跟 library 區塊:

[versions]
otp-java = "2.1.0"

[libraries]
...
otp-java = { module = "com.github.bastiaanjansen:otp-java", version.ref = "otp-java" }

如果 IDE 沒有跳出 Sync Gradle 在 Terminal 執行:

./gradlew --refresh-dependencies

接著在 app 的 build.gradle.kts 中的 dependencies 區塊強制寫入:

implementation(libs.otp.java)

如果 IDE 還是沒反應,可以直接重開 IDE。


開源專案

我把這次的專案開源,所以 code 的實作細節大家就直接看 github 吧 ~


搭配 macOS 捷徑&自動化

最後,我不希望 retoken 時還要自己到 terminal 輸入指令,所以我就用捷徑 + 自動化來呼叫 shell !

macos-auto
macos-auto

Comments

Loading comments...