mockversion 0.0.2 → 0.0.3
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/README.markdown +9 -5
- data/bin/svn +32 -1
- data/bin/svnadmin +25 -0
- data/lib/mockversion.rb +4 -3
- data/lib/mockversion/environment.rb +7 -0
- data/lib/mockversion/repository.rb +81 -0
- data/lib/mockversion/revision.rb +26 -0
- data/lib/mockversion/working_copy.rb +40 -0
- data/lib/svn.rb +1 -0
- data/lib/svn/command.rb +1 -0
- data/lib/svn/command/export.rb +38 -0
- metadata +11 -3
data/README.markdown
CHANGED
@@ -1,17 +1,21 @@
|
|
1
|
-
|
1
|
+
MockVersion
|
2
2
|
===========
|
3
|
+
A mock for the svn command line, created to help tool development
|
3
4
|
|
4
5
|
Installation
|
5
6
|
------------
|
6
|
-
|
7
|
-
tbd
|
7
|
+
gem install mockversion
|
8
8
|
|
9
9
|
Usage
|
10
10
|
-----
|
11
|
+
require 'mockversion'
|
12
|
+
|
13
|
+
`svn help`
|
14
|
+
=> Mockversion - A mock for the svn command line, created to help tool development"
|
11
15
|
|
12
|
-
|
16
|
+
`svnadmin help`
|
17
|
+
=> Mockversion - A mock for the svn command line, created to help tool development"
|
13
18
|
|
14
19
|
Copyright
|
15
20
|
---------
|
16
|
-
|
17
21
|
Copyright (c) 2010 Bryan Ash. See LICENSE for details.
|
data/bin/svn
CHANGED
@@ -1,3 +1,34 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
3
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
|
4
|
+
|
5
|
+
require 'mockversion'
|
6
|
+
require 'svn'
|
7
|
+
|
8
|
+
args = ARGV.dup
|
9
|
+
command = args.shift.strip rescue 'help'
|
10
|
+
|
11
|
+
case command
|
12
|
+
when "--version"
|
13
|
+
puts "MockVersion #{MockVersion::VERSION}"
|
14
|
+
when "help"
|
15
|
+
puts "MockVersion - A mock for the svn command line, created to help tool development"
|
16
|
+
puts ""
|
17
|
+
puts " Usage:"
|
18
|
+
puts " require 'mockversion'"
|
19
|
+
puts " `svn help`"
|
20
|
+
puts " => Mockversion - A mock for the svn command line, created to help tool development"
|
21
|
+
puts ""
|
22
|
+
when "checkout"
|
23
|
+
repo = MockVersion::Repository.load_from_path(args[0])
|
24
|
+
repo.checkout_to(args[1])
|
25
|
+
when "export"
|
26
|
+
SVN::Command::Export.execute(args)
|
27
|
+
when "add"
|
28
|
+
working_copy = MockVersion::WorkingCopy.load
|
29
|
+
working_copy.add(args.first)
|
30
|
+
when "commit"
|
31
|
+
working_copy = MockVersion::WorkingCopy.load
|
32
|
+
working_copy.commit(args[1])
|
33
|
+
end
|
34
|
+
|
data/bin/svnadmin
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
|
4
|
+
|
5
|
+
require 'mockversion'
|
6
|
+
|
7
|
+
args = ARGV
|
8
|
+
command = args.shift.strip rescue 'help'
|
9
|
+
|
10
|
+
case command
|
11
|
+
when "--version"
|
12
|
+
puts "MockVersion #{MockVersion::VERSION}"
|
13
|
+
when "help"
|
14
|
+
puts "MockVersion - A mock for the svn command line, created to help tool development"
|
15
|
+
puts ""
|
16
|
+
puts " Usage:"
|
17
|
+
puts " require 'mockversion'"
|
18
|
+
puts " `#{__FILE__} help`"
|
19
|
+
puts " => Mockversion - A mock for the svn command line, created to help tool development"
|
20
|
+
puts ""
|
21
|
+
when "create"
|
22
|
+
MockVersion::Repository.create(args.first)
|
23
|
+
when "verify"
|
24
|
+
MockVersion::Repository.verify(args.first)
|
25
|
+
end
|
data/lib/mockversion.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require 'mockversion/environment'
|
2
|
+
require 'mockversion/repository'
|
3
|
+
require 'mockversion/revision'
|
4
|
+
require 'mockversion/working_copy'
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module MockVersion
|
5
|
+
class Repository
|
6
|
+
|
7
|
+
def self.create(path)
|
8
|
+
new(path).save
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.verify(path)
|
12
|
+
load_from_path(path).verify
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.load_from_path(path)
|
16
|
+
begin
|
17
|
+
repo = new(path)
|
18
|
+
YAML.load_file(repo.repo_file)
|
19
|
+
rescue
|
20
|
+
puts "Can't open"
|
21
|
+
exit 1
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def initialize(path)
|
26
|
+
@repo_path = path
|
27
|
+
@revisions = [Revision.new]
|
28
|
+
end
|
29
|
+
|
30
|
+
def verify
|
31
|
+
puts @revisions.map { |revision| "* Verified revision #{revision.number}.\n" }
|
32
|
+
end
|
33
|
+
|
34
|
+
def checkout_to(path)
|
35
|
+
WorkingCopy.create(@repo_path, path)
|
36
|
+
@revisions.last.export_to(path)
|
37
|
+
end
|
38
|
+
|
39
|
+
def export_revision_to_path(revision_id, path)
|
40
|
+
if revision_id == "HEAD"
|
41
|
+
revision = @revisions.last
|
42
|
+
else
|
43
|
+
revision = @revisions.find { |revision| revision.number == revision_id }
|
44
|
+
end
|
45
|
+
|
46
|
+
revision.export_to(path)
|
47
|
+
end
|
48
|
+
|
49
|
+
def add_revision(revision)
|
50
|
+
@revisions << revision
|
51
|
+
save
|
52
|
+
end
|
53
|
+
|
54
|
+
def create_new_revision(number = '1')
|
55
|
+
last_lower_revision = last_revision_lower_than(number)
|
56
|
+
new_revision = last_lower_revision.dup
|
57
|
+
new_revision.files = last_lower_revision.files.dup
|
58
|
+
new_revision.number = number
|
59
|
+
add_revision(new_revision)
|
60
|
+
new_revision
|
61
|
+
end
|
62
|
+
|
63
|
+
def last_revision_lower_than(number)
|
64
|
+
@revisions.find_all { |revision| revision.number < number }.last
|
65
|
+
end
|
66
|
+
|
67
|
+
def save
|
68
|
+
FileUtils.makedirs(full_repo_path)
|
69
|
+
File.open(repo_file, "w") { |file| file.puts to_yaml }
|
70
|
+
end
|
71
|
+
|
72
|
+
def full_repo_path
|
73
|
+
".mockversion/#{@repo_path}"
|
74
|
+
end
|
75
|
+
|
76
|
+
def repo_file
|
77
|
+
"#{full_repo_path}/repo.yml"
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module MockVersion
|
2
|
+
class Revision
|
3
|
+
|
4
|
+
attr_accessor :number
|
5
|
+
attr_accessor :files
|
6
|
+
|
7
|
+
def initialize(number = '0')
|
8
|
+
@number = number
|
9
|
+
end
|
10
|
+
|
11
|
+
def export_to(path)
|
12
|
+
files.each do |filename|
|
13
|
+
File.open("#{path}/#{filename}", "w") { |file| file.puts @number }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def add_file(filename)
|
18
|
+
files << filename
|
19
|
+
end
|
20
|
+
|
21
|
+
def files
|
22
|
+
@files ||= []
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module MockVersion
|
4
|
+
class WorkingCopy
|
5
|
+
|
6
|
+
def self.create(repo_path, path)
|
7
|
+
new(repo_path, path).save
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.load
|
11
|
+
YAML.load_file(".svn/working_copy.yml")
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(repo_path, path)
|
15
|
+
@repo_path = repo_path
|
16
|
+
@path = path
|
17
|
+
end
|
18
|
+
|
19
|
+
def add(path)
|
20
|
+
staged_files << path
|
21
|
+
save
|
22
|
+
end
|
23
|
+
|
24
|
+
def commit(message)
|
25
|
+
puts "committing to: #{@repo_path}"
|
26
|
+
repo = Repository.load_from_path(@repo_path)
|
27
|
+
repo.create_new_revision
|
28
|
+
end
|
29
|
+
|
30
|
+
def staged_files
|
31
|
+
@staged_files ||= []
|
32
|
+
end
|
33
|
+
|
34
|
+
def save
|
35
|
+
FileUtils.makedirs("#{@path}/.svn")
|
36
|
+
File.open("#{@path}/.svn/working_copy.yml", "w") { |file| file.puts to_yaml }
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
data/lib/svn.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'svn/command'
|
data/lib/svn/command.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'svn/command/export'
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'ostruct'
|
3
|
+
|
4
|
+
module SVN
|
5
|
+
module Command
|
6
|
+
class Export < ::OptionParser
|
7
|
+
|
8
|
+
def self.execute(args)
|
9
|
+
command = new
|
10
|
+
command.parse!(args)
|
11
|
+
command.execute(args)
|
12
|
+
end
|
13
|
+
|
14
|
+
OPTIONS = {
|
15
|
+
:revision => ["-r", "--revision arg",
|
16
|
+
"A revision argument can be one of:",
|
17
|
+
" NUMBER revision number",
|
18
|
+
" HEAD latest in repository"]
|
19
|
+
}
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
super
|
23
|
+
@options = OpenStruct.new
|
24
|
+
@options.revision = "HEAD"
|
25
|
+
|
26
|
+
self.banner = "Usage: svn export [options] [URL] [path]"
|
27
|
+
self.separator ""
|
28
|
+
on(*OPTIONS[:revision]) { |revision| @options.revision = revision.upcase }
|
29
|
+
end
|
30
|
+
|
31
|
+
def execute(args)
|
32
|
+
repo = MockVersion::Repository.load_from_path(args[0])
|
33
|
+
repo.export_revision_to_path(@options.revision, args[1])
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 3
|
9
|
+
version: 0.0.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Bryan Ash
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-07-
|
17
|
+
date: 2010-07-20 00:00:00 +03:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|
@@ -28,8 +28,16 @@ extra_rdoc_files:
|
|
28
28
|
- LICENSE
|
29
29
|
- README.markdown
|
30
30
|
files:
|
31
|
+
- lib/mockversion/environment.rb
|
32
|
+
- lib/mockversion/repository.rb
|
33
|
+
- lib/mockversion/revision.rb
|
34
|
+
- lib/mockversion/working_copy.rb
|
31
35
|
- lib/mockversion.rb
|
36
|
+
- lib/svn/command/export.rb
|
37
|
+
- lib/svn/command.rb
|
38
|
+
- lib/svn.rb
|
32
39
|
- bin/svn
|
40
|
+
- bin/svnadmin
|
33
41
|
- LICENSE
|
34
42
|
- README.markdown
|
35
43
|
has_rdoc: true
|