sleeping-wolf 0.0.1

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/LICENSE ADDED
@@ -0,0 +1,6 @@
1
+ Copyright (C) 2010 James Pearson
2
+
3
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
4
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
5
+
6
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
@@ -0,0 +1,38 @@
1
+ I like gh-issues, and its ability to allow other users to easily comment on my project. I also like ticgit, and the fact that I have integral parts of my project with me, even if github is unavailable. So, I want to use both!
2
+
3
+ Since we'll be making commits on behalf of other users, it won't be perfect. But hey, let's see what we can do.
4
+
5
+ # Requirements
6
+
7
+ Scott Chacon's ticgit hasn't been updated in some time (and doesn't work with
8
+ Ruby 1.9), so you'll probably need to install from one of [the forks][1]. I used
9
+ [jeffWelling][2]'s.
10
+
11
+ ticgit currently requires ruby/git, which is deprecated in favor of grit. Until
12
+ someone fixes that, you'll need a version of ruby/git that works with ruby 1.9.
13
+ [I'm attempting][4] to maintain one. Be aware that it currently requires jeweler
14
+ to build the gem, and jeweler requires ruby/git, so you'll be overwriting the
15
+ version of ruby/git that gets pulled in by gem. *sigh*
16
+
17
+ You'll also need [octopi][3]. Until [issue 18][5] gets fixed, you'll want to
18
+ grab [my fork][6].
19
+
20
+ [1]: http://github.com/schacon/ticgit/network
21
+ [2]: http://github.com/jeffWelling/ticgit/
22
+ [3]: http://github.com/fcoury/octopi/
23
+ [4]: http://github.com/xiongchiamiov/ruby-git
24
+ [5]: http://github.com/fcoury/octopi/issues/#issue/18
25
+ [6]: http://github.com/xiongchiamiov/octopi
26
+
27
+ # On the Name
28
+ ticgit---gh-issues-synchronizer was just too damn long a name, even if it was descriptive. So, I went looking:
29
+
30
+ [Google][10] -> [Wikipedia (Synchronizer)][11] -> [Wikipedia (Synchronization][12] -> [Wikipedia (Data Synchronization)][13] -> [Scholarpedia (Slepian-Wolf coding)][14] -> sleeping wolf
31
+
32
+ Plus, I can have an awesomely cute logo, once I find someone to make it!
33
+
34
+ [10]: http://www.google.com/search?hl=en&q=synchronizer&aq=f&oq=&aqi=
35
+ [11]: http://en.wikipedia.org/wiki/Synchronizer
36
+ [12]: http://en.wikipedia.org/wiki/Synchronization
37
+ [13]: http://en.wikipedia.org/wiki/Data_synchronization
38
+ [14]: http://www.scholarpedia.org/article/Slepian-Wolf_coding
@@ -0,0 +1,3 @@
1
+ require "mg"
2
+ MG.new("sleeping-wolf.gemspec")
3
+
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby19
2
+
3
+ require 'sleeping-wolf'
4
+
5
+ user = 'xiongchiamiov'
6
+ project = 'synchronizer-test'
7
+ test_repository = '../synchronizer-test'
8
+ issues = []
9
+ gh_issues = retrieve_from_gh_issues(user, project)
10
+ ticgit_issues = retrieve_from_ticgit(test_repository)
11
+
12
+ #issues.each { |issue| puts issue }
13
+ gh_issues.each { |issue| puts issue }
14
+ ticgit_issues.each { |issue| puts issue }
@@ -0,0 +1,83 @@
1
+ require 'ticgit'
2
+ require 'octopi'
3
+
4
+ class Issue
5
+ # from ticgit
6
+ #attr_accessor :id, :name, :title, :state, :milestone, :assigned
7
+ #attr_accessor :opened, :points
8
+ #attr_accessor :comments, :tags, :attachments #arrays
9
+
10
+ # from octopi
11
+ #attr_accessor :repository, :user, :updated_at, :votes, :number, :title
12
+ #attr_accessor :body, :closed_at, :labels, :state, :created_at
13
+
14
+ attr_accessor :id # not syncable information
15
+ attr_accessor :title, :date_opened, :state
16
+ attr_accessor :comments, :labels # arrays
17
+
18
+ def initialize
19
+ @comments = []
20
+ @labels = []
21
+ end
22
+
23
+ def to_s
24
+ s = "#{@title} (#{@state}) -- #{@date_opened.strftime '%Y-%m-%d'}"
25
+ s << "\n\tlabels: #{@labels.join ', '}"
26
+ @comments.each {|comment| s << "\n\t#{comment}"}
27
+
28
+ return s
29
+ end
30
+ end
31
+
32
+ class Comment
33
+ attr_accessor :text
34
+
35
+ def initialize(comment=nil)
36
+ @text = comment.comment if !comment.nil?
37
+ end
38
+
39
+ def to_s
40
+ return @text
41
+ end
42
+ end
43
+
44
+ def retrieve_from_gh_issues(user, project)
45
+ issues = []
46
+ repo = Octopi::Repository.find(:user => user, :name => project)
47
+
48
+ repo.all_issues.each do |gh_issue|
49
+ issue = Issue.new
50
+ issue.id = gh_issue.number
51
+ issue.title = gh_issue.title
52
+ issue.labels = gh_issue.labels
53
+ issue.date_opened = gh_issue.created_at
54
+ issue.state = gh_issue.state
55
+
56
+ comment = Comment.new
57
+ comment.text = gh_issue.body
58
+ issue.comments << comment
59
+
60
+ issues << issue
61
+ end
62
+
63
+ return issues
64
+ end
65
+
66
+ def retrieve_from_ticgit(path)
67
+ issues = []
68
+ ticgit = TicGit.open(path)
69
+
70
+ ticgit.ticket_list.each do |ti_issue|
71
+ issue = Issue.new
72
+ issue.id = ti_issue.ticket_id
73
+ issue.title = ti_issue.title
74
+ issue.labels = ti_issue.tags
75
+ issue.date_opened = ti_issue.opened
76
+ issue.state = ti_issue.state
77
+ ti_issue.comments.each {|comment| issue.comments << Comment.new(comment)}
78
+
79
+ issues << issue
80
+ end
81
+
82
+ return issues
83
+ end
metadata ADDED
@@ -0,0 +1,99 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sleeping-wolf
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - James Pearson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-02-12 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ticgit
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: octopi
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: rake
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: mg
47
+ type: :development
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ description: A synchronizer for gh-issues and ticgit.
56
+ email: xiong.chiamiov@gmail.com
57
+ executables:
58
+ - sleeping-wolf
59
+ extensions: []
60
+
61
+ extra_rdoc_files:
62
+ - LICENSE
63
+ - README.md
64
+ files:
65
+ - LICENSE
66
+ - Rakefile
67
+ - README.md
68
+ - bin/sleeping-wolf
69
+ - lib/sleeping-wolf.rb
70
+ has_rdoc: "false"
71
+ homepage: http://github.com/xiongchiamiov/sleeping-wolf/
72
+ licenses: []
73
+
74
+ post_install_message:
75
+ rdoc_options: []
76
+
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: "0"
84
+ version:
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ version:
91
+ requirements: []
92
+
93
+ rubyforge_project:
94
+ rubygems_version: 1.3.5
95
+ signing_key:
96
+ specification_version: 3
97
+ summary: A synchronizer for gh-issues and ticgit.
98
+ test_files: []
99
+