organize 0.1.0 → 1.0.0

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/.gitignore CHANGED
@@ -1,2 +1,6 @@
1
1
  pkg/*
2
- *.gem
2
+ *.gem
3
+ .bundle
4
+ db/*.sqlite3
5
+ log/*.log
6
+ tmp/**/*
@@ -2,7 +2,7 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  organize (0.1.0)
5
- optitron (~> 0.1)
5
+ optitron (~> 0.2)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
@@ -14,11 +14,11 @@ GEM
14
14
  fakefs (0.2.1)
15
15
  infinity_test (0.2.0)
16
16
  watchr (>= 0.7)
17
- optitron (0.1.7)
18
- callsite (= 0.0.4)
19
- ruby2ruby (= 1.2.4)
20
- ruby_parser (>= 2.0)
21
- sexp_processor (= 3.0.4)
17
+ optitron (0.2.0)
18
+ callsite (~> 0.0.4)
19
+ ruby2ruby (~> 1.2.4)
20
+ ruby_parser (~> 2.0)
21
+ sexp_processor (~> 3.0.4)
22
22
  rspec (2.0.0.beta.22)
23
23
  rspec-core (= 2.0.0.beta.22)
24
24
  rspec-expectations (= 2.0.0.beta.22)
@@ -29,12 +29,12 @@ GEM
29
29
  rspec-mocks (2.0.0.beta.22)
30
30
  rspec-core (= 2.0.0.beta.22)
31
31
  rspec-expectations (= 2.0.0.beta.22)
32
- ruby2ruby (1.2.4)
32
+ ruby2ruby (1.2.5)
33
33
  ruby_parser (~> 2.0)
34
34
  sexp_processor (~> 3.0)
35
- ruby_parser (2.0.4)
35
+ ruby_parser (2.0.5)
36
36
  sexp_processor (~> 3.0)
37
- sexp_processor (3.0.4)
37
+ sexp_processor (3.0.5)
38
38
  watchr (0.7)
39
39
 
40
40
  PLATFORMS
@@ -45,7 +45,7 @@ DEPENDENCIES
45
45
  derickbailey-notamock (~> 0.0.1)
46
46
  fakefs (~> 0.2)
47
47
  infinity_test (~> 0.2)
48
- optitron (~> 0.1)
48
+ optitron (~> 0.2)
49
49
  organize!
50
50
  rspec (= 2.0.0.beta.22)
51
51
  watchr (~> 0.6)
data/Rakefile CHANGED
@@ -2,4 +2,20 @@ require 'bundler'
2
2
  Bundler::GemHelper.install_tasks
3
3
 
4
4
  require 'rspec/core/rake_task'
5
- RSpec::Core::RakeTask.new :rspec
5
+ RSpec::Core::RakeTask.new :rspec
6
+
7
+ def gemspec
8
+ file = 'organize.gemspec'
9
+ @gemspec ||= eval(File.read(file), binding, file)
10
+ end
11
+
12
+ desc 'Build the gem'
13
+ task :gem do
14
+ sh 'gem build organize.gemspec'
15
+ mv "#{gemspec.full_name}.gem", 'pkg'
16
+ end
17
+
18
+ desc 'Install organize'
19
+ task :install => :gem do
20
+ sh "gem install pkg/#{gemspec.full_name}.gem"
21
+ end
@@ -1,23 +1,16 @@
1
1
  module Organize
2
2
  class Project
3
3
 
4
- attr_reader :prefix, :shared_prefix, :name
4
+ attr_reader :name
5
+ PREFIX = File.expand_path('~/Projects')
6
+ SHARED_PREFIX = File.expand_path('~/Dropbox')
5
7
 
6
- DEFAULTS = {
7
- :prefix => '~/Projects',
8
- :shared_prefix => '~/Dropbox'
9
- }
10
-
11
- def initialize(name, options = {})
8
+ def initialize(name)
12
9
  @name = name
13
-
14
- options = DEFAULTS.merge(options)
15
- @prefix = options[:prefix]
16
- @shared_prefix = options[:shared_prefix]
17
10
  end
18
11
 
19
12
  def path
20
- File.join(prefix, name)
13
+ File.join(PREFIX, name)
21
14
  end
22
15
 
23
16
  def archive_path
@@ -25,7 +18,7 @@ module Organize
25
18
  end
26
19
 
27
20
  def shared_path
28
- File.join(shared_prefix, name)
21
+ File.join(SHARED_PREFIX, name)
29
22
  end
30
23
 
31
24
  def shared_link_path
@@ -33,7 +26,7 @@ module Organize
33
26
  end
34
27
 
35
28
  def project_archive_path
36
- File.join(prefix, 'Archive')
29
+ File.join(PREFIX, 'Archive')
37
30
  end
38
31
 
39
32
  def create
@@ -41,10 +34,7 @@ module Organize
41
34
  FileUtils.mkdir_p(shared_path)
42
35
  FileUtils.mkdir_p(archive_path)
43
36
  FileUtils.mkdir_p(project_archive_path)
44
-
45
- unless File.exists?(shared_link_path)
46
- FileUtils.ln_s(shared_path, shared_link_path)
47
- end
37
+ FileUtils.ln_s(shared_path, shared_link_path) unless File.exists?(shared_link_path)
48
38
  end
49
39
  end
50
40
  end
@@ -1,38 +1,42 @@
1
1
  require 'optitron'
2
2
  require 'yaml'
3
+ require 'fileutils'
3
4
 
4
5
  module Organize
5
6
  class Runner < Optitron::CLI
6
7
  desc 'Install organize to your home directory.'
7
- def install(prefix = '~/Projects', shared_prefix = '~/Dropbox', inbox = '~/Desktop')
8
+ def install
9
+ prefix = Project::PREFIX
10
+ shared_prefix = Project::SHARED_PREFIX
11
+
12
+ # Create the prefix and shared prefix.
8
13
  FileUtils.mkdir_p(prefix)
9
14
  FileUtils.mkdir_p(File.join(prefix, 'Archive'))
10
15
  FileUtils.mkdir_p(shared_prefix)
11
- FileUtils.mkdir_p(File.join(prefix, 'Other'))
12
- FileUtils.ln_s(inbox, File.join(prefix, 'Inbox'))
13
16
 
14
- ['Documents', 'Movies', 'Music', 'Pictures', 'Public', 'Sites'].each do |directory|
15
- FileUtils.ln_s("~/#{directory}", File.join(prefix, 'Other', directory))
16
- end
17
+ # Create Inbox pseudo-project
18
+ inbox = File.join(prefix, 'Inbox')
19
+ inbox_shared = File.join(shared_prefix, 'Inbox')
20
+ inbox_shared_link = File.join(inbox, 'Shared')
21
+
22
+ FileUtils.ln_s(File.expand_path('~/Desktop'), inbox) unless File.exists?(inbox)
23
+ FileUtils.mkdir_p(inbox_shared)
24
+ FileUtils.ln_s(inbox_shared, inbox_shared_link) unless File.exists?(inbox_shared_link)
17
25
 
18
- config = {
19
- 'prefix' => prefix,
20
- 'shared_prefix' => shared_prefix
21
- }
26
+ # Create the Other project
27
+ other = Project.new('Other')
28
+ other.create
22
29
 
23
- File.open('~/.organize', 'w+') { |f| f.write(YAML::dump(config)) }
30
+ %w{Documents Movies Music Pictures Public Sites}.each do |directory|
31
+ old_directory = File.expand_path("~/#{directory}")
32
+ new_directory = File.join(other.path, directory)
33
+ FileUtils.ln_s(old_directory, new_directory) unless File.exists?(new_directory)
34
+ end
24
35
  end
25
36
 
26
37
  desc 'Creates a new project.'
27
38
  def create(name)
28
- config = YAML::load_file '~/.organize'
29
- project = Project.new name, :prefix => config['prefix'], :shared_prefix => config['shared_prefix']
30
- project.create
31
- end
32
-
33
- desc 'Gets the prefix.'
34
- def prefix
35
- print YAML::load_file('~/.organize')['prefix']
39
+ Project.new(name).create
36
40
  end
37
41
  end
38
42
  end
@@ -1,3 +1,3 @@
1
1
  module Organize
2
- VERSION = "0.1.0"
2
+ VERSION = '1.0.0'
3
3
  end
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.required_rubygems_version = '~> 1.3.6'
16
16
  s.rubyforge_project = 'organize'
17
17
 
18
- s.add_dependency 'optitron', '~> 0.1'
18
+ s.add_dependency 'optitron', '~> 0.2'
19
19
 
20
20
  s.add_development_dependency 'bundler', '~> 1.0'
21
21
  s.add_development_dependency 'rspec', '2.0.0.beta.22'
@@ -8,42 +8,17 @@ describe Organize::Project do
8
8
  subject.name.should == 'Foo'
9
9
  end
10
10
 
11
- context 'when created without a prefix' do
12
- its(:prefix) { should == '~/Projects' }
13
- end
14
-
15
- context 'when created without a shared prefix' do
16
- its(:shared_prefix) { should == '~/Dropbox' }
17
- end
18
-
19
- context 'when created with a prefix' do
20
- subject { Organize::Project.new 'Foo', :prefix => '~/Prefix' }
21
-
22
- it 'should use that prefix instead of the default one' do
23
- subject.prefix.should == '~/Prefix'
24
- end
25
- end
26
-
27
- context 'when created with a shared prefix' do
28
- subject { Organize::Project.new 'Foo', :shared_prefix => '~/Shared' }
29
-
30
- it 'should use that prefix instead of the default one' do
31
- subject.shared_prefix.should == '~/Shared'
32
- end
33
- end
34
-
35
11
  describe '#path' do
36
12
  before do
37
- project.track_methods :prefix, :name
13
+ project.track_methods :name
38
14
  subject
39
15
  end
40
16
 
41
17
  subject { project.path }
42
18
 
43
19
  it 'should combine the prefix and name' do
44
- project.should have_received(:prefix)
45
20
  project.should have_received(:name)
46
- should == '~/Projects/Foo'
21
+ should == File.expand_path('~/Projects/Foo')
47
22
  end
48
23
  end
49
24
 
@@ -57,22 +32,21 @@ describe Organize::Project do
57
32
 
58
33
  it 'should tack on Archive to the end of the path' do
59
34
  project.should have_received(:path)
60
- should == '~/Projects/Foo/Archive'
35
+ should == File.expand_path('~/Projects/Foo/Archive')
61
36
  end
62
37
  end
63
38
 
64
39
  describe '#shared_path' do
65
40
  before do
66
- project.track_methods :shared_prefix, :name
41
+ project.track_methods :name
67
42
  subject
68
43
  end
69
44
 
70
45
  subject { project.shared_path }
71
46
 
72
47
  it 'should tack on the name to the end of the shared path' do
73
- project.should have_received(:shared_prefix)
74
48
  project.should have_received(:name)
75
- should == '~/Dropbox/Foo'
49
+ should == File.expand_path('~/Dropbox/Foo')
76
50
  end
77
51
  end
78
52
 
@@ -86,104 +60,38 @@ describe Organize::Project do
86
60
 
87
61
  it 'should tack on Shared to the end of the path' do
88
62
  project.should have_received(:path)
89
- should == '~/Projects/Foo/Shared'
63
+ should == File.expand_path('~/Projects/Foo/Shared')
90
64
  end
91
65
  end
92
66
 
93
67
  describe '#project_archive_path' do
94
- before do
95
- project.track_methods :prefix
96
- subject
97
- end
98
-
99
68
  subject { project.project_archive_path }
100
69
 
101
70
  it 'should tack on Archive to the end of the prefix' do
102
- project.should have_received(:prefix)
103
- should == '~/Projects/Archive'
71
+ should == File.expand_path('~/Projects/Archive')
104
72
  end
105
73
  end
106
74
 
107
75
  describe '#create' do
108
76
  before do
109
- FileUtils.rm_rf(project.prefix)
110
- FileUtils.rm_rf(project.shared_prefix)
111
- end
112
-
113
- subject { project.create }
114
-
115
- context 'when the prefix does not exist' do
116
- before { subject }
117
-
118
- it 'should be created' do
119
- File.directory?(project.prefix).should be_true
120
- end
121
-
122
- it 'should create the project directory' do
123
- File.directory?(project.path).should be_true
124
- end
125
- end
126
-
127
- context 'when the prefix does exist' do
128
- let(:other_project_path) { File.join(project.prefix, 'Bar') }
129
-
130
- before do
131
- FileUtils.mkdir_p(other_project_path)
132
- subject
133
- end
134
-
135
- it 'should not delete the other files/directories in the prefix' do
136
- File.directory?(other_project_path).should be_true
137
- end
138
-
139
- it 'should only create the project directory' do
140
- File.directory?(project.path).should be_true
141
- end
77
+ FileUtils.rm_rf(File.expand_path('~'))
78
+ project.create
142
79
  end
143
80
 
144
- context 'when the shared prefix does not exist' do
145
- before { subject }
146
-
147
- it 'should be created' do
148
- File.directory?(project.shared_prefix).should be_true
149
- end
150
-
151
- it 'should create the project directory' do
152
- File.directory?(project.shared_path).should be_true
153
- end
81
+ it 'should create the project directory' do
82
+ File.directory?(project.path).should be_true
154
83
  end
155
84
 
156
- context 'when the shared prefix does exist' do
157
- let(:other_shared_path) { File.join(project.shared_prefix, 'Bar') }
158
-
159
- before do
160
- FileUtils.mkdir_p(other_shared_path)
161
- subject
162
- end
163
-
164
- it 'should not delete the other files/directories in the shared prefix' do
165
- File.directory?(other_shared_path).should be_true
166
- end
167
-
168
- it 'should only create the project shared directory' do
169
- File.directory?(project.shared_path).should be_true
170
- end
85
+ it 'should create the shared project directory' do
86
+ File.directory?(project.shared_path).should be_true
171
87
  end
172
88
 
173
- context 'when the archive path does not exist' do
174
- before { subject }
175
-
176
- it 'should be created' do
177
- File.directory?(project.archive_path).should be_true
178
- end
89
+ it 'should creat the archive directory' do
90
+ File.directory?(project.archive_path).should be_true
179
91
  end
180
92
 
181
- context 'when the project archive path does not exist' do
182
- before { subject }
183
-
184
- it 'should be created' do
185
- File.directory?(project.project_archive_path).should be_true
186
- end
93
+ it 'should create the project archive directory' do
94
+ File.directory?(project.project_archive_path).should be_true
187
95
  end
188
96
  end
189
97
  end
@@ -1,62 +1,51 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Organize::Runner do
4
- let(:runner) { Organize::Runner.new }
4
+ let(:runner) { Organize::Runner }
5
5
  subject { runner }
6
6
 
7
7
  before do
8
8
  FileUtils.rm_rf '~'
9
9
 
10
- ['~/Desktop', '~/Documents', '~/Movies', '~/Music', '~/Pictures', '~/Public', '~/Sites'].each do |directory|
11
- FileUtils.mkdir_p directory
10
+ %w{Desktop Documents Movies Music Pictures Public Sites}.each do |directory|
11
+ directory = File.expand_path("~/#{directory}")
12
+ FileUtils.mkdir_p(directory)
12
13
  end
13
14
  end
14
15
 
15
- # TODO: Make these tests not suck.
16
16
  describe '#install' do
17
- subject { runner.install }
18
- before { subject }
17
+ before { runner.dispatch(%w{install}) }
19
18
 
20
- it 'should create the necessary directories' do
21
- ['~', '~/Projects', '~/Dropbox', '~/Projects/Archive', '~/Projects/Other'].each do |directory|
19
+ it 'should create the prefixes' do
20
+ %w{Projects Dropbox}.each do |directory|
21
+ directory = File.expand_path("~/#{directory}")
22
22
  File.directory?(directory).should be_true
23
23
  end
24
24
  end
25
25
 
26
- it 'should symlink the Other directories' do
27
- ['Documents', 'Movies', 'Music', 'Pictures', 'Public', 'Sites'].each do |directory|
28
- File.symlink?(File.join('~/Projects/Other', directory)).should be_true
26
+ it 'should create the Inbox and Other projects' do
27
+ %w{Inbox Other}.each do |directory|
28
+ directory = File.expand_path("~/Projects/#{directory}")
29
+ File.directory?(directory).should be_true
29
30
  end
30
31
  end
31
32
 
32
- it 'should write to the .organize file correctly' do
33
- YAML::load_file('~/.organize').should == {
34
- 'prefix' => '~/Projects',
35
- 'shared_prefix' => '~/Dropbox'
36
- }
33
+ it 'should symlink the Other directories' do
34
+ %w{Documents Movies Music Pictures Public Sites}.each do |directory|
35
+ directory = File.expand_path("~/Projects/Other/#{directory}")
36
+ File.symlink?(directory).should be_true
37
+ end
37
38
  end
38
39
  end
39
40
 
40
41
  describe '#create' do
41
- subject { runner.create 'Foo' }
42
-
43
42
  before do
44
- runner.install
45
- subject
43
+ runner.dispatch(%w{install})
44
+ runner.dispatch(%w{create Foo})
46
45
  end
47
46
 
48
47
  it 'should create the new project' do
49
48
  File.directory?('~/Projects/Foo').should be_true
50
49
  end
51
50
  end
52
-
53
- describe '#prefix' do
54
- subject { runner.prefix }
55
- before { runner.install }
56
-
57
- it 'should return the prefix' do
58
- stdout = capture(:stdout) { subject }
59
- stdout.should == '~/Projects'
60
- end
61
- end
62
51
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: organize
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
- - 0
8
7
  - 1
9
8
  - 0
10
- version: 0.1.0
9
+ - 0
10
+ version: 1.0.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Alexander Kern
@@ -26,11 +26,11 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- hash: 9
29
+ hash: 15
30
30
  segments:
31
31
  - 0
32
- - 1
33
- version: "0.1"
32
+ - 2
33
+ version: "0.2"
34
34
  type: :runtime
35
35
  version_requirements: *id001
36
36
  - !ruby/object:Gem::Dependency
@@ -137,7 +137,6 @@ extensions: []
137
137
  extra_rdoc_files: []
138
138
 
139
139
  files:
140
- - .bundle/config
141
140
  - .gitignore
142
141
  - .rspec
143
142
  - Gemfile
@@ -1,2 +0,0 @@
1
- ---
2
- BUNDLE_DISABLE_SHARED_GEMS: "1"