Class: Rawfeed::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/rawfeed/command/cli.rb

Overview

Command Line Interface (CLI) entry point for rawfeed-jekyll. This class handles routing of commands passed from the “rawfeed” executable.

Class Method Summary collapse

Class Method Details

.run(args) ⇒ void

This method returns an undefined value.

Parses and executes the CLI command. Exits the application if invalid commands are provided.

Parameters:

  • args (Array<String>)

    The arguments passed from the shell.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/rawfeed/command/cli.rb', line 17

def self.run(args)
  if args.empty?
    puts "Use: rawfeed help"
    exit 1
  end

  first_arg = args.shift

  # Internal tools
  if %w[minify clean help new install build serve backup].include?(first_arg)
    case first_arg
    when "minify"
      Rawfeed::Tools.minify
    when "clean"
      Rawfeed::Tools.clean(*args)
    when "help"
      Rawfeed::Tools.help
    when "new"
      site_path = args.shift || "my-site"
      Rawfeed::Installer.create_new_site(site_path, *args)
    when "install"
      Rawfeed::Tools.install
    when "build"
      Rawfeed::Tools.build(*args)
    when "serve"
      Rawfeed::Tools.serve(*args)
    when "backup"
      Rawfeed::Backup.site(*args)
    end
    return
  end

  # Separate namespace and task for the main commands.
  namespace, task = first_arg.split(":")

  case namespace
  when "create"
    case task
    when "draft" then Rawfeed::Draft.draft_create(*args)
    when "pixel" then Rawfeed::Pixel.pixel_create(*args)
    when "page"  then Rawfeed::Page.page_create(*args)
    else
      puts "Unknown create task: #{task}"
    end
  when "restore"
    case task
      when "donate" then Rawfeed::Donate.restore_page
      when "contact" then Rawfeed::Contact.restore_page
      when "licenses" then Rawfeed::Licenses.restore_page
      when "resume" then Rawfeed::Resume.restore_page
    else
      puts "Unknown restore task: #{task}"
    end
  when "list"
    case task
    when "posts" then Rawfeed::PostList.display
    else
      puts "Unknown list task: #{task}"
    end
  when "home"
    case task
    when "about" then Rawfeed::Layout.home_about(true)
    when "blog"  then Rawfeed::Layout.home_blog
    else
      puts "Unknown home task: #{task}"
    end
  when "post"
    case task
    when "draft" then Rawfeed::Post.post(*args)
    else
      puts "Unknown post task: #{task}"
    end
  when "blog"
    case task
    when "enable"  then
      Rawfeed::Layout.blog_index(true)
      Rawfeed::Layout.tags_index(true)
      Rawfeed::Layout::change_yml("defaults", "published", true, "_posts")
      Rawfeed::Layout.change_yml("pagination", "enabled", true)
    when "disable" then
      Rawfeed::Layout.blog_index(false)
      Rawfeed::Layout.tags_index(false)
      Rawfeed::Layout::change_yml("defaults", "published", false, "_posts")
      Rawfeed::Layout.change_yml("pagination", "enabled", false)
    else
      puts "Unknown blog task: #{task}"
    end
  when "pixels"
    case task
    when "enable"  then Rawfeed::Layout.pixels_index(true)
    when "disable" then Rawfeed::Layout.pixels_index(false)
    else
      puts "Unknown pixels task: #{task}"
    end
  else
    puts "Unknown namespace or command: #{namespace || first_arg}"
    puts "Use:"
    puts "  rawfeed help"
  end
end