discourse_theme 0.6.0 → 0.7.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: d0626e7865ec3b7d06ae9e198351dfd51f111897393bf393aa7da26b52c19777
4
- data.tar.gz: 77856b459abd70854c9350960d98eb0887420222732390a22f4f52b69fbcd691
3
+ metadata.gz: ffe67e68e2ee480c68cb8ce8031c9a09bfdd16025a01ba873eebca2228c821fe
4
+ data.tar.gz: 5094e13dc147c656a15b9b0d9ad790daf54c8f8ff2501f81f540cd0cfb2d95d2
5
5
  SHA512:
6
- metadata.gz: adf9a56c7ffb98ea9b14df04220096105c0b2e63074e4dc789984a1c9c01e6162b7118651cb9e1b95ed8a8c64740d97358d5c3fa7fb7614c3ca8416126c8d1dc
7
- data.tar.gz: 1550d47250f811999035af55efc28dd3a081a22a5f9961a9e2fdfe9ee522a688de402064ed9df339a6c67395bf41ba6eb76b9db812d8bde4470f8dba8e178e40
6
+ metadata.gz: 4afb46c9e254275d537990d9e91240aa4269def484c0c5be5db1963092643b5e2b24bef42bd5cd1ace7dd3d402b84fb36e6e98e2addc37d3eda281fbb32d9d54
7
+ data.tar.gz: 5894640522c7c3491a2fb7d7bab2dc55e334f70e445bd06198ae5628d748a87d99c1033f5df0b369ac29ad694f490752ded9ccc3208853c4fd107db40f1bc790
@@ -4,7 +4,6 @@ on:
4
4
  pull_request:
5
5
  push:
6
6
  branches:
7
- - master
8
7
  - main
9
8
 
10
9
  jobs:
@@ -14,13 +13,12 @@ jobs:
14
13
  strategy:
15
14
  matrix:
16
15
  ruby:
17
- - 2.5
18
- - 2.6
19
- - 2.7
20
- - 3.0
16
+ - "2.7"
17
+ - "3.0"
18
+ - "3.1"
21
19
 
22
20
  steps:
23
- - uses: actions/checkout@v2
21
+ - uses: actions/checkout@v3
24
22
 
25
23
  - name: Setup ruby
26
24
  uses: ruby/setup-ruby@v1
@@ -35,15 +33,15 @@ jobs:
35
33
  run: bundle exec rake test
36
34
 
37
35
  publish:
38
- if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')
36
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
39
37
  needs: build
40
38
  runs-on: ubuntu-latest
41
39
 
42
40
  steps:
43
- - uses: actions/checkout@v2
41
+ - uses: actions/checkout@v3
44
42
 
45
43
  - name: Release Gem
46
- uses: discourse/publish-rubygems-action@v2-beta
44
+ uses: discourse/publish-rubygems-action@v2
47
45
  env:
48
46
  RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
49
47
  GIT_EMAIL: team@discourse.org
data/README.md CHANGED
@@ -32,6 +32,10 @@ Downloads a theme from the server and stores in the designated directory.
32
32
 
33
33
  Monitors a theme or component for changes. When changed the program will synchronize the theme or component to your Discourse of choice.
34
34
 
35
+ ### `discourse_theme upload PATH`
36
+
37
+ Uploads a theme to the server. Requires the theme to have been previously synchronized via `watch`.
38
+
35
39
  ## Contributing
36
40
 
37
41
  Bug reports and pull requests are welcome at [Meta Discourse](https://meta.discourse.org). This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
@@ -42,4 +46,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
42
46
 
43
47
  ## Code of Conduct
44
48
 
45
- Everyone interacting in the DiscourseTheme project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/SamSaffron/discourse_theme/blob/master/CODE_OF_CONDUCT.md).
49
+ Everyone interacting in the DiscourseTheme project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/discourse/discourse_theme/blob/main/CODE_OF_CONDUCT.md).
@@ -8,6 +8,7 @@ module DiscourseTheme
8
8
  puts
9
9
  puts "discourse_theme new DIR - Creates a new theme in the designated directory"
10
10
  puts "discourse_theme download DIR - Downloads a theme from the server and stores in the designated directory"
11
+ puts "discourse_theme upload DIR - Uploads the theme directory to Discourse"
11
12
  puts "discourse_theme watch DIR - Watches the theme directory and synchronizes with Discourse"
12
13
  puts
13
14
  puts "Use --reset to change the configuration for a directory"
@@ -79,14 +80,17 @@ module DiscourseTheme
79
80
  settings.theme_id = theme_id = uploader.upload_full_theme
80
81
 
81
82
  UI.success "Theme uploaded (id:#{theme_id})"
82
- UI.info "Preview: #{client.root}/?preview_theme_id=#{theme_id}"
83
+ UI.info "Preview: #{client.url}/?preview_theme_id=#{theme_id}"
84
+
83
85
  if client.is_theme_creator
84
- UI.info "Manage: #{client.root}/my/themes"
86
+ UI.info "Manage: #{client.url}/my/themes"
85
87
  else
86
- UI.info "Manage: #{client.root}/admin/customize/themes/#{theme_id}"
88
+ UI.info "Manage: #{client.url}/admin/customize/themes/#{theme_id}"
87
89
  end
88
- watcher = DiscourseTheme::Watcher.new(dir: dir, uploader: uploader)
89
90
 
91
+ UI.info "Tests: #{client.url}/theme-qunit?id=#{theme_id}"
92
+
93
+ watcher = DiscourseTheme::Watcher.new(dir: dir, uploader: uploader)
90
94
  UI.progress "Watching for changes in #{dir}..."
91
95
  watcher.watch
92
96
  elsif command == "download"
@@ -110,6 +114,28 @@ module DiscourseTheme
110
114
  UI.success "Theme downloaded"
111
115
 
112
116
  watch_theme?(args)
117
+ elsif command == "upload"
118
+ raise DiscourseTheme::ThemeError.new "'#{dir} does not exist" unless Dir.exists?(dir)
119
+ raise DiscourseTheme::ThemeError.new "No theme_id is set, please sync via the 'watch' command initially" if theme_id == 0
120
+ client = DiscourseTheme::Client.new(dir, settings, reset: reset)
121
+
122
+ theme_list = client.get_themes_list
123
+
124
+ theme = theme_list.find { |t| t["id"] == theme_id }
125
+ raise DiscourseTheme::ThemeError.new "theme_id is set, but the theme does not exist in Discourse" unless theme
126
+
127
+ uploader = DiscourseTheme::Uploader.new(dir: dir, client: client, theme_id: theme_id, components: components)
128
+
129
+ UI.progress "Uploading theme (id:#{theme_id}) from #{dir} "
130
+ settings.theme_id = theme_id = uploader.upload_full_theme
131
+
132
+ UI.success "Theme uploaded (id:#{theme_id})"
133
+ UI.info "Preview: #{client.root}/?preview_theme_id=#{theme_id}"
134
+ if client.is_theme_creator
135
+ UI.info "Manage: #{client.root}/my/themes"
136
+ else
137
+ UI.info "Manage: #{client.root}/admin/customize/themes/#{theme_id}"
138
+ end
113
139
  else
114
140
  usage
115
141
  end
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
  module DiscourseTheme
3
3
  class Client
4
- THEME_CREATOR_REGEX = /^https:\/\/theme-creator.discourse.org$/i
4
+ THEME_CREATOR_REGEX = /^https:\/\/(theme-creator\.discourse\.org|discourse\.theme-creator\.io)$/i
5
+
6
+ attr_reader :url
5
7
 
6
8
  def initialize(dir, settings, reset:)
7
9
  @reset = reset
@@ -19,7 +21,7 @@ module DiscourseTheme
19
21
  end
20
22
  end
21
23
 
22
- # From https://github.com/discourse/discourse/blob/master/lib/version.rb
24
+ # From https://github.com/discourse/discourse/blob/main/lib/version.rb
23
25
  def self.has_needed_version?(current, needed)
24
26
  current_split = current.split('.')
25
27
  needed_split = needed.split('.')
@@ -105,7 +107,7 @@ module DiscourseTheme
105
107
  end
106
108
 
107
109
  def root
108
- URI.parse(@url).path
110
+ URI.parse(@url)
109
111
  end
110
112
 
111
113
  def is_theme_creator
@@ -47,7 +47,11 @@ module DiscourseTheme
47
47
 
48
48
  ESLINT_RC = <<~STR
49
49
  {
50
- "extends": "eslint-config-discourse"
50
+ "extends": "eslint-config-discourse",
51
+ "globals": {
52
+ "settings": "readonly",
53
+ "themePrefix": "readonly"
54
+ }
51
55
  }
52
56
  STR
53
57
 
@@ -1,9 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  module DiscourseTheme
3
3
  class Uploader
4
-
5
- THEME_CREATOR_REGEX = /^https:\/\/theme-creator.discourse.org$/i
6
-
7
4
  def initialize(dir:, client:, theme_id: nil, components: nil)
8
5
  @dir = dir
9
6
  @client = client
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module DiscourseTheme
3
- VERSION = "0.6.0"
3
+ VERSION = "0.7.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.6.0
4
+ version: 0.7.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-11-23 00:00:00.000000000 Z
11
+ date: 2022-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitar