diff --git a/diagrams/alibabacloud/alibabacloud.py b/diagrams/alibabacloud/alibabacloud.py
new file mode 100644
index 00000000..b5c30b60
--- /dev/null
+++ b/diagrams/alibabacloud/alibabacloud.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _AlibabaCloud
+
+
+class _AlibabaCloud(_AlibabaCloud):
+ _type = "alibabacloud"
+ _icon_dir = "resources/alibabacloud/alibabacloud"
+
+
+class AlibabaCloud(_AlibabaCloud):
+ _icon = "alibabacloud.png"
+
+
+# Aliases
diff --git a/diagrams/aws/aws.py b/diagrams/aws/aws.py
new file mode 100644
index 00000000..3058a153
--- /dev/null
+++ b/diagrams/aws/aws.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _AWS
+
+
+class _AWS(_AWS):
+ _type = "aws"
+ _icon_dir = "resources/aws/aws"
+
+
+class AWS(_AWS):
+ _icon = "aws.png"
+
+
+# Aliases
diff --git a/diagrams/azure/azure.py b/diagrams/azure/azure.py
new file mode 100644
index 00000000..d160c351
--- /dev/null
+++ b/diagrams/azure/azure.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Azure
+
+
+class _Azure(_Azure):
+ _type = "azure"
+ _icon_dir = "resources/azure/azure"
+
+
+class Azure(_Azure):
+ _icon = "azure.png"
+
+
+# Aliases
diff --git a/diagrams/digitalocean/digitalocean.py b/diagrams/digitalocean/digitalocean.py
new file mode 100644
index 00000000..572a69e5
--- /dev/null
+++ b/diagrams/digitalocean/digitalocean.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _DigitalOcean
+
+
+class _DigitalOcean(_DigitalOcean):
+ _type = "digitalocean"
+ _icon_dir = "resources/digitalocean/digitalocean"
+
+
+class DigitalOcean(_DigitalOcean):
+ _icon = "digitalocean.png"
+
+
+# Aliases
diff --git a/diagrams/elastic/elastic.py b/diagrams/elastic/elastic.py
new file mode 100644
index 00000000..bbc71313
--- /dev/null
+++ b/diagrams/elastic/elastic.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Elastic
+
+
+class _Elastic(_Elastic):
+ _type = "elastic"
+ _icon_dir = "resources/elastic/elastic"
+
+
+class Elastic(_Elastic):
+ _icon = "elastic.png"
+
+
+# Aliases
diff --git a/diagrams/firebase/firebase.py b/diagrams/firebase/firebase.py
new file mode 100644
index 00000000..ffe82ba2
--- /dev/null
+++ b/diagrams/firebase/firebase.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Firebase
+
+
+class _Firebase(_Firebase):
+ _type = "firebase"
+ _icon_dir = "resources/firebase/firebase"
+
+
+class Firebase(_Firebase):
+ _icon = "firebase.png"
+
+
+# Aliases
diff --git a/diagrams/gcp/gcp.py b/diagrams/gcp/gcp.py
new file mode 100644
index 00000000..8cdc7bba
--- /dev/null
+++ b/diagrams/gcp/gcp.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _GCP
+
+
+class _GCP(_GCP):
+ _type = "gcp"
+ _icon_dir = "resources/gcp/gcp"
+
+
+class GCP(_GCP):
+ _icon = "gcp.png"
+
+
+# Aliases
diff --git a/diagrams/generic/generic.py b/diagrams/generic/generic.py
new file mode 100644
index 00000000..59cd47e2
--- /dev/null
+++ b/diagrams/generic/generic.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Generic
+
+
+class _Generic(_Generic):
+ _type = "generic"
+ _icon_dir = "resources/generic/generic"
+
+
+class Generic(_Generic):
+ _icon = "generic.png"
+
+
+# Aliases
diff --git a/diagrams/ibm/ibm.py b/diagrams/ibm/ibm.py
new file mode 100644
index 00000000..3bbb30f3
--- /dev/null
+++ b/diagrams/ibm/ibm.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _IBM
+
+
+class _IBM(_IBM):
+ _type = "ibm"
+ _icon_dir = "resources/ibm/ibm"
+
+
+class IBM(_IBM):
+ _icon = "ibm.png"
+
+
+# Aliases
diff --git a/diagrams/k8s/k8s.py b/diagrams/k8s/k8s.py
new file mode 100644
index 00000000..7b529b48
--- /dev/null
+++ b/diagrams/k8s/k8s.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _K8S
+
+
+class _K8S(_K8S):
+ _type = "k8s"
+ _icon_dir = "resources/k8s/k8s"
+
+
+class K8S(_K8S):
+ _icon = "k8s.png"
+
+
+# Aliases
diff --git a/diagrams/oci/oci.py b/diagrams/oci/oci.py
new file mode 100644
index 00000000..9c46468a
--- /dev/null
+++ b/diagrams/oci/oci.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _OCI
+
+
+class _OCI(_OCI):
+ _type = "oci"
+ _icon_dir = "resources/oci/oci"
+
+
+class OCI(_OCI):
+ _icon = "oci.png"
+
+
+# Aliases
diff --git a/diagrams/onprem/onprem.py b/diagrams/onprem/onprem.py
new file mode 100644
index 00000000..e75b35f4
--- /dev/null
+++ b/diagrams/onprem/onprem.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _OnPrem
+
+
+class _OnPrem(_OnPrem):
+ _type = "onprem"
+ _icon_dir = "resources/onprem/onprem"
+
+
+class OnPrem(_OnPrem):
+ _icon = "onprem.png"
+
+
+# Aliases
diff --git a/diagrams/openstack/openstack.py b/diagrams/openstack/openstack.py
new file mode 100644
index 00000000..e1871eb4
--- /dev/null
+++ b/diagrams/openstack/openstack.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _OpenStack
+
+
+class _OpenStack(_OpenStack):
+ _type = "openstack"
+ _icon_dir = "resources/openstack/openstack"
+
+
+class OpenStack(_OpenStack):
+ _icon = "openstack.png"
+
+
+# Aliases
diff --git a/diagrams/outscale/outscale.py b/diagrams/outscale/outscale.py
new file mode 100644
index 00000000..ae51a5d4
--- /dev/null
+++ b/diagrams/outscale/outscale.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Outscale
+
+
+class _Outscale(_Outscale):
+ _type = "outscale"
+ _icon_dir = "resources/outscale/outscale"
+
+
+class Outscale(_Outscale):
+ _icon = "outscale.png"
+
+
+# Aliases
diff --git a/diagrams/programming/programming.py b/diagrams/programming/programming.py
new file mode 100644
index 00000000..6e0de1fc
--- /dev/null
+++ b/diagrams/programming/programming.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Programming
+
+
+class _Programming(_Programming):
+ _type = "programming"
+ _icon_dir = "resources/programming/programming"
+
+
+class Programming(_Programming):
+ _icon = "programming.png"
+
+
+# Aliases
diff --git a/diagrams/saas/saas.py b/diagrams/saas/saas.py
new file mode 100644
index 00000000..0f8b070b
--- /dev/null
+++ b/diagrams/saas/saas.py
@@ -0,0 +1,15 @@
+# This module is automatically generated by autogen.sh. DO NOT EDIT.
+
+from . import _Saas
+
+
+class _Saas(_Saas):
+ _type = "saas"
+ _icon_dir = "resources/saas/saas"
+
+
+class Saas(_Saas):
+ _icon = "saas.png"
+
+
+# Aliases
diff --git a/docs/nodes/alibabacloud.md b/docs/nodes/alibabacloud.md
index a2744737..4edb6f89 100644
--- a/docs/nodes/alibabacloud.md
+++ b/docs/nodes/alibabacloud.md
@@ -5,6 +5,12 @@ title: AlibabaCloud
Node classes list of the alibabacloud provider.
+## alibabacloud.alibabacloud
+
+
+
+**diagrams.alibabacloud.alibabacloud.AlibabaCloud**
+
## alibabacloud.analytics
diff --git a/docs/nodes/aws.md b/docs/nodes/aws.md
index aede97f7..96403d71 100644
--- a/docs/nodes/aws.md
+++ b/docs/nodes/aws.md
@@ -104,6 +104,12 @@ Node classes list of the aws provider.
**diagrams.aws.ar.Sumerian**
+## aws.aws
+
+
+
+**diagrams.aws.aws.AWS**
+
## aws.blockchain
diff --git a/docs/nodes/azure.md b/docs/nodes/azure.md
index 875471e8..f6700e3b 100644
--- a/docs/nodes/azure.md
+++ b/docs/nodes/azure.md
@@ -44,6 +44,12 @@ Node classes list of the azure provider.
**diagrams.azure.analytics.SynapseAnalytics**
+## azure.azure
+
+
+
+**diagrams.azure.azure.Azure**
+
## azure.compute
diff --git a/docs/nodes/digitalocean.md b/docs/nodes/digitalocean.md
index c29118c9..104d42dc 100644
--- a/docs/nodes/digitalocean.md
+++ b/docs/nodes/digitalocean.md
@@ -47,6 +47,12 @@ Node classes list of the digitalocean provider.
**diagrams.digitalocean.database.DbaasStandby**
+## digitalocean.digitalocean
+
+
+
+**diagrams.digitalocean.digitalocean.DigitalOcean**
+
## digitalocean.network
diff --git a/docs/nodes/elastic.md b/docs/nodes/elastic.md
index 8c1212d4..8fe653d4 100644
--- a/docs/nodes/elastic.md
+++ b/docs/nodes/elastic.md
@@ -47,6 +47,12 @@ Node classes list of the elastic provider.
**diagrams.elastic.beats.Winlogbeat**
+## elastic.elastic
+
+
+
+**diagrams.elastic.elastic.Elastic**
+
## elastic.elasticsearch
diff --git a/docs/nodes/firebase.md b/docs/nodes/firebase.md
index 15c45822..b558f919 100644
--- a/docs/nodes/firebase.md
+++ b/docs/nodes/firebase.md
@@ -41,6 +41,12 @@ Node classes list of the firebase provider.
**diagrams.firebase.extentions.Extensions**
+## firebase.firebase
+
+
+
+**diagrams.firebase.firebase.Firebase**
+
## firebase.grow
diff --git a/docs/nodes/gcp.md b/docs/nodes/gcp.md
index 800489d5..95dc4e2e 100644
--- a/docs/nodes/gcp.md
+++ b/docs/nodes/gcp.md
@@ -146,6 +146,12 @@ Node classes list of the gcp provider.
**diagrams.gcp.devtools.ToolsForVisualStudio**
+## gcp.gcp
+
+
+
+**diagrams.gcp.gcp.GCP**
+
## gcp.iot
diff --git a/docs/nodes/generic.md b/docs/nodes/generic.md
index 054164bf..9d9022a8 100644
--- a/docs/nodes/generic.md
+++ b/docs/nodes/generic.md
@@ -32,6 +32,12 @@ Node classes list of the generic provider.
**diagrams.generic.device.Tablet**
+## generic.generic
+
+
+
+**diagrams.generic.generic.Generic**
+
## generic.network
diff --git a/docs/nodes/ibm.md b/docs/nodes/ibm.md
index 1bb30682..826ef75a 100644
--- a/docs/nodes/ibm.md
+++ b/docs/nodes/ibm.md
@@ -323,6 +323,12 @@ Node classes list of the ibm provider.
**diagrams.ibm.general.TransformationConnectivity**
+## ibm.ibm
+
+
+
+**diagrams.ibm.ibm.IBM**
+
## ibm.infrastructure
diff --git a/docs/nodes/k8s.md b/docs/nodes/k8s.md
index 3459d9e0..94023154 100644
--- a/docs/nodes/k8s.md
+++ b/docs/nodes/k8s.md
@@ -104,6 +104,12 @@ Node classes list of the k8s provider.
**diagrams.k8s.infra.Node**
+## k8s.k8s
+
+
+
+**diagrams.k8s.k8s.K8S**
+
## k8s.network
diff --git a/docs/nodes/oci.md b/docs/nodes/oci.md
index 2d0c6fa8..806bcf2c 100644
--- a/docs/nodes/oci.md
+++ b/docs/nodes/oci.md
@@ -344,6 +344,12 @@ Node classes list of the oci provider.
**diagrams.oci.network.Vcn**
+## oci.oci
+
+
+
+**diagrams.oci.oci.OCI**
+
## oci.security
diff --git a/docs/nodes/onprem.md b/docs/nodes/onprem.md
index 149ebf90..3a9d9ccb 100644
--- a/docs/nodes/onprem.md
+++ b/docs/nodes/onprem.md
@@ -482,6 +482,12 @@ Node classes list of the onprem provider.
**diagrams.onprem.network.Zookeeper**
+## onprem.onprem
+
+
+
+**diagrams.onprem.onprem.OnPrem**
+
## onprem.proxmox
diff --git a/docs/nodes/openstack.md b/docs/nodes/openstack.md
index c88727a1..6a498d8f 100644
--- a/docs/nodes/openstack.md
+++ b/docs/nodes/openstack.md
@@ -119,6 +119,12 @@ Node classes list of the openstack provider.
**diagrams.openstack.nfv.Tacker**
+## openstack.openstack
+
+
+
+**diagrams.openstack.openstack.OpenStack**
+
## openstack.optimization
diff --git a/docs/nodes/outscale.md b/docs/nodes/outscale.md
index 34a25c16..3655dd07 100644
--- a/docs/nodes/outscale.md
+++ b/docs/nodes/outscale.md
@@ -35,6 +35,12 @@ Node classes list of the outscale provider.
**diagrams.outscale.network.SiteToSiteVpng**
+## outscale.outscale
+
+
+
+**diagrams.outscale.outscale.Outscale**
+
## outscale.security
diff --git a/docs/nodes/saas.md b/docs/nodes/saas.md
index 68bdeea9..29f65eb8 100644
--- a/docs/nodes/saas.md
+++ b/docs/nodes/saas.md
@@ -119,6 +119,12 @@ Node classes list of the saas provider.
**diagrams.saas.recommendation.Recombee**
+## saas.saas
+
+
+
+**diagrams.saas.saas.Saas**
+
## saas.security
diff --git a/scripts/generate.py b/scripts/generate.py
index 299f3941..8d8973b2 100644
--- a/scripts/generate.py
+++ b/scripts/generate.py
@@ -89,10 +89,8 @@ def generate(pvd: str) -> None:
pngs = list(filter(lambda f: f.endswith(".png"), files))
paths = list(filter(lambda f: "rounded" not in f, pngs))
- # Skip the top-root directory.
+ # Build the provider itself.
typ = os.path.basename(root)
- if typ == pvd:
- continue
resource_root = os.path.relpath(root, base)
classes = gen_classes(pvd, typ, paths)