peridot 0.1.1 → 0.1.2
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 +4 -4
- data/README.md +48 -31
- data/Rakefile +1 -1
- data/lib/peridot/file_access.rb +19 -31
- data/lib/peridot/ignores.rb +11 -9
- data/lib/peridot/version.rb +1 -1
- data/lib/peridot.rb +3 -11
- data/peridot.gemspec +4 -2
- metadata +26 -14
- data/lib/peridot/attribute_storage.rb +0 -19
- data/lib/peridot/forwardable.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ebbd954622582f64a6dd7b398a24ff587fdf28c
|
4
|
+
data.tar.gz: a47a5794a6bce94b41ed0f7e5e4f3eec01b7d846
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35aff1a9f6ed05dcf18a97a22ebdc022ce6e7db7544cbe5ea59b02ce2398363f4bffc7c5b2e15c36d7d3eed1cbdaca3bb57ec1f7f093eeff2189754e4005caad
|
7
|
+
data.tar.gz: fa9b32224f140e22c22bdc966995baf3789ea11b398e055443b2f3d1291345229828511d87463b99afcf87eff89dbe4c1b6704704f15a071cba4ce07789f8026
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Peridot
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/peridot)
|
4
|
+
|
3
5
|
Peridot let's you manage your dotfiles with `rake` and you should love `rake`!
|
4
6
|
Seriously!
|
5
7
|
|
@@ -7,43 +9,41 @@ Seriously!
|
|
7
9
|
|
8
10
|
Install it yourself via:
|
9
11
|
|
10
|
-
|
12
|
+
```bash
|
13
|
+
$ gem install peridot
|
14
|
+
```
|
11
15
|
|
12
16
|
## Usage
|
13
17
|
|
14
18
|
In your Rakefile require Peridot. If run inside rake, it will automagically
|
15
19
|
include Peridot module:
|
16
20
|
|
17
|
-
|
21
|
+
```ruby
|
22
|
+
require 'peridot'
|
23
|
+
```
|
18
24
|
|
19
25
|
After this, copy the following to a fresh Rakefile:
|
20
26
|
|
21
|
-
|
22
|
-
|
27
|
+
```ruby
|
28
|
+
require 'rubygems'
|
29
|
+
require 'peridot'
|
30
|
+
```
|
23
31
|
|
24
32
|
After this Peridot provides you with 2 standard tasks:
|
25
33
|
|
26
|
-
|
27
|
-
|
28
|
-
|
34
|
+
```bash
|
35
|
+
$ rake -T
|
36
|
+
rake dotfiles # Runs all your task in the dotfiles namespace
|
37
|
+
rake watch # Watches for changes and reruns rake
|
38
|
+
```
|
29
39
|
|
30
40
|
Peridot runs every task under `dotfiles` namespace if you run the `dotfiles`
|
31
41
|
task.
|
32
42
|
|
33
|
-
If you need to set up some environment for your dotfiles
|
34
|
-
(e.g. different values for git email at home/work) you do this with tasks for
|
35
|
-
each environment as Peridot relies heavily on `rake`.
|
36
|
-
|
37
|
-
task(:work) { set :git_email, 'work@startup.com' }
|
38
|
-
task(:home) { set :git_email, 'home@hotel-mama.com' }
|
39
|
-
|
40
|
-
You can than use it in an erb file like this:
|
41
|
-
|
42
|
-
email = <%= get! :git_email %>
|
43
43
|
|
44
44
|
## Features
|
45
45
|
|
46
|
-
Peridot gives you some
|
46
|
+
Peridot gives you some methods for interacting with your dotfiles.
|
47
47
|
|
48
48
|
### Path helpers
|
49
49
|
|
@@ -54,40 +54,57 @@ files.
|
|
54
54
|
|
55
55
|
There is a convenience method to generate a regular files from erb input.
|
56
56
|
|
57
|
-
|
57
|
+
```ruby
|
58
|
+
generate_file repo_file('gitconfig.erb'), home_file('.gitconfig')
|
59
|
+
```
|
58
60
|
|
59
61
|
### Watch for changes
|
60
62
|
|
61
63
|
You can add a special task `watch` to your rake command to have Peridot
|
62
64
|
watch for changes and rerun your rake command.
|
63
65
|
|
64
|
-
### Attributes
|
65
|
-
|
66
|
-
There is `#set` to aid you in setting options for later use in
|
67
|
-
your rake tasks. On the other side there is `#get` which fetches attributes
|
68
|
-
from a central storage. To raise an exception if a required attribute is
|
69
|
-
missing there is also `#get!`.
|
70
|
-
|
71
66
|
### Ignoring files
|
72
67
|
|
73
68
|
With `#ignored_files` there is a standard list of files and filetypes
|
74
|
-
which can be matched (regexp) again certain files with `#ignored?(file)
|
69
|
+
which can be matched (regexp) again certain files with `#ignored?(file)`.
|
75
70
|
|
76
|
-
|
77
|
-
|
71
|
+
```ruby
|
72
|
+
ignored_files << 'README'
|
73
|
+
link_file(from, to) unless ignored?('README')
|
74
|
+
```
|
78
75
|
|
79
76
|
### FileUtils
|
80
77
|
|
81
78
|
All methods from `FileUtils` are included in the global namespace and can be
|
82
79
|
used for mastering your dotfiles.
|
83
80
|
|
81
|
+
### Configuration
|
82
|
+
|
83
|
+
If you need to have some configuration in place you are free to use environment
|
84
|
+
variables. [Dotenv](https://github.com/bkeepers/dotenv) can also be used by
|
85
|
+
making it a dependency of your task.
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
require 'dotenv/tasks'
|
89
|
+
|
90
|
+
task :zsh => :dotenv do …
|
91
|
+
```
|
92
|
+
|
93
|
+
You can even raise an exception if a required configuration file is missing.
|
94
|
+
|
95
|
+
```ruby
|
96
|
+
require 'dotenv'
|
97
|
+
Dotenv.load! '~/.env'
|
98
|
+
```
|
99
|
+
|
84
100
|
## Examples in the wild
|
85
101
|
|
86
|
-
Take look at my dotfiles
|
102
|
+
* Take look at my [dotfiles](https://github.com/svenwin/dotfiles/blob/master/Rakefile)
|
103
|
+
* [@danielbayerlein](https://github.com/danielbayerlein/dotfiles/blob/master/Rakefile)
|
87
104
|
|
88
105
|
## Special Thanks
|
89
106
|
|
90
|
-
* [Daniel Bayerlein(@danielbayerlein)](https://github.com/danielbayerlein) -
|
107
|
+
* [Daniel Bayerlein (@danielbayerlein)](https://github.com/danielbayerlein) -
|
91
108
|
For support, code review and much more
|
92
109
|
* [Jim Weirich (@jimweirich)](https://github.com/jimweirich) - for creating
|
93
110
|
[Rake](https://github.com/jimweirich/rake)
|
data/Rakefile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
|
-
require
|
2
|
+
require 'bundler/gem_tasks'
|
data/lib/peridot/file_access.rb
CHANGED
@@ -1,39 +1,27 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
|
3
|
-
module Peridot
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
def ignored?(file)
|
15
|
-
ignored_files.any? { |ignore_file| file.match(ignore_file) }
|
16
|
-
end
|
17
|
-
|
18
|
-
def generate_file(source, target)
|
19
|
-
puts("Generating #{target}")
|
20
|
-
template = ERB.new(File.read(source))
|
21
|
-
template.filename = target
|
22
|
-
File.open(target, 'w') do |f|
|
23
|
-
f.write(template.result(binding))
|
3
|
+
module Peridot
|
4
|
+
module FileAccess
|
5
|
+
include ::FileUtils
|
6
|
+
|
7
|
+
def generate_file source, target
|
8
|
+
puts "Generating #{target}"
|
9
|
+
template = ERB.new File.read source
|
10
|
+
template.filename = target
|
11
|
+
File.open(target, 'w') { |f| f.write template.result(binding) }
|
24
12
|
end
|
25
|
-
end
|
26
13
|
|
27
|
-
|
28
|
-
|
29
|
-
|
14
|
+
def home_file file
|
15
|
+
File.join Dir.home, file
|
16
|
+
end
|
30
17
|
|
31
|
-
|
32
|
-
|
33
|
-
|
18
|
+
def repo_file file
|
19
|
+
File.join Dir.pwd, file
|
20
|
+
end
|
34
21
|
|
35
|
-
|
36
|
-
|
37
|
-
|
22
|
+
def link_file source, target
|
23
|
+
rm_f target
|
24
|
+
ln_s source, target
|
25
|
+
end
|
38
26
|
end
|
39
27
|
end
|
data/lib/peridot/ignores.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
|
-
module Peridot
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
module Peridot
|
2
|
+
module Ignores
|
3
|
+
def ignored_files
|
4
|
+
@ignored_files ||= %w(Rakefile README.*$ \.erb$)
|
5
|
+
end
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
def ignored_files=(files)
|
8
|
+
@ignored_files = files
|
9
|
+
end
|
9
10
|
|
10
|
-
|
11
|
-
|
11
|
+
def ignored?(file)
|
12
|
+
ignored_files.any? { |ignore_expr| file.match ignore_expr }
|
13
|
+
end
|
12
14
|
end
|
13
15
|
end
|
data/lib/peridot/version.rb
CHANGED
data/lib/peridot.rb
CHANGED
@@ -1,22 +1,14 @@
|
|
1
1
|
require 'erb'
|
2
|
-
require 'peridot/attribute_storage'
|
3
2
|
require 'peridot/file_access'
|
4
|
-
require 'peridot/forwardable'
|
5
3
|
require 'peridot/ignores'
|
6
4
|
require 'peridot/version'
|
7
5
|
require 'peridot/watcher'
|
8
6
|
|
9
7
|
module Peridot
|
10
8
|
def self.included(base)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
load('peridot/tasks.rake') if defined?(Rake)
|
16
|
-
end
|
17
|
-
|
18
|
-
def attributes
|
19
|
-
@attributes ||= AttributeStorage.new
|
9
|
+
base.send :include, FileAccess
|
10
|
+
base.send :include, Ignores
|
11
|
+
load 'peridot/tasks.rake'
|
20
12
|
end
|
21
13
|
end
|
22
14
|
|
data/peridot.gemspec
CHANGED
@@ -8,10 +8,12 @@ Gem::Specification.new do |gem|
|
|
8
8
|
gem.summary = %q{Dotfile management with rake on steroids}
|
9
9
|
|
10
10
|
gem.files = `git ls-files`.split($\)
|
11
|
+
gem.homepage = 'https://github.com/svenwin/peridot'
|
11
12
|
gem.name = 'peridot'
|
12
13
|
gem.require_paths = %w(lib)
|
13
14
|
gem.version = Peridot::VERSION
|
14
15
|
|
15
|
-
gem.add_dependency('
|
16
|
-
gem.add_dependency('listen')
|
16
|
+
gem.add_dependency('dotenv', '0.9.0')
|
17
|
+
gem.add_dependency('listen', '1.3.1')
|
18
|
+
gem.add_dependency('rake', '10.1.0')
|
17
19
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: peridot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sven
|
@@ -9,36 +9,50 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-11-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: dotenv
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - '
|
18
|
+
- - '='
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: 0.9.0
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - '
|
25
|
+
- - '='
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: 0.9.0
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: listen
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - '
|
32
|
+
- - '='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 1.3.1
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 1.3.1
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rake
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '='
|
33
47
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
48
|
+
version: 10.1.0
|
35
49
|
type: :runtime
|
36
50
|
prerelease: false
|
37
51
|
version_requirements: !ruby/object:Gem::Requirement
|
38
52
|
requirements:
|
39
|
-
- - '
|
53
|
+
- - '='
|
40
54
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
55
|
+
version: 10.1.0
|
42
56
|
description: Dotfile management with rake on steroids
|
43
57
|
email:
|
44
58
|
- sven@w5r.org
|
@@ -52,15 +66,13 @@ files:
|
|
52
66
|
- README.md
|
53
67
|
- Rakefile
|
54
68
|
- lib/peridot.rb
|
55
|
-
- lib/peridot/attribute_storage.rb
|
56
69
|
- lib/peridot/file_access.rb
|
57
|
-
- lib/peridot/forwardable.rb
|
58
70
|
- lib/peridot/ignores.rb
|
59
71
|
- lib/peridot/tasks.rake
|
60
72
|
- lib/peridot/version.rb
|
61
73
|
- lib/peridot/watcher.rb
|
62
74
|
- peridot.gemspec
|
63
|
-
homepage:
|
75
|
+
homepage: https://github.com/svenwin/peridot
|
64
76
|
licenses: []
|
65
77
|
metadata: {}
|
66
78
|
post_install_message:
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Peridot
|
2
|
-
class AttributeStorage
|
3
|
-
def initialize(hash = {})
|
4
|
-
@hash = hash
|
5
|
-
end
|
6
|
-
|
7
|
-
def get(key)
|
8
|
-
@hash.fetch(key)
|
9
|
-
end
|
10
|
-
|
11
|
-
def get!(key)
|
12
|
-
get(key) or raise("#{key} is not an attribute")
|
13
|
-
end
|
14
|
-
|
15
|
-
def set(key, value)
|
16
|
-
@hash.store(key, value)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|