AWS CodeCommit Credentials Retoken
前言
雖然 AWS CodeCommit 已經進入維護模式(不開發新功能),但因為我還有在使用所以想說寫一個小工具來幫我自動 Retoken。
前置作業
SDKMAN
因為我打算用 Kotlin 來開發 jvm 版本的小工具,所以我想用 SDKMAN 這套強大的管理軟體來控管我的 JDK、Gradle 版本
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 bashJava
剛好最近公司的專案把 Java 一口氣拉到 21 版本,這次就一樣用這個版本來開發:
sdk install java 21.0.11-temGradle
這次直接採用最新版本(9.5.0)的 Gradle
sdk install gradle 9.5.0
建立專案
我透過 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 的字樣 
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 !
