mirror of
https://github.com/ViViDboarder/shoestrap.git
synced 2024-11-23 16:26:32 +00:00
Initial cleanup commit
This commit is contained in:
parent
f9ec8d776a
commit
ed3bcdf084
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "assets/default/vim-settings"]
|
||||||
|
path = assets/default/vim-settings
|
||||||
|
url = https://github.com/ViViDboarder/vim-settings.git
|
11
TODO.md
Normal file
11
TODO.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
TODO
|
||||||
|
====
|
||||||
|
|
||||||
|
Refactor to have each application contained in a directory with their install script and assets so that they can be included in their own repos
|
||||||
|
|
||||||
|
It would then be cool to distribute them individually and set them to be installed similar to Vundle
|
||||||
|
|
||||||
|
recipe 'ViViDboarder/vim-settings'
|
||||||
|
|
||||||
|
should clone that repo and run the install script inside
|
||||||
|
|
96
assets/default/abuse-the-force/atf-target
Executable file
96
assets/default/abuse-the-force/atf-target
Executable file
@ -0,0 +1,96 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require 'base64'
|
||||||
|
require 'yaml'
|
||||||
|
|
||||||
|
module AbuseTheForce
|
||||||
|
class Atf_Config
|
||||||
|
class << self
|
||||||
|
attr_accessor :targets, :active_target, :src, :root_dir, :notify
|
||||||
|
SETTINGS_FILE=".abusetheforce.yaml"
|
||||||
|
|
||||||
|
def locate_root(path = '.')
|
||||||
|
|
||||||
|
temp_path = path
|
||||||
|
|
||||||
|
# Look for a settings file in this path and up to root
|
||||||
|
until File.file? File.join(temp_path, SETTINGS_FILE)
|
||||||
|
# If we hit root, stop
|
||||||
|
if temp_path == '/'
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
# Didn't find one so go up one level
|
||||||
|
temp_path = File.absolute_path File.dirname(temp_path)
|
||||||
|
end
|
||||||
|
|
||||||
|
# If we actually found it
|
||||||
|
if File.file? File.join(temp_path, SETTINGS_FILE)
|
||||||
|
# Return
|
||||||
|
return temp_path
|
||||||
|
else
|
||||||
|
# Return the original path
|
||||||
|
return path
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
# Loads configurations from yaml
|
||||||
|
def load()
|
||||||
|
|
||||||
|
# Get the project root directory
|
||||||
|
@root_dir = locate_root
|
||||||
|
|
||||||
|
if File.file? File.join(@root_dir, SETTINGS_FILE)
|
||||||
|
settings = YAML.load_file File.join(@root_dir, SETTINGS_FILE)
|
||||||
|
@targets = settings[:targets]
|
||||||
|
@src = settings[:src]
|
||||||
|
@notify = settings[:notify]
|
||||||
|
else
|
||||||
|
puts "No settings file found, creating one now"
|
||||||
|
# Settings file doesn't exist
|
||||||
|
# Create it
|
||||||
|
@targets = {}
|
||||||
|
@active_target = nil
|
||||||
|
@src = './src'
|
||||||
|
@notify = true
|
||||||
|
|
||||||
|
dump_settings
|
||||||
|
end
|
||||||
|
|
||||||
|
# Set the default target
|
||||||
|
@targets.values.each do |target|
|
||||||
|
# Check if this one is active
|
||||||
|
if target.active == true
|
||||||
|
# Set it if there is no default target set yet
|
||||||
|
if @active_target == nil
|
||||||
|
@active_target = target
|
||||||
|
else
|
||||||
|
puts "Two active targets set. Using #{@active_target.print}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Class for holding a target
|
||||||
|
class Atf_Target
|
||||||
|
attr_accessor :name, :username, :password, :security_token, :host, :active
|
||||||
|
|
||||||
|
def initialize(name, username, password, security_token, host="login.salesforce.com")
|
||||||
|
@name = name
|
||||||
|
@username = username
|
||||||
|
set_password(password)
|
||||||
|
@security_token = security_token
|
||||||
|
@host = host
|
||||||
|
@active = false;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Load config
|
||||||
|
AbuseTheForce::Atf_Config.load
|
||||||
|
# Print the target name
|
||||||
|
puts AbuseTheForce::Atf_Config.active_target.name
|
||||||
|
|
0
assets/default/bin/.gitkeep
Normal file
0
assets/default/bin/.gitkeep
Normal file
21
assets/default/bin/ghp
Executable file
21
assets/default/bin/ghp
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
# Function used to take a github http pull URL and automatically convert it to an ssh url
|
||||||
|
|
||||||
|
if [[ "$1" == "" ]]; then
|
||||||
|
echo "Usage"
|
||||||
|
echo "ghp <url> <branch>"
|
||||||
|
echo "Example"
|
||||||
|
echo "ghp https://github.com/user/repo branch"
|
||||||
|
echo
|
||||||
|
echo "This function will convert the URL into an ssh url and"
|
||||||
|
echo "then it will execute git pull --edit --no-ff to merge."
|
||||||
|
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Expects $* to be in the form of htts://github.com/user/repo branch
|
||||||
|
URL=${1/http:\/\//git@} # Replace https:// with git@ at the beginning
|
||||||
|
URL=${URL/\//:} # Replace / with : before the user name
|
||||||
|
|
||||||
|
# Echo the command so we can see what we actually executed
|
||||||
|
echo "git pull --edit --no-ff $URL $2"
|
||||||
|
git pull --edit --no-ff $URL $2
|
28
assets/default/bin/ghpr
Executable file
28
assets/default/bin/ghpr
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
# Function used to checkout a pull request into it's own branch
|
||||||
|
|
||||||
|
REMOTE=""
|
||||||
|
PRNUM=""
|
||||||
|
|
||||||
|
if [[ "$1" == "" ]]; then
|
||||||
|
echo "Usage"
|
||||||
|
echo "ghpr <remote> <pr number>"
|
||||||
|
echo "Example"
|
||||||
|
echo "ghpr origin 100"
|
||||||
|
echo
|
||||||
|
echo "This function will fetch and clone the pull request as"
|
||||||
|
echo "a branch."
|
||||||
|
|
||||||
|
return
|
||||||
|
elif [[ "$2" == "" ]]; then
|
||||||
|
# No remote was supplied
|
||||||
|
PRNUM="$1"
|
||||||
|
else
|
||||||
|
REMOTE="$1"
|
||||||
|
PRNUM="$2"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "git fetch $REMOTE refs/pull/$PRNUM/head:PR_$PRNUM"
|
||||||
|
git fetch $REMOTE refs/pull/$PRNUM/head:PR_$PRNUM
|
||||||
|
|
||||||
|
echo "Just fetched Pull Request #$PRNUM. To switch to this branch execute:"
|
||||||
|
echo "git checkout PR_$PRNUM"
|
3
assets/default/bin/git-branch-name
Executable file
3
assets/default/bin/git-branch-name
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
git rev-parse HEAD >&/dev/null || exit 1
|
||||||
|
git branch --no-color | grep '^*' | cut -c 3-
|
31
assets/default/bin/git-changed
Executable file
31
assets/default/bin/git-changed
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
gitismerge () {
|
||||||
|
local sha=$1
|
||||||
|
msha=$(git rev-list --merges ${sha}...${sha}~1)
|
||||||
|
# If commit returned is the one passed it, it is a merge
|
||||||
|
[ -z "$msha" ] && return 1
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
|
||||||
|
echo "Usage:"
|
||||||
|
echo "git-changed commit [commit 2]"
|
||||||
|
echo ""
|
||||||
|
echo "If one commit is provided:"
|
||||||
|
echo " Return a list of all files changed in that commit"
|
||||||
|
echo ""
|
||||||
|
echo "If two commits are provided:"
|
||||||
|
echo " Return a list of all files changed between commits"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If a merge, return only changes in that merge
|
||||||
|
if [ -z "$2" ] && gitismerge $1; then
|
||||||
|
git diff-tree --no-commit-id --name-only $1
|
||||||
|
else
|
||||||
|
git diff --no-commit-id --name-only $1 $2
|
||||||
|
fi
|
||||||
|
|
365
assets/default/bin/git-wtf
Executable file
365
assets/default/bin/git-wtf
Executable file
@ -0,0 +1,365 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
HELP = <<EOS
|
||||||
|
git-wtf displays the state of your repository in a readable, easy-to-scan
|
||||||
|
format. It's useful for getting a summary of how a branch relates to a remote
|
||||||
|
server, and for wrangling many topic branches.
|
||||||
|
|
||||||
|
git-wtf can show you:
|
||||||
|
- How a branch relates to the remote repo, if it's a tracking branch.
|
||||||
|
- How a branch relates to integration branches, if it's a feature branch.
|
||||||
|
- How a branch relates to the feature branches, if it's an integration
|
||||||
|
branch.
|
||||||
|
|
||||||
|
git-wtf is best used before a git push, or between a git fetch and a git
|
||||||
|
merge. Be sure to set color.ui to auto or yes for maximum viewing pleasure.
|
||||||
|
EOS
|
||||||
|
|
||||||
|
KEY = <<EOS
|
||||||
|
KEY:
|
||||||
|
() branch only exists locally
|
||||||
|
{} branch only exists on a remote repo
|
||||||
|
[] branch exists locally and remotely
|
||||||
|
|
||||||
|
x merge occurs both locally and remotely
|
||||||
|
~ merge occurs only locally
|
||||||
|
(space) branch isn't merged in
|
||||||
|
|
||||||
|
(It's possible for merges to occur remotely and not locally, of course, but
|
||||||
|
that's a less common case and git-wtf currently doesn't display anything
|
||||||
|
special for it.)
|
||||||
|
EOS
|
||||||
|
|
||||||
|
USAGE = <<EOS
|
||||||
|
Usage: git wtf [branch+] [options]
|
||||||
|
|
||||||
|
If [branch] is not specified, git-wtf will use the current branch. The possible
|
||||||
|
[options] are:
|
||||||
|
|
||||||
|
-l, --long include author info and date for each commit
|
||||||
|
-a, --all show all branches across all remote repos, not just
|
||||||
|
those from origin
|
||||||
|
-A, --all-commits show all commits, not just the first 5
|
||||||
|
-s, --short don't show commits
|
||||||
|
-k, --key show key
|
||||||
|
-r, --relations show relation to features / integration branches
|
||||||
|
--dump-config print out current configuration and exit
|
||||||
|
|
||||||
|
git-wtf uses some heuristics to determine which branches are integration
|
||||||
|
branches, and which are feature branches. (Specifically, it assumes the
|
||||||
|
integration branches are named "master", "next" and "edge".) If it guesses
|
||||||
|
incorrectly, you will have to create a .git-wtfrc file.
|
||||||
|
|
||||||
|
To start building a configuration file, run "git-wtf --dump-config >
|
||||||
|
.git-wtfrc" and edit it. The config file is a YAML file that specifies the
|
||||||
|
integration branches, any branches to ignore, and the max number of commits to
|
||||||
|
display when --all-commits isn't used. git-wtf will look for a .git-wtfrc file
|
||||||
|
starting in the current directory, and recursively up to the root.
|
||||||
|
|
||||||
|
IMPORTANT NOTE: all local branches referenced in .git-wtfrc must be prefixed
|
||||||
|
with heads/, e.g. "heads/master". Remote branches must be of the form
|
||||||
|
remotes/<remote>/<branch>.
|
||||||
|
EOS
|
||||||
|
|
||||||
|
COPYRIGHT = <<EOS
|
||||||
|
git-wtf Copyright 2008--2009 William Morgan <wmorgan at the masanjin dot nets>.
|
||||||
|
This program is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation, either version 3 of the License, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
|
more details.
|
||||||
|
|
||||||
|
You can find the GNU General Public License at: http://www.gnu.org/licenses/
|
||||||
|
EOS
|
||||||
|
|
||||||
|
require 'yaml'
|
||||||
|
CONFIG_FN = ".git-wtfrc"
|
||||||
|
|
||||||
|
class Numeric; def pluralize s; "#{to_s} #{s}" + (self != 1 ? "s" : "") end end
|
||||||
|
|
||||||
|
if ARGV.delete("--help") || ARGV.delete("-h")
|
||||||
|
puts USAGE
|
||||||
|
exit
|
||||||
|
end
|
||||||
|
|
||||||
|
## poor man's trollop
|
||||||
|
$long = ARGV.delete("--long") || ARGV.delete("-l")
|
||||||
|
$short = ARGV.delete("--short") || ARGV.delete("-s")
|
||||||
|
$all = ARGV.delete("--all") || ARGV.delete("-a")
|
||||||
|
$all_commits = ARGV.delete("--all-commits") || ARGV.delete("-A")
|
||||||
|
$dump_config = ARGV.delete("--dump-config")
|
||||||
|
$key = ARGV.delete("--key") || ARGV.delete("-k")
|
||||||
|
$show_relations = ARGV.delete("--relations") || ARGV.delete("-r")
|
||||||
|
ARGV.each { |a| abort "Error: unknown argument #{a}." if a =~ /^--/ }
|
||||||
|
|
||||||
|
## search up the path for a file
|
||||||
|
def find_file fn
|
||||||
|
while true
|
||||||
|
return fn if File.exist? fn
|
||||||
|
fn2 = File.join("..", fn)
|
||||||
|
return nil if File.expand_path(fn2) == File.expand_path(fn)
|
||||||
|
fn = fn2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
want_color = `git config color.wtf`
|
||||||
|
want_color = `git config color.ui` if want_color.empty?
|
||||||
|
$color = case want_color.chomp
|
||||||
|
when "true"; true
|
||||||
|
when "auto"; $stdout.tty?
|
||||||
|
end
|
||||||
|
|
||||||
|
def red s; $color ? "\033[31m#{s}\033[0m" : s end
|
||||||
|
def green s; $color ? "\033[32m#{s}\033[0m" : s end
|
||||||
|
def yellow s; $color ? "\033[33m#{s}\033[0m" : s end
|
||||||
|
def cyan s; $color ? "\033[36m#{s}\033[0m" : s end
|
||||||
|
def grey s; $color ? "\033[1;30m#{s}\033[0m" : s end
|
||||||
|
def purple s; $color ? "\033[35m#{s}\033[0m" : s end
|
||||||
|
|
||||||
|
## the set of commits in 'to' that aren't in 'from'.
|
||||||
|
## if empty, 'to' has been merged into 'from'.
|
||||||
|
def commits_between from, to
|
||||||
|
if $long
|
||||||
|
`git log --pretty=format:"- %s [#{yellow "%h"}] (#{purple "%ae"}; %ar)" #{from}..#{to}`
|
||||||
|
else
|
||||||
|
`git log --pretty=format:"- %s [#{yellow "%h"}]" #{from}..#{to}`
|
||||||
|
end.split(/[\r\n]+/)
|
||||||
|
end
|
||||||
|
|
||||||
|
def show_commits commits, prefix=" "
|
||||||
|
if commits.empty?
|
||||||
|
puts "#{prefix} none"
|
||||||
|
else
|
||||||
|
max = $all_commits ? commits.size : $config["max_commits"]
|
||||||
|
max -= 1 if max == commits.size - 1 # never show "and 1 more"
|
||||||
|
commits[0 ... max].each { |c| puts "#{prefix}#{c}" }
|
||||||
|
puts grey("#{prefix}... and #{commits.size - max} more (use -A to see all).") if commits.size > max
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def ahead_behind_string ahead, behind
|
||||||
|
[ahead.empty? ? nil : "#{ahead.size.pluralize 'commit'} ahead",
|
||||||
|
behind.empty? ? nil : "#{behind.size.pluralize 'commit'} behind"].
|
||||||
|
compact.join("; ")
|
||||||
|
end
|
||||||
|
|
||||||
|
def widget merged_in, remote_only=false, local_only=false, local_only_merge=false
|
||||||
|
left, right = case
|
||||||
|
when remote_only; %w({ })
|
||||||
|
when local_only; %w{( )}
|
||||||
|
else %w([ ])
|
||||||
|
end
|
||||||
|
middle = case
|
||||||
|
when merged_in && local_only_merge; green("~")
|
||||||
|
when merged_in; green("x")
|
||||||
|
else " "
|
||||||
|
end
|
||||||
|
print left, middle, right
|
||||||
|
end
|
||||||
|
|
||||||
|
def show b
|
||||||
|
have_both = b[:local_branch] && b[:remote_branch]
|
||||||
|
|
||||||
|
pushc, pullc, oosync = if have_both
|
||||||
|
[x = commits_between(b[:remote_branch], b[:local_branch]),
|
||||||
|
y = commits_between(b[:local_branch], b[:remote_branch]),
|
||||||
|
!x.empty? && !y.empty?]
|
||||||
|
end
|
||||||
|
|
||||||
|
if b[:local_branch]
|
||||||
|
puts "Local branch: " + green(b[:local_branch].sub(/^heads\//, ""))
|
||||||
|
|
||||||
|
if have_both
|
||||||
|
if pushc.empty?
|
||||||
|
puts "#{widget true} in sync with remote"
|
||||||
|
else
|
||||||
|
action = oosync ? "push after rebase / merge" : "push"
|
||||||
|
puts "#{widget false} NOT in sync with remote (you should #{action})"
|
||||||
|
show_commits pushc unless $short
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if b[:remote_branch]
|
||||||
|
puts "Remote branch: #{cyan b[:remote_branch]} (#{b[:remote_url]})"
|
||||||
|
|
||||||
|
if have_both
|
||||||
|
if pullc.empty?
|
||||||
|
puts "#{widget true} in sync with local"
|
||||||
|
else
|
||||||
|
action = pushc.empty? ? "merge" : "rebase / merge"
|
||||||
|
puts "#{widget false} NOT in sync with local (you should #{action})"
|
||||||
|
show_commits pullc unless $short
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "\n#{red "WARNING"}: local and remote branches have diverged. A merge will occur unless you rebase." if oosync
|
||||||
|
end
|
||||||
|
|
||||||
|
def show_relations b, all_branches
|
||||||
|
ibs, fbs = all_branches.partition { |name, br| $config["integration-branches"].include?(br[:local_branch]) ||
|
||||||
|
$config["integration-branches"].include?(br[:remote_branch]) }
|
||||||
|
if $config["integration-branches"].include? b[:local_branch]
|
||||||
|
puts "\nFeature branches:" unless fbs.empty?
|
||||||
|
fbs.each do |name, br|
|
||||||
|
next if $config["ignore"].member?(br[:local_branch]) || $config["ignore"].member?(br[:remote_branch])
|
||||||
|
next if br[:ignore]
|
||||||
|
local_only = br[:remote_branch].nil?
|
||||||
|
remote_only = br[:local_branch].nil?
|
||||||
|
name = if local_only
|
||||||
|
purple br[:name]
|
||||||
|
elsif remote_only
|
||||||
|
cyan br[:name]
|
||||||
|
else
|
||||||
|
green br[:name]
|
||||||
|
end
|
||||||
|
|
||||||
|
## for remote_only branches, we'll compute wrt the remote branch head. otherwise, we'll
|
||||||
|
## use the local branch head.
|
||||||
|
head = remote_only ? br[:remote_branch] : br[:local_branch]
|
||||||
|
|
||||||
|
remote_ahead = b[:remote_branch] ? commits_between(b[:remote_branch], head) : []
|
||||||
|
local_ahead = b[:local_branch] ? commits_between(b[:local_branch], head) : []
|
||||||
|
|
||||||
|
if local_ahead.empty? && remote_ahead.empty?
|
||||||
|
puts "#{widget true, remote_only, local_only} #{name} #{local_only ? "(local-only) " : ""}is merged in"
|
||||||
|
elsif local_ahead.empty?
|
||||||
|
puts "#{widget true, remote_only, local_only, true} #{name} merged in (only locally)"
|
||||||
|
else
|
||||||
|
behind = commits_between head, (br[:local_branch] || br[:remote_branch])
|
||||||
|
ahead = remote_only ? remote_ahead : local_ahead
|
||||||
|
puts "#{widget false, remote_only, local_only} #{name} #{local_only ? "(local-only) " : ""}is NOT merged in (#{ahead_behind_string ahead, behind})"
|
||||||
|
show_commits ahead unless $short
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
puts "\nIntegration branches:" unless ibs.empty? # unlikely
|
||||||
|
ibs.sort_by { |v, br| v }.each do |v, br|
|
||||||
|
next if $config["ignore"].member?(br[:local_branch]) || $config["ignore"].member?(br[:remote_branch])
|
||||||
|
next if br[:ignore]
|
||||||
|
local_only = br[:remote_branch].nil?
|
||||||
|
remote_only = br[:local_branch].nil?
|
||||||
|
name = remote_only ? cyan(br[:name]) : green(br[:name])
|
||||||
|
|
||||||
|
ahead = commits_between v, (b[:local_branch] || b[:remote_branch])
|
||||||
|
if ahead.empty?
|
||||||
|
puts "#{widget true, local_only} merged into #{name}"
|
||||||
|
else
|
||||||
|
#behind = commits_between b[:local_branch], v
|
||||||
|
puts "#{widget false, local_only} NOT merged into #{name} (#{ahead.size.pluralize 'commit'} ahead)"
|
||||||
|
show_commits ahead unless $short
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
#### EXECUTION STARTS HERE ####
|
||||||
|
|
||||||
|
## find config file and load it
|
||||||
|
$config = { "integration-branches" => %w(heads/master heads/next heads/edge), "ignore" => [], "max_commits" => 5 }.merge begin
|
||||||
|
fn = find_file CONFIG_FN
|
||||||
|
if fn && (h = YAML::load_file(fn)) # yaml turns empty files into false
|
||||||
|
h["integration-branches"] ||= h["versions"] # support old nomenclature
|
||||||
|
h
|
||||||
|
else
|
||||||
|
{}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if $dump_config
|
||||||
|
puts $config.to_yaml
|
||||||
|
exit
|
||||||
|
end
|
||||||
|
|
||||||
|
## first, index registered remotes
|
||||||
|
remotes = `git config --get-regexp ^remote\.\*\.url`.split(/[\r\n]+/).inject({}) do |hash, l|
|
||||||
|
l =~ /^remote\.(.+?)\.url (.+)$/ or next hash
|
||||||
|
hash[$1] ||= $2
|
||||||
|
hash
|
||||||
|
end
|
||||||
|
|
||||||
|
## next, index followed branches
|
||||||
|
branches = `git config --get-regexp ^branch\.`.split(/[\r\n]+/).inject({}) do |hash, l|
|
||||||
|
case l
|
||||||
|
when /branch\.(.*?)\.remote (.+)/
|
||||||
|
name, remote = $1, $2
|
||||||
|
|
||||||
|
hash[name] ||= {}
|
||||||
|
hash[name].merge! :remote => remote, :remote_url => remotes[remote]
|
||||||
|
when /branch\.(.*?)\.merge ((refs\/)?heads\/)?(.+)/
|
||||||
|
name, remote_branch = $1, $4
|
||||||
|
hash[name] ||= {}
|
||||||
|
hash[name].merge! :remote_mergepoint => remote_branch
|
||||||
|
end
|
||||||
|
hash
|
||||||
|
end
|
||||||
|
|
||||||
|
## finally, index all branches
|
||||||
|
remote_branches = {}
|
||||||
|
`git show-ref`.split(/[\r\n]+/).each do |l|
|
||||||
|
sha1, ref = l.chomp.split " refs/"
|
||||||
|
|
||||||
|
if ref =~ /^heads\/(.+)$/ # local branch
|
||||||
|
name = $1
|
||||||
|
next if name == "HEAD"
|
||||||
|
branches[name] ||= {}
|
||||||
|
branches[name].merge! :name => name, :local_branch => ref
|
||||||
|
elsif ref =~ /^remotes\/(.+?)\/(.+)$/ # remote branch
|
||||||
|
remote, name = $1, $2
|
||||||
|
remote_branches["#{remote}/#{name}"] = true
|
||||||
|
next if name == "HEAD"
|
||||||
|
ignore = !($all || remote == "origin")
|
||||||
|
|
||||||
|
branch = name
|
||||||
|
if branches[name] && branches[name][:remote] == remote
|
||||||
|
# nothing
|
||||||
|
else
|
||||||
|
name = "#{remote}/#{branch}"
|
||||||
|
end
|
||||||
|
|
||||||
|
branches[name] ||= {}
|
||||||
|
branches[name].merge! :name => name, :remote => remote, :remote_branch => "#{remote}/#{branch}", :remote_url => remotes[remote], :ignore => ignore
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
## assemble remotes
|
||||||
|
branches.each do |k, b|
|
||||||
|
next unless b[:remote] && b[:remote_mergepoint]
|
||||||
|
b[:remote_branch] = if b[:remote] == "."
|
||||||
|
b[:remote_mergepoint]
|
||||||
|
else
|
||||||
|
t = "#{b[:remote]}/#{b[:remote_mergepoint]}"
|
||||||
|
remote_branches[t] && t # only if it's still alive
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
show_dirty = ARGV.empty?
|
||||||
|
targets = if ARGV.empty?
|
||||||
|
[`git symbolic-ref HEAD`.chomp.sub(/^refs\/heads\//, "")]
|
||||||
|
else
|
||||||
|
ARGV.map { |x| x.sub(/^heads\//, "") }
|
||||||
|
end.map { |t| branches[t] or abort "Error: can't find branch #{t.inspect}." }
|
||||||
|
|
||||||
|
targets.each do |t|
|
||||||
|
show t
|
||||||
|
show_relations t, branches if $show_relations || t[:remote_branch].nil?
|
||||||
|
end
|
||||||
|
|
||||||
|
modified = show_dirty && `git ls-files -m` != ""
|
||||||
|
uncommitted = show_dirty && `git diff-index --cached HEAD` != ""
|
||||||
|
|
||||||
|
if $key
|
||||||
|
puts
|
||||||
|
puts KEY
|
||||||
|
end
|
||||||
|
|
||||||
|
puts if modified || uncommitted
|
||||||
|
puts "#{red "NOTE"}: working directory contains modified files." if modified
|
||||||
|
puts "#{red "NOTE"}: staging area contains staged but uncommitted files." if uncommitted
|
||||||
|
|
||||||
|
# the end!
|
7
assets/default/bin/reattach-to-user-namespace-tmux
Executable file
7
assets/default/bin/reattach-to-user-namespace-tmux
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
if [[ "$(uname)" = "Darwin" ]]; then
|
||||||
|
reattach-to-user-namespace $@
|
||||||
|
else
|
||||||
|
exec "$@"
|
||||||
|
fi
|
7
assets/default/dotfiles/ackrc
Normal file
7
assets/default/dotfiles/ackrc
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Add support for sass
|
||||||
|
--type-set
|
||||||
|
sass=.sass,.scss
|
||||||
|
|
||||||
|
# Add support for Salesforce
|
||||||
|
--type-set
|
||||||
|
apex=.cls,.trigger
|
2
assets/default/dotfiles/antrc
Normal file
2
assets/default/dotfiles/antrc
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Increase memory sizes for java using Ant
|
||||||
|
export ANT_OPTS="-Xmx2048m -Xms512m"
|
12
assets/default/dotfiles/bash_alias
Normal file
12
assets/default/dotfiles/bash_alias
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# git
|
||||||
|
alias gc='git commit $*'
|
||||||
|
alias gco='git checkout $*'
|
||||||
|
alias gl='git log $*'
|
||||||
|
alias gr='git rebase $*'
|
||||||
|
alias gs='git status $*'
|
||||||
|
alias gd='git diff $*'
|
||||||
|
alias tiga='tig --all'
|
||||||
|
|
||||||
|
# cd
|
||||||
|
alias cd..='cd ..'
|
||||||
|
|
70
assets/default/dotfiles/bash_profile
Normal file
70
assets/default/dotfiles/bash_profile
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
# Set file as having been loaded to avoid looping
|
||||||
|
IS_BASH_PROFILE_LOADED=true
|
||||||
|
# If bashrc hasn't been loaded, load it
|
||||||
|
if [ -z "$IS_BASHRC_LOADED" ] ; then
|
||||||
|
source $HOME/.bashrc
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Some stuff is OS Dependent
|
||||||
|
DET_OS="unknown"
|
||||||
|
UNAME_STR=`uname`
|
||||||
|
|
||||||
|
if [[ "$UNAME_STR" == "Darwin" ]]; then
|
||||||
|
DET_OS="mac"
|
||||||
|
elif [[ "$UNAME_STR" == "Linux" ]]; then
|
||||||
|
DET_OS="linux"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Since this is a mac, source the bashrc
|
||||||
|
if [[ "$DET_OS" == "mac" ]]; then
|
||||||
|
# Bash Completion
|
||||||
|
if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then
|
||||||
|
. /opt/local/etc/profile.d/bash_completion.sh
|
||||||
|
fi
|
||||||
|
if [ -f /opt/local/share/bash-completion/completions/git-flow ]; then
|
||||||
|
. /opt/local/share/bash-completion/completions/git-flow
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Git Branch PS
|
||||||
|
function parse_git_branch {
|
||||||
|
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
|
||||||
|
echo " ("${ref#refs/heads/}")"
|
||||||
|
}
|
||||||
|
|
||||||
|
function parse_atf_target {
|
||||||
|
#ignore for now
|
||||||
|
return
|
||||||
|
org=$(atf-target 2> /dev/null) || return
|
||||||
|
echo " [$org]"
|
||||||
|
}
|
||||||
|
|
||||||
|
function parse_force_target {
|
||||||
|
`git config force.use 2> /dev/null` || return
|
||||||
|
org=$(force-target 2> /dev/null) || return
|
||||||
|
echo " [$org]"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Alias for colors
|
||||||
|
RED="\[\033[0;31m\]"
|
||||||
|
YELLOW="\[\033[0;33m\]"
|
||||||
|
GREEN="\[\033[0;32m\]"
|
||||||
|
ENDCOLOR="\[\e[0m\]"
|
||||||
|
|
||||||
|
# New prompt format
|
||||||
|
PS1="\h \W$YELLOW\$(parse_git_branch)$ENDCOLOR$GREEN\$(parse_atf_target)$ENDCOLOR$GREEN\$(parse_force_target)$ENDCOLOR\$ "
|
||||||
|
|
||||||
|
# Prompt Title
|
||||||
|
export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
|
||||||
|
|
||||||
|
# Set cursor colors
|
||||||
|
export CLICOLOR=1
|
||||||
|
export LSCOLORS=ExFxCxDxBxegedabagacad
|
||||||
|
|
||||||
|
# Set file as having been loaded to avoid looping
|
||||||
|
#IS_BASH_PROFILE_LOADED=true
|
||||||
|
|
||||||
|
#if [ $IS_BASH_PROFILE_LOADED ] && [ $IS_BASHRC_LOADED ]; then
|
||||||
|
# IS_BASH_PROFILE_LOADED=false
|
||||||
|
# IS_BASHRC_LOADED=false
|
||||||
|
#fi
|
44
assets/default/dotfiles/bashrc
Normal file
44
assets/default/dotfiles/bashrc
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
DET_OS="unknown"
|
||||||
|
UNAME_STR=`uname`
|
||||||
|
|
||||||
|
# Some settings are mac specific
|
||||||
|
if [[ "$UNAME_STR" == "Darwin" ]]; then
|
||||||
|
DET_OS="mac"
|
||||||
|
elif [[ "$UNAME_STR" == "Linux" ]]; then
|
||||||
|
DET_OS="linux"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Source bash alaias
|
||||||
|
if [ -f ~/.bash_alias ]; then
|
||||||
|
. ~/.bash_alias
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Common paths for me
|
||||||
|
export PATH=$PATH:$ANT_HOME/bin
|
||||||
|
# Opt directory
|
||||||
|
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
|
||||||
|
# Android SDK
|
||||||
|
if [[ "$DET_OS" == "linux" ]]; then
|
||||||
|
ANDROID_SDK=$HOME/workspace/adt-bundle-linux/sdk
|
||||||
|
elif [[ "$DET_OS" == "mac" ]]; then
|
||||||
|
ANDROID_SDK=$HOME/workspace/android-sdk-macosx
|
||||||
|
export PATH=$HOME/Library/Python/2.7/bin:$PATH
|
||||||
|
fi
|
||||||
|
export ANDROID_HOME=$ANDROID_SDK
|
||||||
|
export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools
|
||||||
|
# Add RVM to PATH for scripting
|
||||||
|
export PATH=$PATH:$HOME/.rvm/bin
|
||||||
|
# Add ~/bin
|
||||||
|
export PATH=$HOME/bin:$PATH
|
||||||
|
|
||||||
|
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
|
||||||
|
|
||||||
|
# Increase memory sizes for java using Ant
|
||||||
|
ANT_OPTS="-Xmx2048m -Xms512m"
|
||||||
|
|
||||||
|
# Set file as having been loaded to avoid looping
|
||||||
|
IS_BASHRC_LOADED=true
|
||||||
|
# If an interactive shell and .bash_profile hasn't been loaded, load it
|
||||||
|
if [ -n "$PS1" ] && [ -z "$IS_BASH_PROFILE_LOADED" ] ; then
|
||||||
|
source $HOME/.bash_profile
|
||||||
|
fi
|
5
assets/default/dotfiles/ctags
Normal file
5
assets/default/dotfiles/ctags
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
--langmap=c#:+.trigger
|
||||||
|
--langmap=c#:+.cls
|
||||||
|
--langmap=html:+.page
|
||||||
|
--langmap=html:+.component
|
||||||
|
|
58
assets/default/dotfiles/tmux.conf
Normal file
58
assets/default/dotfiles/tmux.conf
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
# set default shell
|
||||||
|
set-option -g default-shell $SHELL
|
||||||
|
|
||||||
|
# Sets xterm window title
|
||||||
|
set-option -g set-titles on
|
||||||
|
set-option -g set-titles-string '[#S:#I] #W'
|
||||||
|
|
||||||
|
# copy and paster
|
||||||
|
set-option -g default-command "reattach-to-user-namespace-tmux bash"
|
||||||
|
|
||||||
|
# look good
|
||||||
|
set -g default-terminal "screen-256color"
|
||||||
|
|
||||||
|
# act like GNU screen
|
||||||
|
unbind C-b
|
||||||
|
#set -g prefix C-a
|
||||||
|
#set -g prefix C-Space
|
||||||
|
set -g prefix C-q
|
||||||
|
# Move thorugh panes with a repeat
|
||||||
|
#bind C-a select-pane -t :.+
|
||||||
|
#bind C-Space select-pane -t :.+
|
||||||
|
bind C-q select-pane -t :.+
|
||||||
|
|
||||||
|
# a mouse
|
||||||
|
set -g mode-mouse on
|
||||||
|
setw -g mouse-select-window on
|
||||||
|
setw -g mouse-select-pane on
|
||||||
|
|
||||||
|
# easy splitting
|
||||||
|
bind | split-window -h -c "#{pane_current_path}"
|
||||||
|
bind - split-window -c "#{pane_current_path}"
|
||||||
|
bind _ split-window -c "#{pane_current_path}"
|
||||||
|
|
||||||
|
# act like vim
|
||||||
|
setw -g mode-keys vi
|
||||||
|
# move between panes
|
||||||
|
bind h select-pane -L
|
||||||
|
bind j select-pane -D
|
||||||
|
bind k select-pane -U
|
||||||
|
bind l select-pane -R
|
||||||
|
# swap panes
|
||||||
|
bind-key -r J swap-pane -D
|
||||||
|
bind-key -r K swap-pane -U
|
||||||
|
# move between windows
|
||||||
|
bind-key -r C-h select-window -t :-
|
||||||
|
bind-key -r C-l select-window -t :+
|
||||||
|
# use vim style copy mode
|
||||||
|
unbind [
|
||||||
|
bind ` copy-mode
|
||||||
|
unbind p
|
||||||
|
bind p paste-buffer
|
||||||
|
bind -t vi-copy v begin-selection
|
||||||
|
bind -t vi-copy y copy-selection
|
||||||
|
|
||||||
|
# after copying to a tmux buffer, hit y again to copy to clipboard
|
||||||
|
if-shell 'test "$(uname -s)" = "Darwin"' 'bind-key y run "tmux show-buffer | reattach-to-user-namespace pbcopy"'
|
||||||
|
if-shell 'test "$(uname -s)" = "Linux"' 'bind-key y run "tmux show-buffer | xclip -sel clip -i"'
|
||||||
|
|
3
assets/default/force-cli/force-target
Executable file
3
assets/default/force-cli/force-target
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
force active | awk -F '.' '{ print $NF }'
|
1
assets/default/vim-settings
Submodule
1
assets/default/vim-settings
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 905e74f14a7af0ba632ecb3406af154e45e2a1a1
|
@ -3,3 +3,41 @@
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
# Add your custom helpers here. Remember, this is just Bash!
|
# Add your custom helpers here. Remember, this is just Bash!
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
function init_paths_and_vars {
|
||||||
|
# Directory for projects
|
||||||
|
WORKSPACE=$HOME/workspace
|
||||||
|
# This is in bashrc
|
||||||
|
USER_BIN=$HOME/bin
|
||||||
|
# Temp dir for downloads
|
||||||
|
TMP_DIR=$PROJECT_DIR/tmp
|
||||||
|
# System uname
|
||||||
|
UNAME_STR=`uname`
|
||||||
|
|
||||||
|
# Create workspace dir
|
||||||
|
mkdir -p $WORKSPACE
|
||||||
|
mkdir -p $USER_BIN
|
||||||
|
mkdir -p $TMP_DIR
|
||||||
|
}
|
||||||
|
|
||||||
|
function source_dotfile {
|
||||||
|
|
||||||
|
local RC_PATH=$1
|
||||||
|
local RC_NAME=`basename $1`
|
||||||
|
local SOURCE_CMD="source"
|
||||||
|
|
||||||
|
# If a source command was passed in, we can use that
|
||||||
|
[ "$2" != "" ] && SOURCE_CMD=$2
|
||||||
|
|
||||||
|
# Check if .bash* file exists
|
||||||
|
if [[ ! ( -f "$HOME/.$RC_NAME" ) ]]; then
|
||||||
|
# Create a blank one
|
||||||
|
touch "$HOME/.$RC_NAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
try_link "$RC_PATH" "$HOME/.${RC_NAME}_sync"
|
||||||
|
|
||||||
|
add_line "#import $RC_NAME from synced" "$HOME/.$RC_NAME"
|
||||||
|
add_line "$SOURCE_CMD ~/.${RC_NAME}_sync" "$HOME/.$RC_NAME"
|
||||||
|
}
|
||||||
|
|
||||||
|
154
helpers/default
154
helpers/default
@ -135,6 +135,32 @@ package_update () {
|
|||||||
apt-get update -y
|
apt-get update -y
|
||||||
elif [ "$PACKAGE_MANAGER" == 'yum' ]; then
|
elif [ "$PACKAGE_MANAGER" == 'yum' ]; then
|
||||||
yum check-update -y
|
yum check-update -y
|
||||||
|
elif [ "$PACKAGE_MANAGER" == 'port' ]; then
|
||||||
|
port selfupdate
|
||||||
|
elif [ "$PACKAGE_MANAGER" == 'brew' ]; then
|
||||||
|
brew update
|
||||||
|
else
|
||||||
|
error "Unknown package manager: $PACKAGE_MANAGER"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
error "An error occured while updating packages. Fail!"
|
||||||
|
else
|
||||||
|
spacer 2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sudo_package_update () {
|
||||||
|
log "Updating package manager..." 0 1
|
||||||
|
detect_package_manager
|
||||||
|
|
||||||
|
if [ "$PACKAGE_MANAGER" == 'apt-get' ]; then
|
||||||
|
sudo apt-get update -y
|
||||||
|
elif [ "$PACKAGE_MANAGER" == 'yum' ]; then
|
||||||
|
sudo yum check-update -y
|
||||||
|
elif [ "$PACKAGE_MANAGER" == 'port' ]; then
|
||||||
|
sudo port selfupdate
|
||||||
elif [ "$PACKAGE_MANAGER" == 'brew' ]; then
|
elif [ "$PACKAGE_MANAGER" == 'brew' ]; then
|
||||||
brew update
|
brew update
|
||||||
else
|
else
|
||||||
@ -166,6 +192,39 @@ package () {
|
|||||||
DEBIAN_FRONTEND=noninteractive apt-get install -y --force-yes $1
|
DEBIAN_FRONTEND=noninteractive apt-get install -y --force-yes $1
|
||||||
elif [ "$PACKAGE_MANAGER" == 'yum' ]; then
|
elif [ "$PACKAGE_MANAGER" == 'yum' ]; then
|
||||||
yum install -y $1
|
yum install -y $1
|
||||||
|
elif [ "$PACKAGE_MANAGER" == 'port' ]; then
|
||||||
|
port install $1
|
||||||
|
elif [ "$PACKAGE_MANAGER" == 'brew' ]; then
|
||||||
|
brew install $1
|
||||||
|
else
|
||||||
|
error "Unknown package manager: $PACKAGE_MANAGER"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
error "An error occured while installing package '$1'. Fail!"
|
||||||
|
else
|
||||||
|
spacer 2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sudo_package () {
|
||||||
|
log "Installing package '$1'..."
|
||||||
|
detect_package_manager
|
||||||
|
|
||||||
|
test_package_installed $1 > /dev/null 2>&1
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
log "Package '$1' is already installed. Skipping."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$PACKAGE_MANAGER" == 'apt-get' ]; then
|
||||||
|
DEBIAN_FRONTEND=noninteractive sudo apt-get install -y --force-yes $1
|
||||||
|
elif [ "$PACKAGE_MANAGER" == 'yum' ]; then
|
||||||
|
sudo yum install -y $1
|
||||||
|
elif [ "$PACKAGE_MANAGER" == 'port' ]; then
|
||||||
|
sudo port install $1
|
||||||
elif [ "$PACKAGE_MANAGER" == 'brew' ]; then
|
elif [ "$PACKAGE_MANAGER" == 'brew' ]; then
|
||||||
brew install $1
|
brew install $1
|
||||||
else
|
else
|
||||||
@ -213,6 +272,8 @@ detect_package_manager () {
|
|||||||
PACKAGE_MANAGER='apt-get'
|
PACKAGE_MANAGER='apt-get'
|
||||||
elif command_exist yum; then
|
elif command_exist yum; then
|
||||||
PACKAGE_MANAGER='yum'
|
PACKAGE_MANAGER='yum'
|
||||||
|
elif command_exist port; then
|
||||||
|
PACKAGE_MANAGER='port'
|
||||||
elif command_exist brew; then
|
elif command_exist brew; then
|
||||||
PACKAGE_MANAGER='brew'
|
PACKAGE_MANAGER='brew'
|
||||||
else
|
else
|
||||||
@ -236,19 +297,76 @@ command_exist () {
|
|||||||
copy () {
|
copy () {
|
||||||
local cookbook_assets_source="$COOKBOOK_ASSETS_PATH/$1"
|
local cookbook_assets_source="$COOKBOOK_ASSETS_PATH/$1"
|
||||||
local default_assets_source="$DEFAULT_ASSETS_PATH/$1"
|
local default_assets_source="$DEFAULT_ASSETS_PATH/$1"
|
||||||
local target=$2
|
local target="$2"
|
||||||
|
|
||||||
if [ -f $cookbook_assets_source ]; then
|
if [ -f "$cookbook_assets_source" ]; then
|
||||||
log "Copying $cookbook_assets_source to $target..."
|
log "Copying $cookbook_assets_source to $target..."
|
||||||
cp $cookbook_assets_source $target
|
cp "$cookbook_assets_source" "$target"
|
||||||
elif [ -f $default_assets_source ]; then
|
elif [ -f "$default_assets_source" ]; then
|
||||||
log "Copying $default_assets_source to $target..."
|
log "Copying $default_assets_source to $target..."
|
||||||
cp $default_assets_source $target
|
cp "$default_assets_source" "$target"
|
||||||
else
|
else
|
||||||
error "Could not find '$1' to copy. Fail!"
|
error "Could not find '$1' to copy. Fail!"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Link a file from the assets folder to the specified location.
|
||||||
|
#
|
||||||
|
link () {
|
||||||
|
local src="$1"
|
||||||
|
local cookbook_assets_source="$COOKBOOK_ASSETS_PATH/$1"
|
||||||
|
local default_assets_source="$DEFAULT_ASSETS_PATH/$1"
|
||||||
|
local target="$2"
|
||||||
|
|
||||||
|
if [ -f "$src" ]; then
|
||||||
|
src="$src"
|
||||||
|
elif [ -f "$cookbook_assets_source" ]; then
|
||||||
|
src="$cookbook_assets_source"
|
||||||
|
elif [ -f $default_assets_source ]; then
|
||||||
|
src="$default_assets_source"
|
||||||
|
elif [ -d "$cookbook_assets_source" ]; then
|
||||||
|
src="$cookbook_assets_source"
|
||||||
|
elif [ -d $default_assets_source ]; then
|
||||||
|
src="$default_assets_source"
|
||||||
|
else
|
||||||
|
error "Could not find '$1' to link Fail!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ln -s "$src" "$target"
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Attempt to link a file if it doesn't already exist
|
||||||
|
#
|
||||||
|
try_link () {
|
||||||
|
local src="$1"
|
||||||
|
local cookbook_assets_source="$COOKBOOK_ASSETS_PATH/$1"
|
||||||
|
local default_assets_source="$DEFAULT_ASSETS_PATH/$1"
|
||||||
|
local target="$2"
|
||||||
|
|
||||||
|
if [ -f "$src" ]; then
|
||||||
|
src="$src"
|
||||||
|
elif [ -f "$cookbook_assets_source" ]; then
|
||||||
|
src="$cookbook_assets_source"
|
||||||
|
elif [ -f $default_assets_source ]; then
|
||||||
|
src="$default_assets_source"
|
||||||
|
elif [ -d "$cookbook_assets_source" ]; then
|
||||||
|
src="$cookbook_assets_source"
|
||||||
|
elif [ -d $default_assets_source ]; then
|
||||||
|
src="$default_assets_source"
|
||||||
|
else
|
||||||
|
error "Could not find '$1' to link Fail!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -L "$2" ] && [ "$(readlink $2)" == "$src" ] ; then
|
||||||
|
log "Link already exists: $2"
|
||||||
|
else
|
||||||
|
log "Creating link: $2 -> $src"
|
||||||
|
link "$1" "$2"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Add a user to the system.
|
# Add a user to the system.
|
||||||
#
|
#
|
||||||
@ -299,13 +417,13 @@ run_as () {
|
|||||||
# Add line to a file if line is not already present
|
# Add line to a file if line is not already present
|
||||||
#
|
#
|
||||||
add_line () {
|
add_line () {
|
||||||
local line=$1
|
local line="$1"
|
||||||
local file=$2
|
local file="$2"
|
||||||
grep "$line" $file > /dev/null 2>&1
|
grep "$line" "$file" > /dev/null 2>&1
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
log "Adding '$line' to '$file'..."
|
log "Adding '$line' to '$file'..."
|
||||||
echo "$line" >> $file
|
echo "$line" >> "$file"
|
||||||
else
|
else
|
||||||
log "'$line' already in '$file'. Skipping."
|
log "'$line' already in '$file'. Skipping."
|
||||||
fi
|
fi
|
||||||
@ -330,7 +448,7 @@ fail_if_not_root () {
|
|||||||
#
|
#
|
||||||
# Checks if a certain element has already been installed.
|
# Checks if a certain element has already been installed.
|
||||||
#
|
#
|
||||||
function is_installed () {
|
is_installed () {
|
||||||
local args=$*
|
local args=$*
|
||||||
local name=${args//[ \/:@]/-}
|
local name=${args//[ \/:@]/-}
|
||||||
|
|
||||||
@ -346,10 +464,24 @@ function is_installed () {
|
|||||||
#
|
#
|
||||||
# Sets an element as installed.
|
# Sets an element as installed.
|
||||||
#
|
#
|
||||||
function set_installed () {
|
set_installed () {
|
||||||
local args=$*
|
local args=$*
|
||||||
local name=${args//[ \/:@]/-}
|
local name=${args//[ \/:@]/-}
|
||||||
|
|
||||||
mkdir -p ~/.shoestrap/installed
|
mkdir -p ~/.shoestrap/installed
|
||||||
touch ~/.shoestrap/installed/$name
|
touch ~/.shoestrap/installed/$name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Promts a user for a Yn confirmation
|
||||||
|
#
|
||||||
|
|
||||||
|
prompt_yn () {
|
||||||
|
read -p "$1 [y/n] " -n 1 -r
|
||||||
|
echo # move to a new line
|
||||||
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
88
my-cookbook
88
my-cookbook
@ -7,28 +7,82 @@
|
|||||||
### Customizations start here ################################
|
### Customizations start here ################################
|
||||||
##############################################################
|
##############################################################
|
||||||
|
|
||||||
fail_if_not_root # Comment out if 'root' is not required.
|
# Get current directory for future use in links
|
||||||
|
cd $(dirname $0)
|
||||||
|
PROJECT_DIR=$(pwd)
|
||||||
|
|
||||||
### Install packages
|
detect_package_manager
|
||||||
# package_update
|
|
||||||
# package 'git-core'
|
|
||||||
# package 'vim screen htop curl wget traceroute'
|
|
||||||
# package 'build-essential'
|
|
||||||
# package 'libjpeg-progs'
|
|
||||||
# package 'libmagickwand-dev imagemagick'
|
|
||||||
# package 'libsqlite3-dev'
|
|
||||||
|
|
||||||
### Users
|
init_paths_and_vars
|
||||||
# add_user 'deploy' ; recipe 'setup_keys' 'deploy' ; recipe 'customize_bash' 'deploy' ; recipe 'add_sudoer' 'deploy'
|
|
||||||
|
# Do prompting early to make longer install easier
|
||||||
|
install_packages=false
|
||||||
|
if ! is_installed "packages" || prompt_yn "Reinstall packages?" ; then
|
||||||
|
install_packages=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
install_vim_src=false
|
||||||
|
if [ "$PACKAGE_MANAGER" == 'apt-get' ]; then
|
||||||
|
# Optional
|
||||||
|
is_installed "vim-from-source"
|
||||||
|
if prompt_yn "Compile vim?" ; then
|
||||||
|
install_vim_src=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
install_vim_settings=false
|
||||||
|
if ! is_installed "vim-settings" || prompt_yn "Reinstall vim-settings?" ; then
|
||||||
|
install_vim_settings=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Optional
|
||||||
|
install_sfdc=false
|
||||||
|
is_installed "salesforce"
|
||||||
|
if prompt_yn "Install Salesforce tools?" ; then
|
||||||
|
install_sfdc=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Optional
|
||||||
|
install_golang=false
|
||||||
|
is_installed "golang"
|
||||||
|
if prompt_yn "Install Go?" ; then
|
||||||
|
install_golang=true
|
||||||
|
fi
|
||||||
|
|
||||||
### Run recipes
|
### Run recipes
|
||||||
# recipe 'secure_ssh'
|
recipe 'dotfiles'
|
||||||
# recipe 'rbenv'
|
recipe 'bin'
|
||||||
# recipe 'ruby' '1.9.3-p125'
|
recipe 'git'
|
||||||
# recipe 'nginx'
|
|
||||||
# recipe 'memcached' '1.4.13'
|
git submodule init
|
||||||
# recipe 'mariadb'
|
git submodule update
|
||||||
|
|
||||||
|
if $install_packages ; then
|
||||||
|
recipe 'packages'
|
||||||
|
set_installed "packages"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $install_vim_src ; then
|
||||||
|
recipe 'compile-install-vim'
|
||||||
|
set_installed "vim-from-source"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $install_vim_settings ; then
|
||||||
|
recipe 'vim-settings'
|
||||||
|
set_installed 'vim-settings'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $install_sfdc ; then
|
||||||
|
recipe 'salesforce'
|
||||||
|
set_installed 'salesforce'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $install_golang ; then
|
||||||
|
recipe 'golang'
|
||||||
|
set_installed 'golang'
|
||||||
|
fi
|
||||||
|
|
||||||
### Show the Finished banner
|
### Show the Finished banner
|
||||||
finished
|
finished
|
||||||
|
|
||||||
|
# vim: set tabstop=2:softtabstop=2:shiftwidth=2:expandtab
|
||||||
|
57
no-sudo
Executable file
57
no-sudo
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Initialization - DO NOT REMOVE
|
||||||
|
. helpers/initialize
|
||||||
|
|
||||||
|
##############################################################
|
||||||
|
### Customizations start here ################################
|
||||||
|
##############################################################
|
||||||
|
|
||||||
|
# Get current directory for future use in links
|
||||||
|
cd $(dirname $0)
|
||||||
|
PROJECT_DIR=$(pwd)
|
||||||
|
|
||||||
|
install_vim_src=false
|
||||||
|
if [ "$PACKAGE_MANAGER" == 'apt-get' ]; then
|
||||||
|
is_installed "vim-from-source"
|
||||||
|
if prompt_yn "Compile vim?" ; then
|
||||||
|
install_vim_src=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
install_vim_settings=false
|
||||||
|
if ! is_installed "vim-settings" || prompt_yn "Reinstall vim-settings?" ; then
|
||||||
|
install_vim_settings=true
|
||||||
|
fi
|
||||||
|
install_sfdc=false
|
||||||
|
is_installed "salesforce"
|
||||||
|
if prompt_yn "Install Salesforce tools?" ; then
|
||||||
|
install_sfdc=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create workspace dir
|
||||||
|
mkdir -p ~/workspace
|
||||||
|
|
||||||
|
### Run recipes
|
||||||
|
recipe 'dotfiles'
|
||||||
|
recipe 'bin'
|
||||||
|
recipe 'git'
|
||||||
|
|
||||||
|
if $install_vim_src ; then
|
||||||
|
recipe 'compile-install-vim'
|
||||||
|
set_installed "vim-from-source"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $install_vim_settings ; then
|
||||||
|
recipe 'vim-settings'
|
||||||
|
set_installed 'vim-settings'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $install_sfdc ; then
|
||||||
|
recipe 'salesforce'
|
||||||
|
set_installed 'salesforce'
|
||||||
|
fi
|
||||||
|
|
||||||
|
### Show the Finished banner
|
||||||
|
finished
|
||||||
|
|
||||||
|
# vim: set tabstop=2:softtabstop=2:shiftwidth=2:expandtab
|
13
recipes/default/abuse-the-force
Normal file
13
recipes/default/abuse-the-force
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
if [ ! -d $WORKSPACE/abuse-the-force ]; then
|
||||||
|
git clone https://github.com/ViViDboarder/abuse-the-force.git $WORKSPACE/abuse-the-force
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd $WORKSPACE/abuse-the-force && git pull && rake install
|
||||||
|
|
||||||
|
# Ensure this is in the user PATH
|
||||||
|
for f in $DEFAULT_ASSETS_PATH/* ; do
|
||||||
|
try_link "$f" "$USER_BIN/$(basename $f)"
|
||||||
|
done
|
||||||
|
|
6
recipes/default/bin
Normal file
6
recipes/default/bin
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
for f in $DEFAULT_ASSETS_PATH/* ; do
|
||||||
|
try_link "$f" "$USER_BIN/$(basename $f)"
|
||||||
|
done
|
||||||
|
|
37
recipes/default/compile-install-vim
Normal file
37
recipes/default/compile-install-vim
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
local vim_dir="$WORKSPACE/vim"
|
||||||
|
|
||||||
|
# Get the build dependencies
|
||||||
|
if [ "$PACKAGE_MANAGER" == 'apt-get' ]; then
|
||||||
|
sudo apt-get build-dep vim vim-gtk
|
||||||
|
fi
|
||||||
|
# TODO: Add pacman support
|
||||||
|
|
||||||
|
# Build latest vim
|
||||||
|
if [ ! -d $vim_dir ]; then
|
||||||
|
hg clone https://vim.googlecode.com/ $vim_dir
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Go to workspace
|
||||||
|
cd $vim_dir
|
||||||
|
|
||||||
|
# Use latest tagged source code
|
||||||
|
hg update -r 'max(tagged())'
|
||||||
|
# Configure vim with ruby, python and GTK
|
||||||
|
./configure --with-features=huge \
|
||||||
|
--enable-pythoninterp \
|
||||||
|
--enable-rubyinterp \
|
||||||
|
--enable-gui=gtk2
|
||||||
|
|
||||||
|
# Compile
|
||||||
|
make
|
||||||
|
# Install newly compiled vim
|
||||||
|
sudo make install
|
||||||
|
# Link vi to vim out of convenience
|
||||||
|
vim_path=$(which vim)
|
||||||
|
sudo ln -s $vim_path ${vim_path:0:(-1)}
|
||||||
|
|
||||||
|
# Go back to previous directory
|
||||||
|
cd $ROOT_DIR
|
||||||
|
|
12
recipes/default/dotfiles
Normal file
12
recipes/default/dotfiles
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
# Link files that can't be sourced
|
||||||
|
try_link "ackrc" "$HOME/.ackrc"
|
||||||
|
try_link "antrc" "$HOME/.antrc"
|
||||||
|
try_link "ctags" "$HOME/.ctags"
|
||||||
|
try_link "tmux.conf" "$HOME/.tmux.conf"
|
||||||
|
|
||||||
|
# Source files that can
|
||||||
|
source_dotfile "bashrc"
|
||||||
|
source_dotfile "bash_profile"
|
||||||
|
source_dotfile "bash_alias"
|
15
recipes/default/force-cli
Normal file
15
recipes/default/force-cli
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
# Some settings are mac specific
|
||||||
|
if [[ "$UNAME_STR" == "Darwin" ]]; then
|
||||||
|
wget -P $USER_BIN https://godist.herokuapp.com/projects/heroku/force/releases/current/darwin-amd64/force
|
||||||
|
elif [[ "$UNAME_STR" == "Linux" ]]; then
|
||||||
|
wget -P $USER_BIN https://godist.herokuapp.com/projects/heroku/force/releases/current/linux-amd64/force
|
||||||
|
fi
|
||||||
|
|
||||||
|
chmod +x $USER_BIN/force
|
||||||
|
|
||||||
|
for f in $DEFAULT_ASSETS_PATH/* ; do
|
||||||
|
try_link "$f" "$USER_BIN/$(basename $f)"
|
||||||
|
done
|
||||||
|
|
11
recipes/default/git
Normal file
11
recipes/default/git
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
# Set some Git Config options
|
||||||
|
# Set vim as default git editor
|
||||||
|
git config --global core.editor "vim"
|
||||||
|
# Turn on colors
|
||||||
|
git config --global color.ui auto
|
||||||
|
# Set diff tool to vimdiff
|
||||||
|
git config --global diff.tool vimdiff
|
||||||
|
# Suppress launching prompt
|
||||||
|
git config --global difftool.prompt false
|
13
recipes/default/golang
Normal file
13
recipes/default/golang
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
version="1.3"
|
||||||
|
|
||||||
|
if [[ "$UNAME_STR" == "Darwin" ]]; then
|
||||||
|
wget -P $TMP_DIR/ http://golang.org/dl/go${version}.darwin-amd64-osx10.8.pkg
|
||||||
|
installer -pkg $TMP_DIR/go${version}.darwin-amd64-osx10.8.pkg
|
||||||
|
elif [[ "$UNAME_STR" == "Linux" ]]; then
|
||||||
|
wget -P $TMP_DIR/ http://golang.org/dl/go${version}.linux-amd64.tar.gz
|
||||||
|
# Do something
|
||||||
|
echo "**** Install from $TMP_DIR/go${version}.linux-amd64.tar.gz"
|
||||||
|
fi
|
||||||
|
|
29
recipes/default/packages
Normal file
29
recipes/default/packages
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
sudo_package_update
|
||||||
|
sudo_package 'screen htop curl wget mercurial ctags tig pv'
|
||||||
|
|
||||||
|
# Manager specific packages
|
||||||
|
case "$PACKAGE_MANAGER" in
|
||||||
|
"port")
|
||||||
|
sudo_package 'vim +ruby +python27'
|
||||||
|
sudo_package 'macvim +ruby +python27'
|
||||||
|
sudo_package 'git-core +bash_completion'
|
||||||
|
sudo_package 'the_silver_searcher'
|
||||||
|
;;
|
||||||
|
"brew")
|
||||||
|
package 'vim'
|
||||||
|
sudo_package 'the_silver_searcher'
|
||||||
|
;;
|
||||||
|
"apt-get")
|
||||||
|
if [ -n "$(apt-cache policy silversearcher-ag)" ] ; then
|
||||||
|
sudo_package 'silversearcher-ag'
|
||||||
|
fi
|
||||||
|
sudo_package 'build-essential bash-completion rubygems tmux vim gvim'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Install ruby gems
|
||||||
|
# TODO: Install RVM and other ruby requirements and get ruby 1.9.2
|
||||||
|
sudo gem install rake
|
||||||
|
|
26
recipes/default/salesforce
Normal file
26
recipes/default/salesforce
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
# TODO: Prompt for atf or force
|
||||||
|
|
||||||
|
install_atf=false
|
||||||
|
if prompt_yn "Install Abuse the Force?" ; then
|
||||||
|
install_atf=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
install_fcli=false
|
||||||
|
if prompt_yn "Install Force Cli?" ; then
|
||||||
|
install_fcli=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $install_atf ; then
|
||||||
|
recipe 'abuse-the-force'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $install_fcli ; then
|
||||||
|
recipe 'force-cli'
|
||||||
|
fi
|
||||||
|
|
||||||
|
for f in $DEFAULT_ASSETS_PATH/* ; do
|
||||||
|
try_link "$f" "$USER_BIN/$(basename $f)"
|
||||||
|
done
|
||||||
|
|
101
recipes/default/vim-settings
Normal file
101
recipes/default/vim-settings
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
DET_OS="unknown"
|
||||||
|
UNAME_STR=`uname`
|
||||||
|
|
||||||
|
# Some settings are mac specific
|
||||||
|
if [[ "$UNAME_STR" == "Darwin" ]]; then
|
||||||
|
DET_OS="mac"
|
||||||
|
elif [[ "$UNAME_STR" == "Linux" ]]; then
|
||||||
|
DET_OS="linux"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clone vundle if not done already
|
||||||
|
if [ ! -d ~/.vim/bundle/vundle ]; then
|
||||||
|
log "Installing vundle"
|
||||||
|
mkdir -p ~/.vim/bundle
|
||||||
|
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make backup and tmp dirs
|
||||||
|
log "Building temp and backup dirs"
|
||||||
|
mkdir -p ~/.vim/backup
|
||||||
|
mkdir -p ~/.vim/tmp
|
||||||
|
mkdir -p ~/.vim/doc
|
||||||
|
|
||||||
|
log "Link vim files"
|
||||||
|
try_link vimrc "$HOME/.vimrc_sync"
|
||||||
|
try_link vim "$HOME/.vim_sync"
|
||||||
|
|
||||||
|
if [[ ( ! -f ~/.vimrc ) ]]; then
|
||||||
|
log "No ~/.vimrc found, creating one"
|
||||||
|
touch ~/.vimrc
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Source synced setting in vimrc
|
||||||
|
add_line '"import vimrc from synced' $HOME/.vimrc
|
||||||
|
add_line 'source ~/.vimrc_sync' $HOME/.vimrc
|
||||||
|
|
||||||
|
add_line '"add vim directory from synced' ~/.vimrc
|
||||||
|
add_line 'set runtimepath+=$HOME/.vim_sync' ~/.vimrc
|
||||||
|
|
||||||
|
log "Install all bundles"
|
||||||
|
vim +BundleInstall! +qall
|
||||||
|
|
||||||
|
###### Possibly depreciate this section when using plug or neobundle
|
||||||
|
|
||||||
|
# Compile CommandT if possible
|
||||||
|
# See if ruby is installed
|
||||||
|
if command -v ruby >/dev/null 2>&1; then
|
||||||
|
# Make sure GCC is installed
|
||||||
|
if command -v gcc >/dev/null 2>&1; then
|
||||||
|
# Use system ruby
|
||||||
|
command -v rvm >/dev/null 2>&1 && { rvm use system; }
|
||||||
|
log "Compile Command T's C extension"
|
||||||
|
cd ~/.vim/bundle/Command-T/ruby/command-t
|
||||||
|
ruby extconf.rb
|
||||||
|
make
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Display warning methods related to Command T
|
||||||
|
vim --version | grep -q '\+ruby' || { log "Warning: Default vim does not include ruby as needed for Command T"; }
|
||||||
|
command -v ruby >/dev/null 2>&1 || { log "Warning: ruby required for Command T"; }
|
||||||
|
command -v gcc >/dev/null 2>&1 || { log "Warning: gcc required for Command T"; }
|
||||||
|
|
||||||
|
# Execute vim's update of the helptags
|
||||||
|
VIM_RESULT=$(vim +"helptags ~/.vim/doc" +"q")
|
||||||
|
|
||||||
|
if [[ "$VIM_RESULT" == *SEGV* ]]; then
|
||||||
|
log "Seg Faulted. Retry with different ruby"
|
||||||
|
cd ~/.vim/bundle/Command-T/ruby/command-t && /opt/local/bin/ruby* extconf.rb && make && cd -
|
||||||
|
|
||||||
|
# Retry
|
||||||
|
vim +"helptags ~/.vim/doc" +"q"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# End command t
|
||||||
|
|
||||||
|
log "Compile vimproc"
|
||||||
|
cd ~/.vim/bundle/vimproc.vim && make
|
||||||
|
cd -
|
||||||
|
|
||||||
|
###### End compile plugins
|
||||||
|
|
||||||
|
log "Install Powerline Fonts"
|
||||||
|
# Install Powerline Fonts
|
||||||
|
pf_dir="$workspace/powerline-fonts"
|
||||||
|
git clone https://github.com/Lokaltog/powerline-fonts $pf_dir
|
||||||
|
|
||||||
|
# Setup vim-powerline with patched fonts
|
||||||
|
if [[ "$DET_OS" == "mac" ]]; then
|
||||||
|
#Install DejaVu
|
||||||
|
cp $pf_dir/DejaVuSansMono/*.ttf ~/Library/Fonts/
|
||||||
|
elif [[ "$DET_OS" == "linux" ]]; then
|
||||||
|
#Install DejaVu
|
||||||
|
cp -r $pf_dir/DejaVuSansMono ~/.fonts/
|
||||||
|
cp -r $pf_dir/UbuntuMono ~/.fonts/
|
||||||
|
cp -r $pf_dir/SourceCodePro ~/.fonts/
|
||||||
|
# Refresh cache
|
||||||
|
fc-cache -vf
|
||||||
|
fi
|
25
test-cookbook
Executable file
25
test-cookbook
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Initialization - DO NOT REMOVE
|
||||||
|
. helpers/initialize
|
||||||
|
|
||||||
|
##############################################################
|
||||||
|
### Customizations start here ################################
|
||||||
|
##############################################################
|
||||||
|
|
||||||
|
# Get current directory for future use in links
|
||||||
|
|
||||||
|
cd $(dirname $0)
|
||||||
|
PROJECT_DIR=$(pwd)
|
||||||
|
|
||||||
|
WORKSPACE=$HOME/workspace
|
||||||
|
mkdir -p $WORKSPACE
|
||||||
|
|
||||||
|
if prompt_yn "Install Salesforce tools?" ; then
|
||||||
|
recipe 'salesforce'
|
||||||
|
fi
|
||||||
|
|
||||||
|
### Show the Finished banner
|
||||||
|
finished
|
||||||
|
|
||||||
|
# vim: set tabstop=2:softtabstop=2:shiftwidth=2:expandtab
|
Loading…
Reference in New Issue
Block a user