Giter Club home page Giter Club logo

azext's Introduction

Hi there ๐Ÿ‘‹

Hi, I'm Joachim! Nice of you to stop by. Let me tell you a little bit about me and what I do.

I'm a Cloud Solutions Architect specializing in Azure, Azure DevOps and .NET.

My main focus areas revolves around:

  • Infrastructure Engineering
  • Developer Experience
  • Automation

I also enjoy the challenges that comes with desiging software and infrastructure architecture.

Projects

Currently not working on anything :(

My repositories

Like many other developers I have a lot of unfinished projects and a lot of them you fill find under this project. I tend to not delete any projects, but that does not mean I will come back to them. Feel free to submit an issue on any of them if you have any questions.

Azure Certified

Identity and Access Administrator Associate Azure Security Engineer Associate Azure Developer Associate
DevOps Engineer Expert Azure Solutions Architect Expert Security, Compliance, and Identity Fundamentals

CompTIA Certified

CompTIA CTT+ Classroom Trainer

azext's People

Contributors

joachimdalen avatar

Watchers

 avatar  avatar

Forkers

azure237

azext's Issues

Documentation generation

This issue outlines the specification for README and documentation generation.

Features

For this feature to be looked at as completed, the following must be implemented:

  • Generate usage from task.json files
    • Task parser
    • Condition parser
    • Replaceable handler
    • Generated views
      • Table view
      • Usage view
  • Support compiling multiple files to a single file
    • Asset handling
  • New configuration schema for README generation
    • New validation schema
  • New shared mapping configuration
    • New validation schema
    • New init command
  • New root command

๐Ÿš€ Usage generation

Scenario:

I have tasks that changes their input often. Having to update all the documentation is giving more work than necessary. I want to be able to specify a replaceable in my README files that will auto generate usage documentation based on the task.json file.

Replaceable

To allow the user to control where the usage documentation should be inserted we need an identifier that can be used multiple places.

Suggestion is a command format {{ #command[options] }} (inspired from Azure DevOps command logging)

Example for usage generation: {{ #usage[type=table;task=some-task]}}

Option Values Description
type One of table, example Defines what type of documentation should be generated. Table will generate a markdown table, while example will generate a YAML example.
task string Defines the key of a task mapping configuration. This identifies what task.json file should be used.

Condition parser

Since task input can have conditions we should have a parser that is able to parse these conditions to give accurate documentation.

๐Ÿš€ Multi file support

Scenario:

I have multiple tasks that each contains a README.md. When I publish my extensions I want all of these to be combined into a single README file. I want to be able to control the order of the inclusions.

Asset handling

README files might contain assets such as images. When copying and merging files we need a way to ensure asset files are moved to a correct location. The suggestion is to add a new configuration section that will map README files with their assets.

Example:

{
  // Location of the readme file
  "file": "./some-task/README.md",
  // Try by best effort to replace asset links after moving assets
  "resolveAssetLinks": true,
  // Assets for this README file
  "assets": [
    {
      // Where the asset is stored
      "source": "./some-task/images/*",
      // Where the asset should be stored after merge.
      // [output] is a variable that contains the output location of the README file and
      // will be replaced by the command.
      "dest": "[output]/images"
    },
    {
      "source": "./some-task/docs/image1.png",
      "dest": "[output]/images"
    }
  ]
}

๐Ÿš€ Shared mapping configuration

Multiple planned commands will need the same task mapping scheme. Therefor we should introduce a new global mapping configuration to store this in.

Currently the mapping only needs to include a key/value mapping between a task key and the location of the task.json file.

{
  "tasks": {
    "build": "../tasks/build-task/task.json",
    "analyse": "../tasks/analyse/task.json"
  }
}

This file should be stored as .azext/mappings.json

Commands

This feature introduces a new set of commands

  • azext docs help
  • azext docs new config
  • azext docs generate

Improve error handling

When an operation fails, it is some places thrown as an error and just logged other places. All errors/issues should be handled the same way and throw proper errors with exit codes.

Add change count to tag headers

Add count to tag headers

With counter

### ๐Ÿš€ Features (4)

Without counter

### ๐Ÿš€ Features

Replaceable: {{ changeCount }}

  • Add replaceable to generator

Add banner to root release

{
  "publishDate": "01-01-1970",
  "version": "0.0.0",
  "notes": "Optional notes",
  "summary": "Optional summary",
  "banner": {
      "type": "info", // Info - Warning - Error
      "message": "Some message"
  },
  "modules": [
    {
      "name": "module-name",
      "version": "0.0.0",
      "changes": [
        {
          "description": "Some change description",
          "type": "feature",
          "issue": 0,
          "pullRequest": 0
        }
      ]
    }
  ]
}

Renders

โš ๏ธ Some message
โ„น๏ธ Some message
โŒ Some message

Duplicated contributors

When a single contributor contributes more than once in a release, they are duplicated in the list

Changes with only a linked pull request gets the wrong link type

Issue

Add a new change with only a linked PR

{
    "publishDate": "2021-12-22",
    "version": "0.2.1",
    "modules": [
      {
        "name": "core",
        "version": "0.2.1",
        "changes": [
          {
            "type": "docs",
            "description": "Updated NPM readme",
            "pullRequest": 20
          }
        ]
      }
    ]
  },

Generated changelog:

# Changelog

## 0.2.1 (2021-12-22)

### ๐Ÿ“ Documentation (1)

#### `[email protected]`

- Updated NPM readme
  - Issue: [GH#20 - Fix readme for Npm](https://github.com/joachimdalen/azext/pull/20)

Should be:

# Changelog

## 0.2.1 (2021-12-22)

### ๐Ÿ“ Documentation (1)

#### `[email protected]`

- Updated NPM readme
  - PR: [GH#20 - Fix readme for Npm](https://github.com/joachimdalen/azext/pull/20)

Broken line: https://github.com/joachimdalen/azext/blob/master/src/modules/changelog/generator.ts#L212

Init command does not respect --root option

Actual Behaviour

azext init --root rootfolder and azext init will both create the .azext folder in the current working directory

Expected Behaviour

  • azext init --root rootfolder will create the .azext folder in a sub folder called rootfolder
  • azext init will create the .azext folder in the current working directory

Add changes to root release outside of individual modules

{
  "publishDate": "01-01-1970",
  "version": "0.0.0",
  "notes": "Optional notes",
  "summary": "Optional summary",
  "changes": [
    {
      "description": "Some change description",
      "type": "feature",
      "issue": 0,
      "pullRequest": 0
    }
  ],
  "modules": [
    {
      "name": "module-name",
      "version": "0.0.0",
      "changes": [
        {
          "description": "Some change description",
          "type": "feature",
          "issue": 0,
          "pullRequest": 0
        }
      ]
    }
  ]
}

Unknown types crashes during changelog generation

Short summary of the issue

When adding a change type without a mapping, changelog generation fails

Mapping file

 "typeMapping": {
    "feature": ":rocket: Features",
    "fix": ":bug: Fixes",
    "tests": ":test_tube: Tests",
    "other": ":speech_balloon: Other",
    "docs": ":memo: Documentation"
  },

Changelog entry

 {
        "version": "0.0.x",
        "name": "some-module",
        "changes": [
          {
            "type": "feat",
            "description": "Added  feat"
          }
        ]
      }

Error

No mapping found for change type feat
TypeError: Cannot read properties of undefined (reading 'replace')

Manifest generation

This issue outlines the specification for manifest generation from partial manifests

TODO

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.