semaph 0.1.0 → 0.6.0

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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.rubocop.yml +18 -0
  4. data/.semaphore/semaphore.yml +23 -0
  5. data/.tool-versions +1 -0
  6. data/Gemfile +1 -1
  7. data/Gemfile.lock +55 -0
  8. data/README.md +85 -11
  9. data/Rakefile +4 -1
  10. data/exe/semaph +5 -0
  11. data/lib/semaph.rb +17 -1
  12. data/lib/semaph/api.rb +94 -0
  13. data/lib/semaph/commands.rb +63 -0
  14. data/lib/semaph/commands/reload_command.rb +17 -0
  15. data/lib/semaph/commands/rerun_workflow_command.rb +16 -0
  16. data/lib/semaph/commands/stop_workflow_command.rb +16 -0
  17. data/lib/semaph/commands/visit_url_command.rb +16 -0
  18. data/lib/semaph/formatting.rb +9 -0
  19. data/lib/semaph/model/job.rb +101 -0
  20. data/lib/semaph/model/job_collection.rb +47 -0
  21. data/lib/semaph/model/pipeline.rb +48 -0
  22. data/lib/semaph/model/pipeline_collection.rb +20 -0
  23. data/lib/semaph/model/project.rb +34 -0
  24. data/lib/semaph/model/project_collection.rb +19 -0
  25. data/lib/semaph/model/workflow.rb +48 -0
  26. data/lib/semaph/model/workflow_collection.rb +19 -0
  27. data/lib/semaph/shells/organisation/organisation_shell.rb +33 -0
  28. data/lib/semaph/shells/organisation/projects_list_command.rb +21 -0
  29. data/lib/semaph/shells/organisation/projects_select_command.rb +26 -0
  30. data/lib/semaph/shells/organisations/organisations_list_command.rb +20 -0
  31. data/lib/semaph/shells/organisations/organisations_select_command.rb +25 -0
  32. data/lib/semaph/shells/organisations/organisations_shell.rb +24 -0
  33. data/lib/semaph/shells/pipeline/job_log_command.rb +44 -0
  34. data/lib/semaph/shells/pipeline/job_log_grep_command.rb +28 -0
  35. data/lib/semaph/shells/pipeline/jobs_list_command.rb +21 -0
  36. data/lib/semaph/shells/pipeline/jobs_poll_command.rb +62 -0
  37. data/lib/semaph/shells/pipeline/pipeline_shell.rb +45 -0
  38. data/lib/semaph/shells/project/project_shell.rb +61 -0
  39. data/lib/semaph/shells/project/workflows_list_command.rb +24 -0
  40. data/lib/semaph/shells/project/workflows_select_command.rb +31 -0
  41. data/lib/semaph/shells/workflow/pipelines_list_command.rb +21 -0
  42. data/lib/semaph/shells/workflow/pipelines_select_command.rb +30 -0
  43. data/lib/semaph/shells/workflow/workflow_shell.rb +35 -0
  44. data/lib/semaph/version.rb +1 -1
  45. data/semaph.gemspec +12 -7
  46. metadata +115 -7
@@ -0,0 +1,21 @@
1
+ module Semaph
2
+ module Shells
3
+ module Workflow
4
+ class PipelinesListCommand
5
+ attr_reader :usage, :help
6
+
7
+ def initialize(pipeline_collection)
8
+ @pipeline_collection = pipeline_collection
9
+ @help = "list pipelines"
10
+ end
11
+
12
+ def execute(_whatever)
13
+ @pipeline_collection.reload
14
+ @pipeline_collection.all.each_with_index do |pipeline, index|
15
+ puts "#{index + 1} #{pipeline.description}"
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,30 @@
1
+ require "semaph/shells/pipeline/pipeline_shell"
2
+
3
+ module Semaph
4
+ module Shells
5
+ module Workflow
6
+ class PipelinesSelectCommand
7
+ attr_reader :usage, :help
8
+
9
+ def initialize(pipeline_collection)
10
+ @pipeline_collection = pipeline_collection
11
+ @usage = "<pipeline index>"
12
+ @help = "choose pipeline by index"
13
+ end
14
+
15
+ def execute(index_string)
16
+ index = index_string.to_i - 1
17
+
18
+ pipeline = @pipeline_collection.all[index]
19
+
20
+ unless pipeline
21
+ puts "There is no pipeline at position #{index}"
22
+ return
23
+ end
24
+
25
+ ::Semaph::Shells::Pipeline::PipelineShell.new(pipeline).push
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,35 @@
1
+ require "semaph/commands"
2
+ require "semaph/shells/workflow/pipelines_list_command"
3
+ require "semaph/shells/workflow/pipelines_select_command"
4
+ require "shell_shock/context"
5
+
6
+ module Semaph
7
+ module Shells
8
+ module Workflow
9
+ class WorkflowShell
10
+ attr_reader :workflow
11
+
12
+ include ShellShock::Context
13
+
14
+ def initialize(workflow)
15
+ @workflow = workflow
16
+ project = @workflow.project
17
+ @prompt = "🏗 #{project.client.name} #{project.name} #{workflow.id} > "
18
+ add_commands
19
+ @list_command.execute("")
20
+ end
21
+
22
+ private
23
+
24
+ def add_commands
25
+ pipeline_collection = @workflow.pipeline_collection
26
+ @list_command = PipelinesListCommand.new(pipeline_collection)
27
+ add_command @list_command, "list-pipelines", "ls"
28
+ add_command PipelinesSelectCommand.new(pipeline_collection), "select-pipeline", "cd"
29
+ add_command ::Semaph::Commands::ReloadCommand.new, "reload" if ENV["SEMAPH_RELOAD"]
30
+ ::Semaph::Commands.workflow_commands(self, workflow)
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,3 +1,3 @@
1
1
  module Semaph
2
- VERSION = "0.1.0"
2
+ VERSION = "0.6.0".freeze
3
3
  end
@@ -1,4 +1,4 @@
1
- require_relative 'lib/semaph/version'
1
+ require_relative "lib/semaph/version"
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "semaph"
@@ -6,8 +6,8 @@ Gem::Specification.new do |spec|
6
6
  spec.authors = ["Mark Ryall"]
7
7
  spec.email = ["mark@ryall.name"]
8
8
 
9
- spec.summary = %q{client for semaphore 2}
10
- spec.description = %q{api client and shell for api}
9
+ spec.summary = "client for semaphore 2"
10
+ spec.description = "api client and shell for api"
11
11
  spec.homepage = "http://github.com/markryall/semaph"
12
12
  spec.license = "MIT"
13
13
  spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
@@ -16,12 +16,17 @@ Gem::Specification.new do |spec|
16
16
  spec.metadata["source_code_uri"] = spec.homepage
17
17
  spec.metadata["changelog_uri"] = spec.homepage
18
18
 
19
- # Specify which files should be added to the gem when it is released.
20
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
21
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
22
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
20
+ f.match(%r{^(test|spec|features)/})
23
21
  end
24
22
  spec.bindir = "exe"
25
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
24
  spec.require_paths = ["lib"]
25
+
26
+ spec.add_dependency "faraday"
27
+ spec.add_dependency "rainbow"
28
+ spec.add_dependency "shell_shock"
29
+
30
+ spec.add_development_dependency "pry"
31
+ spec.add_development_dependency "rubocop"
27
32
  end
metadata CHANGED
@@ -1,32 +1,140 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semaph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Ryall
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-29 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2020-06-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rainbow
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: shell_shock
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
13
83
  description: api client and shell for api
14
84
  email:
15
85
  - mark@ryall.name
16
- executables: []
86
+ executables:
87
+ - semaph
17
88
  extensions: []
18
89
  extra_rdoc_files: []
19
90
  files:
20
91
  - ".gitignore"
92
+ - ".rubocop.yml"
93
+ - ".semaphore/semaphore.yml"
94
+ - ".tool-versions"
21
95
  - ".travis.yml"
22
96
  - CODE_OF_CONDUCT.md
23
97
  - Gemfile
98
+ - Gemfile.lock
24
99
  - LICENSE.txt
25
100
  - README.md
26
101
  - Rakefile
27
102
  - bin/console
28
103
  - bin/setup
104
+ - exe/semaph
29
105
  - lib/semaph.rb
106
+ - lib/semaph/api.rb
107
+ - lib/semaph/commands.rb
108
+ - lib/semaph/commands/reload_command.rb
109
+ - lib/semaph/commands/rerun_workflow_command.rb
110
+ - lib/semaph/commands/stop_workflow_command.rb
111
+ - lib/semaph/commands/visit_url_command.rb
112
+ - lib/semaph/formatting.rb
113
+ - lib/semaph/model/job.rb
114
+ - lib/semaph/model/job_collection.rb
115
+ - lib/semaph/model/pipeline.rb
116
+ - lib/semaph/model/pipeline_collection.rb
117
+ - lib/semaph/model/project.rb
118
+ - lib/semaph/model/project_collection.rb
119
+ - lib/semaph/model/workflow.rb
120
+ - lib/semaph/model/workflow_collection.rb
121
+ - lib/semaph/shells/organisation/organisation_shell.rb
122
+ - lib/semaph/shells/organisation/projects_list_command.rb
123
+ - lib/semaph/shells/organisation/projects_select_command.rb
124
+ - lib/semaph/shells/organisations/organisations_list_command.rb
125
+ - lib/semaph/shells/organisations/organisations_select_command.rb
126
+ - lib/semaph/shells/organisations/organisations_shell.rb
127
+ - lib/semaph/shells/pipeline/job_log_command.rb
128
+ - lib/semaph/shells/pipeline/job_log_grep_command.rb
129
+ - lib/semaph/shells/pipeline/jobs_list_command.rb
130
+ - lib/semaph/shells/pipeline/jobs_poll_command.rb
131
+ - lib/semaph/shells/pipeline/pipeline_shell.rb
132
+ - lib/semaph/shells/project/project_shell.rb
133
+ - lib/semaph/shells/project/workflows_list_command.rb
134
+ - lib/semaph/shells/project/workflows_select_command.rb
135
+ - lib/semaph/shells/workflow/pipelines_list_command.rb
136
+ - lib/semaph/shells/workflow/pipelines_select_command.rb
137
+ - lib/semaph/shells/workflow/workflow_shell.rb
30
138
  - lib/semaph/version.rb
31
139
  - semaph.gemspec
32
140
  homepage: http://github.com/markryall/semaph
@@ -36,7 +144,7 @@ metadata:
36
144
  homepage_uri: http://github.com/markryall/semaph
37
145
  source_code_uri: http://github.com/markryall/semaph
38
146
  changelog_uri: http://github.com/markryall/semaph
39
- post_install_message:
147
+ post_install_message:
40
148
  rdoc_options: []
41
149
  require_paths:
42
150
  - lib
@@ -52,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
52
160
  version: '0'
53
161
  requirements: []
54
162
  rubygems_version: 3.1.2
55
- signing_key:
163
+ signing_key:
56
164
  specification_version: 4
57
165
  summary: client for semaphore 2
58
166
  test_files: []