aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/dev-cmd/tap-new.rb
blob: f469aa35911d4b25c8625a3d95b437b4a86c8699 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#:  * `tap-new` <user>`/`<repo>:
#:    Generate the template files for a new tap.

require "tap"

module Homebrew
  module_function

  def write_path(tap, filename, content)
    path = tap.path/filename
    tap.path.mkpath
    raise "#{path} already exists" if path.exist?
    path.write content
  end

  def tap_new
    raise "A tap argument is required" if ARGV.named.empty?

    tap = Tap.fetch(ARGV.named.first)
    titleized_user = tap.user.dup
    titleized_repo = tap.repo.dup
    titleized_user[0] = titleized_user[0].upcase
    titleized_repo[0] = titleized_repo[0].upcase

    (tap.path/"Formula").mkpath

    readme = <<-EOS.undent
      # #{titleized_user} #{titleized_repo}

      ## How do I install these formulae?
      `brew install #{tap}/<formula>`

      Or `brew tap #{tap}` and then `brew install <formula>`.

      Or install via URL (which will not receive updates):

      ```
      brew install https://raw.githubusercontent.com/#{tap.user}/homebrew-#{tap.repo}/master/Formula/<formula>.rb
      ```

      ## Documentation
      `brew help`, `man brew` or check [Homebrew's documentation](https://github.com/Homebrew/brew/tree/master/docs#readme).
    EOS
    write_path(tap, "README.md", readme)

    travis = <<-EOS.undent
    language: ruby
    os: osx
    env: OSX=10.11
    osx_image: xcode7.3
    rvm: system

    before_install:
      - export TRAVIS_COMMIT="$(git rev-parse --verify -q HEAD)"
      - if [ -f ".git/shallow" ]; then
          travis_retry git fetch --unshallow;
        fi
      - sudo chown -R $USER "$(brew --repo)"
      - git -C "$(brew --repo)" reset --hard origin/master
      - git -C "$(brew --repo)" clean -qxdff
      - brew update || brew update
      - rm -rf "$(brew --repo $TRAVIS_REPO_SLUG)"
      - mkdir -p "$(brew --repo $TRAVIS_REPO_SLUG)"
      - rsync -az "$TRAVIS_BUILD_DIR/" "$(brew --repo $TRAVIS_REPO_SLUG)"
      - export TRAVIS_BUILD_DIR="$(brew --repo $TRAVIS_REPO_SLUG)"
      - cd "$(brew --repo)"
      - export HOMEBREW_DEVELOPER="1"
      - ulimit -n 1024

    script:
      - brew test-bot

    notifications:
      email:
        on_success: never
        on_failure: always
    EOS
    write_path(tap, ".travis.yml", travis)
  end
end