Upgrade to Pro — share decks privately, control downloads, hide ads and more …

filesystem風チャットchatsh開発で学んだGoの便利package紹介

 filesystem風チャットchatsh開発で学んだGoの便利package紹介

Avatar for ponyo877

ponyo877

May 21, 2025
Tweet

More Decks by ponyo877

Other Decks in Technology

Transcript

  1. ศརQBDLBHFcબ "TBLVTBHPQPOZP goreleaser/goreleaser Release engineering, simplified Go 14.6k 1.0k rivo/tview

    Terminal UI library with rich, interactive widgets — written in Golang Go 12.0k 606 spf13/cobra A Commander for modern Go CLI interactions Go 40.5k 2.9k
  2. ศརQBDLBHFcTQGDPCSB QBDLBHF໊TQGDPCSB⭐L ར༻ྫLVCFDUM HI LT FWBOT ֓ཁ (P੡$-*ΞϓϦέʔγϣϯͷͨ ΊͷڧྗͳϑϨʔϜϫʔΫ 5"#ิ׬ػೳ͋Γ

    ͕ܾ͜͜Ίख "TBLVTBHPQPOZP // cdCmd αϒίϚϯυͷఆٛ var cdCmd = &cobra.Command{ Use: "cd [directory]", Short: "shrt desc", Long: `Long Long description of the cd command.`, Args: cobra.MaximumNArgs(1), // TAB: ิ׬ ValidArgsFunction: PathCompletionFunc, Run: func(cmd *cobra.Command, args []string) { // cdίϚϯυͷॲཧ var targetDir string currentDir := viper.GetString(currentDir) if currentDir == "" { currentDir = viper.GetString(homeDir) } // ৄࡉུলུ }, }
  3. ศརQBDLBHFcSJWPUWJFX "TBLVTBHPQPOZP // vimίϚϯυͷίΞ෦෼ func runChatUITview() error { // ॳظԽ

    app := tview.NewApplication() // νϟοτͷϝοηʔδཤྺදࣔϑΟʔϧυΛఆٛ textView := tview.NewTextView(). SetDynamicColors(true). SetRegions(true). SetWordWrap(true). SetScrollable(true). ScrollToEnd() // νϟοτͷϝοηʔδೖྗϑΟʔϧυΛఆٛ inputField := tview.NewInputField(). SetLabel(userName + " ❯❯ "). SetFieldWidth(0). SetAcceptanceFunc(tview.InputFieldMaxLength(256)) // textViewͱinputFieldͷϨΠΞ΢τΛઃఆ flex := tview.NewFlex(). SetDirection(tview.FlexRow). AddItem(textView, 0, 1, false). AddItem(inputField, 1, 0, true) // ઃఆ QBDLBHF໊SJWPUWJFX⭐L ར༻ྫLT HI XUG ֓ཁ λʔϛφϧ্ͰϦονͳ6* 56*  Λߏங͢ΔͨΊͷϥΠϒϥϦ ΠϯλϥΫςΟϒͳίϯιʔϧΞ ϓϦέʔγϣϯ։ൃʹ࠷ద
  4. ศརQBDLBHFcHPSFMFBTFS "TBLVTBHPQPOZP QBDLBHF໊HPSFMFBTFS⭐ L ֓ཁ ϓϩδΣΫτͷϦϦʔε࡞ۀΛࣗ ಈԽ͢Δπʔϧ (Pݴޠઐ༻Ͱ͸ͳ͘3VTU  5ZQF4DSJQU

    1ZUIPOͳͲଟݴޠʹ ରԠ )PNFCSFXରԠʹ࢖༻ goos: - linux - windows - darwin main: ./cli archives: - formats: [tar.gz] name_template: >- {{ .ProjectName }}_ {{- title .Os }}_ {{- if eq .Arch "amd64" }}x86_64 {{- else if eq .Arch "386" }}i386 {{- else }}{{ .Arch }}{{ end }} {{- if .Arm }}v{{ .Arm }}{{ end }} # use zip for windows archives format_overrides: - goos: windows formats: [zip] brews: - repository: owner: ponyo877 name: homebrew-tap token: "{{ .Env.TAP_GITHUB_TOKEN }}"
  5. ศརQBDLBHFcHPSFMFBTFS "TBLVTBHPQPOZP - uses: actions/setup-go@v3 with: go-version-file: go.mod cache: true

    - uses: goreleaser/goreleaser-action@v6 with: version: '~> v2' args: release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} TAP_GITHUB_TOKEN: ${{ secrets.TAP_GITHUB_TOKEN }} (JU)VC"DUJPOઃఆ