foreman_acd 0.0.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.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +619 -0
  3. data/README.md +87 -0
  4. data/Rakefile +49 -0
  5. data/app/assets/javascripts/foreman_acd/acd_dummy.js +3 -0
  6. data/app/controllers/foreman_acd/api/v2/app_definitions_controller.rb +55 -0
  7. data/app/controllers/foreman_acd/api/v2/base_controller.rb +16 -0
  8. data/app/controllers/foreman_acd/app_definitions_controller.rb +53 -0
  9. data/app/controllers/foreman_acd/app_instances_controller.rb +158 -0
  10. data/app/controllers/foreman_acd/application_controller.rb +10 -0
  11. data/app/controllers/foreman_acd/concerns/app_definition_parameters.rb +23 -0
  12. data/app/controllers/foreman_acd/concerns/app_instance_parameters.rb +23 -0
  13. data/app/controllers/ui_acd_controller.rb +30 -0
  14. data/app/models/foreman_acd/app_definition.rb +23 -0
  15. data/app/models/foreman_acd/app_instance.rb +21 -0
  16. data/app/views/foreman_acd/app_definitions/_form.html.erb +40 -0
  17. data/app/views/foreman_acd/app_definitions/edit.html.erb +11 -0
  18. data/app/views/foreman_acd/app_definitions/index.html.erb +27 -0
  19. data/app/views/foreman_acd/app_definitions/new.html.erb +10 -0
  20. data/app/views/foreman_acd/app_instances/_form.html.erb +46 -0
  21. data/app/views/foreman_acd/app_instances/edit.html.erb +11 -0
  22. data/app/views/foreman_acd/app_instances/index.html.erb +30 -0
  23. data/app/views/foreman_acd/app_instances/new.html.erb +11 -0
  24. data/app/views/ui_acd/app.json.rabl +9 -0
  25. data/app/views/ui_acd/app_definition.json.rabl +5 -0
  26. data/app/views/ui_acd/computeprofile.json.rabl +4 -0
  27. data/app/views/ui_acd/domain.json.rabl +4 -0
  28. data/app/views/ui_acd/environment.json.rabl +4 -0
  29. data/app/views/ui_acd/fdata.json.rabl +24 -0
  30. data/app/views/ui_acd/lifecycle_environment.json.rabl +4 -0
  31. data/app/views/ui_acd/ptable.json.rabl +4 -0
  32. data/config/routes.rb +24 -0
  33. data/db/migrate/20190610202252_create_app_definitions.rb +19 -0
  34. data/db/migrate/20190625140305_create_app_instances.rb +19 -0
  35. data/lib/foreman_acd/engine.rb +43 -0
  36. data/lib/foreman_acd/plugin.rb +80 -0
  37. data/lib/foreman_acd/version.rb +5 -0
  38. data/lib/foreman_acd.rb +7 -0
  39. data/lib/tasks/foreman_acd_tasks.rake +47 -0
  40. data/locale/Makefile +60 -0
  41. data/locale/en/foreman_acd.po +19 -0
  42. data/locale/foreman_acd.pot +19 -0
  43. data/locale/gemspec.rb +2 -0
  44. data/package.json +121 -0
  45. data/test/controllers/app_definitions_controller_test.rb +24 -0
  46. data/test/controllers/app_instances_controller_test.rb +24 -0
  47. data/test/controllers/ui_acd_controller_test.rb +26 -0
  48. data/test/factories/foreman_acd_factories.rb +17 -0
  49. data/test/models/app_definition_test.rb +11 -0
  50. data/test/models/app_instance_test.rb +8 -0
  51. data/test/test_plugin_helper.rb +8 -0
  52. data/webpack/__mocks__/foremanReact/components/common/forms/Select.js +2 -0
  53. data/webpack/components/ParameterSelection/ParameterSelection.js +468 -0
  54. data/webpack/components/ParameterSelection/ParameterSelection.scss +3 -0
  55. data/webpack/components/ParameterSelection/ParameterSelectionActions.js +294 -0
  56. data/webpack/components/ParameterSelection/ParameterSelectionConstants.js +31 -0
  57. data/webpack/components/ParameterSelection/ParameterSelectionHelper.js +52 -0
  58. data/webpack/components/ParameterSelection/ParameterSelectionReducer.js +175 -0
  59. data/webpack/components/ParameterSelection/ParameterSelectionSelectors.js +15 -0
  60. data/webpack/components/ParameterSelection/__fixtures__/parameterSelection.fixtures.js +162 -0
  61. data/webpack/components/ParameterSelection/__fixtures__/parameterSelectionData_1.fixtures.js +194 -0
  62. data/webpack/components/ParameterSelection/__fixtures__/parameterSelectionReducer.fixtures.js +127 -0
  63. data/webpack/components/ParameterSelection/__tests__/ParameterSelection.test.js +48 -0
  64. data/webpack/components/ParameterSelection/__tests__/ParameterSelectionReducer.test.js +150 -0
  65. data/webpack/components/ParameterSelection/__tests__/ParameterSelectionSelectors.test.js +47 -0
  66. data/webpack/components/ParameterSelection/__tests__/__snapshots__/ParameterSelection.test.js.snap +454 -0
  67. data/webpack/components/ParameterSelection/__tests__/__snapshots__/ParameterSelectionReducer.test.js.snap +2265 -0
  68. data/webpack/components/ParameterSelection/__tests__/__snapshots__/ParameterSelectionSelectors.test.js.snap +209 -0
  69. data/webpack/components/ParameterSelection/index.js +39 -0
  70. data/webpack/index.js +8 -0
  71. data/webpack/reducer.js +7 -0
  72. data/webpack/test_setup.js +11 -0
  73. metadata +206 -0
@@ -0,0 +1,46 @@
1
+ <%
2
+ if @app_instance.app_definition_id.blank?
3
+ json = {
4
+ "mode": "newInstance",
5
+ "organization": current_organization,
6
+ "location": current_location,
7
+ "applications": @applications,
8
+ "loadParameterSelectionUrl": ui_acd_app_path("__id__"),
9
+ "loadForemanDataUrl": ui_acd_fdata_path("__id__"),
10
+ }
11
+ else
12
+ json = {
13
+ "mode": "editInstance",
14
+ "organization": current_organization,
15
+ "location": current_location,
16
+ "loadForemanDataUrl": ui_acd_fdata_path("__id__"),
17
+ "appDefinition": {
18
+ "id": @app_instance.app_definition.id,
19
+ "name": @app_instance.app_definition.name,
20
+ "hostgroup_id": @app_instance.app_definition.hostgroup_id,
21
+ },
22
+ "parameters": JSON.parse(@app_instance.parameters),
23
+ }
24
+ end
25
+ %>
26
+
27
+ <%= form_for @app_instance, :url => (@app_instance.new_record? ? app_instances_path : app_instance_path(:id => @app_instance.id)) do |f| %>
28
+ <%= base_errors_for @app_instance %>
29
+ <ul class="nav nav-tabs" data-tabs="tabs">
30
+ <li class="active"><a href="#primary" data-toggle="tab"><%= _('Application Instances') %></a></li>
31
+ </ul>
32
+
33
+ <div class="tab-content">
34
+ <div class="tab-pane active" id="primary">
35
+ <%= text_f f, :name %>
36
+ <%= text_f f, :description %>
37
+
38
+ <div id='param-selection'></div>
39
+ <%= mount_react_component('ParameterSelection', "#param-selection", json.to_json) %>
40
+ </div>
41
+ </div>
42
+ </div>
43
+
44
+ <%= submit_or_cancel f %>
45
+ <% end %>
46
+
@@ -0,0 +1,11 @@
1
+ <% title(_('Edit Application Instance %s') % @app_instance) %>
2
+
3
+ <% content_for(:javascripts) do %>
4
+ <%= webpacked_plugins_js_for :foreman_acd %>
5
+ <% end %>
6
+ <% content_for(:stylesheets) do %>
7
+ <%= webpacked_plugins_css_for :foreman_acd %>
8
+ <% end %>
9
+
10
+ <%= render :partial => 'form' %>
11
+
@@ -0,0 +1,30 @@
1
+ <% title _('Application Instances') %>
2
+
3
+ <% title_actions button_group(new_link(_('New Application Instance'))) %>
4
+
5
+ <table class="table table-bordered table-striped">
6
+ <tr>
7
+ <th><%= sort :name, :as => s_('AppInstance|Name') %></th>
8
+ <th><%= sort :application, :as => _('Application'), :default => 'DESC' %></th>
9
+ <th><%= _('Description') %></th>
10
+ <th></th>
11
+ </tr>
12
+ <% for app_instance in @app_instances %>
13
+ <tr>
14
+ <td><%=link_to_if_authorized h(app_instance.name), hash_for_edit_app_instance_path(:id => app_instance).merge(:auth_object => app_instance, :authorizer => authorizer) %></td>
15
+ <td><%= app_instance.app_definition %></td>
16
+ <td><%= app_instance.description %></td>
17
+ <td>
18
+ <%= action_buttons(display_delete_if_authorized(hash_for_app_instance_path(:id => app_instance).merge(:auth_object => app_instance, :authorizer => authorizer),
19
+ :data => { 'confirm': _('Delete %s?') % app_instance.name }),
20
+ display_link_if_authorized(_("Deploy"), hash_for_deploy_app_instance_path(:id => app_instance), :method => :post,
21
+ :title => _("Deploy the application #{app_instance}"))
22
+ ) %>
23
+ </td>
24
+ </tr>
25
+ <% end %>
26
+ </table>
27
+
28
+ <%= page_entries_info @app_instances %>
29
+ <%= will_paginate @app_instances %>
30
+
@@ -0,0 +1,11 @@
1
+ <% title _('New Application Instance') %>
2
+
3
+ <% content_for(:javascripts) do %>
4
+ <%= webpacked_plugins_js_for :foreman_acd %>
5
+ <% end %>
6
+ <% content_for(:stylesheets) do %>
7
+ <%= webpacked_plugins_css_for :foreman_acd %>
8
+ <% end %>
9
+
10
+ <%= render :partial => 'form' %>
11
+
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ child @app_data['app_definition'] => :app_definition do
4
+ extends 'ui_acd/app_definition'
5
+ end
6
+
7
+ child @app_data['fdata'] => :fdata do
8
+ extends 'ui_acd/fdata'
9
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ object @app_definition
4
+
5
+ attributes :id, :name, :description, :hostgroup_id, :parameters, :created_at, :updated_at
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ collection @computeprofiles
4
+ attributes :id, :name
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ collection @domains
4
+ attributes :id, :name
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ collection @environments
4
+ attributes :id, :name
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ object @fdata
4
+ attribute :hostgroup_id
5
+
6
+ child :environments => :environments do
7
+ extends 'ui_acd/environment'
8
+ end
9
+
10
+ child :lifecycle_environments => :lifecycle_environments do
11
+ extends 'ui_acd/lifecycle_environment'
12
+ end
13
+
14
+ child :domains => :domains do
15
+ extends 'ui_acd/domain'
16
+ end
17
+
18
+ child :computeprofiles => :computeprofiles do
19
+ extends 'ui_acd/computeprofile'
20
+ end
21
+
22
+ child :ptables => :ptables do
23
+ extends 'ui_acd/ptable'
24
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ collection @lifecycle_environments
4
+ attributes :id, :name
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ collection @ptables
4
+ attributes :id, :name
data/config/routes.rb ADDED
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ Rails.application.routes.draw do
4
+ scope :acd, :path => '/acd' do
5
+ resources :app_definitions, :controller => 'foreman_acd/app_definitions' do
6
+ collection do
7
+ get 'auto_complete_search'
8
+ end
9
+ end
10
+
11
+ resources :app_instances, :controller => 'foreman_acd/app_instances' do
12
+ collection do
13
+ get 'auto_complete_search'
14
+ end
15
+
16
+ member do
17
+ post 'deploy'
18
+ end
19
+ end
20
+
21
+ get 'ui_acd_app/:id', :to => 'ui_acd#app', :constraints => { :id => /[\w\.-]+/ }, :as => :ui_acd_app
22
+ get 'ui_acd_fdata/:id', :to => 'ui_acd#fdata', :constraints => { :id => /[\w\.-]+/ }, :as => :ui_acd_fdata
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Adding app_definitions db table
4
+ class CreateAppDefinitions < ActiveRecord::Migration[5.2]
5
+ def up
6
+ create_table :app_definitions do |t|
7
+ t.string :name, :default => '', :null => false, :limit => 255, :unique => true
8
+ t.text :description
9
+ t.column :hostgroup_id, :integer
10
+ t.text :parameters
11
+ t.timestamps :null => true
12
+ end
13
+ add_foreign_key :app_definitions, :hostgroups
14
+ end
15
+
16
+ def down
17
+ drop_table :app_definitions
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Adding app_definitions db table
4
+ class CreateAppInstances < ActiveRecord::Migration[5.2]
5
+ def up
6
+ create_table :app_instances do |t|
7
+ t.string :name, :default => '', :null => false, :limit => 255, :unique => true
8
+ t.column :app_definition_id, :integer, :null => false
9
+ t.text :description
10
+ t.text :parameters
11
+ t.timestamps :null => true
12
+ end
13
+ add_foreign_key :app_instances, :app_definitions
14
+ end
15
+
16
+ def down
17
+ drop_table :app_instances
18
+ end
19
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ForemanAcd
4
+ # This engine connects ForemanAcd with Foreman core
5
+ class Engine < ::Rails::Engine
6
+ engine_name 'foreman_acd'
7
+
8
+ config.autoload_paths += Dir["#{config.root}/app/controllers/foreman_acd/concerns"]
9
+ config.autoload_paths += Dir["#{config.root}/app/helpers"]
10
+ config.autoload_paths += Dir["#{config.root}/app/models/foreman_acd/concerns"]
11
+ config.autoload_paths += Dir["#{config.root}/app/models/parameters"]
12
+ config.autoload_paths += Dir["#{config.root}/app/overrides"]
13
+ config.autoload_paths += Dir["#{config.root}/app/services"]
14
+ config.autoload_paths += Dir["#{config.root}/app/lib"]
15
+
16
+ # Add any db migrations
17
+ initializer 'foreman_acd.load_app_instance_data' do |app|
18
+ ForemanAcd::Engine.paths['db/migrate'].existent.each do |path|
19
+ app.config.paths['db/migrate'] << path
20
+ end
21
+ end
22
+
23
+ initializer 'foreman_acd.apipie' do
24
+ Apipie.configuration.checksum_path += ['/acd/api/']
25
+ end
26
+
27
+ rake_tasks do
28
+ Rake::Task['db:seed'].enhance do
29
+ ForemanAcd::Engine.load_seed
30
+ end
31
+ end
32
+
33
+ initializer 'foreman_acd.register_gettext', :after => :load_config_initializers do
34
+ locale_dir = File.join(File.expand_path('../..', __dir__), 'locale')
35
+ locale_domain = 'foreman_acd'
36
+ Foreman::Gettext::Support.add_text_domain locale_domain, locale_dir
37
+ end
38
+
39
+ initializer 'foreman_acd.register_plugin', :before => :finisher_hook do
40
+ require 'foreman_acd/plugin'
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ Foreman::Plugin.register :foreman_acd do
4
+ requires_foreman '>= 1.19'
5
+
6
+ apipie_documented_controllers ["#{ForemanAcd::Engine.root}/app/controllers/foreman_acd/api/v2/*.rb"]
7
+
8
+ # Menus
9
+ divider :top_menu, :parent => :configure_menu, :caption => 'Applications'
10
+ menu :top_menu, :app_definitions,
11
+ :url_hash => { :controller => :'foreman_acd/app_definitions', :action => :index },
12
+ :caption => 'App Definitions',
13
+ :parent => :configure_menu
14
+
15
+ menu :top_menu, :app_instances,
16
+ :url_hash => { :controller => :'foreman_acd/app_instances', :action => :index },
17
+ :caption => 'App Instances',
18
+ :parent => :configure_menu
19
+
20
+ # Add permissions
21
+ security_block :foreman_acd do
22
+ permission :create_app_definitions,
23
+ { :'foreman_acd/app_definitions' => [:new, :create],
24
+ :'foreman_acd/api/v2/app_definitions' => [:create] },
25
+ :resource_type => 'ForemanAcd::AppDefinition'
26
+
27
+ permission :view_app_definitions,
28
+ { :'foreman_acd/app_definitions' => [:index, :show, :auto_complete_search],
29
+ :'foreman_acd/api/v2/app_definitions' => [:index, :show] },
30
+ :resource_type => 'ForemanAcd::AppDefinition'
31
+
32
+ permission :edit_app_definitions,
33
+ { :'foreman_acd/app_definitions' => [:update, :edit],
34
+ :'foreman_acd/api/v2/app_definitions' => [:update] },
35
+ :resource_type => 'ForemanAcd::AppDefinition'
36
+
37
+ permission :destroy_app_definitions,
38
+ { :'foreman_acd/app_definitions' => [:destroy],
39
+ :'foreman_acd/api/v2/app_definitions' => [:destroy] },
40
+ :resource_type => 'ForemanAcd::AppDefinition'
41
+
42
+ permission :create_app_instances,
43
+ { :'foreman_acd/app_instances' => [:new, :create],
44
+ :'foreman_acd/api/v2/app_instances' => [:create] },
45
+ :resource_type => 'ForemanAcd::AppInstance'
46
+
47
+ permission :view_app_instances,
48
+ { :'foreman_acd/app_instances' => [:index, :show, :auto_complete_search],
49
+ :'foreman_acd/api/v2/app_instances' => [:index, :show] },
50
+ :resource_type => 'ForemanAcd::AppInstance'
51
+
52
+ permission :edit_app_instances,
53
+ { :'foreman_acd/app_instances' => [:update, :edit],
54
+ :'foreman_acd/api/v2/app_instances' => [:update] },
55
+ :resource_type => 'ForemanAcd::AppInstance'
56
+
57
+ permission :destroy_app_instances,
58
+ { :'foreman_acd/app_instances' => [:destroy],
59
+ :'foreman_acd/api/v2/app_instances' => [:destroy] },
60
+ :resource_type => 'ForemanAcd::AppInstance'
61
+
62
+ permission :deploy_app_instances,
63
+ { :'foreman_acd/app_instances' => [:deploy],
64
+ :'foreman_acd/api/v2/app_instances' => [:deploy] },
65
+ :resource_type => 'ForemanAcd::AppInstance'
66
+ end
67
+
68
+ # Manager Role
69
+ role 'Application Centric Deployment Manager', [:create_app_definitions,
70
+ :view_app_definitions,
71
+ :edit_app_definitions,
72
+ :destroy_app_definitions]
73
+
74
+ # User Role
75
+ role 'Application Centric Deployment User', [:create_app_instances,
76
+ :view_app_instances,
77
+ :edit_app_instances,
78
+ :destroy_app_instances,
79
+ :deploy_app_instances]
80
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ForemanAcd
4
+ VERSION = '0.0.1'
5
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'foreman_acd/engine'
4
+
5
+ # Module required to start the Foreman Rails engine
6
+ module ForemanAcd
7
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rake/testtask'
4
+
5
+ # Tasks
6
+ namespace :foreman_acd do
7
+ namespace :example do
8
+ desc 'Example Task'
9
+ task :task => :environment do
10
+ # Task goes here
11
+ end
12
+ end
13
+ end
14
+
15
+ # Tests
16
+ namespace :test do
17
+ desc 'Test ForemanAcd'
18
+ Rake::TestTask.new(:foreman_acd) do |t|
19
+ test_dir = File.join(File.dirname(__FILE__), '../..', 'test')
20
+ t.libs << ['test', test_dir]
21
+ t.pattern = "#{test_dir}/**/*_test.rb"
22
+ t.verbose = true
23
+ t.warning = false
24
+ end
25
+ end
26
+
27
+ namespace :foreman_acd do
28
+ task :rubocop do
29
+ begin
30
+ require 'rubocop/rake_task'
31
+ RuboCop::RakeTask.new(:rubocop_foreman_acd) do |task|
32
+ task.patterns = ["#{ForemanAcd::Engine.root}/app/**/*.rb",
33
+ "#{ForemanAcd::Engine.root}/lib/**/*.rb",
34
+ "#{ForemanAcd::Engine.root}/test/**/*.rb"]
35
+ end
36
+ rescue StandardError
37
+ puts 'Rubocop not loaded.'
38
+ end
39
+
40
+ Rake::Task['rubocop_foreman_acd'].invoke
41
+ end
42
+ end
43
+
44
+ Rake::Task[:test].enhance ['test:foreman_acd']
45
+
46
+ load 'tasks/jenkins.rake'
47
+ Rake::Task['jenkins:unit'].enhance ['test:foreman_acd', 'foreman_acd:rubocop'] if Rake::Task.task_defined?(:'jenkins:unit')
data/locale/Makefile ADDED
@@ -0,0 +1,60 @@
1
+ #
2
+ # Makefile for PO merging and MO generation. More info in the README.
3
+ #
4
+ # make all-mo (default) - generate MO files
5
+ # make check - check translations using translate-tool
6
+ # make tx-update - download and merge translations from Transifex
7
+ # make clean - clean everything
8
+ #
9
+ DOMAIN = foreman_acd
10
+ VERSION = $(shell ruby -e 'require "rubygems";spec = Gem::Specification::load(Dir.glob("../*.gemspec")[0]);puts spec.version')
11
+ POTFILE = $(DOMAIN).pot
12
+ MOFILE = $(DOMAIN).mo
13
+ POFILES = $(shell find . -name '$(DOMAIN).po')
14
+ MOFILES = $(patsubst %.po,%.mo,$(POFILES))
15
+ POXFILES = $(patsubst %.po,%.pox,$(POFILES))
16
+ EDITFILES = $(patsubst %.po,%.edit.po,$(POFILES))
17
+
18
+ %.mo: %.po
19
+ mkdir -p $(shell dirname $@)/LC_MESSAGES
20
+ msgfmt -o $(shell dirname $@)/LC_MESSAGES/$(MOFILE) $<
21
+
22
+ # Generate MO files from PO files
23
+ all-mo: $(MOFILES)
24
+
25
+ # Check for malformed strings
26
+ %.pox: %.po
27
+ msgfmt -c $<
28
+ pofilter --nofuzzy -t variables -t blank -t urls -t emails -t long -t newlines \
29
+ -t endwhitespace -t endpunc -t puncspacing -t options -t printf -t validchars --gnome $< > $@
30
+ cat $@
31
+ ! grep -q msgid $@
32
+
33
+ %.edit.po:
34
+ touch $@
35
+
36
+ check: $(POXFILES)
37
+
38
+ # Unify duplicate translations
39
+ uniq-po:
40
+ for f in $(shell find ./ -name "*.po") ; do \
41
+ msguniq $$f -o $$f ; \
42
+ done
43
+
44
+ tx-pull: $(EDITFILES)
45
+ tx pull -f
46
+ for f in $(EDITFILES) ; do \
47
+ sed -i 's/^\("Project-Id-Version: \).*$$/\1$(DOMAIN) $(VERSION)\\n"/' $$f; \
48
+ done
49
+
50
+ tx-update: tx-pull
51
+ @echo
52
+ @echo Run rake plugin:gettext[$(DOMAIN)] from the Foreman installation, then make -C locale mo-files to finish
53
+ @echo
54
+
55
+ mo-files: $(MOFILES)
56
+ git add $(POFILES) $(POTFILE) ../locale/*/LC_MESSAGES
57
+ git commit -m "i18n - pulling from tx"
58
+ @echo
59
+ @echo Changes commited!
60
+ @echo
@@ -0,0 +1,19 @@
1
+ # foreman_acd
2
+ #
3
+ # This file is distributed under the same license as foreman_acd.
4
+ #
5
+ #, fuzzy
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: version 0.0.1\n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2014-08-20 08:46+0100\n"
11
+ "PO-Revision-Date: 2014-08-20 08:54+0100\n"
12
+ "Last-Translator: Foreman Team <foreman-dev@googlegroups.com>\n"
13
+ "Language-Team: Foreman Team <foreman-dev@googlegroups.com>\n"
14
+ "Language: \n"
15
+ "MIME-Version: 1.0\n"
16
+ "Content-Type: text/plain; charset=UTF-8\n"
17
+ "Content-Transfer-Encoding: 8bit\n"
18
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
+
@@ -0,0 +1,19 @@
1
+ # foreman_acd
2
+ #
3
+ # This file is distributed under the same license as foreman_acd.
4
+ #
5
+ #, fuzzy
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: version 0.0.1\n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2014-08-20 08:46+0100\n"
11
+ "PO-Revision-Date: 2014-08-20 08:46+0100\n"
12
+ "Last-Translator: Foreman Team <foreman-dev@googlegroups.com>\n"
13
+ "Language-Team: Foreman Team <foreman-dev@googlegroups.com>\n"
14
+ "Language: \n"
15
+ "MIME-Version: 1.0\n"
16
+ "Content-Type: text/plain; charset=UTF-8\n"
17
+ "Content-Transfer-Encoding: 8bit\n"
18
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
19
+
data/locale/gemspec.rb ADDED
@@ -0,0 +1,2 @@
1
+ # Matches foreman_acd.gemspec
2
+ _('TODO: Description of ForemanAcd.')
data/package.json ADDED
@@ -0,0 +1,121 @@
1
+ {
2
+ "name": "foreman_acd",
3
+ "version": "0.5.0",
4
+ "description": "foreman application centric deployment",
5
+ "main": "index.js",
6
+ "directories": {
7
+ "test": "test"
8
+ },
9
+ "dependencies": {
10
+ "jquery": "~2.2.4",
11
+ "c3": "^0.4.11",
12
+ "humanize-duration": "^3.20.1",
13
+ "react-intl": "^2.8.0"
14
+ },
15
+ "devDependencies": {
16
+ "@storybook/addon-actions": "^5.0.1",
17
+ "@storybook/addon-knobs": "^5.0.1",
18
+ "@storybook/react": "^5.0.1",
19
+ "@theforeman/vendor-dev": "^1.4.0",
20
+ "classnames": "^2.2.5",
21
+ "babel-eslint": "^8.2.1",
22
+ "babel-jest": "^23.6.0",
23
+ "babel-loader": "^7.1.1",
24
+ "babel-plugin-dynamic-import-node": "^2.0.0",
25
+ "babel-plugin-module-resolver": "^3.2.0",
26
+ "babel-plugin-lodash": "^3.3.2",
27
+ "babel-plugin-syntax-dynamic-import": "^6.18.0",
28
+ "babel-plugin-transform-class-properties": "^6.24.1",
29
+ "babel-plugin-transform-object-assign": "^6.22.0",
30
+ "babel-plugin-transform-object-rest-spread": "^6.26.0",
31
+ "babel-polyfill": "^6.26.0",
32
+ "babel-preset-env": "^1.6.0",
33
+ "babel-preset-react": "^6.5.0",
34
+ "enzyme": "^3.7.0",
35
+ "enzyme-adapter-react-16": "^1.4.0",
36
+ "enzyme-to-json": "^3.2.1",
37
+ "eslint": "^4.18.1",
38
+ "eslint-config-airbnb": "^16.0.0",
39
+ "eslint-plugin-import": "^2.8.0",
40
+ "eslint-plugin-jest": "^21.2.0",
41
+ "eslint-plugin-jsx-a11y": "^6.0.2",
42
+ "eslint-plugin-patternfly-react": "^0.2.1",
43
+ "eslint-plugin-react": "^7.4.0",
44
+ "identity-obj-proxy": "^3.0.0",
45
+ "lodash": "^4.17.11",
46
+ "jest-cli": "^23.6.0",
47
+ "jest-prop-type-error": "^1.1.0",
48
+ "patternfly": "^3.58.0",
49
+ "patternfly-react": "^2.31.0",
50
+ "prettier": "^1.16.4",
51
+ "prop-types": "^15.6.2",
52
+ "react": "^16.8.1",
53
+ "react-redux": "^5.0.7",
54
+ "react-redux-test-utils": "^0.1.1",
55
+ "react-bootstrap": "^0.32.1",
56
+ "react-dom": "^16.6.3",
57
+ "react-json-tree": "^0.11.0",
58
+ "redux": "^3.7.2",
59
+ "redux-thunk": "^2.3.0",
60
+ "reselect": "^3.0.1",
61
+ "seamless-immutable": "^7.1.3",
62
+ "sortabular": "~1.5.1",
63
+ "table-resolver": "~3.3.0"
64
+ },
65
+ "scripts": {
66
+ "test": "node node_modules/.bin/jest --no-cache"
67
+ },
68
+ "repository": {
69
+ "type": "git",
70
+ "url": "git+https://github.com/ATIX-AG/foreman_acd.git"
71
+ },
72
+ "author": "",
73
+ "license": "ISC",
74
+ "bugs": {
75
+ "url": "https://atix.de"
76
+ },
77
+ "homepage": "https://atix.de",
78
+ "jest": {
79
+ "verbose": true,
80
+ "testMatch": [
81
+ "**/*.test.js"
82
+ ],
83
+ "testPathIgnorePatterns": [
84
+ ".local",
85
+ ".bundle",
86
+ "/node_modules/",
87
+ "<rootDir>/foreman/"
88
+ ],
89
+ "moduleDirectories": [
90
+ "node_modules",
91
+ "webpack"
92
+ ],
93
+ "testURL": "http://localhost/",
94
+ "collectCoverage": true,
95
+ "collectCoverageFrom": [
96
+ "webpack/**/*.js",
97
+ "!webpack/index.js",
98
+ "!webpack/test_setup.js",
99
+ "!webpack/**/bundle*",
100
+ "!webpack/stories/**",
101
+ "!webpack/**/*stories.js"
102
+ ],
103
+ "coverageReporters": [
104
+ "lcov"
105
+ ],
106
+ "moduleNameMapper": {
107
+ "^.+\\.(png|gif|css|scss)$": "identity-obj-proxy"
108
+ },
109
+ "globals": {
110
+ "__testing__": true
111
+ },
112
+ "transform": {
113
+ "^.+\\.js$": "babel-jest"
114
+ },
115
+ "setupFiles": [
116
+ "raf/polyfill",
117
+ "jest-prop-type-error",
118
+ "./webpack/test_setup.js"
119
+ ]
120
+ }
121
+ }