Picture by Homebrew web page

์ด ๊ธ€์€ Notion ์—์„œ ์ž‘์„ฑํ•œ ํŽ˜์ด์ง€์—์„œ๋„ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๐Ÿ™‡โ€โ™‚๏ธ ์˜คํ”ˆ์†Œ์Šค์— ์ปค๋ฐ‹ํ•œ๋‹ค๋Š” ๊ฑด...?


๋ง‰์—ฐํ•ฉ๋‹ˆ๋‹ค. ์–ด๋ ต๊ตฌ์š”
์„ค๋ น ํ’€๋ฆฌํ€˜๊ฐ€ ๋งŒ์— ํ•˜๋‚˜ Merged ๋ผ๋„ ๋˜๋ฉด

๋‚ด ์ฝ”๋“œ๊ฐ€ ์ด๊ฑธ ์“ฐ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ
๋ฐ”์ด๋Ÿฌ์Šค์ฒ˜๋Ÿผ ๋ฒˆ์ ธ ๋‚˜๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค

๋ถ€๋‹ด๋„ ๋˜๊ณ  ๋งˆ์น˜ ์ง์‚ฌ๋ž‘ ์ฒ˜๋Ÿผ ํ‡ด์งœ๋งž์„๊นŒ ๊ฒ๋„ ๋‚ฉ๋‹ˆ๋‹ค
๊ทธ์น˜๋งŒ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ํ•ด๋ณด๊ณ  ์‹ถ์€ ์–ด๋–ค '์—…์ ' ๊ฐ™์€ ๊ฑฐ๊ฒ ์ฃ 
"์˜คํ”ˆ์†Œ์Šค์— ์ปค๋ฐ‹ํ•ด๋ณธ" ๋‘”๋‘”์ด (์นญํ˜ธ๋ฅผ ํš๋“ํ–ˆ๋‹ค)

์•„์ง ์ œ๊ฒŒ๋Š” ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค
์˜คํƒ€ ์ˆ˜์ •์ด๋ผ๋„ ํ•ด๋ณด๊ณ  ์‹ถ์€ ๊ทธ๋Ÿฐ ๋งˆ์Œ

๐Ÿ™…โ€โ™‚๏ธ ๋‹ต๋‹ตํ•˜๋ฉด ๋‹ˆ๋“ค์ด ๋›ฐ๋“ ์ง€


๋ชจ๋“  ์ผ์—๋Š” ์›์ธ๊ณผ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์ฃ 
'homebrew cask ์— ์ปค๋ฐ‹์„ ํ•ด๋ณด์ž' ๋ผ๊ณ  ๋งˆ์Œ๋จน์€ ๊ณ„๊ธฐ๋Š” ์ •๋ง ์‚ฌ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€ ์ฒ˜๋Ÿผ ์ €๋Š” homebrew ์— ๋Œ€ํ•œ ํฐ ์• ์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค
๊ทธ๋ž˜์„œ ๋ชจ๋“  ์•ฑ์„ homebrew cask ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์—์„œ๋Š”
๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ์•ฑ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์ง€ ์•Š๊ณ  ์•„๋ž˜ ์ฒ˜๋Ÿผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค

ridibooks_failed_with_403.gif
์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚  ๊ฒƒ ๊ฐ™์€ ์กฐ์ง์„ ๋Š๊ผˆ์ง€. ์ž‘๋™์ด ์•ˆ๋˜์ž–์•„ ์œผ์•„์•„์•„

์•ˆ๋ฉ๋‹ˆ๋‹ค ์•ˆ๋ผ์š” ๐Ÿ™…โ€โ™‚๏ธ
์ง€๊ธˆ์œผ๋กœ๋ถ€ํ„ฐ ๋ฉฐ์น  ์ „๋ถ€ํ„ฐ ๊ณ„์† ์ € ์ƒํƒœ์ž…๋‹ˆ๋‹ค
๋‹ต๋‹ตํ•ฉ๋‹ˆ๋‹ค

แ„ƒแ…กแ†ธแ„‚แ…ตแ„„แ…ฑ.png
๋‹น์‹ ์€ ๋Œ€์ฒด ์–ด๋””๊นŒ์ง€ ๋ณด์‹ ๊ฒ๋‹ˆ๊นŒ...

์ง„์งœ ์„ค์น˜ํ•˜๊ณ  ์‹ถ์–ด์š” ๊ทผ๋ฐ ์–ธ์ œ ๋ˆ„๊ฐ€ ์—…๋ฐ์ดํŠธ ํ•ด์ค„์ง€ ๋ชจ๋ฅด์ž–์•„์š”
dmg ํŒŒ์ผ์„ ๋ฐ›์•„ readme.rtf ํŒŒ์ผ์„ ์—ด์–ด๋ณด๋‹ˆ, ๋ฒŒ์จ 2.5.5 ๋ฒ„์ „๊นŒ์ง€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค ๐Ÿ˜ฒ

์ด์ œ๋Š” ๋ชป ๊ธฐ๋‹ค๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ ๋ฒˆ ์ง์ ‘ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค

๐ŸŽค๊ทธ๋ž˜์„œ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋˜๋‚˜์š”?


homebrew cask ์— ์ปค๋ฐ‹์„ ํ•˜๋Š” ๊ณผ์ •์€
์•„๋ž˜์˜ ์ˆœ์„œ๋Œ€๋กœ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค

์ปค๋ฐ‹ ๊ฐ€์ด๋“œ ์ฝ๊ธฐ โ†’ ์ฝ”๋”ฉ โ†’ ํ…Œ์ŠคํŠธ โ†’ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ

homebrew cask์˜ ์ปค๋ฐ‹์€ ๋ฒŒ์จ 8๋งŒ๋ฒˆ์ด ๋„˜์—ˆ์Šต๋‹ˆ๋‹ค
๊ทธ ์–˜๊ธฐ๋Š” ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ํ’€๋ฆฌํ€˜๋ฅผ ๋ณ„ ํƒˆ ์—†์ด ์ž˜ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฑฐ๊ฒ ์ฃ 

์–ด๋–ค ์ž˜ ์ •ํ•ด์ง„ ์•ฝ์†๋งŒ ๋”ฐ๋ฅด๋ฉด ๋ฌธ์ œ ์—†์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค
๊ทธ๋Ÿผ ์ปจํŠธ๋ฆฌ๋ทฐํ„ฐ๋“ค์„ ์œ„ํ•ด ์•ฝ์†์ด ์ ํ˜€์žˆ๋Š” CONTRIBUTION.md ํŒŒ์ผ์„ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค

โš ๏ธ CONTRIBUTION.md


(homebrew cask ์˜ CONTRIBUTION.md ํŒŒ์ผ์€ ์—ฌ๊ธฐ์„œ ์ง์ ‘ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)

๋ชจ๋“  ๊ธ€์„ ํ•จ๊ป˜ ์ฝ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ข‹๊ฒ ์ง€๋งŒ, ์—ฌ๋Ÿฌ๋ถ„๋“ค์˜ ์˜์–ด๊ฐ€ ์ €๋ณด๋‹ค ๋‚ซ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•ฉ๋‹ˆ๋‹ค
์•„๋ž˜๋Š” CONTRIBUTION.md ํŒŒ์ผ์˜ ๋จธ๋ฆฟ๋ง ์ž…๋‹ˆ๋‹ค

How To Contribute
๐Ÿ‘๐ŸŽ‰ First off, thanks for taking the time to contribute! ๐ŸŽ‰๐Ÿ‘

ํ™˜์˜๋ฐ›๋Š” ๊ธฐ๋ถ„ ์ด๋„ค์š”
์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์€ cask์˜ ๋ฒ„์ „์„ ๋ชจ๋‘๊ฐ€ ๊ฐ™์ด ๊ด€๋ฆฌ ํ•œ๋‹ค๋Š”๊ฑด
ํ™˜์˜ ๋ฐ›์„๋งŒํ•œ ์ผ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

์ผ๋‹จ ํฐ ์ฃผ์ œ๋ฅผ ๋ณด๋ฉด
Updating a Cask โ†’ ์•„์ง ์—…๋ฐ์ดํŠธ๋ฅผ ์•ˆํ•ด์„œ cask ๋ฒ„์ „์ด ๋‚ฎ์„ ์ˆ˜ ์žˆ์–ด ํ•œ ๋ฒˆ ์—…๋ฐ์ดํŠธ ํ•ด๋ณด๋ ด
Getting Set Up To Contribute โ†’ ์ปจํŠธ๋ฆฌ๋ทฐํŠธ ํ•˜๊ธฐ ์œ„ํ•œ ์ค€๋น„
Adding a Cask โ†’ cask ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ์ผ ๋“ฏ (์ €๋Š” ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŒจ์Šค)
Style guide โ†’ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ๊ฐ€ ์žˆ๋„ค์š”. ์•ˆ ์ง€ํ‚ค๋ฉด reject ๋  ๊ฒƒ ๊ฐ™์œผ๋‹ˆ ์ฝ์–ด ๋ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค
Reporting Bugs โ†’ ์•„์ง ๋ฒ„๊ทธ๋ฅผ ๋งŒ๋‚œ ์  ์—†์œผ๋‹ˆ ์ผ๋‹จ ๋ฒ„๊ทธ๋ฅผ ๋งˆ์ฃผ์น˜๋ฉด ๊ณ ๋ฏผํ•ด๋ด์š”

5๊ฐœ ์ •๋„๊ฐ€ ์žˆ๋Š”๋ฐ์š”
cask ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์œ„ํ•ด์„œ๋Š” ์ปจํŠธ๋ฆฌ๋ทฐํŠธ๊ฐ€ ํ•„์ˆ˜์ ์ด๋‹ˆ
์ปจํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ ์ค€๋น„ ๊ณผ์ •๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค

๐Ÿ™ Git works


์นœ์ ˆํ•œ ์„ค๋ช…์ด ๋ฌธ์„œ์— ์žˆ์Šต๋‹ˆ๋‹ค
(์ž ๊น ๋”ด ์†Œ๋ฆฌ์ง€๋งŒ ์—ญ์‹œ ๊ฐœ๋ฐœ์ž๋Š” ๋ฌธ์„œ๋ฅผ ์ž˜ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๋ฌธ์„œ๋‚˜ ๊ธฐํš ๋ฌธ์„œ๋‚˜ ๊ณ„์•ฝ์„œ๋‚˜...)

For manual updates, you'll need to fork the repository and add your copy as a remote (can also be done with hub fork).

1: Fork the repository in GitHub with the Fork button.
โ†’ ์ด ์ €์žฅ์†Œ๋ฅผ Fork ๋ฒ„ํŠผ์œผ๋กœ ํฌํฌ๋ฅผ ๊พน ์ฐ์Šต๋‹ˆ๋‹ค

2: If you have not already done so, add your GitHub fork as a remote for your homebrew-cask Tap:
โ†’ ์•„์ง ํฌํฌ๋ฅผ ์•ˆํ–ˆ์œผ๋ฉด, ํฌํฌ๋ฅผ ํ•˜๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•ด ์›๊ฒฉ ์ €์žฅ์†Œ ์ฃผ์†Œ๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค

$ github_user='<my-github-username>'
$ cd "$(brew --repository)"/Library/Taps/Homebrew/homebrew-cask
$ git remote add "${github_user}" "https://github.com/${github_user}/homebrew-cask"

3: If you have already added your GitHub fork as a remote for your homebrew-cask Tap, ensure your fork is up-to-date.
โ†’ ๋งŒ์•ฝ ์ด๋ฏธ ํฌํฌ๋ฅผ ํ•˜๊ณ , ์›๊ฒฉ ์ €์žฅ์†Œ ์ฃผ์†Œ ๋˜ํ•œ ๋“ฑ๋กํ–ˆ๋‹ค๋ฉด, pull์„ ๋ฐ›์•„์„œ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค

4: Switch to a new branch (ie. new-feature), and work from there: git checkout -b new-feature.
โ†’ ์ƒˆ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ๊ณณ์—์„œ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค

๋ธŒ๋žœ์น˜ ์ด๋ฆ„์€ ๋”ฑํžˆ ๊ด€๊ณ„ ์—†๋Š” ๋“ฏ ํ•˜์ง€๋งŒ
๊ทธ๋ž˜๋„ ๋ญ”๊ฐ€ ๋งž์ถฐ์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ปค๋ฐ‹์„ ๋’ค์ ธ๋ณด์•˜์Šต๋‹ˆ๋‹ค

๋Œ€๋žต์ ์ธ ๊ทœ์น™์€ ์ด๋ ‡์Šต๋‹ˆ๋‹ค

  1. {github_user_name}:cask_repair_update-{cask_name}
  2. {github_user_name}-{cask_name}-{new_version}

๋ธŒ๋žœ์น˜ ์ž‘์—…์ด ์™„๋ฃŒ ๋˜์—ˆ์œผ๋‹ˆ, ์‹ค์ œ๋กœ ๋ฒ„์ „์„ ๋ฐ”๊ฟ”๋ณด๋„๋ก ํ•˜์ฃ 

โš”๏ธ Code Works


์ œ๊ฐ€ ์ˆ˜์ •ํ•ด์•ผ ํ•  ridibooks ์˜ cask ํŒŒ์ผ์€
Casks/ridibooks.rb ์— ์žˆ์Šต๋‹ˆ๋‹ค

ํŒŒ์ผ์„ ์—ด๋ฉด ์ด๋Ÿฐ ์ฝ”๋“œ๊ฐ€ ๋ณด์ž…๋‹ˆ๋‹ค
(ํ˜„์žฌ๋Š” ์ œ Pull Request ๊ฐ€ ํ•ฉ์ณ์ ธ brew update ๋ฅผ ํ•œ ์ƒํƒœ๋ผ๋ฉด, 2.5.5๋กœ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)

# ์—ฌ๊ธฐ ๋ถ€ํ„ฐ ์•„๋ž˜์˜ ๊ฐ’๋“ค์€ ๋ชจ๋‘ ์ˆœ์„œ์  ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค stanzas ๋ผ๋Š” ๋ถˆ๋ฆฌ๋Š” ํ•„๋“œ ๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์น˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
cask 'ridibooks' do 
  version '2.5.3' # ๋ฒ„์ „๊ณผ
  sha256 '51020bb7d36ed6af245591d6a653aa1d5d253ed9203598d87857059669b553d3' # ์ƒˆ ๋ฒ„์ „์˜ ํŒŒ์ผ์˜ checksum ๊ฐ’์„ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

  url "https://viewer-ota.ridibooks.com/mac/ridibooks-#{version}.dmg" # ๋‹ค์šด๋กœ๋“œ url ์ด ๋ณ€๊ฒฝ๋˜์ง€๋Š” ์•Š์•˜๋Š”์ง€ ํ™•์ธ๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค
  name 'Ridibooks' # Cask๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” ์ด๋ฆ„ ์ž…๋‹ˆ๋‹ค. ๊ตณ์ด ์ˆ˜์ •ํ•  ํ•„์š”๋Š” ์—†์„ ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค
  homepage 'https://ridibooks.com/support/app/download' # Cask ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“  vendor์˜ ๋‹ค์šด๋กœ๋“œ ์›น ํŽ˜์ด์ง€ ์ž…๋‹ˆ๋‹ค

  app 'Ridibooks.app' # .dmg ํŒŒ์ผ์„ ์„ค์น˜ ํ–ˆ์„ ๋•Œ์˜ ์ด๋ฆ„๊ณผ ํ™•์žฅ์ž ์ž…๋‹ˆ๋‹ค.

  zap trash: [
               '~/Library/Application Support/RIDI',
               '~/Library/Preferences/com.ridibooks.Ridibooks.plist',
             ]
end

(์ฃผ์„์„ ์ฝ์–ด ๋ณด์‹œ๋ฉด, ๋‹ค๋ฅธ Cask์˜ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ•˜์‹ค ๋•Œ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)

์ œ ์ƒ๊ฐ์—๋Š”, ๋ฒ„์ „๊ณผ sha256 checksum ๊ฐ’๋งŒ ๋ณ€๊ฒฝ ํ•ด์ฃผ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

  1. ๋ฒ„์ „ ํ™•์ธ

    ๋ฐฉ๋ฒ•์ด ์žˆ๋‚˜์š”? ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ์ง์ ‘ dmg ํŒŒ์ผ์„ ๋ฐ›์•„ ๋ณด์•„์•ผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
    download_ridibooks.png
    ๋ฐ›์•„ ๋ณด๋‹ˆ ํ˜„์žฌ๋Š” 2.5.5 ๋ฒ„์ „ ์ด๋„ค์š” ๊ทธ๋ฆฌ๊ณ  ์žก๋‹คํ•œ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋“ค...

  2. sha256 checksum ํ™•์ธ

    curl ์„ ์ด์šฉํ•ด ๋‹ค์šด๋กœ๋“œ URL ์ด ์œ ํšจํ•œ์ง€ ํ™•์ธํ•  ๊ฒธ
    #{version} ์œผ๋กœ ๋œ ๋ถ€๋ถ„์— 2.5.5๋ฅผ ๋Œ€์ž…ํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œ๋ฅผ ํ•ด ๋ด…๋‹ˆ๋‹ค

     $ curl -O https://viewer-ota.ridibooks.com/mac/ridibooks-2.5.5.dmg # ๋Œ€๋ฌธ์ž O(์˜ค) ์ž…๋‹ˆ๋‹ค
    

    ์ž˜ ๋ฐ›์•„ ์กŒ์œผ๋ฉด, dmg ํŒŒ์ผ๋กœ ์ง์ ‘ ์„ค์น˜๋„ ํ•ด ๋ด…๋‹ˆ๋‹ค.
    ridibooks_install.png
    ์„ค์น˜ํ•˜๊ณ  ๋™์ž‘์‹œ์ผœ์„œ ์ด์ƒ์ด ์—†์œผ๋ฉด, ์ •์ƒ์ ์ธ ํŒŒ์ผ์ด๋ผ๊ณ  ๊ฐ„์ฃผ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค

    ์ฐธ๊ณ ๋กœ, sha256 checksum์€ MacOS ์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ํ™•์ธํ•ฉ๋‹ˆ๋‹ค

     $ shasum -a 256 ridibooks-2.5.5.dmg
     3cca39ed89f768cbd2f8b8f28240c271ea4e4927f8a7133fe13999ddc629f5c6  ridibooks-2.5.5.dmg
    

์ง€๊ธˆ ๊นŒ์ง€ ์ €๋Š” ์•„๋ž˜ 3๊ฐ€์ง€ ๋™์ž‘์„ ํ™•์ธํ–ˆ์–ด์š”

  • [x] ์ตœ์‹  ๋ฒ„์ „ ํ™•์ธ
  • [x] ๋‹ค์šด๋กœ๋“œ URL์˜ ์œ ํšจ์„ฑ ํ™•์ธ
  • [x] SHA256 checksum ํ™•์ธ

์ด์ œ ์Šฌ์Šฌ ์ปค๋ฐ‹ํ•˜๊ณ , Pull Request๋ฅผ ๋„ฃ์–ด ๋ณผ ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค

๐Ÿงช Test! Test!


์ œ๊ฐ€ ์•„๋Š” ์˜คํ”ˆ ์†Œ์Šค๋Š” ๋Œ€๋ถ€๋ถ„ ์ปค๋ฐ‹ ์ „์— ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด
์ƒˆ๋กœ ์ถ”๊ฐ€/๋ณ€๊ฒฝ๋  ์ฝ”๋“œ์˜ ๋™์ž‘์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค

๋ฌผ๋ก  homebrew cask ์—๋„ ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค
์ด ๊ณณ์˜ ๋ฌธ์„œ ๋‚ด์šฉ์— ๋”ฐ๋ฅด๋ฉด, ์•„๋ž˜ ๋‘ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณผ ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค

$ brew cask audit my-new-cask --download

$ cd "$(brew --repository)"/Library/Taps/Homebrew/homebrew-cask
$ brew cask style Casks/my-new-cask.rb [--fix]

์ฒซ ๋ฒˆ์งธ๋Š” ์ƒˆ๋กœ ๋ณ€๊ฒฝํ•œ ๋‚ด cask๊ฐ€ ๋‹ค์šด๋กœ๋“œ ๋˜์–ด ์ž˜ ์ž‘๋™ ํ•˜๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ
๋‘ ๋ฒˆ์งธ๋Š” ์ƒˆ๋กœ ๋ณ€๊ฒฝํ•œ .rb ํŒŒ์ผ์˜ ์Šคํƒ€์ผ์ด ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์„ ์ž˜ ๋”ฐ๋ฅด๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค

๊ทธ๋Ÿผ audit ๋จผ์ € ์‹คํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค

audit_passed.gif

passed ์˜ ๋…น์ƒ‰๋ถˆ์ด ์ฃผ๋Š” ์•ˆ์ •๊ฐ์ด๋ž€... ํ„ํ„

์ƒˆ๋กœ ๋ณ€๊ฒฝํ•œ ๋ฒ„์ „์œผ๋กœ ์ž˜ ๋‹ค์šด๋กœ๋“œ ๋˜๊ณ , SHA-256 checksum ํ™•์ธ๋„ ํ†ต๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค
์ด์–ด์„œ style ์„ ํ™•์ธํ•ด๋ณผ๊ฒŒ์š”

style_check_failed.gif

๋™์ž‘์ด ์•ˆ๋ผ ์œผ์•„์•„์•„

์ž‰? ์•ˆ๋˜๋„ค์š”...
์Šคํƒ€์ผ ํ™•์ธํ•ด์•ผ ๋˜๋Š”๋ฐ ๐Ÿ˜ญ ํฐ์ผ์ž…๋‹ˆ๋‹ค
๋ถ€๋žด๋ถ€๋žด ์ด์Šˆ๋ฅผ ๋’ค์ ธ๋ณด๋‹ค ๋ณด๋‹ˆ ์ด๋Ÿฐ ์ฝ”๋ฉ˜ํŠธ ๋ฅผ ๋ฐœ๊ฒฌํ•ฉ๋‹ˆ๋‹ค

Care to try brew vendor-install ruby?
Solved some issues for me regarding jaro_winkler.

์—ญ์‹œ ์„ธ์ƒ์€ ๋„“๊ณ  ๋Šฅ๋ ฅ์ž๋Š” ๋งŽ์Šต๋‹ˆ๋‹ค
์‹ฌ์ง€์–ด ๊ณต์‹ ์†”๋ฃจ์…˜์ด ๋˜์–ด ํ•ด๋‹น ์ด์Šˆ๋Š” ํ˜„์žฌ closed ๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค

brew vendor-install ruby ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋‹ค์‹œ style ๊ฒ€์‚ฌ๋ฅผ ํ•ด๋ณผ๊ฒŒ์š”

๋จผ์ € ํ•ด๊ฒฐ์ฑ… ๋Œ€๋กœ brew vendor-install ruby ์‹คํ–‰

2s on ๐ŸŒต master
โšก 100% in homebrew-cask ๐Ÿถ doondoony โœ˜ 1 ฮป  brew vendor-install ruby
==> Downloading https://homebrew.bintray.com/bottles-portable-ruby/portable-ruby-2.3.7.leopard_64.bottle.tar.gz
######################################################################## 100.0%
==> Pouring portable-ruby-2.3.7.leopard_64.bottle.tar.gz

๊ทธ๋ฆฌ๊ณ  ์งœ์ž” ํ†ต๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค

style_check_completed.gif

no offenses detected ๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‹ˆ ์ด์ „์— malware ๊ฐ™์€๊ฑธ ์ปค๋ฐ‹ํ•œ ์ ๋„ ์žˆ๋‚˜ ๋ด…๋‹ˆ๋‹ค

์ด์ œ ์ง„์งœ์ง„์งœ ์ปค๋ฐ‹ํ•  ์ค€๋น„๋ฅผ ๋งˆ์นœ ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค
โœจ Pull Request โœจ ๋ฅผ ํ•  ์‹œ๊ฐ„ ์ž…๋‹ˆ๋‹ค

๐Ÿ™ Git works again


์ƒˆ๋กœ ์ƒ์„ฑํ•œ ๋ธŒ๋žœ์น˜๋ฅผ ์ œ ์›๊ฒฉ ์ €์žฅ์†Œ (์ €์˜ ๊ฒฝ์šฐ DoonDoony) ์˜ ๋ธŒ๋žœ์น˜๋กœ push ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
๊ทธ๊ฑธ ํ•˜๊ธฐ ์œ„ํ•ด ์ปค๋ฐ‹์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์–ด์ฉ์ง€ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋„ ์ปจ๋ฒค์…˜์ด ์žˆ์„ ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค

ํ•œ ๋ฒˆ ๊ธฐ์กด์˜ ์ปค๋ฐ‹ ๋กœ๊ทธ๋ฅผ ์‚ดํŽด๋ณผ๊ฒŒ์š”

commit_logs.png

์ €๊ธฐ ์–ด๋”˜๊ฐ€์— ์ด๋ฏธ Merged ์ธ ์ œ๊ฐ€ ์žˆ๊ตฐ์š” ํ—คํ—คํ˜ธํ˜ธ

๋ณดํ†ต ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ Update {cask name} to {์—…๋ฐ์ดํŠธ ๋œ ๋ฒ„์ „} ์œผ๋กœ ๋‚จ๊ธฐ๋„ค์š”! ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค

$ git add -p  # ๋ฐ”๋€ ๋‚ด์šฉ ํ•œ ๋ฒˆ ๋” ํ™•์ธ
$ git commit -m "Update ridibooks to 2.5.5"  # ๊ทœ์น™๋Œ€๋กœ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ
$ git checkout master  # ์ž‘์—…์ค‘์ธ ๋ธŒ๋žœ์น˜์—์„œ ๋งˆ์Šคํ„ฐ๋กœ ์ฒดํฌ์•„์›ƒ
$ git push -u DoonDoony DoonDoony-ridibooks2.5.5  # ์ œ๊ฐ€ ์ž‘์—…ํ•œ ๋ธŒ๋žœ์น˜๋ช…์€ ์ด๋žฌ์Šต๋‹ˆ๋‹ค

git push -u ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๋งํฌ๋กœ ๋Œ€์ฒด ํ•ฉ๋‹ˆ๋‹ค
๋Œ€์ถฉ ์„ค๋ช…๋“œ๋ฆฌ๋ฉด ์›๊ฒฉ ์ €์žฅ์†Œ์—๋Š” ์•„์ง DoonDoony-ridibooks2.5.5 ๋ผ๋Š” ๋ธŒ๋žœ์น˜๊ฐ€ ์—†๋Š”๋ฐ
๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜๋ฅผ push ํ•˜๋ฉด์„œ ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋ธŒ๋žœ์น˜๋„ ์ƒ์„ฑ๋˜๊ฒŒ ํ•ด ์ค๋‹ˆ๋‹ค
(์‚ฌ์‹ค upstream ์œผ๋กœ ๋งŒ๋“ค๊ณ  ํ•˜๋Š” ๋ญ”๊ฐ€์˜ ๋‚ด๋ถ€ ๋™์ž‘์ด ์žˆ์Šต๋‹ˆ๋‹ค)

๊ทธ๋Ÿผ ์ด์ œ ์ง„์งœ Pull Request ๋ฅผ ํ•ด๋ณผ๊นŒ์š” (์•„์ง๋„ ๋ชปํ•จ)

โ›‘ Pull Request ์™€ ํ†ต๊ณผ ์˜๋ก€ ~ Travis CI ~


Pull Request ๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ ๋ณด์ด๋Š” Pull requests ํƒญ์—์„œ ํ•ฉ๋‹ˆ๋‹ค

pull_request_tab.png

ํƒญ์— ๋“ค์–ด ๊ฐ€๋ฉด, ๋งŒ์•ฝ ๋ฐฉ๊ธˆ ์ปค๋ฐ‹์„ ๋งˆ์นœ ์ƒํƒœ๋ผ๋ฉด ์•„๋ž˜ ์ฒ˜๋Ÿผ ์ž๋™์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค
๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด New pull request ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ƒˆ pull request ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค

pull_request_button.png

์•„๋ž˜ ์ด๋ฏธ์ง€์— ์žˆ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ์ฒดํฌ๋ฐ•์Šค์— ์žˆ๋Š” ๋‚ด์šฉ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
(After making all ์–ด์ฉŒ๊ตฌ ํ•˜๋Š” ๋ถ€๋ถ„ ์•„๋ž˜ ๋„ค ๊ฐ€์ง€ ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค)

pull_request_form.png

๋‚ด์šฉ์€ ์•„๊นŒ ์ œ๊ฐ€ ์œ„์—์„œ ์ด๋ฏธ ์ง„ํ–‰ํ–ˆ๋˜ ๊ฒƒ๋“ค ์ž…๋‹ˆ๋‹ค

  • brew cask audit
  • brew cask style โ€”fix
  • ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋Š” ์ด๋ ‡๊ฒŒ ์“ธ ๊ฒƒ
  • ์ œ์ถœํ•˜๋Š” ๊ฒƒ์ด stable ๋ฒ„์ „์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋งž๋Š”์ง€

์ด๋ฏธ ํ–ˆ์ง€๋งŒ ๊ทธ๋ž˜๋„ ์ž˜ ์‚ดํŽด๊ฐ€๋ฉฐ ๋„ค ๊ฐ€์ง€ ํ•ญ๋ชฉ์„ ํ™•์ธํ•ด์„œ '[x]' ๋กœ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค
์ €๋Š” ์ƒˆ๋กœ์šด cask ๋ฅผ ๋งŒ๋“ ๊ฒŒ ์•„๋‹ˆ๋ฏ€๋กœ ์•„๋ž˜์˜ ์ฒดํฌ ํ•ญ๋ชฉ์€ ์ง€์šฐ๊ฒ ์Šต๋‹ˆ๋‹ค

์ด์ œ ์‹ค์ œ๋กœ Pull Request ๊ฐ€ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค
์‹ค์ œ homebrew-cask ๋ ˆํฌ์˜ ํ•˜๋‚˜์˜ Pull requests ๋กœ ๊ฒ€ํ† ๋ฅผ ๊ฑฐ์ณ ๋“ฑ๋ก๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค

pull_requests.png

์ œ๊ฐ€ ์ด๊ฑธ๋กœ ๊ธ€์„ ์“ธ ์ƒ๊ฐ์„ ์•ˆํ•˜๋‹ค ๋ณด๋‹ˆ Travis CI ๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š” ๊ฑธ ์ฐ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค

์ €๋Š” CI/CD ๋„๊ตฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ๋ชฐ๋ž์—ˆ๋Š”๋ฐ์š”
ํœด๋Œ€ํฐ์œผ๋กœ๋„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ…Œ์ŠคํŠธ๊ฐ€ ๋™์ž‘ํ•˜๋Š” ์ž‘์—…์„ ๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ์‹ ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค
(ํ…Œ์ŠคํŠธ๋Š” ๋กœ์ปฌ์—์„œ ์ง„ํ–‰ํ•œ๊ฒƒ๊ณผ ๋น„์Šทํ•œ ๊ฒƒ์„ ํ•ฉ๋‹ˆ๋‹ค. audit, ์‹ค์ œ๋กœ ์„ค์น˜ํ•ด๋ณด๊ณ  ๋™์ž‘ ํ™•์ธ ๋“ฑ)

์—ฌ๋‹ด์ด์ง€๋งŒ, ์ €๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•ด์„œ ์–ด๋–จ์ง€ ๋ชจ๋ฅด์ง€๋งŒ
๋งŒ์•ฝ์— ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ ๋ชปํ•˜๋ฉด ์• ์ดˆ์— Reject ๋˜๋Š”์ง€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

๐Ÿท ๊ธฐ๋‹ค๋ฆผ์˜ ์‹œ๊ฐ„


๋ฌด์–ธ๊ฐ€ ์ž˜๋ชป๋˜์–ด์„œ Reject ๊ฐ€ ๋  ์ˆ˜ ๋„ ์žˆ๊ณ 
๊ด€๋ฆฌ์ž๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ธธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค

๋ณดํ†ต์˜ ๊ฒฝ์šฐ ์•ฑ์˜ ๋‹จ์ˆœํ•œ ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ๋Š” ๊ธˆ๋ฐฉ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค
(์ €์˜ ๊ฒฝ์šฐ์—๋Š” ์•ฝ 12์‹œ๊ฐ„ ์ •๋„ ์†Œ์š”๋˜์—ˆ์Šต๋‹ˆ๋‹ค)

๋งŒ์•ฝ ๊ฑฐ์ ˆ ๋˜์—ˆ๋‹ค๋ฉด
๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ปค๋ฐ‹์ด๋‚˜ ๋ฐ›์€ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ๋‹ค์‹œ ์‹œ๋„ ํ•ด๋ณด์‹œ๋ฉด ๋˜๊ฒ ์ฃ !

โœจ ๋Š๋‚€ ์ 


์ญ‰ ๋ณด์‹œ๋‹ˆ๊นŒ ์–ด๋–ค๊ฐ€์š”? ์ฝ”๋“œ ํ•œ ์ค„ ์งœ์ง€ ์•Š๊ณ 
๋ญ”๊ฐ€ ์˜คํ”ˆ์†Œ์Šค์— ์ปค๋ฐ‹์„ ํ•˜๊ธด ํ–ˆ์Šต๋‹ˆ๋‹ค

์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์—…์  (์นญํ˜ธ) ์„ ๋– ๋‚˜
๋‚จ์ด ํ•ด์ฃผ๊ธธ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ , ๋Šฅ๋™์ ์œผ๋กœ ๋ถˆํŽธํ•จ์„ ํ•ด์†Œ ํ–ˆ๋‹ค๋Š” ์ ์—์„œ

๊ทธ๋ฆฌ๊ณ  ๋ˆ„๊ตฐ๊ฐ€๋Š” homebrew cask ๋กœ ๋ฆฌ๋””๋ถ์Šค ๋ทฐ์–ด๋ฅผ ์„ค์น˜ํ•˜๋ฉด์„œ
์•„ ์™œ ์•ˆ๋˜์ง€ ํ•˜๊ณ  ๊ณ„์‹œ๋‹ค๊ฐ€ "์–ด ์ด์ œ ๋œ๋‹ค ๐Ÿ˜ฒ" ํ•˜์ง€ ์•Š์œผ์…จ์„๊นŒ ํ•˜๋Š”

๊ทธ๋Ÿฐ ๋งŒ์กฑ๊ฐ์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค

๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์€ ์ •๋ง ํ…Œ์ŠคํŠธ์—์„œ ์˜ค๋Š”๊ตฌ๋‚˜ ํ•˜๋Š” ํ…Œ์ŠคํŠธ์˜ ์ค‘์š”์„ฑ
ํ˜‘์—…์„ ํ•  ๋•Œ๋Š” ๋ฃฐ์„ ์ง€ํ‚ค๋Š” ๊ฒƒ ๋งŒํผ ์ค‘์š”ํ•œ ๊ฒƒ์ด ์—†๋‹ค๋Š” ๊ฒƒ

๋‹ค์–‘ํ•œ ๊ฒฝํ—˜์„ ์งง์€ ์‹œ๊ฐ„์„ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค
(์‹ค์ œ๋กœ Pull Request ๋ฅผ ํ•˜๋Š”๋ฐ ๊นŒ์ง€ ์•ฝ ํ•œ์‹œ๊ฐ„ ์ •๋„ ๋ฐ–์— ๊ฑธ๋ฆฌ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค)

์ •๋ง ์ž‘์€ ํ•œ ๋ฐœ ์ด์ง€๋งŒ
์–ธ์  ๊ฐ€๋Š” ์ œ๊ฐ€ ์ฆ๊ฒจ ์‚ฌ์šฉํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด์—๋„
๊ธฐ์—ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ฒซ ๊ฑธ์Œ์ธ ๊ฒƒ ๊ฐ™์•„ ๋œป ๊นŠ์€ ๊ฒฝํ—˜์ด์—ˆ์Šต๋‹ˆ๋‹ค

ํ•ญ์ƒ ์กฐ์–ธ๊ณผ ์ž˜๋ชป๋œ ์ •๋ณด ์ œ๋ณด, ์˜คํƒ€ ์ง€์ ์€ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค
์—ฌ๊ธฐ ๊นŒ์ง€ ์ฝ์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿถ