dusel 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +7 -0
- data/Gemfile +2 -12
- data/Guardfile +9 -0
- data/{LICENSE.txt → LICENSE} +0 -0
- data/README.md +41 -0
- data/Rakefile +1 -44
- data/dusel.gemspec +37 -0
- data/lib/dusel.rb +101 -13
- data/lib/dusel/instance_methods.rb +131 -10
- data/lib/dusel/version.rb +1 -1
- data/spec/.rspec +1 -0
- data/spec/{dusel_spec.rb → lib/dusel_spec.rb} +8 -3
- data/spec/spec_helper.rb +4 -6
- data/spec/support/.gitkeep +0 -0
- metadata +66 -40
- data/.document +0 -5
- data/README.markdown +0 -17
data/.gitignore
ADDED
data/Gemfile
CHANGED
@@ -1,14 +1,4 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
|
-
# Add dependencies required to use your gem here.
|
3
|
-
# Example:
|
4
|
-
# gem "activesupport", ">= 2.3.5"
|
5
2
|
|
6
|
-
#
|
7
|
-
|
8
|
-
group :development do
|
9
|
-
gem "rspec", "~> 2.3.0"
|
10
|
-
gem "yard", "~> 0.6.0"
|
11
|
-
gem "bundler", "~> 1.0.0"
|
12
|
-
gem "jeweler", "~> 1.6.4"
|
13
|
-
gem "rcov", ">= 0"
|
14
|
-
end
|
3
|
+
# Specify your gem's dependencies in dusel.gemspec
|
4
|
+
gemspec
|
data/Guardfile
ADDED
data/{LICENSE.txt → LICENSE}
RENAMED
File without changes
|
data/README.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# Dusel
|
2
|
+
|
3
|
+
A tiny DSL to create, if desired temporary structures, of nested folders and
|
4
|
+
files
|
5
|
+
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Run in your shell:
|
10
|
+
|
11
|
+
```
|
12
|
+
gem install dusel
|
13
|
+
```
|
14
|
+
|
15
|
+
In your application:
|
16
|
+
|
17
|
+
```
|
18
|
+
require 'dusel'
|
19
|
+
```
|
20
|
+
|
21
|
+
|
22
|
+
## Documentation
|
23
|
+
|
24
|
+
Documentation is provided in the Yardoc format by the nice folks at
|
25
|
+
[rubydoc.info](http://rubydoc.info/):
|
26
|
+
|
27
|
+
[http://rubydoc.info/github/johannesh/dusel/master/frames](dusel @ rubydoc.info)
|
28
|
+
|
29
|
+
|
30
|
+
## Contribution
|
31
|
+
|
32
|
+
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
33
|
+
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
|
34
|
+
* Fork the project and submit a pull request from a feature or bugfix branch
|
35
|
+
* Please include specs. This is important so we don't break your changes unintentionally in a future version.
|
36
|
+
* Please don't modify the Rakefile, version, or history. If you do change these files, please isolate a separate commit so we can cherry-pick around it.
|
37
|
+
|
38
|
+
|
39
|
+
## Copyright
|
40
|
+
|
41
|
+
Copyright (c) 2011 Johannes Huning. See LICENSE for further details.
|
data/Rakefile
CHANGED
@@ -1,44 +1 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'bundler'
|
5
|
-
begin
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
$stderr.puts e.message
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
-
exit e.status_code
|
11
|
-
end
|
12
|
-
require 'rake'
|
13
|
-
|
14
|
-
require 'jeweler'
|
15
|
-
Jeweler::Tasks.new do |gem|
|
16
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20
|
17
|
-
# for more options
|
18
|
-
gem.name = "dusel"
|
19
|
-
gem.homepage = "https://github.com/johannesh/dusel"
|
20
|
-
gem.license = "MIT"
|
21
|
-
gem.summary = %Q{Tiny DSL to create (temporary) files and folders}
|
22
|
-
gem.description = %Q{Dusel is a tiny DSL to create (nested) folders and
|
23
|
-
directories}
|
24
|
-
gem.email = "hi@johanneshuning.com"
|
25
|
-
gem.authors = ["Johannes Huning"]
|
26
|
-
# dependencies defined in Gemfile
|
27
|
-
end
|
28
|
-
Jeweler::RubygemsDotOrgTasks.new
|
29
|
-
|
30
|
-
require 'rspec/core'
|
31
|
-
require 'rspec/core/rake_task'
|
32
|
-
RSpec::Core::RakeTask.new(:spec) do |spec|
|
33
|
-
spec.pattern = FileList['spec/**/*_spec.rb']
|
34
|
-
end
|
35
|
-
|
36
|
-
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
37
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
38
|
-
spec.rcov = true
|
39
|
-
end
|
40
|
-
|
41
|
-
task :default => :spec
|
42
|
-
|
43
|
-
require 'yard'
|
44
|
-
YARD::Rake::YardocTask.new
|
1
|
+
require "bundler/gem_tasks"
|
data/dusel.gemspec
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "dusel/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "dusel"
|
7
|
+
s.version = Dusel::VERSION
|
8
|
+
s.authors = ["Johannes Huning"]
|
9
|
+
s.email = ["johannesh@allnightdrive.com"]
|
10
|
+
s.homepage = "https://github.com/johannesh/dusel"
|
11
|
+
s.summary = 'Tiny DSL to create (temporary) structures files and folders'
|
12
|
+
s.description = "A tiny DSL to create, if desired temporary, " +
|
13
|
+
"structures of nested folders and files"
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables =
|
18
|
+
`git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# Specify any dependencies here
|
22
|
+
%w{rspec guard guard-rspec guard-bundler rb-readline}.each { |dep|
|
23
|
+
s.add_development_dependency dep
|
24
|
+
}
|
25
|
+
|
26
|
+
if RUBY_PLATFORM =~ /darwin/
|
27
|
+
%w{rb-fsevent growl}.each { |dep|
|
28
|
+
s.add_development_dependency dep
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
if RUBY_PLATFORM =~ /linux/
|
33
|
+
%w{rb-inotify libnotify}.each { |dep|
|
34
|
+
s.add_development_dependency dep
|
35
|
+
}
|
36
|
+
end
|
37
|
+
end
|
data/lib/dusel.rb
CHANGED
@@ -1,40 +1,128 @@
|
|
1
|
-
|
2
|
-
$:.unshift libdir unless $:.include?(libdir)
|
1
|
+
$:.push File.expand_path('..', __FILE__)
|
3
2
|
|
4
3
|
require 'tmpdir'
|
5
4
|
require 'securerandom'
|
6
|
-
|
7
5
|
require 'dusel/instance_methods'
|
8
6
|
require 'dusel/version'
|
9
7
|
|
8
|
+
|
9
|
+
# @author Johannes Huning
|
10
|
+
# @version 1.1
|
10
11
|
module Dusel
|
12
|
+
# Creates a new directory
|
13
|
+
#
|
14
|
+
# @version 1.0
|
15
|
+
# @since 0.0.1
|
16
|
+
#
|
17
|
+
# @note When using an implicit parent, the parent will not be removed
|
18
|
+
# during {InstanceMethods#collapse}
|
19
|
+
#
|
20
|
+
# @param [optional, String] name
|
21
|
+
# the new directory's name, leave blank to create a directory
|
22
|
+
# with a random name
|
23
|
+
# @param [optional, String, Dir] parent
|
24
|
+
# the new directory's parent directory, leave blank to create an implicit
|
25
|
+
# temporary directory as the parent
|
26
|
+
# @param [optional, Block] block
|
27
|
+
# block to yield the new directory to
|
28
|
+
# @return [Dir]
|
29
|
+
# the new directory itself *or* if an block of arity +> 1+ was passed,
|
30
|
+
# the block's return value
|
31
|
+
#
|
32
|
+
# @yieldparam [optional, Dir] dir the new directory
|
33
|
+
#
|
34
|
+
# @example
|
35
|
+
# Dusel.dir
|
36
|
+
# # => #<Dir:...1dt72r3/df9b27558ec7e828>
|
37
|
+
#
|
38
|
+
# Dusel.dir('foo')
|
39
|
+
# # => #<Dir:...1222-80088-1d4rxor/foo>
|
40
|
+
#
|
41
|
+
# Dusel.dir('foo', '/tmp')
|
42
|
+
# # => #<Dir:/tmp/foo>
|
43
|
+
#
|
44
|
+
# Dusel.dir('foo', '/tmp') { |dir| puts "Inside #{dir.path}" }
|
45
|
+
# # Inside /tmp/foo
|
46
|
+
# # => nil
|
11
47
|
def self.dir(name = nil, parent = nil, &block)
|
12
48
|
parent ||= Dir.mktmpdir()
|
13
49
|
parent = parent.path if parent.kind_of?(Dir)
|
14
50
|
Dir.open(parent).dir(name, &block)
|
15
51
|
end
|
16
52
|
|
53
|
+
|
54
|
+
# Creates a new file
|
55
|
+
#
|
56
|
+
# @version 1.0
|
57
|
+
# @since 0.0.1
|
58
|
+
#
|
59
|
+
# @note When using an implicit parent, the parent will not be removed
|
60
|
+
# during {InstanceMethods#collapse}
|
61
|
+
#
|
62
|
+
# @note In case a block of arity +== 0+ is passed, the block's value will be
|
63
|
+
# written to the file. The file is rewinded afterwards
|
64
|
+
#
|
65
|
+
# @param [optional, String] name
|
66
|
+
# the new file's name, leave blank to create a file
|
67
|
+
# with a random name
|
68
|
+
# @param [optional, String, Dir] parent
|
69
|
+
# the new file's parent directory, leave blank to create an implicit
|
70
|
+
# temporary directory as the parent
|
71
|
+
# @param [optional, Block] block
|
72
|
+
# block to yield the new file to
|
73
|
+
# @return [File]
|
74
|
+
# the new file itself *or* if an block of arity +== 1+ was passed,
|
75
|
+
# the block's return value
|
76
|
+
#
|
77
|
+
# @yieldparam [optional, File] file the new file
|
78
|
+
#
|
79
|
+
# @example
|
80
|
+
# Dusel.file
|
81
|
+
# # => #<File:...612-iscq6w/1dee3c34>
|
82
|
+
#
|
83
|
+
# Dusel.file('foo')
|
84
|
+
# # => #<File:...612-1wanjci/foo>
|
85
|
+
#
|
86
|
+
# Dusel.file('foo', '/tmp')
|
87
|
+
# # => #<File:/tmp/foo>
|
88
|
+
#
|
89
|
+
# Dusel.file('foo', '/tmp') { |file| puts "File #{file.path}" }
|
90
|
+
# # File /tmp/fooo
|
91
|
+
# # => nil
|
92
|
+
#
|
93
|
+
# file = Dusel.file { "bar" }
|
94
|
+
# # => #<File:...612-1s02yue/61b9ef62>
|
95
|
+
# file.read
|
96
|
+
# # => "bar"
|
17
97
|
def self.file(name = nil, parent = nil, &block)
|
18
98
|
parent ||= Dir.mktmpdir()
|
19
99
|
parent = parent.path if parent.kind_of?(Dir)
|
20
100
|
Dir.open(parent).file(name, &block)
|
21
101
|
end
|
22
102
|
|
23
|
-
def self.rm!(tree)
|
24
|
-
tree.rm!
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.included(base)
|
28
|
-
base.__send__(:include, InstanceMethods)
|
29
|
-
end
|
30
103
|
|
31
104
|
private
|
32
105
|
|
33
|
-
|
34
|
-
|
106
|
+
# Generates a random string usable as a file name
|
107
|
+
#
|
108
|
+
# @version 1.0
|
109
|
+
# @since 0.0.1
|
110
|
+
#
|
111
|
+
# @param [optional, Fixnum] length
|
112
|
+
# the string's desired length
|
113
|
+
# @return [String]
|
114
|
+
# the random string
|
115
|
+
def self.random_name(length = 8)
|
116
|
+
SecureRandom.hex((length / 2) + 1)[0..(length - 1)]
|
35
117
|
end
|
36
118
|
end
|
37
119
|
|
120
|
+
|
121
|
+
# TODO: Document!
|
122
|
+
#
|
123
|
+
# @version 1.0
|
124
|
+
# @since 0.0.1
|
38
125
|
class Dir
|
39
|
-
|
126
|
+
# Add dusel's capabilities to Dir
|
127
|
+
include Dusel::InstanceMethods
|
40
128
|
end
|
@@ -1,14 +1,64 @@
|
|
1
1
|
require 'tmpdir'
|
2
2
|
|
3
|
+
|
4
|
+
# @author Johannes Huning
|
5
|
+
# @version 1.0
|
3
6
|
module Dusel
|
4
7
|
module InstanceMethods
|
8
|
+
# Creates a new directory inside the parent
|
9
|
+
#
|
10
|
+
# @version 1.0
|
11
|
+
# @since 0.0.1
|
12
|
+
#
|
13
|
+
# @param [optional, String] name
|
14
|
+
# the new directory's name, leave blank to create a directory
|
15
|
+
# with a random name
|
16
|
+
# @param [optional, Block] block
|
17
|
+
# block to yield the new directory to
|
18
|
+
# @return [Dir]
|
19
|
+
# the new directory itself *or* if an block of arity +> 1+ was passed,
|
20
|
+
# the block's return value
|
21
|
+
#
|
22
|
+
# @yieldparam [optional, Dir] dir the new directory
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
# parent = Dusel.dir
|
26
|
+
# # => #<Dir:...829-7r79si/df71aead>
|
27
|
+
#
|
28
|
+
# parent.dir('foo')
|
29
|
+
# # => #<Dir:...829-7r79si/df71aead/foo>
|
30
|
+
#
|
31
|
+
# parent.dir('bar').dir('baz')
|
32
|
+
# # => #<Dir:...829-7r79si/df71aead/bar/baz>
|
33
|
+
#
|
34
|
+
# child = parent.dir {
|
35
|
+
# dir {
|
36
|
+
# dir {
|
37
|
+
# dir {
|
38
|
+
# file { 'contents' }
|
39
|
+
# }
|
40
|
+
# }
|
41
|
+
# dir {
|
42
|
+
# file { 'contents' }
|
43
|
+
# }
|
44
|
+
# }
|
45
|
+
# }
|
46
|
+
#
|
47
|
+
# puts `tree #{child.path}`
|
48
|
+
# # ...829-7r79si/df71aead/70b3a439
|
49
|
+
# # `-- ade003c9
|
50
|
+
# # |-- 5f8b5c3e
|
51
|
+
# # | `-- 07c89af4
|
52
|
+
# # | `-- ab8e7c24
|
53
|
+
# # `-- 863be86f
|
54
|
+
# # `-- 1f925fc1
|
5
55
|
def dir(name = nil, &block)
|
6
|
-
new_path =
|
56
|
+
new_path = named_path_(name)
|
7
57
|
Dir.mkdir new_path
|
8
58
|
new_dir = Dir.new(new_path)
|
9
59
|
|
10
|
-
@
|
11
|
-
@
|
60
|
+
@dusel_dirs ||= []
|
61
|
+
@dusel_dirs << new_dir
|
12
62
|
|
13
63
|
if block
|
14
64
|
if block.arity < 1
|
@@ -22,12 +72,50 @@ module Dusel
|
|
22
72
|
end
|
23
73
|
end
|
24
74
|
|
75
|
+
|
76
|
+
# Creates a new file
|
77
|
+
#
|
78
|
+
# @version 1.0
|
79
|
+
# @since 0.0.1
|
80
|
+
#
|
81
|
+
# @note In case a block of arity +== 0+ is passed, the block's value will be
|
82
|
+
# written to the file. The file is rewinded afterwards
|
83
|
+
#
|
84
|
+
# @param [optional, String] name
|
85
|
+
# the new file's name, leave blank to create a file
|
86
|
+
# with a random name
|
87
|
+
# @param [optional, Block] block
|
88
|
+
# block to yield the new file to
|
89
|
+
# @return [File]
|
90
|
+
# the new file itself *or* if an block of arity +== 1+ was passed,
|
91
|
+
# the block's return value
|
92
|
+
#
|
93
|
+
# @yieldparam [optional, File] file the new file
|
94
|
+
#
|
95
|
+
# @example
|
96
|
+
# Dusel.file
|
97
|
+
# # => #<File:...612-iscq6w/1dee3c34>
|
98
|
+
#
|
99
|
+
# Dusel.file('foo')
|
100
|
+
# # => #<File:...612-1wanjci/foo>
|
101
|
+
#
|
102
|
+
# Dusel.file('foo', '/tmp')
|
103
|
+
# # => #<File:/tmp/foo>
|
104
|
+
#
|
105
|
+
# Dusel.file('foo', '/tmp') { |file| puts "File #{file.path}" }
|
106
|
+
# # File /tmp/fooo
|
107
|
+
# # => nil
|
108
|
+
#
|
109
|
+
# file = Dusel.file { "bar" }
|
110
|
+
# # => #<File:...612-1s02yue/61b9ef62>
|
111
|
+
# file.read
|
112
|
+
# # => "bar"
|
25
113
|
def file(name = nil, &block)
|
26
|
-
new_path =
|
114
|
+
new_path = named_path_(name)
|
27
115
|
new_file = File.open(new_path, "w+")
|
28
116
|
|
29
|
-
@
|
30
|
-
@
|
117
|
+
@dusel_files ||= []
|
118
|
+
@dusel_files << new_file
|
31
119
|
|
32
120
|
if block
|
33
121
|
if block.arity < 1
|
@@ -42,15 +130,48 @@ module Dusel
|
|
42
130
|
end
|
43
131
|
end
|
44
132
|
|
45
|
-
|
46
|
-
|
47
|
-
|
133
|
+
|
134
|
+
# Recursively removes this directory and all it's children
|
135
|
+
#
|
136
|
+
# @version 1.0
|
137
|
+
# @since 0.0.1
|
138
|
+
#
|
139
|
+
# @return result of +Dir#rmdir+ for this directory
|
140
|
+
#
|
141
|
+
# @example
|
142
|
+
# parent = Dusel.dir {
|
143
|
+
# dir {
|
144
|
+
# dir {
|
145
|
+
# dir {
|
146
|
+
# file { 'contents' }
|
147
|
+
# }
|
148
|
+
# }
|
149
|
+
# dir {
|
150
|
+
# file { 'contents' }
|
151
|
+
# }
|
152
|
+
# }
|
153
|
+
# }
|
154
|
+
# # => #<Dir:...222-82137-ue6ci2/5e1cb6fe>
|
155
|
+
# parent.collapse
|
156
|
+
# # => 0
|
157
|
+
# puts `file #{parent.path}`
|
158
|
+
# # ...5e1cb6fe: cannot open `...5e1cb6fe' (No such file or directory)
|
159
|
+
def collapse
|
160
|
+
@dusel_files.each { |file| File.delete(file.path) } if @dusel_files
|
161
|
+
@dusel_dirs.each { |dir| dir.collapse } if @dusel_dirs
|
48
162
|
Dir.rmdir(self.path())
|
49
163
|
end
|
50
164
|
|
165
|
+
|
51
166
|
private
|
52
167
|
|
53
|
-
|
168
|
+
# Appends the given name onto this directory's path
|
169
|
+
#
|
170
|
+
# @version 1.0
|
171
|
+
# @since 0.0.1
|
172
|
+
#
|
173
|
+
# @return this directory's path appended by the new files name
|
174
|
+
def named_path_(name = nil)
|
54
175
|
name ||= Dusel.__send__(:random_name)
|
55
176
|
File.join(self.path, name)
|
56
177
|
end
|
data/lib/dusel/version.rb
CHANGED
data/spec/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color --format progress --fail-fast
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe 'Dusel' do
|
4
4
|
describe '.dir' do
|
@@ -17,6 +17,7 @@ describe 'Dusel' do
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
|
20
21
|
describe '.file' do
|
21
22
|
it "should create a file inside a random directory if no parent given" do
|
22
23
|
first_path = Dusel.file { |f| File.dirname(f.path) }
|
@@ -33,6 +34,7 @@ describe 'Dusel' do
|
|
33
34
|
end
|
34
35
|
end
|
35
36
|
|
37
|
+
|
36
38
|
describe ".random_name" do
|
37
39
|
it "should generate random strings" do
|
38
40
|
Dusel.__send__(:random_name).should_not eq(Dusel.__send__(:random_name))
|
@@ -43,6 +45,7 @@ describe 'Dusel' do
|
|
43
45
|
end
|
44
46
|
end
|
45
47
|
|
48
|
+
|
46
49
|
describe '#dir' do
|
47
50
|
it "should create a folder with random name if none given" do
|
48
51
|
Dusel.dir { |d|
|
@@ -66,6 +69,7 @@ describe 'Dusel' do
|
|
66
69
|
end
|
67
70
|
end
|
68
71
|
|
72
|
+
|
69
73
|
describe '#file' do
|
70
74
|
it "should create a file with random name if none given" do
|
71
75
|
Dusel.dir { |d|
|
@@ -97,13 +101,14 @@ describe 'Dusel' do
|
|
97
101
|
end
|
98
102
|
end
|
99
103
|
|
100
|
-
|
104
|
+
|
105
|
+
describe '#collapse' do
|
101
106
|
it "should close and remove all directories and files recusively" do
|
102
107
|
dir = Dusel.dir {
|
103
108
|
file
|
104
109
|
dir { file }
|
105
110
|
}
|
106
|
-
|
111
|
+
dir.collapse
|
107
112
|
File.exist?(dir.path).should be_false
|
108
113
|
end
|
109
114
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
-
require 'rspec'
|
4
1
|
require 'dusel'
|
5
2
|
|
6
|
-
# Requires supporting files with custom matchers and macros, etc,
|
7
|
-
# in
|
8
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
3
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
4
|
+
# in spec/support/ and its subdirectories.
|
5
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
9
6
|
|
10
7
|
RSpec.configure do |config|
|
8
|
+
config.mock_with :rspec
|
11
9
|
end
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dusel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,55 +9,55 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-12-22 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &9084680 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *9084680
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
27
|
-
requirement: &
|
26
|
+
name: guard
|
27
|
+
requirement: &9084470 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
|
-
- -
|
30
|
+
- - ! '>='
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0
|
32
|
+
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *9084470
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
38
|
-
requirement: &
|
37
|
+
name: guard-rspec
|
38
|
+
requirement: &9084210 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
|
-
- -
|
41
|
+
- - ! '>='
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
43
|
+
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *9084210
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
49
|
-
requirement: &
|
48
|
+
name: guard-bundler
|
49
|
+
requirement: &9083950 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ! '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *9083950
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
60
|
-
requirement: &
|
59
|
+
name: rb-readline
|
60
|
+
requirement: &9083690 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,30 +65,55 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
69
|
-
|
70
|
-
|
68
|
+
version_requirements: *9083690
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rb-fsevent
|
71
|
+
requirement: &9083380 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *9083380
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: growl
|
82
|
+
requirement: &9083180 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *9083180
|
91
|
+
description: A tiny DSL to create, if desired temporary, structures of nested folders
|
92
|
+
and files
|
93
|
+
email:
|
94
|
+
- johannesh@allnightdrive.com
|
71
95
|
executables: []
|
72
96
|
extensions: []
|
73
|
-
extra_rdoc_files:
|
74
|
-
- LICENSE.txt
|
75
|
-
- README.markdown
|
97
|
+
extra_rdoc_files: []
|
76
98
|
files:
|
77
|
-
- .
|
99
|
+
- .gitignore
|
78
100
|
- .rspec
|
79
101
|
- Gemfile
|
80
|
-
-
|
81
|
-
-
|
102
|
+
- Guardfile
|
103
|
+
- LICENSE
|
104
|
+
- README.md
|
82
105
|
- Rakefile
|
83
106
|
- VERSION
|
107
|
+
- dusel.gemspec
|
84
108
|
- lib/dusel.rb
|
85
109
|
- lib/dusel/instance_methods.rb
|
86
110
|
- lib/dusel/version.rb
|
87
|
-
- spec
|
111
|
+
- spec/.rspec
|
112
|
+
- spec/lib/dusel_spec.rb
|
88
113
|
- spec/spec_helper.rb
|
114
|
+
- spec/support/.gitkeep
|
89
115
|
homepage: https://github.com/johannesh/dusel
|
90
|
-
licenses:
|
91
|
-
- MIT
|
116
|
+
licenses: []
|
92
117
|
post_install_message:
|
93
118
|
rdoc_options: []
|
94
119
|
require_paths:
|
@@ -99,9 +124,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
99
124
|
- - ! '>='
|
100
125
|
- !ruby/object:Gem::Version
|
101
126
|
version: '0'
|
102
|
-
segments:
|
103
|
-
- 0
|
104
|
-
hash: -602893548499290189
|
105
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
128
|
none: false
|
107
129
|
requirements:
|
@@ -113,5 +135,9 @@ rubyforge_project:
|
|
113
135
|
rubygems_version: 1.8.10
|
114
136
|
signing_key:
|
115
137
|
specification_version: 3
|
116
|
-
summary: Tiny DSL to create (temporary) files and folders
|
117
|
-
test_files:
|
138
|
+
summary: Tiny DSL to create (temporary) structures files and folders
|
139
|
+
test_files:
|
140
|
+
- spec/lib/dusel_spec.rb
|
141
|
+
- spec/spec_helper.rb
|
142
|
+
- spec/support/.gitkeep
|
143
|
+
has_rdoc:
|
data/.document
DELETED
data/README.markdown
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
# Dusel
|
2
|
-
|
3
|
-
Tiny DSL to create (temporary) files and folders
|
4
|
-
|
5
|
-
## Contributing to Dusel
|
6
|
-
|
7
|
-
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
8
|
-
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
|
9
|
-
* Fork the project
|
10
|
-
* Start a feature/bugfix branch
|
11
|
-
* Commit and push until you are happy with your contribution
|
12
|
-
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
13
|
-
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
14
|
-
|
15
|
-
## Copyright
|
16
|
-
|
17
|
-
Copyright (c) 2011 Johannes Huning. See LICENSE.txt for further details.
|