/todo

To get this branch, use:
bzr branch http://bzr.ed.am/todo

« back to all changes in this revision

Viewing changes to todo

  • Committer: edam
  • Date: 2011-09-30 10:20:26 UTC
  • Revision ID: edam@waxworlds.org-20110930102026-8kbh15ufm67eit0k
init

Show diffs side-by-side

added added

removed removed

Lines of Context:
11
11
# option defaults
12
12
my $todo_dir = "~/.todo";
13
13
my $display_all = 0;
14
 
my $display_section = "TODO";
 
14
my $display_section = "IMMEDIATE";
15
15
my $display_headers = 0;
16
16
my $mode_edit = 0;
17
17
my $mode_help = 0;
47
47
 
48
48
# version mode
49
49
if( $mode_version ) {
50
 
    print "todo 1.0\n".
51
 
                "Copyright (C) 2011 Tim Marston.\n".
52
 
                "http://ed.am/software/todo\n";
 
50
    print "todo 1.0\n" .
 
51
        "Copyright (C) 2011 Tim Marston.\n";
53
52
    exit( 0 );
54
53
}
55
54
 
73
72
                mkdir $todo_dir or die "couldn't create todo directory";
74
73
                `bzr init --no-aliases -q "$todo_dir"`;
75
74
                $? == 0 or die "couldn't init bzr repo";
76
 
        }
77
 
        
78
 
        # create a default todo file, as necessary
79
 
        if( ! -f "$todo_dir/todo" ) {
80
 
                open FILE, ">$todo_dir/todo" or die "couldn't create default todo file";
81
 
                my $content = <<"EOT";
82
 
<!-- This file uses Markdown syntax. For more info about Markdown
83
 
     syntax, see http://daringfireball.net/projects/markdown/syntax.
84
 
 
85
 
     There should be a main H1 header called "TODO" for the main todo
86
 
     list section (one has been added for you below). You can also add
87
 
     as many more sections as you like for other lists. And feel free
88
 
     to delete this comment! -->
89
 
 
90
 
TODO
91
 
====
92
 
 
93
 
* make a list of things to do
94
 
 
95
 
EOT
96
 
        print FILE $content or die "couldn't write default todo file";
97
 
                close FILE;
 
75
                `> "$todo_dir/todo"`;
 
76
                $? == 0 or die "couldn't create initial todo file";
98
77
                `bzr add --no-aliases -q "$todo_dir/todo"`;
99
78
                $? == 0 or die "couldn't add todo file to bzr repo";
100
79
        }
106
85
    push( @exec_array, "$todo_dir/todo" );
107
86
 
108
87
        # detect emacs and try to use markdown-mode
109
 
        $exec_array[ 0 ] eq "emacs" and
110
 
                push( @exec_array, '--funcall=markdown-mode' );
 
88
        $exec_array[ 0 ] eq "emacs" and push( @exec_array, '--funcall=markdown-mode' );
111
89
 
112
90
    # edit todo file
113
91
    system( @exec_array );
114
 
        $? == 0 or
115
 
                die "can't start editor, check EDITOR envionment variable";
 
92
        $? == 0 or die "unable to exec editor";
116
93
 
117
94
        # check for changes and commit it
118
95
        $output = `bzr status --no-aliases "$todo_dir/todo"`;
122
99
                `bzr commit --no-aliases -q -m - "$todo_dir/todo"`;
123
100
                $? == 0 or die "couldn't commit to bzr repo";
124
101
        }
125
 
 
126
 
        # after editing, exit
 
102
        
 
103
        # exit
127
104
        exit
128
105
}
129
106
 
150
127
                $next_section = '';
151
128
 
152
129
                # display line
153
 
                if( ( $section eq $display_section ) ||
154
 
                        ( $section && $display_all ) )
 
130
                if( $section eq $display_section ||
 
131
                        $display_all )
155
132
                {
156
133
                        # detect section change
157
134
                        if( $section ne $old_section ) {
161
138
                                if( $display_headers ||
162
139
                                        $display_all )
163
140
                                {
164
 
                                        print "$section\n".
165
 
                                                ( "=" x length( $section ) )."\n";
 
141
                                        my $heading = 'TODO';
 
142
                                        $heading .= ' ('.lc( $section ).')' if $section ne "IMMEDIATE";
 
143
                                        print "$heading\n".
 
144
                                                ( "=" x length( $heading ) )."\n";
166
145
                                }
167
146
                        }
168
147