notion-task 0.0.6
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.
- checksums.yaml +7 -0
- data/bin/notion-task +7 -0
- data/lib/api.rb +73 -0
- data/lib/commands/list.rb +21 -0
- data/lib/commands/new.rb +21 -0
- data/lib/commands/version.rb +20 -0
- data/lib/metadata.rb +93 -0
- data/lib/notion-task.rb +65 -0
- metadata +146 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9eef31a5964007c0c45ad070307b066eb9080241a0d6651af7620312872448b8
|
4
|
+
data.tar.gz: 374f9244eb53ae56a307e68539c159f2143caffdc42fab3d8948dea694205365
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6803e2b0508c6806de6761db0130c2dbe3507a69934f671e2105bada71c38a6873d67489cc8c3869406f8866132448d90c1e3b07f037ba371f678238902ab037
|
7
|
+
data.tar.gz: bf4a465b0b219ccf7b3975a67f6e755e0b5194c168418f26410b5634261d0358165cbe8b5727d1e51fcc495a5ab17c304917765ffa639d9c8de9383bcf445ba4
|
data/bin/notion-task
ADDED
data/lib/api.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# code: language=ruby
|
4
|
+
|
5
|
+
require "httparty"
|
6
|
+
require "json"
|
7
|
+
|
8
|
+
# Notion API class
|
9
|
+
#
|
10
|
+
# @author Dave Williams
|
11
|
+
# @since 0.0.2
|
12
|
+
class NotionAPI
|
13
|
+
# Initialize the Notion API class
|
14
|
+
#
|
15
|
+
# @return [NotionApi]
|
16
|
+
def initialize
|
17
|
+
if ENV.fetch("NOTION_TASK_API_KEY", false) && ENV.fetch("NOTION_TASK_DATABASE", false)
|
18
|
+
@key = ENV.fetch("NOTION_TASK_API_KEY")
|
19
|
+
@database = ENV.fetch("NOTION_TASK_DATABASE")
|
20
|
+
@headers = {
|
21
|
+
"Authorization" => "Bearer #{@key}",
|
22
|
+
"Content-Type" => "application/json",
|
23
|
+
"Notion-Version" => "2022-02-22"
|
24
|
+
}
|
25
|
+
else
|
26
|
+
raise "NOTION_TASK_API_KEY and NOTION_TASK_DATABASE must be set"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def GET(path)
|
31
|
+
response = HTTParty.get("https://api.notion.com/v1/#{path}", headers: @headers)
|
32
|
+
response.body
|
33
|
+
end
|
34
|
+
|
35
|
+
def POST(path, body)
|
36
|
+
response = HTTParty.post("https://api.notion.com/v1#{path}", headers: @headers, body: body)
|
37
|
+
response.body
|
38
|
+
end
|
39
|
+
|
40
|
+
def get_tasks
|
41
|
+
query = {
|
42
|
+
sorts: [
|
43
|
+
{
|
44
|
+
property: "Title",
|
45
|
+
direction: "ascending"
|
46
|
+
}
|
47
|
+
]
|
48
|
+
}
|
49
|
+
resp = POST("/databases/#{@database}/query", query.to_json)
|
50
|
+
puts resp
|
51
|
+
end
|
52
|
+
|
53
|
+
def new_task(title)
|
54
|
+
query = {
|
55
|
+
parent: {
|
56
|
+
database_id: @database
|
57
|
+
},
|
58
|
+
properties: {
|
59
|
+
Title: {
|
60
|
+
title: [
|
61
|
+
{
|
62
|
+
text: {
|
63
|
+
content: title
|
64
|
+
}
|
65
|
+
}
|
66
|
+
]
|
67
|
+
}
|
68
|
+
}
|
69
|
+
}
|
70
|
+
resp = POST("/pages", query.to_json)
|
71
|
+
puts resp
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../metadata"
|
4
|
+
require_relative "../api"
|
5
|
+
|
6
|
+
# Commands module contains all CLI command implementations
|
7
|
+
module Commands
|
8
|
+
# Command to get NotionTask version
|
9
|
+
class List
|
10
|
+
def initialize(args, options)
|
11
|
+
@args = args
|
12
|
+
@options = options
|
13
|
+
@api = NotionAPI.new
|
14
|
+
run
|
15
|
+
end
|
16
|
+
|
17
|
+
def run
|
18
|
+
puts @api.get_tasks
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/commands/new.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../metadata"
|
4
|
+
require_relative "../api"
|
5
|
+
|
6
|
+
# Commands module contains all CLI command implementations
|
7
|
+
module Commands
|
8
|
+
# Command to get NotionTask version
|
9
|
+
class New
|
10
|
+
def initialize(args, options)
|
11
|
+
@args = args
|
12
|
+
@options = options
|
13
|
+
@api = NotionAPI.new
|
14
|
+
run
|
15
|
+
end
|
16
|
+
|
17
|
+
def run
|
18
|
+
puts @api.new_task(@args.join(" "))
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../metadata"
|
4
|
+
require_relative "../api"
|
5
|
+
|
6
|
+
# Commands module contains all CLI command implementations
|
7
|
+
module Commands
|
8
|
+
# Command to get NotionTask version
|
9
|
+
class Version
|
10
|
+
def initialize(args, options)
|
11
|
+
@args = args
|
12
|
+
@options = options
|
13
|
+
run
|
14
|
+
end
|
15
|
+
|
16
|
+
def run
|
17
|
+
puts "notion-task #{Metadata.version}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/metadata.rb
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# code: language=ruby
|
4
|
+
|
5
|
+
# Module containing metadata for the NotionTask gem specification
|
6
|
+
module Metadata
|
7
|
+
def self.version
|
8
|
+
"0.0.6"
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.name
|
12
|
+
"notion-task"
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.summary
|
16
|
+
"Notion task manager"
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.description
|
20
|
+
"A tool to help manage Notion tasks"
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.author
|
24
|
+
"Dave Williams"
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.email
|
28
|
+
"dave@dave.io"
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.files
|
32
|
+
[
|
33
|
+
"bin/notion-task",
|
34
|
+
"lib/api.rb",
|
35
|
+
"lib/commands/list.rb",
|
36
|
+
"lib/commands/new.rb",
|
37
|
+
"lib/commands/version.rb",
|
38
|
+
"lib/metadata.rb",
|
39
|
+
"lib/notion-task.rb"
|
40
|
+
]
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.executables
|
44
|
+
["notion-task"]
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.authors
|
48
|
+
["Dave Williams"]
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.license
|
52
|
+
"MIT"
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.homepage
|
56
|
+
"https://github.com/daveio/notion-task"
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.required_ruby_version
|
60
|
+
">= 3.3.6"
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.dependencies
|
64
|
+
{
|
65
|
+
"commander" => "~> 5.0.0",
|
66
|
+
"httparty" => "~> 0.22.0",
|
67
|
+
"notion-ruby-client" => "~> 1.2.2",
|
68
|
+
"terminal-table" => "~> 4.0.0"
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.development_dependencies
|
73
|
+
{
|
74
|
+
"pry" => "~> 0.15.2",
|
75
|
+
"solargraph" => "~> 0.51.2",
|
76
|
+
"standard" => "~> 1.45.0"
|
77
|
+
}
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.api_key
|
81
|
+
api_key = ENV.fetch("NOTION_TASK_API_KEY", false)
|
82
|
+
abort("NOTION_TASK_API_KEY is not set. Set it to your API key.") unless api_key
|
83
|
+
|
84
|
+
api_key
|
85
|
+
end
|
86
|
+
|
87
|
+
def self.task_database
|
88
|
+
task_database = ENV.fetch("NOTION_TASK_DATABASE", false)
|
89
|
+
abort("NOTION_TASK_DATABASE is not set. Set it to the ID of your database.") unless task_database
|
90
|
+
|
91
|
+
task_database
|
92
|
+
end
|
93
|
+
end
|
data/lib/notion-task.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# code: language=ruby
|
4
|
+
|
5
|
+
require "rubygems"
|
6
|
+
require "commander"
|
7
|
+
require_relative "metadata"
|
8
|
+
require_relative "commands/list"
|
9
|
+
require_relative "commands/new"
|
10
|
+
require_relative "commands/version"
|
11
|
+
# Main application class for NotionTask command-line interface
|
12
|
+
class NotionTask
|
13
|
+
include Commander::Methods
|
14
|
+
|
15
|
+
def run
|
16
|
+
setup_program
|
17
|
+
setup_commands
|
18
|
+
run!
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def setup_program
|
24
|
+
program :name, Metadata.name
|
25
|
+
program :version, Metadata.version
|
26
|
+
program :description, Metadata.description
|
27
|
+
program :help, "Documentation", "https://github.com/daveio/notion-task"
|
28
|
+
end
|
29
|
+
|
30
|
+
def setup_commands
|
31
|
+
setup_version_command
|
32
|
+
setup_list_command
|
33
|
+
setup_new_command
|
34
|
+
end
|
35
|
+
|
36
|
+
def setup_new_command
|
37
|
+
command :new do |c|
|
38
|
+
c.syntax = "notion-task new"
|
39
|
+
c.summary = "Create a new task"
|
40
|
+
c.description = c.summary
|
41
|
+
c.example c.summary, "notion-task new"
|
42
|
+
c.when_called Commands::New
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def setup_version_command
|
47
|
+
command :version do |c|
|
48
|
+
c.syntax = "notion-task version"
|
49
|
+
c.summary = "Show the version of the running notion-task"
|
50
|
+
c.description = c.summary
|
51
|
+
c.example c.summary, "notion-task version"
|
52
|
+
c.when_called Commands::Version
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def setup_list_command
|
57
|
+
command :list do |c|
|
58
|
+
c.syntax = "notion-task list"
|
59
|
+
c.summary = "List all tasks in the database"
|
60
|
+
c.description = c.summary
|
61
|
+
c.example c.summary, "notion-task list"
|
62
|
+
c.when_called Commands::List
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
metadata
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: notion-task
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.6
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Dave Williams
|
8
|
+
bindir: bin
|
9
|
+
cert_chain: []
|
10
|
+
date: 2025-02-24 00:00:00.000000000 Z
|
11
|
+
dependencies:
|
12
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: commander
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - "~>"
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: 5.0.0
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - "~>"
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: 5.0.0
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: httparty
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.22.0
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 0.22.0
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: notion-ruby-client
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 1.2.2
|
47
|
+
type: :runtime
|
48
|
+
prerelease: false
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.2.2
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: terminal-table
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 4.0.0
|
61
|
+
type: :runtime
|
62
|
+
prerelease: false
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 4.0.0
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: pry
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 0.15.2
|
75
|
+
type: :development
|
76
|
+
prerelease: false
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 0.15.2
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: solargraph
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 0.51.2
|
89
|
+
type: :development
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: 0.51.2
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: standard
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 1.45.0
|
103
|
+
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.45.0
|
110
|
+
description: A tool to help manage Notion tasks
|
111
|
+
email: dave@dave.io
|
112
|
+
executables:
|
113
|
+
- notion-task
|
114
|
+
extensions: []
|
115
|
+
extra_rdoc_files: []
|
116
|
+
files:
|
117
|
+
- bin/notion-task
|
118
|
+
- lib/api.rb
|
119
|
+
- lib/commands/list.rb
|
120
|
+
- lib/commands/new.rb
|
121
|
+
- lib/commands/version.rb
|
122
|
+
- lib/metadata.rb
|
123
|
+
- lib/notion-task.rb
|
124
|
+
homepage: https://github.com/daveio/notion-task
|
125
|
+
licenses:
|
126
|
+
- MIT
|
127
|
+
metadata:
|
128
|
+
rubygems_mfa_required: 'true'
|
129
|
+
rdoc_options: []
|
130
|
+
require_paths:
|
131
|
+
- lib
|
132
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - ">="
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: 3.3.6
|
137
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- - ">="
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
requirements: []
|
143
|
+
rubygems_version: 3.6.5
|
144
|
+
specification_version: 4
|
145
|
+
summary: Notion task manager
|
146
|
+
test_files: []
|