| 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." |