space 0.0.3 → 0.0.4

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.
Files changed (51) hide show
  1. data/Gemfile +2 -0
  2. data/Gemfile.lock +17 -2
  3. data/Guardfile +5 -0
  4. data/README.md +4 -0
  5. data/Rakefile +1 -1
  6. data/bin/space +2 -1
  7. data/lib/core_ext/{enumerable.rb → enumerable/map_slice.rb} +2 -7
  8. data/lib/core_ext/{string.rb → string/wrap.rb} +1 -2
  9. data/lib/space.rb +6 -16
  10. data/lib/space/app.rb +36 -48
  11. data/lib/space/app/command.rb +45 -0
  12. data/lib/space/app/command/builtin.rb +43 -0
  13. data/lib/space/app/command/development.rb +60 -0
  14. data/lib/space/app/handler.rb +47 -0
  15. data/lib/space/app/logger.rb +21 -0
  16. data/lib/space/{action → app}/parser.rb +3 -2
  17. data/lib/space/config.rb +14 -6
  18. data/lib/space/events.rb +34 -0
  19. data/lib/space/events/buffer.rb +18 -0
  20. data/lib/space/events/event.rb +14 -0
  21. data/lib/space/helpers.rb +30 -15
  22. data/lib/space/models.rb +7 -0
  23. data/lib/space/models/project.rb +48 -0
  24. data/lib/space/models/project/bundler.rb +30 -0
  25. data/lib/space/models/repo.rb +46 -29
  26. data/lib/space/models/repo/bundle.rb +39 -0
  27. data/lib/space/models/repo/dependency.rb +22 -0
  28. data/lib/space/models/repo/git.rb +52 -0
  29. data/lib/space/models/repos.rb +31 -26
  30. data/lib/space/models/repos/collection.rb +26 -0
  31. data/lib/space/models/repos/scope.rb +18 -0
  32. data/lib/space/screen.rb +19 -15
  33. data/lib/space/screen/dashboard.rb +28 -0
  34. data/lib/space/screen/progress.rb +15 -0
  35. data/lib/space/screen/view.rb +43 -0
  36. data/lib/space/shell.rb +56 -0
  37. data/lib/space/shell/command.rb +63 -0
  38. data/lib/space/shell/watch.rb +50 -0
  39. data/lib/space/shell/watcher.rb +40 -0
  40. data/lib/space/templates/{project.erb → header.erb} +0 -1
  41. data/lib/space/templates/{repository.erb → repo.erb} +1 -1
  42. data/lib/space/tmux.rb +11 -0
  43. data/lib/space/version.rb +1 -1
  44. metadata +33 -15
  45. data/lib/space/action.rb +0 -84
  46. data/lib/space/models/bundle.rb +0 -44
  47. data/lib/space/models/command.rb +0 -28
  48. data/lib/space/models/commands.rb +0 -23
  49. data/lib/space/models/dependency.rb +0 -18
  50. data/lib/space/models/git.rb +0 -23
  51. data/lib/space/view.rb +0 -25
@@ -0,0 +1,40 @@
1
+ module Space
2
+ module Shell
3
+ module Watcher
4
+ class << self
5
+ def suspend
6
+ @suspended = true
7
+ yield.tap do
8
+ @suspended = false
9
+ end
10
+ end
11
+
12
+ def suspended?
13
+ !!@suspended
14
+ end
15
+ end
16
+
17
+ def initialize(*args)
18
+ watch
19
+ end
20
+
21
+ private
22
+
23
+ def watch
24
+ targets.each do |path|
25
+ Watch.new(path, &method(:trigger)).run
26
+ end
27
+ end
28
+
29
+ def trigger(paths)
30
+ refresh unless Watcher.suspended?
31
+ end
32
+
33
+ def targets
34
+ self.class.watch.map do |path|
35
+ path[0, 1] == '~' ? path : "#{self.path}/#{path}"
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -1,2 +1 @@
1
1
  <%= project_title %>
2
- <%= bundle_local %>
@@ -1,4 +1,4 @@
1
- <%= repo_title %>
1
+ <%= repo.number %> <%= repo_name %>: <%= repo_status %><%= ' *' if repo_selected? %>
2
2
  <%=i git_status %> <%= bundle_status %>
3
3
  <%=i bundle.clean? ? bundle_deps : bundle_info %>
4
4
 
data/lib/space/tmux.rb ADDED
@@ -0,0 +1,11 @@
1
+ module Space
2
+ module Tmux
3
+ class << self
4
+ def windows
5
+ windows = `tmux list-windows -F '#W'`.split("\n")
6
+ windows unless windows.empty?
7
+ end
8
+ end
9
+ end
10
+ end
11
+
data/lib/space/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Space
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: space
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-28 00:00:00.000000000 Z
12
+ date: 2012-04-07 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: space.
15
15
  email:
@@ -19,28 +19,46 @@ executables:
19
19
  extensions: []
20
20
  extra_rdoc_files: []
21
21
  files:
22
- - lib/core_ext/enumerable.rb
23
- - lib/core_ext/string.rb
24
- - lib/space/action/parser.rb
25
- - lib/space/action.rb
22
+ - lib/core_ext/enumerable/map_slice.rb
23
+ - lib/core_ext/string/wrap.rb
24
+ - lib/space/app/command/builtin.rb
25
+ - lib/space/app/command/development.rb
26
+ - lib/space/app/command.rb
27
+ - lib/space/app/handler.rb
28
+ - lib/space/app/logger.rb
29
+ - lib/space/app/parser.rb
26
30
  - lib/space/app.rb
27
31
  - lib/space/config.rb
32
+ - lib/space/events/buffer.rb
33
+ - lib/space/events/event.rb
34
+ - lib/space/events.rb
28
35
  - lib/space/helpers.rb
29
- - lib/space/models/bundle.rb
30
- - lib/space/models/command.rb
31
- - lib/space/models/commands.rb
32
- - lib/space/models/dependency.rb
33
- - lib/space/models/git.rb
36
+ - lib/space/models/project/bundler.rb
37
+ - lib/space/models/project.rb
38
+ - lib/space/models/repo/bundle.rb
39
+ - lib/space/models/repo/dependency.rb
40
+ - lib/space/models/repo/git.rb
34
41
  - lib/space/models/repo.rb
42
+ - lib/space/models/repos/collection.rb
43
+ - lib/space/models/repos/scope.rb
35
44
  - lib/space/models/repos.rb
45
+ - lib/space/models.rb
46
+ - lib/space/screen/dashboard.rb
47
+ - lib/space/screen/progress.rb
48
+ - lib/space/screen/view.rb
36
49
  - lib/space/screen.rb
37
- - lib/space/templates/project.erb
38
- - lib/space/templates/repository.erb
50
+ - lib/space/shell/command.rb
51
+ - lib/space/shell/watch.rb
52
+ - lib/space/shell/watcher.rb
53
+ - lib/space/shell.rb
54
+ - lib/space/templates/header.erb
55
+ - lib/space/templates/repo.erb
56
+ - lib/space/tmux.rb
39
57
  - lib/space/version.rb
40
- - lib/space/view.rb
41
58
  - lib/space.rb
42
59
  - Gemfile
43
60
  - Gemfile.lock
61
+ - Guardfile
44
62
  - LICENSE
45
63
  - Rakefile
46
64
  - README.md
@@ -66,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
84
  version: '0'
67
85
  requirements: []
68
86
  rubyforge_project: ! '[none]'
69
- rubygems_version: 1.8.17
87
+ rubygems_version: 1.8.11
70
88
  signing_key:
71
89
  specification_version: 3
72
90
  summary: space
data/lib/space/action.rb DELETED
@@ -1,84 +0,0 @@
1
- module Space
2
- class Action
3
- autoload :Parser, 'space/action/parser'
4
-
5
- class << self
6
- def run(app, line)
7
- new(app, *Parser.new(app.repos.names).parse(line)).run
8
- end
9
- end
10
-
11
- attr_reader :app, :repos, :command, :args
12
-
13
- def initialize(app, repos, command, *args)
14
- @app = app
15
- @repos = Repos.select(repos) if repos
16
- @command = normalize(command)
17
- @args = args
18
- end
19
-
20
- def run
21
- if respond_to?(command)
22
- send(command)
23
- elsif command
24
- execute(command)
25
- end
26
- end
27
-
28
- def reload
29
- app.bundle.reset
30
- run_scoped(true) do |repo|
31
- repo.reset
32
- end
33
- end
34
-
35
- def scope
36
- app.repos = repos
37
- end
38
-
39
- def unscope
40
- app.repos = nil
41
- end
42
-
43
- def local
44
- run_scoped do |repo|
45
- system "bundle config --global local.#{repo.name} #{repo.path}"
46
- end
47
- end
48
-
49
- def remote
50
- run_scoped do |repo|
51
- system "bundle config --delete local.#{repo.name}"
52
- end
53
- end
54
-
55
- def execute(cmd)
56
- run_scoped do |repo|
57
- puts
58
- repo.execute(cmd)
59
- end
60
- end
61
-
62
- def run_scoped(reloading = false)
63
- (repos || app.repos).each { |repo| yield repo }
64
- confirm && reload unless reloading
65
- end
66
-
67
- def system(cmd)
68
- puts cmd
69
- super
70
- end
71
-
72
- def confirm
73
- puts "\n--- hit any key to continue ---\n"
74
- STDIN.getc
75
- end
76
-
77
- def normalize(command)
78
- command = (command || '').strip
79
- command = 'unscope' if command == '-'
80
- command = 'scope' if command.empty?
81
- command
82
- end
83
- end
84
- end
@@ -1,44 +0,0 @@
1
- module Space
2
- class Bundle
3
- include Commands
4
-
5
- COMMANDS = {
6
- :check => 'bundle check',
7
- :list => 'bundle list',
8
- :config => 'bundle config'
9
- }
10
-
11
- def initialize(path)
12
- super(path)
13
- end
14
-
15
- def clean?
16
- info =~ /dependencies are satisfied/
17
- end
18
-
19
- def info
20
- result(:check).split("\n").first
21
- end
22
-
23
- def deps
24
- result(:list).split("\n").map do |dep|
25
- dep =~ /(#{App.name}.*) \(\d\.\d\.\d (.+)\)/
26
- Dependency.new($1, $2) if Repos.names.include?($1)
27
- end.compact
28
- end
29
-
30
- def local_repos
31
- config.keys.map do |key|
32
- key =~ /^local\.(.+)$/ && $1
33
- end.compact
34
- end
35
-
36
- def config
37
- lines = result(:config).split("\n")[2..-1]
38
- values = lines.map_slice(3) do |name, value, _|
39
- [name, value =~ /: "(.*)"/ && $1]
40
- end
41
- Hash[*values.compact.flatten]
42
- end
43
- end
44
- end
@@ -1,28 +0,0 @@
1
- require 'ansi/code'
2
-
3
- module Space
4
- class Command
5
- attr_reader :path, :command
6
-
7
- def initialize(path, command)
8
- @path = File.expand_path(path)
9
- @command = command
10
- end
11
-
12
- def result
13
- @result ||= chdir { strip_ansi(`#{command}`) }
14
- end
15
-
16
- def reset
17
- @result = nil
18
- end
19
-
20
- def chdir(&block)
21
- Dir.chdir(path, &block)
22
- end
23
-
24
- def strip_ansi(string)
25
- string.gsub(ANSI::Code::PATTERN, '')
26
- end
27
- end
28
- end
@@ -1,23 +0,0 @@
1
- module Space
2
- module Commands
3
- attr_reader :path
4
-
5
- def initialize(path)
6
- @path = path
7
- end
8
-
9
- def result(command)
10
- commands[command].result
11
- end
12
-
13
- def commands
14
- @commands ||= Hash[*self.class::COMMANDS.map do |key, cmd|
15
- [key, Command.new(path, cmd)]
16
- end.flatten]
17
- end
18
-
19
- def reset
20
- commands.each { |key, command| command.reset }
21
- end
22
- end
23
- end
@@ -1,18 +0,0 @@
1
- module Space
2
- class Dependency
3
- attr_reader :name, :ref
4
-
5
- def initialize(name, ref)
6
- @name = name
7
- @ref = ref
8
- end
9
-
10
- def fresh?
11
- repo.ref == ref
12
- end
13
-
14
- def repo
15
- Repos.find_by_name(name)
16
- end
17
- end
18
- end
@@ -1,23 +0,0 @@
1
- module Space
2
- class Git
3
- include Commands
4
-
5
- COMMANDS = {
6
- :status => 'git status -s',
7
- :branch => 'git branch --no-color',
8
- :commit => 'git log -1 head'
9
- }
10
-
11
- def clean?
12
- result(:status).empty?
13
- end
14
-
15
- def branch
16
- result(:branch) =~ /^\* (.+)/ && $1.strip
17
- end
18
-
19
- def commit
20
- result(:commit) =~ /^commit (\S{7})/ && $1
21
- end
22
- end
23
- end
data/lib/space/view.rb DELETED
@@ -1,25 +0,0 @@
1
- require 'erb'
2
-
3
- module Space
4
- class View
5
- include Helpers
6
-
7
- def template_name
8
- self.class.name.downcase.split('::').last
9
- end
10
-
11
- def render(name, assigns)
12
- assigns.each { |name, value| assign(name, value) }
13
- template(name).result(binding)
14
- end
15
-
16
- def assign(key, value)
17
- instance_variable_set(:"@#{key}", value)
18
- (class << self; self; end).send(:attr_reader, key)
19
- end
20
-
21
- def template(name)
22
- ERB.new(File.read(TEMPLATES[name.to_sym]), nil, '%<>-')
23
- end
24
- end
25
- end