focus.rb 1.0.1 → 1.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: be3ca51dc59f5a69a6b15b2381b7596776c7a85b656f2402db409ef11a095e0a
4
- data.tar.gz: dfed043bd5a771f9ecc8ad7e22eb898349bbece9cb5c9520da50cf37256e7390
3
+ metadata.gz: 1df428809adafd42b392926175afb6d8b4ba2919b2aa089d55fe92f8a9f6bc4b
4
+ data.tar.gz: 1c7218d6b73f81b58a6d9ca6dbafaa26b0b5df57d6a464cf23774886cdf5e7e4
5
5
  SHA512:
6
- metadata.gz: a551d74afb999598545732fe17a94f0e96581b44a6b06e3ea6cce87fab20f66ed51cda65715238abc8c1612fb468b2f72f4774e4ad81ed96310bd35c2c897311
7
- data.tar.gz: 3230ffd2acd77850eaf32bd2eb01b3bf150bd531beaa291c3d3cee11cf5f2821ab1307cef3f0e16dc78f56cb0ce32bf29c70b1769835868afa85faa3e2a9f612
6
+ metadata.gz: 53c969c851742f456d2fd003e1d738ebf51bac2e1f162c7b351aa7f360659f21b13c702563ae77684848bd5a65ad377ed3fb3649f1ed9e9e9cec9bd9ef972934
7
+ data.tar.gz: 5893453871608649f0b26bcd84d753acb4768e2d9f256f9f10827bb19d49abe9e45375ea4e37203ad42d1b7f065af3feab4d852b65e13e0fe9dafde24c0341f5
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
@@ -21,10 +24,11 @@ Help to focus on your work, block leasure website while you need working, unbloc
21
24
  opts.on("-c=PATH", "--config=PATH", "Change the default config path") { |path| config_path = path }
22
25
 
23
26
  opts.on("-a=BLOCK", "--add-block-host=BLOCK", "Add a new host to block") { |block| action = :add_block_host; args = [block] }
24
- opts.on("-d=BLOCK", "--delete-block-host=BLOCK", "Delete a host to block") { |block| action = :delete_block_host; args = [block] }
27
+ opts.on("--delete-block-host=BLOCK", "Delete a host to block") { |block| action = :delete_block_host; args = [block] }
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
- 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) },
47
+ delete_block_host: lambda { config.delete_block_host(*args) },
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(reddit.com youtube.com okcupid.com)
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,
@@ -45,7 +50,7 @@ module Focus
45
50
  end
46
51
 
47
52
  def delete_block_host(blocks)
48
- puts "This operation removes \"#{blocks}\" to the list of blocked hosts.".yellow
53
+ puts "This operation deletes \"#{blocks}\" to the list of blocked hosts.".yellow
49
54
  puts "This operation does not unblock the hosts. Execute -b to refresh the blocking or -r to reset it.".yellow
50
55
  blocks.split(",").each do |block|
51
56
  data = read
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
- File.write(@file, @all_lines.join("\n"))
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.1
4
+ version: 1.1.1
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: 2021-09-21 00:00:00.000000000 Z
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.2.27
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