focus.rb 1.0.1 → 1.1.0
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 +4 -4
- data/bin/focus +8 -2
- data/lib/focus/config.rb +6 -1
- data/lib/focus/host.rb +3 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9dae74d714f49abf09ba3d42f7831f05760346563dd4cce4a233b6f0975020c4
|
4
|
+
data.tar.gz: a2b268db17e8ff009b7d1b672499f5fbbb7cfff6b0f76a66c2c352c3a7767325
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04d3b1ebf9df3df68e3fb2f79fa3ce793b46346b886163ba61cd040d2c467ccaabc64cc25e6a90527dbbb08d3ea941da773172eed5b36e762022f0ca6db57810
|
7
|
+
data.tar.gz: 8f66742d9f3684b84555548b26a983bf70eb34e81f411ef720bc2e58a910b95cd003c6686ddc4c29564344c6d56fc683a0e9f1a69f913a61db9ed28550f62658
|
data/bin/focus
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
$LOAD_PATH << File.join(Dir.pwd, "lib")
|
4
|
+
|
3
5
|
require "colorize"
|
4
6
|
require "optparse"
|
5
7
|
require "focus/config"
|
@@ -10,6 +12,7 @@ config_path = ".config/focus.rb/config.yaml"
|
|
10
12
|
action = :list_block_hosts
|
11
13
|
args = []
|
12
14
|
options_parser = nil
|
15
|
+
dry = false
|
13
16
|
|
14
17
|
ARGV.options do |opts|
|
15
18
|
options_parser = opts
|
@@ -25,6 +28,7 @@ Help to focus on your work, block leasure website while you need working, unbloc
|
|
25
28
|
|
26
29
|
opts.on("-b", "--block", "Block non-work website") { action = :block }
|
27
30
|
opts.on("-r", "--restore", "Restore non-work website") { action = :restore }
|
31
|
+
opts.on("-d", "--dry", "Don't write on real files") { dry = true }
|
28
32
|
|
29
33
|
opts.separator ""
|
30
34
|
|
@@ -34,13 +38,15 @@ Help to focus on your work, block leasure website while you need working, unbloc
|
|
34
38
|
end
|
35
39
|
|
36
40
|
config = Focus::Config.new(filepath: config_path)
|
41
|
+
host_file = "/etc/hosts"
|
42
|
+
host_file = "/dev/null" if dry
|
37
43
|
|
38
44
|
ACTIONS = {
|
39
45
|
list_block_hosts: lambda { puts config.block_hosts },
|
40
46
|
add_block_host: lambda { config.add_block_host(*args) },
|
41
47
|
delete_block_host: lambda { config.add_block_host(*args) },
|
42
|
-
block: lambda { Focus::Host.new.block!(config) },
|
43
|
-
restore: lambda { Focus::Host.new.restore!(config) },
|
48
|
+
block: lambda { Focus::Host.new(host_file).block!(config) },
|
49
|
+
restore: lambda { Focus::Host.new(host_file).restore!(config) },
|
44
50
|
help: lambda { puts options_parser }
|
45
51
|
}
|
46
52
|
|
data/lib/focus/config.rb
CHANGED
@@ -3,15 +3,20 @@ require "yaml"
|
|
3
3
|
module Focus
|
4
4
|
class Config
|
5
5
|
BASE_PATH = ENV["HOME"]
|
6
|
-
DEFAULT_BLOCK_HOSTS = %w(
|
6
|
+
DEFAULT_BLOCK_HOSTS = %w(
|
7
|
+
reddit.com youtube.com facebook.com instagram.com twitter.com
|
8
|
+
linkedin.com snapchat.com tumblr.com pinterest.com tiktok.com
|
9
|
+
)
|
7
10
|
|
8
11
|
def initialize(filepath:)
|
9
12
|
@filepath = File.join(BASE_PATH, filepath)
|
10
13
|
dir = File.dirname(@filepath)
|
11
14
|
if !File.exist?(dir)
|
15
|
+
puts "Create config directory #{dir}"
|
12
16
|
Dir.mkdir(dir)
|
13
17
|
end
|
14
18
|
if !File.exist?(@filepath)
|
19
|
+
puts "Initialize default configuration #{@filepath}"
|
15
20
|
write(
|
16
21
|
{
|
17
22
|
block_hosts: DEFAULT_BLOCK_HOSTS,
|
data/lib/focus/host.rb
CHANGED
@@ -37,7 +37,9 @@ module Focus
|
|
37
37
|
end
|
38
38
|
@all_lines << "### FOCUS:stop (automaticaly generated) ###"
|
39
39
|
@all_lines << ""
|
40
|
-
|
40
|
+
|
41
|
+
command = "sudo su -c 'echo \"#{@all_lines.join("\n")}\" > #{@file}'"
|
42
|
+
`#{command}`
|
41
43
|
end
|
42
44
|
|
43
45
|
def block!(config)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: focus.rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arthur Poulet
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir:
|
10
10
|
- bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-06-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: colorize
|
@@ -55,7 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: '0'
|
57
57
|
requirements: []
|
58
|
-
rubygems_version: 3.
|
58
|
+
rubygems_version: 3.3.22
|
59
59
|
signing_key:
|
60
60
|
specification_version: 4
|
61
61
|
summary: A tool to help you focus on work
|