Agenda是一个基于命令行界面的会议管理程序,使用golang实现。
go get github.com/FideoJ/Agenda
go build
./Agenda [subcommand] [flags]
- help
- usage: 列出命令说明
- args: command string (= "all")
- notes: 参数默认为all,打印所有命令的说明
- register
- usage: 用户注册
- args: username string, password string, email string, phone string
- notes: None
- login
- usage: 用户登录
- args: username string, password string
- notes: 若已有登录用户,则先登出,无论后续是否能登录成功
- logout
- usage: 用户登出
- args: None
- notes: 若未登录,则静默
- listUsers
- usage: 列出所有用户
- args: None
- notes: 要求已登录
- removeUser
- usage: 用户删除
- args: username string, password string
- notes: 若成功删除当前用户,登出
- createMeeting
- usage: 创建会议
- args: title string, startTime string, endTime string, participants []string
- notes: 要求已登录,时间格式:"YYYY-MM-DD HH:mm"
- addParticipants
- usage: 增加会议参与者
- args: title string, participant string
- notes: 要求已登录,仅能操作当前用户为发起者的会议
- removeParticipants
- usage: 删除会议参与者
- args: title string, participant string
- notes: 要求已登录,仅能操作当前用户为发起者的会议,仅剩发起者的会议应删除
- listMeetings
- usage: 列出所有与当前用户有关的会议
- args: None
- notes: 要求已登录,时间格式:"YYYY:MM:DD HH:mm"
- cancelMeeting
- usage: 取消会议
- args: title string
- notes: 要求已登录,仅能操作当前用户为发起者的会议
- quitMeeting
- usage: 退出会议
- args: title string
- notes: 要求已登录,仅能操作当前用户为参与者的会议
- clearMeetings
- usage: 清空会议
- args: None
- notes: 要求已登录,清除当前用户为发起者的会议
Data persistence: data of users and meetings will be stored as *.json
files.
All the related .json
file is stored in $homedir/.agenda/
of current user. (eg. $HOME/.agenda/
in *nix)
# register
$ ./Agenda register -utest -ptest -etest@test.com -t12345678910
[INFO] 2017/11/05 13:56:01 Register called with username:[test], password:[test], email:[test@test.com], phone:[12345678910]
$ ./Agenda register -utest2 -ptest -etest2@test2.com -t12345678911
[INFO] 2017/11/05 13:57:32 Register called with username:[test2], password:[test], email:[test2@test2.com], phone:[12345678911]
# login
$ ./Agenda login -utest --password test
[INFO] 2017/11/05 13:58:08 Login called with username:[test], password:[test]
# list all users. some users are pre-registered.
$ ./Agenda listUsers
USERNAME EMAIL PHONE
abc asdf 3432
abe asdf 3432
marsh abc@123.com 1234
test test@test.com 12345678910
test2 test2@test2.com 12345678911
abd asdf 3432
[INFO] 2017/11/05 13:59:16 ListUsers called
# removeUser: test2
$ ./Agenda removeUser --username test2 --password=test
[INFO] 2017/11/05 14:03:13 RemoveUser called with username:[test2], password:[test]
# createMeeting
$ ./Agenda createMeeting --title=testMeeting -s"2012:12:12 12:12" -e"2012:12:13 13:13" -pabc -pabe
[ERROR] 2017/11/05 14:05:38 parsing time "2012:12:12 12:12" as "2006-01-02 15:04": cannot parse ":12:12 12:12" as "-"
$ ./Agenda createMeeting --title=testMeeting -s"2012-12-12 12:12" -e"2012-12-13 13:13" -pabc -pabe
[INFO] 2017/11/05 14:06:19 CreateMeeting called with title: [testMeeting], startTime: [2012-12-12 12:12], endTime: [2012-12-13 13:13], participants: [[abc abe]]
# addParticipant: user[abd] to meeting[testMeeting]
$ ./Agenda addParticipant --title=testMeeting -pabd
[INFO] 2017/11/05 14:07:26 addParticipant called with title: [testMeeting], participants: [[abd]]
# removeParticipant: user[abe] from meeting[testMeeting]
$ ./Agenda removeParticipant -ttestMeeting -pabe
[INFO] 2017/11/05 14:08:17 removeParticipant called with title: [testMeeting], participants: [[abe]]
# listMeetings: (created another meeting)
$ ./Agenda listMeetings
TITLE SPONSOR START-TIME END-TIME PARTICIPANTS
testMeeting test 2012-12-12 12:12 2012-12-13 13:13 abc abd
testMeeting2 test 2011-12-12 12:12 2011-12-13 13:13 abc
[INFO] 2017/11/05 14:09:22 listMeetings called
# cancelMeeting
$ ./Agenda cancelMeeting --title=testMeeting2
[INFO] 2017/11/05 14:10:07 CancelMeeting called with title: [testMeeting2]
$ ./Agenda listMeetings
TITLE SPONSOR START-TIME END-TIME PARTICIPANTS
testMeeting test 2012-12-12 12:12 2012-12-13 13:13 abc abd
[INFO] 2017/11/05 14:10:12 listMeetings called
# quitMeeting
$ ./Agenda logout
[INFO] 2017/11/05 14:16:38 Logout called
$ ./Agenda login --username=abc -p111
[ERROR] 2017/11/05 14:16:49 Wrong username or password
$ ./Agenda login --username=abc -p123
[INFO] 2017/11/05 14:17:01 Login called with username:[abc], password:[123]
$ ./Agenda quitMeeting --title=testMeeting
[INFO] 2017/11/05 14:17:53 QuitMeeting called with title: [testMeeting]
$ ./Agenda login -utest -ptest
[INFO] 2017/11/05 14:18:43 Login called with username:[test], password:[test]
$ ./Agenda listMeetings
TITLE SPONSOR START-TIME END-TIME PARTICIPANTS
testMeeting test 2012-12-12 12:12 2012-12-13 13:13 abd
[INFO] 2017/11/05 14:18:47 listMeetings called
# clearMeetings
$ ./Agenda clearMeetings
[INFO] 2017/11/05 14:19:20 ClearMeetings called
$ ./Agenda listMeetings
TITLE SPONSOR START-TIME END-TIME PARTICIPANTS
[INFO] 2017/11/05 14:19:26 listMeetings called