dotplan 0.0.2
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/.gitignore +2 -0
- data/CHANGELOG.md +7 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +24 -0
- data/Rakefile +1 -0
- data/bin/dotplan +25 -0
- data/dotplan.gemspec +23 -0
- data/lib/dotplan/command/auth.rb +54 -0
- data/lib/dotplan/command/default.rb +0 -0
- data/lib/dotplan/command/help.rb +23 -0
- data/lib/dotplan/command/register.rb +38 -0
- data/lib/dotplan/command.rb +9 -0
- data/lib/dotplan/constants.rb +4 -0
- data/lib/dotplan/version.rb +3 -0
- data/lib/dotplan.rb +12 -0
- metadata +105 -0
data/.gitignore
ADDED
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
dotplan (0.0.1)
|
5
|
+
colorize
|
6
|
+
hashie
|
7
|
+
json
|
8
|
+
rest-client
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: http://rubygems.org/
|
12
|
+
specs:
|
13
|
+
colorize (0.5.8)
|
14
|
+
hashie (1.2.0)
|
15
|
+
json (1.6.5)
|
16
|
+
mime-types (1.17.2)
|
17
|
+
rest-client (1.6.7)
|
18
|
+
mime-types (>= 1.16)
|
19
|
+
|
20
|
+
PLATFORMS
|
21
|
+
ruby
|
22
|
+
|
23
|
+
DEPENDENCIES
|
24
|
+
dotplan!
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/dotplan
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "rubygems"
|
4
|
+
require "dotplan"
|
5
|
+
|
6
|
+
commands = {
|
7
|
+
# user commands
|
8
|
+
'auth' => proc { DotPlan::Command::Auth.run },
|
9
|
+
'register' => proc { DotPlan::Command::Register.run },
|
10
|
+
'help' => proc { DotPlan::Command::Help.run },
|
11
|
+
}
|
12
|
+
|
13
|
+
if ARGV.first && commands.keys.include?(ARGV.first.downcase)
|
14
|
+
begin
|
15
|
+
commands[ARGV.first.downcase].call
|
16
|
+
rescue => e
|
17
|
+
puts e
|
18
|
+
end
|
19
|
+
else
|
20
|
+
begin
|
21
|
+
puts "todo".green
|
22
|
+
rescue => e
|
23
|
+
puts e
|
24
|
+
end
|
25
|
+
end
|
data/dotplan.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require "./lib/dotplan/version"
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "dotplan"
|
6
|
+
s.version = DotPlan::VERSION
|
7
|
+
s.authors = ["Dave Paola"]
|
8
|
+
s.email = ["dpaola2@gmail.com"]
|
9
|
+
s.summary = %q{The simplest way to manage your .plans}
|
10
|
+
s.description = %q{The simplest way to manage your .plans}
|
11
|
+
|
12
|
+
s.rubyforge_project = "dotplan"
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
|
19
|
+
s.add_runtime_dependency "json"
|
20
|
+
s.add_runtime_dependency "colorize"
|
21
|
+
s.add_runtime_dependency "rest-client"
|
22
|
+
s.add_runtime_dependency "hashie"
|
23
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require "colorize"
|
2
|
+
require "rest-client"
|
3
|
+
|
4
|
+
module DotPlan
|
5
|
+
module Command
|
6
|
+
class Auth
|
7
|
+
def self.run(*args)
|
8
|
+
login
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.login
|
12
|
+
print "Username: "
|
13
|
+
username = $stdin.gets.chomp
|
14
|
+
|
15
|
+
print "Password: "
|
16
|
+
system "stty -echo"
|
17
|
+
password = $stdin.gets.chomp
|
18
|
+
system "stty echo"
|
19
|
+
|
20
|
+
print "\n"
|
21
|
+
|
22
|
+
begin
|
23
|
+
credentials = authenticate(:username => username, :password => password)
|
24
|
+
write_credentials(credentials)
|
25
|
+
puts "Saved to #{DotPlan::CREDENTIALS_PATH}.".green
|
26
|
+
rescue => e
|
27
|
+
puts e
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.authenticate(options)
|
32
|
+
raise "Must provide a username".red unless options[:username]
|
33
|
+
raise "Must provide a password".red unless options[:password]
|
34
|
+
begin
|
35
|
+
response = RestClient.get("#{DotPlan::DOTPLAN_URL}/user/#{options[:username]}/auth", :Password => options[:password])
|
36
|
+
rescue => e
|
37
|
+
response = JSON.parse(e.response)
|
38
|
+
raise response["error"].red
|
39
|
+
end
|
40
|
+
credentials = JSON.parse(response.body)
|
41
|
+
credentials
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def self.write_credentials(credentials)
|
47
|
+
FileUtils.mkdir_p(File.dirname(DotPlan::CREDENTIALS_PATH))
|
48
|
+
FileUtils.touch(DotPlan::CREDENTIALS_PATH)
|
49
|
+
|
50
|
+
File.open(DotPlan::CREDENTIALS_PATH, "w+") { |file| file << credentials.to_json }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
File without changes
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module DotPlan
|
2
|
+
module Command
|
3
|
+
class Help
|
4
|
+
|
5
|
+
def self.run(*args)
|
6
|
+
helpstring = <<-eos
|
7
|
+
Usage:
|
8
|
+
dotplan [auth | register | log | finger]
|
9
|
+
|
10
|
+
If a command is omitted, you'll be dropped into $EDITOR to interact with today's .plan.
|
11
|
+
|
12
|
+
Commands:
|
13
|
+
auth Authenticate by entering your username and password
|
14
|
+
register Register for a new account
|
15
|
+
log See your recent .plans
|
16
|
+
finger <user> Retrieve the .plan stream for <user>
|
17
|
+
|
18
|
+
eos
|
19
|
+
puts helpstring
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module DotPlan
|
2
|
+
module Command
|
3
|
+
class Register
|
4
|
+
def self.run(*args)
|
5
|
+
print "Desired username: "
|
6
|
+
username = $stdin.gets.chomp
|
7
|
+
|
8
|
+
print "Password: "
|
9
|
+
system "stty -echo"
|
10
|
+
password = $stdin.gets.chomp
|
11
|
+
system "stty echo"
|
12
|
+
|
13
|
+
print "\n"
|
14
|
+
|
15
|
+
begin
|
16
|
+
credentials = register(:username => username, :password => password)
|
17
|
+
puts 'Registered! Run "dotplan auth" now.'
|
18
|
+
rescue => e
|
19
|
+
puts e
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.register(options)
|
24
|
+
raise "No username provided".red unless options[:username]
|
25
|
+
raise "No password provided".red unless options[:password]
|
26
|
+
begin
|
27
|
+
resource = RestClient::Resource.new("#{DotPlan::DOTPLAN_URL}/user/#{options[:username]}", :Password => options[:password])
|
28
|
+
response = resource.post nil, :Password => options[:password]
|
29
|
+
rescue => e
|
30
|
+
response = JSON.parse(e.response)
|
31
|
+
raise response["error"].red
|
32
|
+
end
|
33
|
+
credentials = JSON.parse(response.body)
|
34
|
+
credentials
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/dotplan.rb
ADDED
metadata
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dotplan
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Dave Paola
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-12 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: json
|
16
|
+
requirement: &70232884581560 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70232884581560
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: colorize
|
27
|
+
requirement: &70232884581140 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70232884581140
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rest-client
|
38
|
+
requirement: &70232884580720 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70232884580720
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: hashie
|
49
|
+
requirement: &70232884580300 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70232884580300
|
58
|
+
description: The simplest way to manage your .plans
|
59
|
+
email:
|
60
|
+
- dpaola2@gmail.com
|
61
|
+
executables:
|
62
|
+
- dotplan
|
63
|
+
extensions: []
|
64
|
+
extra_rdoc_files: []
|
65
|
+
files:
|
66
|
+
- .gitignore
|
67
|
+
- CHANGELOG.md
|
68
|
+
- Gemfile
|
69
|
+
- Gemfile.lock
|
70
|
+
- Rakefile
|
71
|
+
- bin/dotplan
|
72
|
+
- dotplan.gemspec
|
73
|
+
- lib/dotplan.rb
|
74
|
+
- lib/dotplan/command.rb
|
75
|
+
- lib/dotplan/command/auth.rb
|
76
|
+
- lib/dotplan/command/default.rb
|
77
|
+
- lib/dotplan/command/help.rb
|
78
|
+
- lib/dotplan/command/register.rb
|
79
|
+
- lib/dotplan/constants.rb
|
80
|
+
- lib/dotplan/version.rb
|
81
|
+
homepage:
|
82
|
+
licenses: []
|
83
|
+
post_install_message:
|
84
|
+
rdoc_options: []
|
85
|
+
require_paths:
|
86
|
+
- lib
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
89
|
+
requirements:
|
90
|
+
- - ! '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
requirements: []
|
100
|
+
rubyforge_project: dotplan
|
101
|
+
rubygems_version: 1.8.15
|
102
|
+
signing_key:
|
103
|
+
specification_version: 3
|
104
|
+
summary: The simplest way to manage your .plans
|
105
|
+
test_files: []
|