Blob of bin/ditz-convert-from-monolith (raw blob data)

1 #!/usr/bin/env ruby
2
3 require 'rubygems'
4 require 'fileutils'
5 require "ditz"
6
7 PROJECT_FN = "project.yaml"
8 CONFIG_FN = ".ditz-config"
9 def ISSUE_TO_FN i; "issue-#{i.id}.yaml" end
10
11 dir = "bugs"
12 project = Ditz::Project.from "bugs.yaml"
13 puts "making #{dir}"
14 FileUtils.mkdir dir
15 project.changed!
16 project.issues.each { |i| i.changed! }
17
18 project.validate!
19 project.assign_issue_names!
20 project.each_modelobject { |o| o.after_deserialize project }
21
22 ## save project.yaml
23 dirty = project.each_modelobject { |o| break true if o.changed? } || false
24 if dirty
25 fn = File.join dir, PROJECT_FN
26 puts "writing #{fn}"
27 project.each_modelobject { |o| o.before_serialize project }
28 project.save! fn
29 end
30
31 ## project issues are not model fields proper, so they must be
32 ## saved independently.
33 project.issues.each do |i|
34 if i.changed?
35 i.before_serialize project
36 fn = File.join dir, ISSUE_TO_FN(i)
37 puts "writing #{fn}"
38 i.save! fn
39 end
40 end
41
42 puts "You can delete bugs.yaml now."