Code Monkey home page Code Monkey logo

pipeliner's Introduction

Pipeliner

Slack Pipeliner Roadmap

What is Pipeliner

Pipeliner is simple MacOS Big Sur widget app for checking pipeline status. Project consists of two apps: First, main application enables user to save configuration of repository. This configiration is saved on users Mac and is use to fetch pipelines data from GitLab/GitHub/BitBucket API.

Second part of application is widget which shows status of (number of pipelines depends on widget selected size) last pipelines.

It is created in Swift 5 and Swift UI using WidgetKit.

What version control services are supported?

Language Supported
GitLab βœ…
GitHub βœ…
BitBucket 🚧

Table of Contents

Getting Started 🏁

Dependencies

Installation

  1. Fork & Clone the repository
  2. Start copy pipeliner.app in dist folder to Application folder and then configure & run
  3. Add Widget in the widget control menu

Support πŸ¦Έβ€β™€οΈ πŸ¦Έβ€β™‚οΈ

You can find known issues here Didn't you find what you expected? Contact us via our public Slack

Issues

You can find issues here

Contributing πŸ‘©β€πŸ’» πŸ‘¨β€πŸ’»

Feel free to contribute to our Pipeliner. Please follow the Contribution Guide.

Roadmap

See our public roadmap.

License πŸ“

The Pipeliner open source project is licensed under the MIT.

pipeliner's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

pipeliner's Issues

Add BitBucket configuration UI

Add UI for setting BitBucket configuration to pipeliner ContentView file. User can choose service (GitLab, GitHub, BitBucket) using Swift UI Picker. After choosing BitBucket user can enter configuration for this type of service. Every TextField should have clear label. Optionally label can contain Link to online description (same as GitLab token TextField)

Depends on #2

Refactor way of counting number of fetched pipelines

Current state: number of pipelines which will be fetched per repository is affected by total pipelines count and number of configurations. This approach can lead to missing pipelines. We need to fetch from every repository number of actually displayed pipelines.

Change method getPipelines in class PipelinerService. Parameter pipelineCount will be used as parameter in methods for fetching data eg. getPipelines in GitLabService.

Refactor PipelinerService to work with pull requests

Refactor and rename method getPipelines in class PipelinerService to return array of Result objects containing attributes:

  • type: Enum - type of data in data attribute, it can have values pipeline or pullRequest
  • data: PipelineResult or PullRequestResult - PullRequestResult object contains:
    • id: Int
    • name: String - name of pull request
    • url: String - web url to pull request
    • state: Enum - state of pull request inProgress or merged or closed
    • age: String - age of pull request formated using DateService and createdAt attribute
    • duration: String - duration of pull request formated using DateService and lastActivityAt attribute
    • repositoryName: String - name of pull request repository

Depends on #12, #13 and #14

Add GitLab pull request support

Add method getPullRequests to class GitLabService with parameters: config: Config and pullRequestsCount: Int. This method will return array of PullRequest objects containing attributes:

  • id: Int
  • name: String - name of pull request
  • url: String - web url to pull request
  • state: Enum - state of pull request inProgress or merged or closed
  • cratedAt: String - datetime string of pull request creation
  • lastActivityAt: String - datetime string of pull request last activity (including merging or closing)

In this array will be objects with newest lastActivityAt parameter and length of array is equal to parameter pullRequestsCount.

During implementation you can use GilLab api documentation

Pipeliner service can work with multiple version control services

PipelinerService holds instances of GitLabService, DateService and newly added GitHubService of BitBucketService. Existing method getProjectName has parameter config which contains type of version control service and data for making project name API call.

Method getPipelines can work with multiple version control services. It uses saved configurations to distinguish version control service.

Depends on #2 and #1

Add GitHub pull request support

Add method getPullRequests to class GitHubService with parameters: config: Config and pullRequestsCount: Int. This method will return array of PullRequest objects containing attributes:

  • id: Int
  • name: String - name of pull request
  • url: String - web url to pull request
  • state: Enum - state of pull request inProgress or merged or closed
  • cratedAt: String - datetime string of pull request creation
  • lastActivityAt: String - datetime string of pull request last activity (including merging or closing)
    In this array will be objects with newest lastActivityAt parameter and length of array is equal to parameter pullRequestsCount.

During implementation you can use GilHub api documentation
Depends on #1

Improve error handling

Modify methods in PipelinerService to pass error messages to UI.
Add ModalView which informs user about error during API calls for project name and project pipelines.

Improve UX in light mode

Improve colors when using "light mode" on your Mac.

  • Color of TextField text, labels and icons should be more contrasting (black).
  • Text in TextField after saving configuration should disappear.
  • Background color should be white
  • Save button should have label.

Current state:
SnΓ­mek obrazovky 2020-09-18 vΒ 13 38 45

SnΓ­mek obrazovky 2020-09-18 vΒ 13 38 29

Add GitHub configuration UI

Add UI for setting GitHub configuration to pipeliner ContentView file. User can choose service (GitLab, GitHub, BitBucket) using Swift UI Picker. After choosing GitHub user can enter configuration for this type of service. Every TextField should have clear label. Optionally label can contain Link to online description (same as GitLab token TextField)

Depends on #1

UI can display pull requests

Table of results in main app and in widget can display array of Result object. Result is described here. Pull request data are presented similarly to pipeline data:

row

repositoryName is in uppercase on leftest side of the row. Underneath is name in gray color. duration and age is on the right side of the row. state is presented using icons - xmark or checkmark for closed or merged pull requests and clock.arrow.circlepath for inProgress state. url! is implemented same way as pipeline url`.

Depends on #15

Add BitBucket pull request support

Add method getPullRequests to class BiBucketService with parameters: config: Config and pullRequestsCount: Int. This method will return array of PullRequest objects containing attributes:

  • id: Int
  • name: String - name of pull request
  • url: String - web url to pull request
  • state: Enum - state of pull request inProgress or merged or closed
  • cratedAt: String - datetime string of pull request creation
  • lastActivityAt: String - datetime string of pull request last activity (including merging or closing)
    In this array will be objects with newest lastActivityAt parameter and length of array is equal to parameter pullRequestsCount.

During implementation you can use BitBucket api documentation
Depends on #2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.