gitenv 0.0.1 → 0.0.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.
- data/VERSION +1 -1
- data/bin/gitenv +1 -1
- data/gitenv.gemspec +79 -0
- data/lib/gitenv.rb +171 -1
- metadata +2 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/bin/gitenv
CHANGED
data/gitenv.gemspec
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "gitenv"
|
8
|
+
s.version = "0.0.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["AlphaHydrae"]
|
12
|
+
s.date = "2012-09-21"
|
13
|
+
s.description = "Creates symlinks to configuration files in a git repository."
|
14
|
+
s.email = "hydrae.alpha@gmail.com"
|
15
|
+
s.executables = ["gitenv"]
|
16
|
+
s.extra_rdoc_files = [
|
17
|
+
"LICENSE.txt",
|
18
|
+
"README.md"
|
19
|
+
]
|
20
|
+
s.files = [
|
21
|
+
".rspec",
|
22
|
+
".rvmrc",
|
23
|
+
".screenrc",
|
24
|
+
".travis.yml",
|
25
|
+
"Gemfile",
|
26
|
+
"Gemfile.lock",
|
27
|
+
"LICENSE.txt",
|
28
|
+
"README.md",
|
29
|
+
"Rakefile",
|
30
|
+
"VERSION",
|
31
|
+
"bin/gitenv",
|
32
|
+
"gitenv.gemspec",
|
33
|
+
"lib/gitenv.rb",
|
34
|
+
"spec/helper.rb",
|
35
|
+
"spec/version_spec.rb"
|
36
|
+
]
|
37
|
+
s.homepage = "http://github.com/AlphaHydrae/gitenv"
|
38
|
+
s.licenses = ["MIT"]
|
39
|
+
s.require_paths = ["lib"]
|
40
|
+
s.rubygems_version = "1.8.24"
|
41
|
+
s.summary = "Git environment project manager."
|
42
|
+
|
43
|
+
if s.respond_to? :specification_version then
|
44
|
+
s.specification_version = 3
|
45
|
+
|
46
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
47
|
+
s.add_runtime_dependency(%q<paint>, ["~> 0.8.5"])
|
48
|
+
s.add_development_dependency(%q<bundler>, [">= 0"])
|
49
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
50
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
51
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
52
|
+
s.add_development_dependency(%q<gemcutter>, [">= 0"])
|
53
|
+
s.add_development_dependency(%q<gem-release>, [">= 0"])
|
54
|
+
s.add_development_dependency(%q<rake-version>, [">= 0"])
|
55
|
+
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
56
|
+
else
|
57
|
+
s.add_dependency(%q<paint>, ["~> 0.8.5"])
|
58
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
59
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
60
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
61
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
62
|
+
s.add_dependency(%q<gemcutter>, [">= 0"])
|
63
|
+
s.add_dependency(%q<gem-release>, [">= 0"])
|
64
|
+
s.add_dependency(%q<rake-version>, [">= 0"])
|
65
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
66
|
+
end
|
67
|
+
else
|
68
|
+
s.add_dependency(%q<paint>, ["~> 0.8.5"])
|
69
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
70
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
71
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
72
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
73
|
+
s.add_dependency(%q<gemcutter>, [">= 0"])
|
74
|
+
s.add_dependency(%q<gem-release>, [">= 0"])
|
75
|
+
s.add_dependency(%q<rake-version>, [">= 0"])
|
76
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
data/lib/gitenv.rb
CHANGED
@@ -1,4 +1,174 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'paint'
|
1
3
|
|
2
4
|
module Gitenv
|
3
|
-
VERSION = '0.0.
|
5
|
+
VERSION = '0.0.2'
|
6
|
+
|
7
|
+
class Runner
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@home = File.expand_path '~'
|
11
|
+
@config_file = File.join @home, '.gitenv.rb'
|
12
|
+
end
|
13
|
+
|
14
|
+
def run
|
15
|
+
|
16
|
+
@dsl = DSL.new
|
17
|
+
@dsl.instance_eval File.open(@config_file, 'r').read, @config_file
|
18
|
+
|
19
|
+
action = ARGV.shift || 'info'
|
20
|
+
|
21
|
+
puts
|
22
|
+
puts "gitenv v#{VERSION}"
|
23
|
+
puts "configuration #{@config_file}"
|
24
|
+
puts
|
25
|
+
case action
|
26
|
+
when 'info'
|
27
|
+
puts Paint["Listing current state", :bright, :bold]
|
28
|
+
when 'update'
|
29
|
+
puts Paint["Creating missing links", :blue, :bold]
|
30
|
+
end
|
31
|
+
|
32
|
+
@dsl.symlinks.each do |link|
|
33
|
+
|
34
|
+
link_file_path = File.join @home, link[:file]
|
35
|
+
real_file = link[:source] || link[:file]
|
36
|
+
real_file_path = File.join File.expand_path(@dsl.repository), real_file
|
37
|
+
|
38
|
+
msg = %/#{Paint[link_file_path, :cyan]} -> #{real_file_path}/
|
39
|
+
data = analyze link_file_path, real_file_path
|
40
|
+
|
41
|
+
case action
|
42
|
+
when 'info'
|
43
|
+
puts %/#{info_mark data}#{msg} #{info_msg data}/
|
44
|
+
when 'update'
|
45
|
+
unless File.exists? link_file_path
|
46
|
+
File.symlink real_file_path, link_file_path
|
47
|
+
end
|
48
|
+
puts %/#{update_mark data}#{msg} #{update_msg data}/
|
49
|
+
else
|
50
|
+
raise "No such action #{action}"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
puts
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def update_mark data
|
60
|
+
case data[:status]
|
61
|
+
when :setup
|
62
|
+
Paint[" ✓ ", :green]
|
63
|
+
when :wrong_link
|
64
|
+
Paint[" ✗ ", :yellow]
|
65
|
+
when :not_link
|
66
|
+
Paint[" ✗ ", :yellow]
|
67
|
+
when :void
|
68
|
+
Paint[" ✓ ", :green]
|
69
|
+
else
|
70
|
+
Paint[" ? ", :red]
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def update_msg data
|
75
|
+
case data[:status]
|
76
|
+
when :setup
|
77
|
+
Paint["already here", :green]
|
78
|
+
when :wrong_link
|
79
|
+
Paint["skipped (points to #{data[:target]})", :yellow]
|
80
|
+
when :not_link
|
81
|
+
Paint["skipped (not a symlink)", :yellow]
|
82
|
+
when :void
|
83
|
+
Paint["set up", :green]
|
84
|
+
else
|
85
|
+
Paint["unknown", :red]
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def info_msg data
|
90
|
+
case data[:status]
|
91
|
+
when :setup
|
92
|
+
Paint["already here", :green]
|
93
|
+
when :wrong_link
|
94
|
+
Paint["points to #{data[:target]}", :yellow]
|
95
|
+
when :not_link
|
96
|
+
Paint["is not a symlink", :red]
|
97
|
+
when :void
|
98
|
+
Paint["is not yet set up", :blue]
|
99
|
+
else
|
100
|
+
Paint["unknown", :red]
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def info_mark data
|
105
|
+
case data[:status]
|
106
|
+
when :setup
|
107
|
+
Paint[" ✓ ", :green]
|
108
|
+
when :wrong_link
|
109
|
+
Paint[" ✗ ", :red]
|
110
|
+
when :not_link
|
111
|
+
Paint[" ✗ ", :red]
|
112
|
+
when :void
|
113
|
+
Paint[" ✓ ", :green]
|
114
|
+
else
|
115
|
+
Paint[" ? ", :red]
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def analyze link_file_path, real_file_path
|
120
|
+
if File.symlink? link_file_path
|
121
|
+
current_real_file_path = File.expand_path(File.readlink(link_file_path))
|
122
|
+
if current_real_file_path == real_file_path
|
123
|
+
{ :status => :setup }
|
124
|
+
else
|
125
|
+
{ :status => :wrong_link, :target => current_real_file_path }
|
126
|
+
end
|
127
|
+
elsif File.exists? link_file_path
|
128
|
+
{ :status => :not_link }
|
129
|
+
else
|
130
|
+
{ :status => :void }
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
class DSL
|
136
|
+
attr_reader :repository
|
137
|
+
attr_reader :symlinks
|
138
|
+
|
139
|
+
def initialize
|
140
|
+
@symlinks = []
|
141
|
+
end
|
142
|
+
|
143
|
+
def repo path
|
144
|
+
@repository = File.expand_path path
|
145
|
+
raise unless File.directory? @repository
|
146
|
+
end
|
147
|
+
|
148
|
+
def within path
|
149
|
+
path = File.expand_path path
|
150
|
+
raise unless File.directory? path
|
151
|
+
@within = path
|
152
|
+
yield
|
153
|
+
@within = nil
|
154
|
+
end
|
155
|
+
|
156
|
+
def symlink file, source = nil
|
157
|
+
source ||= file
|
158
|
+
s = source || file
|
159
|
+
f = File.join @repository, s
|
160
|
+
raise "Unknown file #{f}" unless File.exists? f
|
161
|
+
@symlinks << { :file => file, :source => source, :within => @within }
|
162
|
+
end
|
163
|
+
|
164
|
+
def configure &block
|
165
|
+
@self_before_instance_eval = eval "self", block.binding
|
166
|
+
instance_eval &block
|
167
|
+
@self_before_instance_eval = nil
|
168
|
+
end
|
169
|
+
|
170
|
+
def method_missing method, *args, &block
|
171
|
+
@self_before_instance_eval.send method, *args, &block
|
172
|
+
end
|
173
|
+
end
|
4
174
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitenv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -175,6 +175,7 @@ files:
|
|
175
175
|
- Rakefile
|
176
176
|
- VERSION
|
177
177
|
- bin/gitenv
|
178
|
+
- gitenv.gemspec
|
178
179
|
- lib/gitenv.rb
|
179
180
|
- spec/helper.rb
|
180
181
|
- spec/version_spec.rb
|