decidim-cdtb 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -1
- data/Gemfile +1 -0
- data/Gemfile.lock +3 -1
- data/README.md +37 -23
- data/lib/decidim/cdtb/engine.rb +1 -1
- data/lib/decidim/cdtb/multitenants/org_by_host_like.rb +4 -4
- data/lib/decidim/cdtb/task.rb +3 -3
- data/lib/decidim/cdtb/tasks.rb +1 -0
- data/lib/decidim/cdtb/tasks_utils.rb +20 -6
- data/lib/decidim/cdtb/upgrades/install_gem_migrations_step.rb +18 -0
- data/lib/decidim/cdtb/upgrades/upgrade_modules_task.rb +42 -0
- data/lib/decidim/cdtb/upgrades/validate_migrations_task.rb +60 -0
- data/lib/decidim/cdtb/version.rb +1 -1
- data/lib/decidim/cdtb.rb +1 -0
- data/lib/generators/cdtb/USAGE +8 -0
- data/lib/generators/cdtb/templates/validate_migrations.yml +52 -0
- data/lib/generators/cdtb/validate_migrations_ci_generator.rb +12 -0
- data/lib/tasks/upgrade.rake +20 -0
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d908d1cc4021da9869dd10cacb1fe06b360301d4e13f1a70a55fdc90a2712b6a
|
4
|
+
data.tar.gz: e7a0c808803bbbd6dc75e5bdfaee7b3acfb1311c085f17eb41a9de32fc7795fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20ddde6eddf59ab12b7ca8d6f489692a04183331f0c1ef496b199b4350cdd103d2b23ca94329199d36f2a9e7222ea0c3269da25648ec0acb47bdde6b38666b92
|
7
|
+
data.tar.gz: 2dd41a8a1f79ffd4506c6b18d58393d3a88d8a021e0acf05cfbd4e4ac1dcc22250294c8de29d7168c2fce29bf2d2df71c0b9905414a3df1e28991aa665be8d36
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
decidim-cdtb (0.1.
|
4
|
+
decidim-cdtb (0.1.3)
|
5
5
|
decidim (>= 0.26.2)
|
6
6
|
rails (>= 6)
|
7
7
|
ruby-progressbar
|
@@ -700,6 +700,7 @@ GEM
|
|
700
700
|
actionpack (>= 5.2)
|
701
701
|
activesupport (>= 5.2)
|
702
702
|
sprockets (>= 3.0.0)
|
703
|
+
sqlite3 (1.6.3-x86_64-linux)
|
703
704
|
ssrf_filter (1.1.1)
|
704
705
|
system_test_html_screenshots (0.2.0)
|
705
706
|
actionpack (>= 5.2, < 6.1.a)
|
@@ -771,6 +772,7 @@ DEPENDENCIES
|
|
771
772
|
rake (~> 13.0)
|
772
773
|
rspec (~> 3.0)
|
773
774
|
rubocop
|
775
|
+
sqlite3
|
774
776
|
|
775
777
|
BUNDLED WITH
|
776
778
|
2.3.6
|
data/README.md
CHANGED
@@ -8,16 +8,16 @@ This is CodiTramuntana's Decidim Toolbelt (cdtb), a gem to help managing Decidim
|
|
8
8
|
Install the gem and add to the application's Gemfile by executing:
|
9
9
|
|
10
10
|
$ bundle add decidim-cdtb
|
11
|
+
$ bundle install
|
11
12
|
|
12
|
-
|
13
|
+
Install CI tests on your app with:
|
13
14
|
|
14
|
-
$
|
15
|
+
$ bin/rails generate cdtb:validate_migrations_ci
|
15
16
|
|
16
|
-
## Usage
|
17
17
|
|
18
|
-
|
18
|
+
## Usage
|
19
19
|
|
20
|
-
|
20
|
+
### Organizations information
|
21
21
|
|
22
22
|
Returns information regarding the organizations in a multitenant installation that match a search term ignorecase.
|
23
23
|
|
@@ -36,7 +36,7 @@ bin/rake cdtb:org_by_host_like[vila]
|
|
36
36
|
host: localhost, time_zone: Madrid, locales: ca + [ca, es, oc], available authorizations: [postal_letter, members_picker_authorization_handler]
|
37
37
|
```
|
38
38
|
|
39
|
-
|
39
|
+
### Fix nicknames
|
40
40
|
|
41
41
|
In a previous version than Decidim v0.25 a validation to the `Decidim::User.nickname` was added with a migration to fix existing nicknames. But the migration was only taking into acocunt managed (impersonated) users.
|
42
42
|
|
@@ -48,27 +48,21 @@ To execute the task run:
|
|
48
48
|
bin/rake cdtb:fix_nicknames
|
49
49
|
```
|
50
50
|
|
51
|
-
|
51
|
+
### Anonymize production dump
|
52
52
|
|
53
53
|
Anonymize rake task was taken from https://github.com/AjuntamentdeBarcelona/decidim-barcelona
|
54
54
|
|
55
55
|
Available rake tasks:
|
56
56
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
57
|
+
- `bin/rake cdtb:anonymize:check` allows you to check if you can anonymize production dump
|
58
|
+
- `bin/rake cdtb:anonymize:all` anonymizes whole production dump (without proposals)
|
59
|
+
- `bin/rake cdtb:anonymize:users` anonymizes users
|
60
|
+
- `bin/rake cdtb:anonymize:proposals` anonymizes proposals
|
61
|
+
- `bin/rake cdtb:anonymize:user_groups` anonymizes user groups
|
62
|
+
- `bin/rake cdtb:anonymize:system_admins` anonymizes system admins
|
63
|
+
- `bin/rake cdtb:anonymize:paper_trail` anonymizes paper trails
|
64
64
|
|
65
|
-
|
66
|
-
|
67
|
-
```bin/rake cdtb:anonymize:system_admins``` anonymizes system admins
|
68
|
-
|
69
|
-
```bin/rake cdtb:anonymize:paper_trail``` anonymizes paper trails
|
70
|
-
|
71
|
-
#### Migrate ActiveStorage service from S3 to local
|
65
|
+
### Migrate ActiveStorage service from S3 to local
|
72
66
|
|
73
67
|
To migrate from S3 to local storage, the identified steps will be:
|
74
68
|
|
@@ -82,6 +76,26 @@ To migrate from S3 to local storage, the identified steps will be:
|
|
82
76
|
`bin/rake cache:clear`
|
83
77
|
5. Restart the Rails server
|
84
78
|
|
79
|
+
### Upgrades:
|
80
|
+
|
81
|
+
#### Upgrade modules
|
82
|
+
|
83
|
+
Upgrades the gems with engines in them. All, Decidim modules and standard Rails engines.
|
84
|
+
|
85
|
+
TO-DO To be finished
|
86
|
+
|
87
|
+
#### Validate migrations
|
88
|
+
|
89
|
+
Validates that migrations from all gems in the Gemfile have already been installed.
|
90
|
+
|
91
|
+
```
|
92
|
+
bin/rake cdtb:upgrades:validate_migrations
|
93
|
+
```
|
94
|
+
|
95
|
+
See the [Installation](#installation) chapter to install a GitHub Action on your app that will run this validation on your CI.
|
96
|
+
|
97
|
+
TO-DO also check that all migrations have been executed and the schema.rb does not change
|
98
|
+
|
85
99
|
## Development
|
86
100
|
|
87
101
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -107,7 +121,7 @@ bundle exec rspec spec
|
|
107
121
|
|
108
122
|
## Contributing
|
109
123
|
|
110
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
124
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/CodiTramuntana/decidim-cdtb. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/CodiTramuntana/decidim-cdtb/blob/master/CODE_OF_CONDUCT.md).
|
111
125
|
|
112
126
|
## License
|
113
127
|
|
@@ -115,4 +129,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
115
129
|
|
116
130
|
## Code of Conduct
|
117
131
|
|
118
|
-
Everyone interacting in the Decidim::Cdtb project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/
|
132
|
+
Everyone interacting in the Decidim::Cdtb project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/CodiTramuntana/decidim-cdtb/blob/master/CODE_OF_CONDUCT.md).
|
data/lib/decidim/cdtb/engine.rb
CHANGED
@@ -30,9 +30,9 @@ module Decidim
|
|
30
30
|
locales: "#{org.default_locale} + [#{org.available_locales&.join(", ")}]",
|
31
31
|
available_authorizations: org.available_authorizations&.join(", ")
|
32
32
|
}
|
33
|
-
|
33
|
+
do_log_info(h.to_yaml)
|
34
34
|
end
|
35
|
-
|
35
|
+
do_log_info("---------------------------------------------------------")
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
@@ -47,7 +47,7 @@ module Decidim
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def show_full_info(org)
|
50
|
-
|
50
|
+
do_log_info(org.attributes.to_yaml)
|
51
51
|
end
|
52
52
|
|
53
53
|
def show_summary_info(org)
|
@@ -57,7 +57,7 @@ module Decidim
|
|
57
57
|
locales: "#{org.default_locale} + [#{org.available_locales&.join(", ")}]",
|
58
58
|
available_authorizations: org.available_authorizations&.join(", ")
|
59
59
|
}
|
60
|
-
|
60
|
+
do_log_info(h.to_yaml)
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
data/lib/decidim/cdtb/task.rb
CHANGED
@@ -22,21 +22,21 @@ module Decidim
|
|
22
22
|
def init
|
23
23
|
log_task_title(@title)
|
24
24
|
@start_time= Time.zone.now
|
25
|
-
|
25
|
+
do_log_info("▶️ Starting at #{@start_time}")
|
26
26
|
end
|
27
27
|
|
28
28
|
def execute!
|
29
29
|
init
|
30
30
|
ctx= {}
|
31
|
-
ctx[:progress_bar]= ProgressBar.create(total: total_items, title: title) if has_progress?
|
32
31
|
prepare_execution(ctx)
|
32
|
+
ctx[:progress_bar]= ProgressBar.create(total: total_items, title: title) if has_progress?
|
33
33
|
do_execution(ctx)
|
34
34
|
end_execution(ctx)
|
35
35
|
finish
|
36
36
|
end
|
37
37
|
|
38
38
|
def finish
|
39
|
-
|
39
|
+
do_log_info("⏱️ Took #{Time.zone.now - @start_time} seconds")
|
40
40
|
log_task_end
|
41
41
|
end
|
42
42
|
|
data/lib/decidim/cdtb/tasks.rb
CHANGED
@@ -10,26 +10,40 @@ module Decidim
|
|
10
10
|
Rails.logger
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
13
|
+
def do_log_info(msg)
|
14
14
|
puts msg
|
15
15
|
logger.info(msg)
|
16
16
|
end
|
17
17
|
|
18
|
+
def do_log_error(msg)
|
19
|
+
puts msg
|
20
|
+
logger.error(msg)
|
21
|
+
end
|
22
|
+
|
18
23
|
def log_task_title(title)
|
19
|
-
|
24
|
+
do_log_info("⚙️ #{title}")
|
20
25
|
end
|
21
26
|
|
22
27
|
def log_task_step(description)
|
23
|
-
|
28
|
+
do_log_info("➡️ #{description}")
|
24
29
|
end
|
25
30
|
|
26
31
|
def log_task_info(info)
|
27
|
-
|
32
|
+
do_log_info("ℹ️ #{info}")
|
33
|
+
end
|
34
|
+
|
35
|
+
def log_task_failure(msg)
|
36
|
+
@failed= true
|
37
|
+
do_log_error("⚠️ #{msg}")
|
28
38
|
end
|
29
39
|
|
30
40
|
def log_task_end
|
31
|
-
end_comment=
|
32
|
-
|
41
|
+
end_comment= if defined?(@failed) && @failed
|
42
|
+
"❌ Ended with errors!"
|
43
|
+
else
|
44
|
+
"✅ Done."
|
45
|
+
end
|
46
|
+
do_log_info(end_comment)
|
33
47
|
end
|
34
48
|
end
|
35
49
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Cdtb
|
5
|
+
module Upgrades
|
6
|
+
# Invokes rails to install gem migrations
|
7
|
+
#
|
8
|
+
class InstallGemMigrationsStep
|
9
|
+
# Pass +gem_names+ to define from which gems to install migrations.
|
10
|
+
def install!(gem_names)
|
11
|
+
cmd= "#{Rails.root.join("bin/rails")} railties:install:migrations"
|
12
|
+
env_vars= "FROM=#{gem_names.join(",")}"
|
13
|
+
`#{cmd} #{env_vars}`
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Cdtb
|
5
|
+
module Upgrades
|
6
|
+
# Upgrades the gems with engines in them. All, Decidim modules and standard Rails engines.
|
7
|
+
#
|
8
|
+
class UpgradeModulesTask < ::Decidim::Cdtb::Task
|
9
|
+
def initialize
|
10
|
+
progress_bar= { title: "Modules" }
|
11
|
+
super("UPGRADE MODULES", progress_bar: progress_bar)
|
12
|
+
end
|
13
|
+
|
14
|
+
def prepare_execution(_ctx)
|
15
|
+
log_task_info("Have you updated the versions of your modules in the Gemfile (y/n)?")
|
16
|
+
response= $stdin.gets
|
17
|
+
if response&.downcase == "y"
|
18
|
+
get the number of modules
|
19
|
+
else
|
20
|
+
@exit= true
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def total_items
|
25
|
+
@num_users
|
26
|
+
end
|
27
|
+
|
28
|
+
def do_execution(context)
|
29
|
+
# progress_bar= context[:progress_bar]
|
30
|
+
|
31
|
+
# system("bundle update decidim")
|
32
|
+
# system("bin/rails decidim:upgrade")
|
33
|
+
# system("bin/rails db:migrate")
|
34
|
+
end
|
35
|
+
|
36
|
+
def end_execution(_ctx)
|
37
|
+
log_task_step("#{@num_applied} users nicknamized")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "install_gem_migrations_step"
|
4
|
+
|
5
|
+
module Decidim
|
6
|
+
module Cdtb
|
7
|
+
module Upgrades
|
8
|
+
# Validates that all Decidim modules have the migrations installed.
|
9
|
+
#
|
10
|
+
class ValidateMigrationsTask < ::Decidim::Cdtb::Task
|
11
|
+
STEPS_IN_DO_EXECUTION= 2
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
progress_bar= { title: "Modules" }
|
15
|
+
super("VALIDATE MODULES MIGRATIONS", progress_bar: progress_bar)
|
16
|
+
end
|
17
|
+
|
18
|
+
def prepare_execution(_ctx)
|
19
|
+
all_railties= Rails.application.migration_railties
|
20
|
+
railties_w_migrations= all_railties.select do |railtie|
|
21
|
+
railtie.respond_to?(:paths) && railtie.paths["db/migrate"].first.present?
|
22
|
+
end
|
23
|
+
@gem_names= railties_w_migrations.map(&:railtie_name)
|
24
|
+
|
25
|
+
log_task_info("Found #{@gem_names.size} gems with migrations. Validating.....")
|
26
|
+
end
|
27
|
+
|
28
|
+
def total_items
|
29
|
+
STEPS_IN_DO_EXECUTION
|
30
|
+
end
|
31
|
+
|
32
|
+
def pending_migrations?
|
33
|
+
@pending_migrations.present?
|
34
|
+
end
|
35
|
+
|
36
|
+
def do_execution(context)
|
37
|
+
progress_bar= context[:progress_bar]
|
38
|
+
|
39
|
+
output= install_gem_migrations
|
40
|
+
|
41
|
+
progress_bar.increment
|
42
|
+
|
43
|
+
@pending_migrations= output.lines.select { |l| l.include?("Copied migration") }
|
44
|
+
|
45
|
+
progress_bar.increment
|
46
|
+
end
|
47
|
+
|
48
|
+
def end_execution(_ctx)
|
49
|
+
log_task_step("#{@gem_names.size} gems validated")
|
50
|
+
log_task_failure(@pending_migrations.join("\n")) if pending_migrations?
|
51
|
+
end
|
52
|
+
|
53
|
+
def install_gem_migrations
|
54
|
+
install_step= InstallGemMigrationsStep.new
|
55
|
+
install_step.install!(@gem_names)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/lib/decidim/cdtb/version.rb
CHANGED
data/lib/decidim/cdtb.rb
CHANGED
@@ -0,0 +1,52 @@
|
|
1
|
+
name: "[CI] Validate migrations"
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- master
|
7
|
+
- release/*
|
8
|
+
- "*-stable"
|
9
|
+
pull_request:
|
10
|
+
|
11
|
+
env:
|
12
|
+
DB_DATABASE: app
|
13
|
+
DB_USERNAME: postgres
|
14
|
+
DB_PASSWORD: postgres
|
15
|
+
RUBY_VERSION: 3.1.3
|
16
|
+
|
17
|
+
jobs:
|
18
|
+
test:
|
19
|
+
runs-on: ubuntu-latest
|
20
|
+
env:
|
21
|
+
SECRET_KEY_BASE: "secret_key_base"
|
22
|
+
|
23
|
+
steps:
|
24
|
+
- uses: actions/checkout@v2.0.0
|
25
|
+
with:
|
26
|
+
fetch-depth: 1
|
27
|
+
- uses: ruby/setup-ruby@master
|
28
|
+
with:
|
29
|
+
ruby-version: ${{ env.RUBY_VERSION }}
|
30
|
+
bundler-cache: true
|
31
|
+
- name: Recover Ruby dependency cache
|
32
|
+
uses: actions/cache@v1
|
33
|
+
with:
|
34
|
+
path: ./vendor/bundle
|
35
|
+
key: ${{ runner.OS }}-app-rubydeps-${{ hashFiles('Gemfile.lock') }}
|
36
|
+
restore-keys: |
|
37
|
+
${{ runner.OS }}-app-rubydeps-${{ env.cache-name }}-
|
38
|
+
${{ runner.OS }}-app-rubydeps-
|
39
|
+
|
40
|
+
- name: Set bundle local config vendor/bundle path
|
41
|
+
run: bundle config set --local path 'vendor/bundle'
|
42
|
+
|
43
|
+
- name: Install Ruby deps
|
44
|
+
uses: nick-invision/retry@v2
|
45
|
+
with:
|
46
|
+
timeout_minutes: 10
|
47
|
+
max_attempts: 3
|
48
|
+
retry_on: error
|
49
|
+
command: bundle install --jobs 4 --retry 3
|
50
|
+
|
51
|
+
- name: Run specs
|
52
|
+
run: bin/rails cdtb:upgrades:validate_migrations
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Cdtb
|
4
|
+
# Generates the GitHub workflow that validates that the app has the migrations from all gems already installed
|
5
|
+
class ValidateMigrationsCiGenerator < Rails::Generators::Base
|
6
|
+
source_root File.expand_path("templates", __dir__)
|
7
|
+
|
8
|
+
def copy_github_workflow_file
|
9
|
+
copy_file "validate_migrations.yml", ".github/workflows/validate_migrations.yml"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
4
|
+
# A set of utils to manage Decidim Organizations.
|
5
|
+
#
|
6
|
+
namespace :cdtb do
|
7
|
+
namespace :upgrades do
|
8
|
+
require "decidim/cdtb/tasks_utils"
|
9
|
+
include ::Decidim::Cdtb::TasksUtils
|
10
|
+
|
11
|
+
desc <<~EODESC
|
12
|
+
Validates that migrations from all gems in the Gemfile have been installed.
|
13
|
+
EODESC
|
14
|
+
task validate_migrations: [:environment] do
|
15
|
+
task= ::Decidim::Cdtb::Upgrades::ValidateMigrationsTask.new
|
16
|
+
task.execute!
|
17
|
+
raise("There are pending migrations") if task.pending_migrations?
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-cdtb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oliver Valls
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-07-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: decidim
|
@@ -110,11 +110,18 @@ files:
|
|
110
110
|
- lib/decidim/cdtb/task.rb
|
111
111
|
- lib/decidim/cdtb/tasks.rb
|
112
112
|
- lib/decidim/cdtb/tasks_utils.rb
|
113
|
+
- lib/decidim/cdtb/upgrades/install_gem_migrations_step.rb
|
114
|
+
- lib/decidim/cdtb/upgrades/upgrade_modules_task.rb
|
115
|
+
- lib/decidim/cdtb/upgrades/validate_migrations_task.rb
|
113
116
|
- lib/decidim/cdtb/version.rb
|
117
|
+
- lib/generators/cdtb/USAGE
|
118
|
+
- lib/generators/cdtb/templates/validate_migrations.yml
|
119
|
+
- lib/generators/cdtb/validate_migrations_ci_generator.rb
|
114
120
|
- lib/tasks/anonymize.rake
|
115
121
|
- lib/tasks/cdtb.rake
|
116
122
|
- lib/tasks/multitenants.rake
|
117
123
|
- lib/tasks/storage.rake
|
124
|
+
- lib/tasks/upgrade.rake
|
118
125
|
- sig/decidim/cdtb.rbs
|
119
126
|
homepage: http://github.com/CodiTramunana/cdtb
|
120
127
|
licenses:
|