homey 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +16 -0
- data/bin/homey +5 -0
- data/home.yml.example +18 -0
- data/homey.gemspec +26 -0
- data/lib/homey.rb +9 -0
- data/lib/homey/flavorizer.rb +23 -0
- data/lib/homey/tasks.rb +39 -0
- data/lib/homey/version.rb +3 -0
- metadata +75 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 357b83661a2b8753ec5b4b9ff49a1f0835ae202b
|
4
|
+
data.tar.gz: b6f944bf6877044b79f55591630f08293eb465ca
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0b122fc8275ab3c1cce8a1aea1fae5013e6c8968c99e2fc0dea0d76d9b5973c679abfc4d10d7149442f0ac3fb80596bcf1274edc11d09a02a944f257eccca1d2
|
7
|
+
data.tar.gz: 4c770bbf9fde1e6398da28a605a5fb260370b302afbd20b9549df24b10609fb1fc3c4954fba273c433a4bf52001679a1f883e449b1609b65700018c89595101b
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
data/bin/homey
ADDED
data/home.yml.example
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
sym_links:
|
2
|
+
- target: i3
|
3
|
+
link: ~/.i3
|
4
|
+
|
5
|
+
- target: Xdefaults
|
6
|
+
link: ~/.Xdefaults
|
7
|
+
|
8
|
+
- target: ! "gitconfig.%{flavor}"
|
9
|
+
link: ~/.gitconfig
|
10
|
+
|
11
|
+
- target: vimrc
|
12
|
+
link: ~/.vimrc
|
13
|
+
|
14
|
+
- target: zshrc
|
15
|
+
link: ~/.zshrc
|
16
|
+
|
17
|
+
commands:
|
18
|
+
- wget --no-check-certificate https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O - | zsh
|
data/homey.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'homey/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = 'homey'
|
8
|
+
s.version = Homey::VERSION
|
9
|
+
s.date = '2014-01-05'
|
10
|
+
|
11
|
+
s.summary = 'A tool to setup your home enviroment'
|
12
|
+
s.description = "Homey is a basic tool for your dotfiles. Homey will setup " \
|
13
|
+
"your symbolic links and run the scripts you want to " \
|
14
|
+
"initialize your enviroment"
|
15
|
+
|
16
|
+
s.authors = ["Mike Zaby"]
|
17
|
+
s.email = 'mikezaby@gmail.com'
|
18
|
+
s.homepage = 'https://github.com/mikezaby/homey'
|
19
|
+
|
20
|
+
s.executables = %w(homey)
|
21
|
+
s.files = `git ls-files`.split($/)
|
22
|
+
|
23
|
+
s.license = 'MIT'
|
24
|
+
|
25
|
+
s.add_runtime_dependency 'thor', '~> 0.18', '>= 0.18.1'
|
26
|
+
end
|
data/lib/homey.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
module Homey
|
2
|
+
module Flavorizer
|
3
|
+
def self.flavorize_group(group, options = {})
|
4
|
+
flavor = options[:flavor]
|
5
|
+
flavorized_attributes = options[:flavorized_attributes]
|
6
|
+
return group if flavor.nil?
|
7
|
+
|
8
|
+
group.map do |value|
|
9
|
+
value = value.dup
|
10
|
+
flavorized_attributes.each { |attr| value[attr] = flavorize(value[attr], flavor) }
|
11
|
+
value
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.flavorize(string, flavor)
|
16
|
+
string.include?("%{flavor}") ? (string % { flavor: flavor }) : string
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.flavorize!(string, flavor)
|
20
|
+
string.replace(flavorize(string, flavor))
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/homey/tasks.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
module Homey
|
2
|
+
class Tasks < Thor
|
3
|
+
desc "create_symlinks", "Creating the sym links that you have set in home.yml"
|
4
|
+
method_option :flavor, type: :string
|
5
|
+
method_option :force, aliases: "-f", type: :boolean
|
6
|
+
def create_symlinks
|
7
|
+
opts = { flavor: options[:flavor], flavorized_attributes: %w(target) }
|
8
|
+
symlinks = Flavorizer::flavorize_group(home_file["sym_links"], opts)
|
9
|
+
symlinks.each do |sym|
|
10
|
+
paths = replace_home_char(sym['target'], sym['link'])
|
11
|
+
target, link = absolutize_paths(*paths)
|
12
|
+
FileUtils.rm_rf(link) if options[:force]
|
13
|
+
File.symlink target, link
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "setup", "Run the initialize commands that you want"
|
18
|
+
def setup
|
19
|
+
home_file["commands"].each { |command| system command }
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def home_file
|
25
|
+
@home_file ||= begin
|
26
|
+
home = YAML.load_file('home.yml')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def absolutize_paths(*paths)
|
31
|
+
paths.map { |path| Pathname.new(path).expand_path }
|
32
|
+
end
|
33
|
+
|
34
|
+
def replace_home_char(*strings)
|
35
|
+
new_strings = strings.map { |string| string.sub(/^~\//, "#{ENV['HOME']}/") }
|
36
|
+
new_strings.one? ? new_strings.first : new_strings
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
metadata
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: homey
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mike Zaby
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-01-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.18'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.18.1
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.18'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.18.1
|
33
|
+
description: Homey is a basic tool for your dotfiles. Homey will setup your symbolic
|
34
|
+
links and run the scripts you want to initialize your enviroment
|
35
|
+
email: mikezaby@gmail.com
|
36
|
+
executables:
|
37
|
+
- homey
|
38
|
+
extensions: []
|
39
|
+
extra_rdoc_files: []
|
40
|
+
files:
|
41
|
+
- ".gitignore"
|
42
|
+
- Gemfile
|
43
|
+
- Gemfile.lock
|
44
|
+
- bin/homey
|
45
|
+
- home.yml.example
|
46
|
+
- homey.gemspec
|
47
|
+
- lib/homey.rb
|
48
|
+
- lib/homey/flavorizer.rb
|
49
|
+
- lib/homey/tasks.rb
|
50
|
+
- lib/homey/version.rb
|
51
|
+
homepage: https://github.com/mikezaby/homey
|
52
|
+
licenses:
|
53
|
+
- MIT
|
54
|
+
metadata: {}
|
55
|
+
post_install_message:
|
56
|
+
rdoc_options: []
|
57
|
+
require_paths:
|
58
|
+
- lib
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
requirements: []
|
70
|
+
rubyforge_project:
|
71
|
+
rubygems_version: 2.2.0
|
72
|
+
signing_key:
|
73
|
+
specification_version: 4
|
74
|
+
summary: A tool to setup your home enviroment
|
75
|
+
test_files: []
|