discourse_theme 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e820c35e9086c9f9e72fd374815e5514279db2ebb9609ef83482490313829586
4
- data.tar.gz: 974908e9946ff58d402e94dbbf8bdb375f640c8fe017cbd091d397dc48771758
3
+ metadata.gz: 20a594e3cf6429ad7b721ca546710a1f57706a74bb0c8346301dea8b76a58cea
4
+ data.tar.gz: 477808a79184cc9251865a86a77ccfa33a64318a90a774207a5441b683499546
5
5
  SHA512:
6
- metadata.gz: d62b36ed3b6c05522af40b2ea7b88dee89b80b0a35262bd99cdecdb6f4dcd2330ba621b65603f703291b3322f73e9c1338f398c136db2c9453f9f76e1d5b2a88
7
- data.tar.gz: 21c02268e21bb43a231ed0667ffdc4e9887b467f4da280fd02f63bf358ecad3be43972b69c9c98e8b179907d2b04b7e0ad3c409141f3935c920e43e061527088
6
+ metadata.gz: 8d5ad9c41ca00b3172167b1985cdb5da36ef6d8073ad6b4882f6760da05006f550a12447007d64fb8486e078245eab618979c80e18e78eaa4cc1487269dd780a
7
+ data.tar.gz: 7e40d9ec1727422c4875307b35b38a3d178330598c4a0b1c207779564fe8cf4dbbd07864e964e8e7eee1d5ffec47ad9cdc2821f28fd24ebe1bdb44677cd659cf
@@ -14,15 +14,15 @@ require 'json'
14
14
  require 'yaml'
15
15
  require 'tty/prompt'
16
16
 
17
- require 'discourse_theme/version'
18
- require 'discourse_theme/config'
19
- require 'discourse_theme/ui'
20
- require 'discourse_theme/cli'
21
- require 'discourse_theme/client'
22
- require 'discourse_theme/downloader'
23
- require 'discourse_theme/uploader'
24
- require 'discourse_theme/watcher'
25
- require 'discourse_theme/scaffold'
17
+ require_relative 'discourse_theme/version'
18
+ require_relative 'discourse_theme/config'
19
+ require_relative 'discourse_theme/ui'
20
+ require_relative 'discourse_theme/cli'
21
+ require_relative 'discourse_theme/client'
22
+ require_relative 'discourse_theme/downloader'
23
+ require_relative 'discourse_theme/uploader'
24
+ require_relative 'discourse_theme/watcher'
25
+ require_relative 'discourse_theme/scaffold'
26
26
 
27
27
  module DiscourseTheme
28
28
  class ThemeError < StandardError; end
@@ -29,7 +29,10 @@ module DiscourseTheme
29
29
  components = settings.components
30
30
 
31
31
  if command == "new"
32
- raise DiscourseTheme::ThemeError.new "'#{dir} is not empty" if Dir.exists?(dir) && !Dir.empty?(dir)
32
+ raise DiscourseTheme::ThemeError.new "'#{dir}' is not empty" if Dir.exists?(dir) && !Dir.empty?(dir)
33
+ raise DiscourseTheme::ThemeError.new "git is not installed" if !command?("git")
34
+ raise DiscourseTheme::ThemeError.new "yarn is not installed" if !command?("yarn")
35
+
33
36
  DiscourseTheme::Scaffold.generate(dir)
34
37
  watch_theme?(args)
35
38
  elsif command == "watch"
@@ -120,6 +123,18 @@ module DiscourseTheme
120
123
 
121
124
  private
122
125
 
126
+ def command?(cmd)
127
+ exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
128
+ ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
129
+ exts.each do |ext|
130
+ exe = File.join(path, "#{cmd}#{ext}")
131
+ return true if File.executable?(exe) && !File.directory?(exe)
132
+ end
133
+ end
134
+
135
+ false
136
+ end
137
+
123
138
  def watch_theme?(args)
124
139
  if UI.yes?("Would you like to start 'watching' this theme?")
125
140
  args[0] = "watch"
@@ -67,11 +67,30 @@ module DiscourseTheme
67
67
  def self.generate(dir)
68
68
  UI.progress "Generating a scaffold theme at #{dir}"
69
69
 
70
- name = UI.ask("What would you like to call your theme?").strip
70
+ name = loop do
71
+ input = UI.ask("What would you like to call your theme?").to_s.strip
72
+ if input.empty?
73
+ UI.error("Theme name cannot be empty")
74
+ else
75
+ break input
76
+ end
77
+ end
78
+
71
79
  is_component = UI.yes?("Is this a component?")
72
80
 
73
81
  FileUtils.mkdir_p dir
74
82
  Dir.chdir dir do
83
+ author = loop do
84
+ input = UI.ask("Who is authoring the theme?", default: ENV['USER']).to_s.strip
85
+ if input.empty?
86
+ UI.error("Author cannot be empty")
87
+ else
88
+ break input
89
+ end
90
+ end
91
+
92
+ description = UI.ask("How would you describe this theme?").to_s.strip
93
+
75
94
  UI.info "Creating about.json"
76
95
  about_template = ABOUT_JSON.dup
77
96
  about_template[:name] = name
@@ -86,7 +105,6 @@ module DiscourseTheme
86
105
  File.write('HELP', HELP)
87
106
 
88
107
  UI.info "Creating package.json"
89
- author = UI.ask("Who is authoring the theme?").strip
90
108
  File.write('package.json', PACKAGE_JSON.sub("#AUTHOR", author))
91
109
 
92
110
  UI.info "Creating .template-lintrc.js"
@@ -101,10 +119,10 @@ module DiscourseTheme
101
119
  locale = "locales/en.yml"
102
120
  UI.info "Creating #{locale}"
103
121
  FileUtils.mkdir_p(File.dirname(locale))
104
- description = UI.ask("How would you describe this theme?").strip
105
122
  File.write(locale, EN_YML.sub("#DESCRIPTION", description))
106
123
 
107
- initializer = "javascripts/discourse/api-initializers/#{name}.js"
124
+ encoded_name = name.downcase.gsub(/[^\w_-]+/, '_')
125
+ initializer = "javascripts/discourse/api-initializers/#{encoded_name}.js"
108
126
  UI.info "Creating #{initializer}"
109
127
  FileUtils.mkdir_p(File.dirname(initializer))
110
128
  File.write(initializer, API_INITIALIZER)
@@ -116,7 +134,7 @@ module DiscourseTheme
116
134
  end
117
135
 
118
136
  UI.info "Initializing git repo"
119
- puts `git init .`
137
+ puts `git init . --initial-branch=main`
120
138
 
121
139
  UI.info "Installing dependencies"
122
140
  puts `yarn`
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module DiscourseTheme
3
- VERSION = "0.5.1"
3
+ VERSION = "0.5.2"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: discourse_theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-25 00:00:00.000000000 Z
11
+ date: 2021-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitar